{"openapi":"3.1.0","info":{"title":"iotools.cloud API","version":"1.0.0","description":"Run any iotools.cloud tool over HTTP.\n\nAuthenticate with `Authorization: Bearer iot_live_…`.\n\n**Only `POST /v1/tool/{slug}` costs credits.** Every GET here — the catalog, a tool's schema, your balance — is free. A tool call is charged its own weight or your plan's per-call minimum, whichever is larger; `x-iotools-credit-cost` on each operation is quoted at the free-tier minimum, and `GET /v1/tools/list` returns the exact figure for your key. `GET /v1/me/credits` reports what you have left, and `GET /v1/me/usage` reports what it went on.\n\nFailures are RFC 9457 problem documents — branch on `code`."},"servers":[{"url":"https://api.iotools.cloud","description":"Production"}],"tags":[{"name":"Catalog","description":"Find a tool and read its contract. Free."},{"name":"Converters","description":"Convert between formats, encodings, and units — Base64, CSV and JSON, timestamps, and more. Fast, free, and processed right in your browser."},{"name":"Formatters","description":"Format, beautify, minify, and validate code and data — JSON, HTML, CSS, SQL, and regex. Clean up messy input in one click, with nothing to upload."},{"name":"Generators","description":"Generate exactly what you need and on demand — passwords, UUIDs, QR codes, hashes, random numbers, and more. Secure, instant, and free."},{"name":"Calculators","description":"Crunch the numbers fast — from everyday math to specialized conversions and unit work. Free online calculators that run entirely in your browser."},{"name":"Editors","description":"Edit and transform text, code, and images with quick, focused editors that run entirely in your browser — nothing to install, and no sign-up needed."},{"name":"Utilities","description":"Everyday developer and web utilities — DNS and IP lookups, redirect and certificate checkers, and other quick diagnostics. Free and privacy-friendly."},{"name":"Account","description":"Your key's allowance, limits and usage history."}],"components":{"schemas":{"Problem":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/invalid_api_key","https://docs.iotools.cloud/errors/api_unconfigured","https://docs.iotools.cloud/errors/validation_error","https://docs.iotools.cloud/errors/payload_too_large","https://docs.iotools.cloud/errors/tool_not_found","https://docs.iotools.cloud/errors/tool_not_allowed","https://docs.iotools.cloud/errors/tool_disabled","https://docs.iotools.cloud/errors/rate_limited","https://docs.iotools.cloud/errors/insufficient_credits","https://docs.iotools.cloud/errors/vendor_api_tier_limit_exceeded","https://docs.iotools.cloud/errors/processing_error","https://docs.iotools.cloud/errors/unprocessable_input","https://docs.iotools.cloud/errors/internal_error"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Invalid API key","API not configured","Invalid request","Payload too large","Tool not found","Tool not available over the API","Tool temporarily disabled","Rate limit exceeded","Insufficient credits","Free-tier API limit reached for this tool","Tool failed to run","Input cannot be processed","Internal error"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["invalid_api_key","api_unconfigured","validation_error","payload_too_large","tool_not_found","tool_not_allowed","tool_disabled","rate_limited","insufficient_credits","vendor_api_tier_limit_exceeded","processing_error","unprocessable_input","internal_error"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}},"responses":{"Unauthorized":{"description":"Missing or invalid API key.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/invalid_api_key"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Invalid API key"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["invalid_api_key"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/invalid_api_key","title":"Invalid API key","status":401,"code":"invalid_api_key","detail":"Provide 'Authorization: Bearer <key>'.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"RateLimited":{"description":"Per-minute rate limit exceeded.","headers":{"Retry-After":{"description":"Seconds to wait before retrying (RFC 9110 delta-seconds).","schema":{"type":"integer"}}},"content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/rate_limited"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Rate limit exceeded"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["rate_limited"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."},"retry_after":{"type":"integer","description":"Seconds until the window resets — the same value as the `Retry-After` header."}}},"example":{"type":"https://docs.iotools.cloud/errors/rate_limited","title":"Rate limit exceeded","status":429,"code":"rate_limited","detail":"Too many requests. Retry in 30s.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11","retry_after":30}}}},"KeyLookupFailed":{"description":"Unexpected server error.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/internal_error"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Internal error"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["internal_error"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/internal_error","title":"Internal error","status":500,"code":"internal_error","detail":"Key lookup failed","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"ApiUnconfigured":{"description":"API not configured on this deployment.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/api_unconfigured"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["API not configured"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["api_unconfigured"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/api_unconfigured","title":"API not configured","status":503,"code":"api_unconfigured","detail":"DATABASE_URL is not set","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"ValidationError":{"description":"Invalid request.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/validation_error"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Invalid request"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["validation_error"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."},"fields":{"type":["object","string"],"additionalProperties":{"type":"string"},"description":"What failed: a map of field name → message. Absent when the body itself is malformed; a single string when the failure isn't tied to one field."}}},"example":{"type":"https://docs.iotools.cloud/errors/validation_error","title":"Invalid request","status":400,"code":"validation_error","detail":"One or more inputs are invalid — see `fields`.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11","fields":{"inputString":"Required"}}}}},"InsufficientCredits":{"description":"Monthly credit allowance exhausted.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/insufficient_credits","https://docs.iotools.cloud/errors/vendor_api_tier_limit_exceeded"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Insufficient credits","Free-tier API limit reached for this tool"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["insufficient_credits","vendor_api_tier_limit_exceeded"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."},"credits_used":{"type":"integer","description":"Always 0 — a refused call charges nothing."},"credits_remaining":{"type":"integer","description":"Credits left in the allowance — fewer than this call costs."}}},"example":{"type":"https://docs.iotools.cloud/errors/insufficient_credits","title":"Insufficient credits","status":402,"code":"insufficient_credits","detail":"This call costs 1 credit and 0 remain in this month's allowance.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11","credits_used":0,"credits_remaining":0}}}},"ToolNotAllowed":{"description":"Tool exists but has no API surface.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/tool_not_allowed"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Tool not available over the API"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["tool_not_allowed"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/tool_not_allowed","title":"Tool not available over the API","status":403,"code":"tool_not_allowed","detail":"\"Background Remover\" is available on iotools.cloud but has no API endpoint.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"ToolNotFound":{"description":"No such tool.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/tool_not_found"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Tool not found"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["tool_not_found"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/tool_not_found","title":"Tool not found","status":404,"code":"tool_not_found","detail":"No tool with that slug. See GET /v1/tools/list.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"PayloadTooLarge":{"description":"Body too large.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/payload_too_large"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Payload too large"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["payload_too_large"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/payload_too_large","title":"Payload too large","status":413,"code":"payload_too_large","detail":"Request body exceeds this tool's size limit.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"ToolFailed":{"description":"Tool failed to run.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/processing_error","https://docs.iotools.cloud/errors/internal_error"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Tool failed to run","Internal error"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["processing_error","internal_error"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."},"credits_used":{"type":"integer","description":"Always 0 on `processing_error` — a failed run is refunded, floor included."},"credits_remaining":{"type":"integer","description":"Credits left after the refund. Absent when metering is disabled."}}},"example":{"type":"https://docs.iotools.cloud/errors/processing_error","title":"Tool failed to run","status":500,"code":"processing_error","detail":"The tool failed to run. Please try again.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11","credits_used":0}}}},"UnprocessableInput":{"description":"Well-formed request, but there is no result to return.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/unprocessable_input"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Input cannot be processed"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["unprocessable_input"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."},"credits_used":{"type":"integer","description":"Always 0 on `unprocessable_input` — a failed run is refunded, floor included."},"credits_remaining":{"type":"integer","description":"Credits left after the refund. Absent when metering is disabled."}}},"example":{"type":"https://docs.iotools.cloud/errors/unprocessable_input","title":"Input cannot be processed","status":422,"code":"unprocessable_input","detail":"This video has no captions or subtitles, so there is no transcript to extract.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11","credits_used":0}}}},"ToolDisabled":{"description":"Tool temporarily disabled.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/tool_disabled","https://docs.iotools.cloud/errors/api_unconfigured"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Tool temporarily disabled","API not configured"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["tool_disabled","api_unconfigured"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/tool_disabled","title":"Tool temporarily disabled","status":503,"code":"tool_disabled","detail":"This tool is temporarily unavailable. Try again shortly.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"iot_live_…"}}},"security":[{"bearerAuth":[]}],"paths":{"/v1/tools/list":{"get":{"operationId":"list_tools","x-hidden":true,"summary":"List tools","description":"Every tool with an API — slug, title, description, category and credit cost. Use it to discover slugs rather than hard-coding them. Fetch a tool's input schema with `GET /v1/tool/{slug}` once you know which one you want. Free: this call costs no credits.","tags":["Catalog"],"security":[{"bearerAuth":[]}],"x-iotools-credit-cost":0,"responses":{"200":{"description":"The catalog.","content":{"application/json":{"schema":{"type":"object","required":["tools"],"properties":{"tools":{"type":"array","items":{"type":"object","required":["slug","title","description","category","credit_cost"],"properties":{"slug":{"type":"string","description":"The tool's identifier — use it in `GET /v1/tool/{slug}` and `POST /v1/tool/{slug}`."},"title":{"type":"string","description":"Human-readable tool name."},"description":{"type":"string","description":"One-line summary of what the tool does."},"category":{"type":"string","description":"One of the six catalog categories, e.g. `converters`."},"credit_cost":{"type":"integer","description":"Credits a run of this tool costs YOUR key, floor included — so it already reflects your plan and can be compared directly against `GET /v1/me/credits`."},"credit_cost_multiplier_field":{"type":"string","description":"Present only on per-unit tools: `credit_cost` is then a rate, and a run costs it times the value of this input field."}}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/KeyLookupFailed"},"503":{"$ref":"#/components/responses/ApiUnconfigured"}}}},"/v1/tools/search":{"get":{"operationId":"search_tools","x-hidden":true,"summary":"Search tools","description":"Find a tool by name, slug, description or tag without pulling the whole catalog. Ranked — an exact slug beats a title match beats a description match — and results are stable for a given query. Free: this call costs no credits.","tags":["Catalog"],"security":[{"bearerAuth":[]}],"x-iotools-credit-cost":0,"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"What you're looking for, e.g. `convert csv`. Every word must match.","example":"qr code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25,"default":5},"description":"How many results to return. Values above the maximum are clamped, not rejected."}],"responses":{"200":{"description":"Matching tools, best first.","content":{"application/json":{"schema":{"type":"object","required":["query","count","tools"],"properties":{"query":{"type":"string","description":"The `q` query, echoed back."},"count":{"type":"integer","description":"How many tools matched — the length of `tools`, not the full catalog size."},"tools":{"type":"array","items":{"type":"object","required":["slug","title","description","category","credit_cost"],"properties":{"slug":{"type":"string","description":"The tool's identifier — use it in `GET /v1/tool/{slug}` and `POST /v1/tool/{slug}`."},"title":{"type":"string","description":"Human-readable tool name."},"description":{"type":"string","description":"One-line summary of what the tool does."},"category":{"type":"string","description":"One of the six catalog categories, e.g. `converters`."},"credit_cost":{"type":"integer","description":"Credits a run of this tool costs YOUR key, floor included — so it already reflects your plan and can be compared directly against `GET /v1/me/credits`."},"credit_cost_multiplier_field":{"type":"string","description":"Present only on per-unit tools: `credit_cost` is then a rate, and a run costs it times the value of this input field."}}}}}}}}},"400":{"description":"Missing or malformed query.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/validation_error"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Invalid request"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["validation_error"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/validation_error","title":"Invalid request","status":400,"code":"validation_error","detail":"Pass what you're looking for as `q`, e.g. ?q=convert%20csv.","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/KeyLookupFailed"},"503":{"$ref":"#/components/responses/ApiUnconfigured"}}}},"/v1/tool/{slug}":{"get":{"operationId":"get_tool_schema","x-hidden":true,"summary":"Get tool schema","description":"Input and output JSON Schema for one tool, plus what a run costs your key. Use it after `search` to learn a tool's exact contract without pulling the full catalog. Free: this call costs no credits.","tags":["Catalog"],"security":[{"bearerAuth":[]}],"x-iotools-credit-cost":0,"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"The tool's slug. Nested slugs keep their slash: `ai-writer/story`.","example":"case-converter"}],"responses":{"200":{"description":"The tool's contract.","content":{"application/json":{"schema":{"type":"object","required":["slug","title","description","category","credit_cost","schema"],"properties":{"slug":{"type":"string","description":"The tool's identifier — use it in `GET /v1/tool/{slug}` and `POST /v1/tool/{slug}`."},"title":{"type":"string","description":"Human-readable tool name."},"description":{"type":"string","description":"One-line summary of what the tool does."},"category":{"type":"string","description":"One of the six catalog categories, e.g. `converters`."},"credit_cost":{"type":"integer","description":"Credits a run of this tool costs YOUR key, floor included — so it already reflects your plan and can be compared directly against `GET /v1/me/credits`."},"credit_cost_multiplier_field":{"type":"string","description":"Present only on per-unit tools: `credit_cost` is then a rate, and a run costs it times the value of this input field."},"schema":{"type":"object","required":["input","output"],"properties":{"input":{"type":"object","description":"JSON Schema for the tool's inputs."},"output":{"type":"object","description":"JSON Schema for the tool's outputs."}}},"examples":{"type":"array","description":"Worked examples, omitted when the tool declares none. `expected` is present only for deterministic tools — AI/random output has no fixed answer to print.","items":{"type":"object","required":["label","inputs"],"properties":{"label":{"type":"string","description":"Human-readable name for the example."},"inputs":{"type":"object","description":"A complete, valid request body."},"expected":{"type":"object","description":"The exact `outputs` this request produces."}}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"description":"No such tool.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 problem document, served as application/problem+json. Branch on `code`; `title` is human prose and may be reworded without notice. Some failures add extension members — `fields` on validation errors, `retry_after` on 429s, `credits_used`/`credits_remaining` on billing-adjacent failures — documented on the responses that carry them.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri","description":"Stable documentation URI for this failure.","examples":["https://docs.iotools.cloud/errors/tool_not_found"]},"title":{"type":"string","description":"Short human-readable summary of the failure.","examples":["Tool not found"]},"status":{"type":"integer","description":"HTTP status code, matching the response's own status."},"code":{"type":"string","description":"Stable machine-readable error code — branch on this, not `title`.","enum":["tool_not_found"]},"detail":{"type":"string","description":"Human explanation of this occurrence."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}},"example":{"type":"https://docs.iotools.cloud/errors/tool_not_found","title":"Tool not found","status":404,"code":"tool_not_found","detail":"No tool with the slug \"no-such-tool\".","request_id":"e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/KeyLookupFailed"},"503":{"$ref":"#/components/responses/ApiUnconfigured"}}}},"/v1/me/credits":{"get":{"operationId":"get_credits","x-hidden":true,"summary":"Get credit balance","description":"Credits left in the current allowance for the key's owner, when they reset, and the per-minute rate limit in force. Free — this call costs no credits and is not billed against the allowance it reports.\n\n`metered` is `false` on a deployment without Redis; `credits` is then `null` and tool calls still succeed, unmetered.","tags":["Account"],"security":[{"bearerAuth":[]}],"x-iotools-credit-cost":0,"responses":{"200":{"description":"The key owner's allowance.","content":{"application/json":{"schema":{"type":"object","required":["tier","metered","credits","rate_limit"],"properties":{"tier":{"type":"string","description":"The key's plan.","examples":["member","pro"]},"metered":{"type":"boolean","description":"False when this deployment has no credit metering configured."},"credits":{"type":["object","null"],"description":"Null exactly when `metered` is false.","properties":{"used":{"type":"integer","description":"Credits consumed so far this period."},"limit":{"type":"integer","description":"Total credits granted this period."},"remaining":{"type":"integer","description":"Credits left — `limit` minus `used`."},"period":{"type":"string","description":"Billing cadence the allowance resets on.","enum":["month","day"]},"resets_at":{"type":"string","format":"date-time","description":"UTC instant the allowance rolls over."}}},"rate_limit":{"type":"object","properties":{"requests_per_minute":{"type":"integer","description":"Requests per minute allowed for this key."}}}}},"example":{"tier":"member","metered":true,"credits":{"used":412,"limit":1000,"remaining":588,"period":"month","resets_at":"2026-08-01T00:00:00.000Z"},"rate_limit":{"requests_per_minute":60}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/KeyLookupFailed"},"503":{"$ref":"#/components/responses/ApiUnconfigured"}}}},"/v1/me/usage":{"get":{"operationId":"get_usage","x-hidden":true,"summary":"Get credit usage history","description":"What the key's owner spent credits on, over the last 30 days — one row per tool per day per surface (`web`, `api`, `mcp`), newest and biggest first. Free: this call costs no credits.\n\nA usage history, not a ledger: rows only exist for days with spend, and `credits` is net of any settlement refund.","tags":["Account"],"security":[{"bearerAuth":[]}],"x-iotools-credit-cost":0,"responses":{"200":{"description":"The key owner's recent spend.","content":{"application/json":{"schema":{"type":"object","required":["days","items"],"properties":{"days":{"type":"integer","description":"How many days of history this response covers."},"items":{"type":"array","items":{"type":"object","required":["day","slug","title","surface","credits","runs"],"properties":{"day":{"type":"string","format":"date","description":"UTC, `YYYY-MM-DD`."},"slug":{"type":"string","description":"The tool's identifier."},"title":{"type":"string","description":"Human-readable tool name."},"surface":{"type":"string","description":"Where the spend happened, e.g. `web`, `api`, `mcp`."},"credits":{"type":"integer","description":"Credits spent on this tool that day, net of refunds."},"runs":{"type":"integer","description":"Number of calls that day."}}}}}},"example":{"days":30,"items":[{"day":"2026-07-28","slug":"ai-writer","title":"AI Writer","surface":"api","credits":24,"runs":1},{"day":"2026-07-27","slug":"case-converter","title":"String Case Converter","surface":"mcp","credits":3,"runs":1}]}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/KeyLookupFailed"},"503":{"$ref":"#/components/responses/ApiUnconfigured"}}}},"/v1/tool/acceleration-converter":{"post":{"operationId":"run_acceleration_converter","summary":"Acceleration Converter","tags":["Converters"],"description":"Convert acceleration between meters per second squared (m/s²), Galileo (Gal), feet per second squared, inches per second squared, and standard gravity (g) at once. Enter one value, pick its unit, and see the equivalent in all 5 units.\n\n[Try Acceleration Converter in your browser →](https://iotools.cloud/tool/acceleration-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["meterPerSecondSquared","galileo","footPerSecondSquared","inchPerSecondSquared","standardGravity"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_standard_gravity_to_every_unit_4_decimals":{"summary":"1 standard gravity to every unit (4 decimals)","value":{"value":"1","fromUnit":"standardGravity","precision":"4"}},"100_galileo_to_every_unit_2_decimals":{"summary":"100 Galileo to every unit (2 decimals)","value":{"value":"100","fromUnit":"galileo","precision":"2"}},"1_m_s_to_every_unit_6_decimals":{"summary":"1 m/s² to every unit (6 decimals)","value":{"value":"1","fromUnit":"meterPerSecondSquared","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_standard_gravity_to_every_unit_4_decimals":{"summary":"1 standard gravity to every unit (4 decimals)","value":{"tool":"acceleration-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Meter per Second Squared (m/s²)","value":"9.8066"},{"unit":"Galileo (Gal)","value":"980.665"},{"unit":"Foot per Second Squared (ft/s²)","value":"32.174"},{"unit":"Inch per Second Squared (in/s²)","value":"386.0886"},{"unit":"Standard Gravity (g)","value":"1"}]},"credits_used":5,"credits_remaining":null}},"100_galileo_to_every_unit_2_decimals":{"summary":"100 Galileo to every unit (2 decimals)","value":{"tool":"acceleration-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Meter per Second Squared (m/s²)","value":"1"},{"unit":"Galileo (Gal)","value":"100"},{"unit":"Foot per Second Squared (ft/s²)","value":"3.28"},{"unit":"Inch per Second Squared (in/s²)","value":"39.37"},{"unit":"Standard Gravity (g)","value":"0.1"}]},"credits_used":5,"credits_remaining":null}},"1_m_s_to_every_unit_6_decimals":{"summary":"1 m/s² to every unit (6 decimals)","value":{"tool":"acceleration-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Meter per Second Squared (m/s²)","value":"1"},{"unit":"Galileo (Gal)","value":"100"},{"unit":"Foot per Second Squared (ft/s²)","value":"3.28084"},{"unit":"Inch per Second Squared (in/s²)","value":"39.370079"},{"unit":"Standard Gravity (g)","value":"0.101972"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/aes-encryption-decryption":{"post":{"operationId":"run_aes_encryption_decryption","summary":"AES Encryption/Decryption","tags":["Converters"],"description":"Encrypt or decrypt text with AES-256-CBC. Runs entirely client-side — provide a 64-character hex key, and the tool handles padding, the IV, and base64 encoding.\n\n[Try AES Encryption/Decryption in your browser →](https://iotools.cloud/tool/aes-encryption-decryption/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"key":{"type":"string","description":"Secret Key (hex)"},"mode":{"enum":["encrypt","decrypt"],"description":"Mode"}},"required":["inputText","key"]},"examples":{"encrypt_with_a_256_bit_key":{"summary":"Encrypt with a 256-bit key","value":{"inputText":"Hello, World!","key":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","mode":"encrypt"}},"decrypt_back_to_plaintext":{"summary":"Decrypt back to plaintext","value":{"inputText":"u8k/kF1nSL/O3t6R/T/t2xJyleHkKQ5KUT24WOdJ8uk=","key":"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","mode":"decrypt"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encrypt_with_a_256_bit_key":{"summary":"Encrypt with a 256-bit key","value":{"tool":"aes-encryption-decryption","tool_version":"1.0.2","outputs":{"output":"u8k/kF1nSL/O3t6R/T/t2xJyleHkKQ5KUT24WOdJ8uk="},"credits_used":5,"credits_remaining":null}},"decrypt_back_to_plaintext":{"summary":"Decrypt back to plaintext","value":{"tool":"aes-encryption-decryption","tool_version":"1.0.2","outputs":{"output":"Hello, World!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/angle-converter":{"post":{"operationId":"run_angle_converter","summary":"Angle Converter","tags":["Converters"],"description":"Convert angles between degrees, radians, gradians, turns, arcminutes, arcseconds, and milliradians at once, plus the sine/cosine/tangent for that angle. Enter one value, pick its unit, and see the equivalent in every unit.\n\n[Try Angle Converter in your browser →](https://iotools.cloud/tool/angle-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["degree","radian","gradian","turn","arcminute","arcsecond","milliradian"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"45_degrees_to_every_unit_4_decimals":{"summary":"45 degrees to every unit (4 decimals)","value":{"value":"45","fromUnit":"degree","precision":"4"}},"1_radian_to_every_unit_6_decimals":{"summary":"1 radian to every unit (6 decimals)","value":{"value":"1","fromUnit":"radian","precision":"6"}},"1_4_turn_90_to_every_unit_2_decimals":{"summary":"1/4 turn (90°) to every unit (2 decimals)","value":{"value":"0.25","fromUnit":"turn","precision":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"45_degrees_to_every_unit_4_decimals":{"summary":"45 degrees to every unit (4 decimals)","value":{"tool":"angle-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Degree (°)","value":"45"},{"unit":"Radian (rad)","value":"0.7854"},{"unit":"Gradian (gon)","value":"50"},{"unit":"Turn (revolutions)","value":"0.125"},{"unit":"Arcminute (')","value":"2700"},{"unit":"Arcsecond (\")","value":"162000"},{"unit":"Milliradian (mrad)","value":"785.3982"}],"trigTable":[{"function":"sin","value":"0.7071"},{"function":"cos","value":"0.7071"},{"function":"tan","value":"1"},{"function":"cot","value":"1"},{"function":"sec","value":"1.4142"},{"function":"csc","value":"1.4142"}]},"credits_used":5,"credits_remaining":null}},"1_radian_to_every_unit_6_decimals":{"summary":"1 radian to every unit (6 decimals)","value":{"tool":"angle-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Degree (°)","value":"57.29578"},{"unit":"Radian (rad)","value":"1"},{"unit":"Gradian (gon)","value":"63.661977"},{"unit":"Turn (revolutions)","value":"0.159155"},{"unit":"Arcminute (')","value":"3437.746771"},{"unit":"Arcsecond (\")","value":"206264.806247"},{"unit":"Milliradian (mrad)","value":"1000"}],"trigTable":[{"function":"sin","value":"0.841471"},{"function":"cos","value":"0.540302"},{"function":"tan","value":"1.557408"},{"function":"cot","value":"0.642093"},{"function":"sec","value":"1.850816"},{"function":"csc","value":"1.188395"}]},"credits_used":5,"credits_remaining":null}},"1_4_turn_90_to_every_unit_2_decimals":{"summary":"1/4 turn (90°) to every unit (2 decimals)","value":{"tool":"angle-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Degree (°)","value":"90"},{"unit":"Radian (rad)","value":"1.57"},{"unit":"Gradian (gon)","value":"100"},{"unit":"Turn (revolutions)","value":"0.25"},{"unit":"Arcminute (')","value":"5400"},{"unit":"Arcsecond (\")","value":"324000"},{"unit":"Milliradian (mrad)","value":"1570.8"}],"trigTable":[{"function":"sin","value":"1"},{"function":"cos","value":"6.12e-17"},{"function":"tan","value":"undefined"},{"function":"cot","value":"6.12e-17"},{"function":"sec","value":"undefined"},{"function":"csc","value":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]},"trigTable":{"type":"array","description":"Trigonometric values","items":{"type":"object","properties":{"function":{"type":"string","description":"Function"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["function","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/area-converter":{"post":{"operationId":"run_area_converter","summary":"Area Converter","tags":["Converters"],"description":"Convert area between square meters, square kilometers, hectares, acres, square feet, square miles, and 8 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Area Converter in your browser →](https://iotools.cloud/tool/area-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["square_meter","square_kilometer","square_centimeter","square_millimeter","square_decimeter","square_dekameter","square_hectometer","hectare","acre","square_foot","square_yard","square_mile","square_inch","square_micrometer","square_nanometer"],"description":"Convert from"},"toUnit":{"enum":["all","square_meter","square_kilometer","square_centimeter","square_millimeter","square_decimeter","square_dekameter","square_hectometer","hectare","acre","square_foot","square_yard","square_mile","square_inch","square_micrometer","square_nanometer"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_square_meter_to_every_unit":{"summary":"1 square meter to every unit","value":{"value":"1","fromUnit":"square_meter","toUnit":"all","precision":"4"}},"5_acres_to_square_meter":{"summary":"5 acres to square meter","value":{"value":"5","fromUnit":"acre","toUnit":"square_meter","precision":"2"}},"1_hectare_to_every_unit":{"summary":"1 hectare to every unit","value":{"value":"1","fromUnit":"hectare","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_square_meter_to_every_unit":{"summary":"1 square meter to every unit","value":{"tool":"area-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Square Meter (m²)","value":"1"},{"unit":"Square Kilometer (km²)","value":"0"},{"unit":"Square Centimeter (cm²)","value":"10000"},{"unit":"Square Millimeter (mm²)","value":"1000000"},{"unit":"Square Decimeter (dm²)","value":"100"},{"unit":"Square Dekameter (dam²)","value":"0.01"},{"unit":"Square Hectometer (hm²)","value":"0.0001"},{"unit":"Hectare (ha)","value":"0.0001"},{"unit":"Acre (ac)","value":"0.0002"},{"unit":"Square Foot (ft²)","value":"10.7639"},{"unit":"Square Yard (yd²)","value":"1.196"},{"unit":"Square Mile (mi²)","value":"0"},{"unit":"Square Inch (in²)","value":"1550.0031"},{"unit":"Square Micrometer (µm²)","value":"1000000000000"},{"unit":"Square Nanometer (nm²)","value":"1.0000e+18"}]},"credits_used":5,"credits_remaining":null}},"5_acres_to_square_meter":{"summary":"5 acres to square meter","value":{"tool":"area-converter","tool_version":"1.0.2","outputs":{"result":"20234.28 Square Meter (m²)","table":[]},"credits_used":5,"credits_remaining":null}},"1_hectare_to_every_unit":{"summary":"1 hectare to every unit","value":{"tool":"area-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Square Meter (m²)","value":"10000"},{"unit":"Square Kilometer (km²)","value":"0.01"},{"unit":"Square Centimeter (cm²)","value":"100000000"},{"unit":"Square Millimeter (mm²)","value":"10000000000"},{"unit":"Square Decimeter (dm²)","value":"1000000"},{"unit":"Square Dekameter (dam²)","value":"100"},{"unit":"Square Hectometer (hm²)","value":"1"},{"unit":"Hectare (ha)","value":"1"},{"unit":"Acre (ac)","value":"2.471054"},{"unit":"Square Foot (ft²)","value":"107639.104167"},{"unit":"Square Yard (yd²)","value":"11959.900463"},{"unit":"Square Mile (mi²)","value":"0.003861"},{"unit":"Square Inch (in²)","value":"15500031.000062"},{"unit":"Square Micrometer (µm²)","value":"1.000000e+16"},{"unit":"Square Nanometer (nm²)","value":"1.000000e+22"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/atbash-cipher":{"post":{"operationId":"run_atbash_cipher","summary":"Atbash Cipher","tags":["Converters"],"description":"Encode and decode text using the Atbash cipher. Reverses the alphabet (A↔Z, B↔Y, C↔X…); non-letters pass through unchanged. Self-inverse — running it twice returns the original text.\n\n[Try Atbash Cipher in your browser →](https://iotools.cloud/tool/atbash-cipher/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"simple_substitution":{"summary":"Simple substitution","value":{"inputText":"ABC"}},"mixed_case_with_punctuation":{"summary":"Mixed case with punctuation","value":{"inputText":"Hello, World!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_substitution":{"summary":"Simple substitution","value":{"tool":"atbash-cipher","tool_version":"1.0.2","outputs":{"output":"ZYX"},"credits_used":5,"credits_remaining":null}},"mixed_case_with_punctuation":{"summary":"Mixed case with punctuation","value":{"tool":"atbash-cipher","tool_version":"1.0.2","outputs":{"output":"Svool, Dliow!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Atbash Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base32-encoder-decoder":{"post":{"operationId":"run_base32_encoder_decoder","summary":"Base32 Encoder/Decoder","tags":["Converters"],"description":"Encode text to Base32 or decode Base32 strings back to plain text (RFC 4648, UTF-8 aware). Handles padding and validates Base32 characters automatically.\n\n[Try Base32 Encoder/Decoder in your browser →](https://iotools.cloud/tool/base32-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"}},"required":[]},"examples":{"encode_text_to_base32":{"summary":"Encode text to Base32","value":{"inputText":"foobar","mode":"encode"}},"decode_base32_back_to_text":{"summary":"Decode Base32 back to text","value":{"inputText":"MZXW6YTBOI======","mode":"decode"}},"decode_a_heavily_padded_value":{"summary":"Decode a heavily-padded value","value":{"inputText":"MY======","mode":"decode"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_text_to_base32":{"summary":"Encode text to Base32","value":{"tool":"base32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"MZXW6YTBOI======"},"credits_used":5,"credits_remaining":null}},"decode_base32_back_to_text":{"summary":"Decode Base32 back to text","value":{"tool":"base32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"foobar"},"credits_used":5,"credits_remaining":null}},"decode_a_heavily_padded_value":{"summary":"Decode a heavily-padded value","value":{"tool":"base32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"f"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base58-encoder-decoder":{"post":{"operationId":"run_base58_encoder_decoder","summary":"Base58 Encoder/Decoder","tags":["Converters"],"description":"Encode text to Base58 or decode Base58 strings back to plain text using the Bitcoin alphabet (UTF-8 aware). Handles leading zero bytes and validates Base58 characters automatically.\n\n[Try Base58 Encoder/Decoder in your browser →](https://iotools.cloud/tool/base58-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"}},"required":[]},"examples":{"encode_text_to_base58":{"summary":"Encode text to Base58","value":{"inputText":"Hello World!","mode":"encode"}},"decode_base58_back_to_text":{"summary":"Decode Base58 back to text","value":{"inputText":"2NEpo7TZRRrLZSi2U","mode":"decode"}},"decode_a_string_with_an_invalid_character":{"summary":"Decode a string with an invalid character","value":{"inputText":"0OIl","mode":"decode"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_text_to_base58":{"summary":"Encode text to Base58","value":{"tool":"base58-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"2NEpo7TZRRrLZSi2U"},"credits_used":5,"credits_remaining":null}},"decode_base58_back_to_text":{"summary":"Decode Base58 back to text","value":{"tool":"base58-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Hello World!"},"credits_used":5,"credits_remaining":null}},"decode_a_string_with_an_invalid_character":{"summary":"Decode a string with an invalid character","value":{"tool":"base58-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Error: Invalid Base58 character: \"0\". Note that \"0\", \"O\", \"I\", and \"l\" are not part of the Base58 (Bitcoin) alphabet."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base64-decode":{"post":{"operationId":"run_base64_decode","summary":"Base64 Decode","tags":["Converters"],"description":"Decode Base64 strings back to plain text (UTF-8 aware). Paste one or more Base64 values — each line is decoded separately.\n\n[Try Base64 Decode in your browser →](https://iotools.cloud/tool/base64-decode/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base64String":{"type":"string","description":"Base64 string"}},"required":["base64String"]},"examples":{"hello_world":{"summary":"Hello World","value":{"base64String":"SGVsbG8gV29ybGQh"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello_world":{"summary":"Hello World","value":{"tool":"base64-decode","tool_version":"1.0.2","outputs":{"decoded":"Hello World!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"decoded":{"type":"string","description":"Decoded text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base64-image-preview-decoder":{"post":{"operationId":"run_base64_image_preview_decoder","summary":"Base64 Image Preview & Decoder","tags":["Converters"],"description":"Preview a base64-encoded image and decode it back into a clean data URI. Paste raw base64 or a full data:image/...;base64,... string — see the rendered image plus its detected format, MIME type and decoded file size.\n\n[Try Base64 Image Preview & Decoder in your browser →](https://iotools.cloud/tool/base64-image-preview-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"base64Input":{"type":"string","description":"Base64 String"},"mimeType":{"enum":["image/png","image/jpeg","image/gif","image/webp","image/svg+xml"],"description":"Image type (if not a data URI)"}},"required":[]},"examples":{"raw_base64_auto_detected_gif":{"summary":"Raw base64 (auto-detected GIF)","value":{"base64Input":"R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==","mimeType":"image/png"}},"full_data_uri_png":{"summary":"Full data URI (PNG)","value":{"base64Input":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==","mimeType":"image/png"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"raw_base64_auto_detected_gif":{"summary":"Raw base64 (auto-detected GIF)","value":{"tool":"base64-image-preview-decoder","tool_version":"1.0.2","outputs":{"dataUrl":"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==","info":[{"property":"Format","value":"GIF"},{"property":"MIME type","value":"image/gif"},{"property":"Decoded size","value":"34 B (34 bytes)"},{"property":"Base64 length","value":"48 characters"}]},"credits_used":5,"credits_remaining":null}},"full_data_uri_png":{"summary":"Full data URI (PNG)","value":{"tool":"base64-image-preview-decoder","tool_version":"1.0.2","outputs":{"dataUrl":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==","info":[{"property":"Format","value":"PNG"},{"property":"MIME type","value":"image/png"},{"property":"Decoded size","value":"70 B (70 bytes)"},{"property":"Base64 length","value":"96 characters"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"dataUrl":{"type":"string","description":"Normalized Data URI"},"info":{"type":"array","description":"Decoded Info","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base85-encoder-decoder":{"post":{"operationId":"run_base85_encoder_decoder","summary":"Base85 (Ascii85) Encoder/Decoder","tags":["Converters"],"description":"Encode text to Base85 (Ascii85) or decode Base85 strings back to plain text. More compact than Base64, the encoding used by Adobe PostScript and PDF.\n\n[Try Base85 (Ascii85) Encoder/Decoder in your browser →](https://iotools.cloud/tool/base85-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"}},"required":[]},"examples":{"encode_text_to_base85":{"summary":"Encode text to Base85","value":{"inputText":"Man ","mode":"encode"}},"decode_base85_back_to_text":{"summary":"Decode Base85 back to text","value":{"inputText":"9jqo^","mode":"decode"}},"encode_a_longer_sentence":{"summary":"Encode a longer sentence","value":{"inputText":"Hello, World!","mode":"encode"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_text_to_base85":{"summary":"Encode text to Base85","value":{"tool":"base85-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"9jqo^"},"credits_used":5,"credits_remaining":null}},"decode_base85_back_to_text":{"summary":"Decode Base85 back to text","value":{"tool":"base85-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Man "},"credits_used":5,"credits_remaining":null}},"encode_a_longer_sentence":{"summary":"Encode a longer sentence","value":{"tool":"base85-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"87cURD_*#4DfTZ)+T"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bearing-azimuth-converter":{"post":{"operationId":"run_bearing_azimuth_converter","summary":"Bearing & Azimuth Converter","tags":["Converters"],"description":"Convert between surveying quadrant bearing notation (N45°30'15\"E) and azimuth notation (0-360° from north) in either direction, with full degrees/minutes/seconds and decimal-degree output shown side by side.\n\n[Try Bearing & Azimuth Converter in your browser →](https://iotools.cloud/tool/bearing-azimuth-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["toAzimuth","toBearing"],"description":"Convert"},"quadrantNS":{"enum":["N","S"],"description":"N/S"},"bearingDegrees":{"type":"number","description":"Degrees","minimum":0,"maximum":90},"bearingMinutes":{"type":"number","description":"Minutes","minimum":0,"maximum":59},"bearingSeconds":{"type":"number","description":"Seconds","minimum":0,"maximum":59.99},"quadrantEW":{"enum":["E","W"],"description":"E/W"},"azimuthDegrees":{"type":"number","description":"Degrees","minimum":0,"maximum":360},"azimuthMinutes":{"type":"number","description":"Minutes","minimum":0,"maximum":59},"azimuthSeconds":{"type":"number","description":"Seconds","minimum":0,"maximum":59.99}},"required":[]},"examples":{"n45_30_15_e_azimuth":{"summary":"N45°30'15\"E -> azimuth","value":{"direction":"toAzimuth","quadrantNS":"N","bearingDegrees":"45","bearingMinutes":"30","bearingSeconds":"15","quadrantEW":"E"}},"s30_15_45_w_azimuth":{"summary":"S30°15'45\"W -> azimuth","value":{"direction":"toAzimuth","quadrantNS":"S","bearingDegrees":"30","bearingMinutes":"15","bearingSeconds":"45","quadrantEW":"W"}},"azimuth_125_45_00_bearing":{"summary":"Azimuth 125°45'00\" -> bearing","value":{"direction":"toBearing","azimuthDegrees":"125","azimuthMinutes":"45","azimuthSeconds":"0"}},"azimuth_280_bearing":{"summary":"Azimuth 280° -> bearing","value":{"direction":"toBearing","azimuthDegrees":"280","azimuthMinutes":"0","azimuthSeconds":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"n45_30_15_e_azimuth":{"summary":"N45°30'15\"E -> azimuth","value":{"tool":"bearing-azimuth-converter","tool_version":"1.0.2","outputs":{"results":[{"field":"Bearing (quadrant notation)","value":"N45°30'15.00\"E"},{"field":"Bearing (decimal degrees)","value":"N 45.5042° E"},{"field":"Azimuth (decimal degrees)","value":"45.5042°"},{"field":"Azimuth (DMS)","value":"45°30'15.00\""}],"summary":"N45°30'15.00\"E = Azimuth 45.5042° (45°30'15.00\")"},"credits_used":5,"credits_remaining":null}},"s30_15_45_w_azimuth":{"summary":"S30°15'45\"W -> azimuth","value":{"tool":"bearing-azimuth-converter","tool_version":"1.0.2","outputs":{"results":[{"field":"Bearing (quadrant notation)","value":"S30°15'45.00\"W"},{"field":"Bearing (decimal degrees)","value":"S 30.2625° W"},{"field":"Azimuth (decimal degrees)","value":"210.2625°"},{"field":"Azimuth (DMS)","value":"210°15'45.00\""}],"summary":"S30°15'45.00\"W = Azimuth 210.2625° (210°15'45.00\")"},"credits_used":5,"credits_remaining":null}},"azimuth_125_45_00_bearing":{"summary":"Azimuth 125°45'00\" -> bearing","value":{"tool":"bearing-azimuth-converter","tool_version":"1.0.2","outputs":{"results":[{"field":"Bearing (quadrant notation)","value":"S54°15'00.00\"E"},{"field":"Bearing (decimal degrees)","value":"S 54.2500° E"},{"field":"Azimuth (decimal degrees)","value":"125.7500°"},{"field":"Azimuth (DMS)","value":"125°45'00.00\""}],"summary":"Azimuth 125.7500° (125°45'00.00\") = S54°15'00.00\"E"},"credits_used":5,"credits_remaining":null}},"azimuth_280_bearing":{"summary":"Azimuth 280° -> bearing","value":{"tool":"bearing-azimuth-converter","tool_version":"1.0.2","outputs":{"results":[{"field":"Bearing (quadrant notation)","value":"N80°00'00.00\"W"},{"field":"Bearing (decimal degrees)","value":"N 80.0000° W"},{"field":"Azimuth (decimal degrees)","value":"280.0000°"},{"field":"Azimuth (DMS)","value":"280°00'00.00\""}],"summary":"Azimuth 280.0000° (280°00'00.00\") = N80°00'00.00\"W"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bech32-encoder-decoder":{"post":{"operationId":"run_bech32_encoder_decoder","summary":"Bech32 Encoder/Decoder","tags":["Converters"],"description":"Encode hex data into a Bech32 (BIP-173) string with a human-readable part, or decode a Bech32 string back to its HRP and data — with full checksum validation.\n\n[Try Bech32 Encoder/Decoder in your browser →](https://iotools.cloud/tool/bech32-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"mode":{"enum":["encode","decode"],"description":"Mode"},"hrp":{"type":"string","description":"Human-Readable Part (HRP)"}},"required":[]},"examples":{"encode_hex_data_to_a_bech32_string":{"summary":"Encode hex data to a Bech32 string","value":{"inputText":"220e2145fa4a1f9e913265ef30f7d6f02c4ae914","mode":"encode","hrp":"bc"}},"decode_a_bech32_string":{"summary":"Decode a Bech32 string","value":{"inputText":"bc1yg8zz306fg0eayfjvhhnpa7k7qky46g5xfyyt9","mode":"decode","hrp":"bc"}},"decode_the_bip_173_reference_test_vector_empty_data":{"summary":"Decode the BIP-173 reference test vector (empty data)","value":{"inputText":"A12UEL5L","mode":"decode","hrp":"bc"}},"decode_a_string_with_a_corrupted_checksum":{"summary":"Decode a string with a corrupted checksum","value":{"inputText":"bc1yg8zz306fg0eayfjvhhnpa7k7qky46g5xfyyt8","mode":"decode","hrp":"bc"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_hex_data_to_a_bech32_string":{"summary":"Encode hex data to a Bech32 string","value":{"tool":"bech32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"bc1yg8zz306fg0eayfjvhhnpa7k7qky46g5xfyyt9"},"credits_used":5,"credits_remaining":null}},"decode_a_bech32_string":{"summary":"Decode a Bech32 string","value":{"tool":"bech32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"HRP: bc\nData (5-bit values): [4, 8, 7, 2, 2, 17, 15, 26, 9, 8, 15, 25, 29, 4, 9, 18, 12, 23, 23, 19, 1, 29, 30, 22, 30, 0, 22, 4, 21, 26, 8, 20]\nData (hex): 220e2145fa4a1f9e913265ef30f7d6f02c4ae914\nChecksum: valid (Bech32 / BIP-173)"},"credits_used":5,"credits_remaining":null}},"decode_the_bip_173_reference_test_vector_empty_data":{"summary":"Decode the BIP-173 reference test vector (empty data)","value":{"tool":"bech32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"HRP: a\nData (5-bit values): []\nData (hex): (empty)\nChecksum: valid (Bech32 / BIP-173)"},"credits_used":5,"credits_remaining":null}},"decode_a_string_with_a_corrupted_checksum":{"summary":"Decode a string with a corrupted checksum","value":{"tool":"bech32-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Error: Checksum verification failed — this string is not valid Bech32 (it may be corrupted or mistyped)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bencode-encoder-decoder":{"post":{"operationId":"run_bencode_encoder_decoder","summary":"Bencode Encoder/Decoder","tags":["Converters"],"description":"Decode bencode (the encoding used by BitTorrent .torrent files) into JSON, or encode JSON into bencode — with a torrent-info summary when decoding a torrent file's dictionary.\n\n[Try Bencode Encoder/Decoder in your browser →](https://iotools.cloud/tool/bencode-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["decode","encode"],"description":"Mode"},"inputText":{"type":"string","description":"Bencode Input"},"jsonInput":{"type":"string","description":"JSON Input"}},"required":[]},"examples":{"decode_a_torrent_like_dictionary":{"summary":"Decode a torrent-like dictionary","value":{"mode":"decode","inputText":"d8:announce35:http://tracker.example.com/announce7:comment18:Example torrent...4:infod5:filesld6:lengthi1024e4:pathl9:file1.txteed6:lengthi2048e4:pathl9:file2.txteee4:name12:example_pack12:piece lengthi262144eee","jsonInput":""}},"encode_json_to_bencode":{"summary":"Encode JSON to bencode","value":{"mode":"encode","inputText":"","jsonInput":"{\n  \"name\": \"Alice\",\n  \"age\": 30,\n  \"hobbies\": [\n    \"coding\",\n    \"reading\",\n    \"gaming\"\n  ],\n  \"address\": {\n    \"city\": \"Wonderland\",\n    \"zip\": \"12345\"\n  }\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decode_a_torrent_like_dictionary":{"summary":"Decode a torrent-like dictionary","value":{"tool":"bencode-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"{\n  \"announce\": \"http://tracker.example.com/announce\",\n  \"comment\": \"Example torrent...\",\n  \"info\": {\n    \"files\": [\n      {\n        \"length\": 1024,\n        \"path\": [\n          \"file1.txt\"\n        ]\n      },\n      {\n        \"length\": 2048,\n        \"path\": [\n          \"file2.txt\"\n        ]\n      }\n    ],\n    \"name\": \"example_pack\",\n    \"piece length\": 262144\n  }\n}","torrentInfo":[{"property":"Tracker","value":"http://tracker.example.com/announce"},{"property":"Name","value":"example_pack"},{"property":"Piece Length","value":"256 KB"},{"property":"Comment","value":"Example torrent..."},{"property":"Total Size","value":"3 KB"},{"property":"Files (2)","value":"file1.txt (1 KB); file2.txt (2 KB)"}]},"credits_used":5,"credits_remaining":null}},"encode_json_to_bencode":{"summary":"Encode JSON to bencode","value":{"tool":"bencode-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"d7:addressd4:city10:Wonderland3:zip5:12345e3:agei30e7:hobbiesl6:coding7:reading6:gaminge4:name5:Alicee","torrentInfo":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"torrentInfo":{"type":"array","description":"Torrent Info","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/binary-gray-code":{"post":{"operationId":"run_binary_gray_code","summary":"Binary to Gray Code Converter","tags":["Converters"],"description":"Convert between binary and Gray code (reflected binary), where two successive values differ in only one bit. Supports both directions plus the decimal equivalent.\n\n[Try Binary to Gray Code Converter in your browser →](https://iotools.cloud/tool/binary-gray-code/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"Value"},"mode":{"enum":["binary-to-gray","gray-to-binary"],"description":"Direction"}},"required":["input"]},"examples":{"binary_gray_code":{"summary":"Binary → Gray Code","value":{"input":"1011","mode":"binary-to-gray"}},"gray_code_binary":{"summary":"Gray Code → Binary","value":{"input":"1110","mode":"gray-to-binary"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"binary_gray_code":{"summary":"Binary → Gray Code","value":{"tool":"binary-gray-code","tool_version":"1.0.2","outputs":{"output":"1110","decimal":"14"},"credits_used":5,"credits_remaining":null}},"gray_code_binary":{"summary":"Gray Code → Binary","value":{"tool":"binary-gray-code","tool_version":"1.0.2","outputs":{"output":"1011","decimal":"11"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Converted Value"},"decimal":{"type":"string","description":"Decimal Equivalent"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/binary-to-text-converter":{"post":{"operationId":"run_binary_to_text_converter","summary":"Binary to Text Converter","tags":["Converters"],"description":"Convert plain text to binary (8-bit UTF-8 byte groups) or decode binary back to text. Tolerates space, comma, or newline-separated bits and validates input automatically.\n\n[Try Binary to Text Converter in your browser →](https://iotools.cloud/tool/binary-to-text-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"mode":{"enum":["textToBinary","binaryToText"],"description":"Mode"}},"required":[]},"examples":{"text_to_binary":{"summary":"Text to binary","value":{"inputText":"Hi","mode":"textToBinary"}},"binary_to_text":{"summary":"Binary to text","value":{"inputText":"01001000 01101001","mode":"binaryToText"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"text_to_binary":{"summary":"Text to binary","value":{"tool":"binary-to-text-converter","tool_version":"1.0.2","outputs":{"output":"01001000 01101001"},"credits_used":5,"credits_remaining":null}},"binary_to_text":{"summary":"Binary to text","value":{"tool":"binary-to-text-converter","tool_version":"1.0.2","outputs":{"output":"Hi"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bionic-reading-converter":{"post":{"operationId":"run_bionic_reading_converter","summary":"Bionic Reading Converter","tags":["Converters"],"description":"Convert any text to bionic reading format — the first few letters of every word are bolded as fixation points, guiding your eye and speeding up skimming.\n\n[Try Bionic Reading Converter in your browser →](https://iotools.cloud/tool/bionic-reading-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Input text"},"fixation":{"enum":["1","2","3","4","5"],"description":"Fixation point"},"textContrast":{"enum":["low","medium","high"],"description":"Text contrast"},"highlightColor":{"type":"string","description":"Highlight colour"}},"required":["fixation","textContrast","highlightColor"]},"examples":{"default_fixation":{"summary":"Default fixation","value":{"text":"Hello World! This is a test.","fixation":"4","textContrast":"medium","highlightColor":"#000000"}},"boldest_fixation":{"summary":"Boldest fixation","value":{"text":"Hello World! This is a test.","fixation":"1","textContrast":"medium","highlightColor":"#000000"}},"high_contrast_blue_highlight":{"summary":"High contrast, blue highlight","value":{"text":"Bionic reading bolds word beginnings.\n\nYour eyes fill in the rest.","fixation":"3","textContrast":"high","highlightColor":"#1d4ed8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_fixation":{"summary":"Default fixation","value":{"tool":"bionic-reading-converter","tool_version":"1.0.2","outputs":{"output":"<div style=\"color:#858585\"><p><b style=\"color:#000000\">He</b>llo <b style=\"color:#000000\">Wo</b>rld! <b style=\"color:#000000\">Th</b>is <b style=\"color:#000000\">i</b>s a <b style=\"color:#000000\">te</b>st.</p></div>"},"credits_used":5,"credits_remaining":null}},"boldest_fixation":{"summary":"Boldest fixation","value":{"tool":"bionic-reading-converter","tool_version":"1.0.2","outputs":{"output":"<div style=\"color:#858585\"><p><b style=\"color:#000000\">Hel</b>lo <b style=\"color:#000000\">Wor</b>ld! <b style=\"color:#000000\">Thi</b>s <b style=\"color:#000000\">i</b>s a <b style=\"color:#000000\">tes</b>t.</p></div>"},"credits_used":5,"credits_remaining":null}},"high_contrast_blue_highlight":{"summary":"High contrast, blue highlight","value":{"tool":"bionic-reading-converter","tool_version":"1.0.2","outputs":{"output":"<div style=\"color:#b6b6b6\"><p><b style=\"color:#1d4ed8\">Bio</b>nic <b style=\"color:#1d4ed8\">read</b>ing <b style=\"color:#1d4ed8\">bol</b>ds <b style=\"color:#1d4ed8\">wo</b>rd <b style=\"color:#1d4ed8\">begin</b>nings.</p>\n<p><b style=\"color:#1d4ed8\">Yo</b>ur <b style=\"color:#1d4ed8\">ey</b>es <b style=\"color:#1d4ed8\">fi</b>ll <b style=\"color:#1d4ed8\">i</b>n <b style=\"color:#1d4ed8\">t</b>he <b style=\"color:#1d4ed8\">re</b>st.</p></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"HTML source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bmp-to-pdf":{"post":{"operationId":"run_bmp_to_pdf","summary":"BMP to PDF","tags":["Converters"],"description":"Convert a BMP image into a downloadable PDF. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try BMP to PDF in your browser →](https://iotools.cloud/tool/bmp-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"BMP image"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/braille-text-generator":{"post":{"operationId":"run_braille_text_generator","summary":"Braille Text Generator","tags":["Converters"],"description":"Convert plain text into Unicode Braille patterns (Grade 1 / uncontracted English Braille). Letters, digits, and common punctuation are mapped to Braille cells; unsupported characters pass through unchanged.\n\n[Try Braille Text Generator in your browser →](https://iotools.cloud/tool/braille-text-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"capitalIndicator":{"type":"boolean","description":"Add capital letter indicator (⠠)"}},"required":[]},"examples":{"simple_word":{"summary":"Simple word","value":{"inputText":"Hi","capitalIndicator":"true"}},"letters_punctuation_and_digits":{"summary":"Letters, punctuation, and digits","value":{"inputText":"Hello, World! 123","capitalIndicator":"true"}},"capital_indicator_off":{"summary":"Capital indicator off","value":{"inputText":"Hi","capitalIndicator":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_word":{"summary":"Simple word","value":{"tool":"braille-text-generator","tool_version":"1.0.2","outputs":{"output":"⠠⠓⠊"},"credits_used":5,"credits_remaining":null}},"letters_punctuation_and_digits":{"summary":"Letters, punctuation, and digits","value":{"tool":"braille-text-generator","tool_version":"1.0.2","outputs":{"output":"⠠⠓⠑⠇⠇⠕⠂⠀⠠⠺⠕⠗⠇⠙⠖⠀⠼⠁⠃⠉"},"credits_used":5,"credits_remaining":null}},"capital_indicator_off":{"summary":"Capital indicator off","value":{"tool":"braille-text-generator","tool_version":"1.0.2","outputs":{"output":"⠓⠊"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Braille Unicode Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bulk-image-compressor":{"post":{"operationId":"run_bulk_image_compressor","summary":"Bulk Image Compressor","tags":["Converters"],"description":"Compress and resize many JPG or PNG images at once — set quality, max width/height and output format, then download every result as a ZIP. Free and private in your browser; also available as a paid API.\n\n[Try Bulk Image Compressor in your browser →](https://iotools.cloud/tool/bulk-image-compressor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"images":{"type":"array","items":{"type":"string","contentEncoding":"base64"},"description":"Images"},"quality":{"type":"number","description":"Quality","minimum":1,"maximum":100},"maxWidth":{"type":"number","description":"Max width (px)","minimum":1,"maximum":10000},"maxHeight":{"type":"number","description":"Max height (px)","minimum":1,"maximum":10000},"outputFormat":{"enum":["auto","jpeg","png"],"description":"Output format"}},"required":["images"]},"examples":{"compress_two_pngs_to_jpeg_at_60_quality_max_1920px":{"summary":"Compress two PNGs to JPEG at 60% quality, max 1920px","value":{"images":"[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJUlEQVR4AYXBAQEAIAyAMKSSnUxrJ99AtrXPfXxIkCBBggQJEgZ5JwJ01a+JcwAAAABJRU5ErkJggg==\",\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJUlEQVR4AYXBAQEAIAyAMKSSnUxrJ99AtrXPfXxIkCBBggQJEgZ5JwJ01a+JcwAAAABJRU5ErkJggg==\"]","quality":"60","maxWidth":"1920","maxHeight":"1920","outputFormat":"jpeg"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"archive":{"type":"string","contentEncoding":"base64","description":"Compressed images (ZIP)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/caesar-cipher":{"post":{"operationId":"run_caesar_cipher","summary":"Caesar Cipher","tags":["Converters"],"description":"Encode and decode text using the Caesar cipher. Shift each letter by a fixed amount (shift 13 = ROT13). Supports encode and decode modes; non-letters pass through unchanged.\n\n[Try Caesar Cipher in your browser →](https://iotools.cloud/tool/caesar-cipher/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"shift":{"type":"number","description":"Shift Amount","minimum":1,"maximum":25},"mode":{"enum":["encode","decode"],"description":"Mode"}},"required":[]},"examples":{"rot13":{"summary":"ROT13","value":{"inputText":"Hello, World!","shift":"13","mode":"encode"}},"decode_shift_3":{"summary":"Decode shift 3","value":{"inputText":"Khoor, Zruog!","shift":"3","mode":"decode"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rot13":{"summary":"ROT13","value":{"tool":"caesar-cipher","tool_version":"1.0.2","outputs":{"output":"Uryyb, Jbeyq!"},"credits_used":5,"credits_remaining":null}},"decode_shift_3":{"summary":"Decode shift 3","value":{"tool":"caesar-cipher","tool_version":"1.0.2","outputs":{"output":"Hello, World!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/case-converter":{"post":{"operationId":"run_case_converter","summary":"String Case Converter","tags":["Converters"],"description":"Convert text between 18 letter cases: UPPERCASE, lowercase, Title Case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, dot.case, path/case, sPoNgE cAsE and more — line by line.\n\n[Try String Case Converter in your browser →](https://iotools.cloud/tool/case-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputString":{"type":"string","description":"Input text"},"caseStyle":{"enum":["uppercase","lowercase","sentence-case","title-case","capital-case","camel-case","pascal-case","snake-case","constant-case","param-case","dot-case","path-case","header-case","no-case","swap-case","lower-case-first","upper-case-first","sponge-case"],"description":"Convert to"}},"required":[]},"examples":{"title_case":{"summary":"Title Case","value":{"inputString":"The quick brown Fox jumps over the lazy Dog","caseStyle":"title-case"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"title_case":{"summary":"Title Case","value":{"tool":"case-converter","tool_version":"1.0.2","outputs":{"outputString":"The Quick Brown Fox Jumps Over the Lazy Dog"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputString":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cbor-encoder-decoder":{"post":{"operationId":"run_cbor_encoder_decoder","summary":"CBOR Encoder / Decoder","tags":["Converters"],"description":"Encode a JSON value to CBOR (RFC 8949) binary data as hex or Base64, or decode CBOR bytes back to JSON. Runs entirely in your browser.\n\n[Try CBOR Encoder / Decoder in your browser →](https://iotools.cloud/tool/cbor-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"mode":{"enum":["encode","decode"],"description":"Mode"},"outputFormat":{"enum":["hex","base64"],"description":"Output Format"}},"required":[]},"examples":{"encode_array_rfc_8949_a_1_2_3":{"summary":"Encode array (RFC 8949 §A: [1,2,3])","value":{"inputText":"[1,2,3]","mode":"encode","outputFormat":"hex"}},"decode_array_rfc_8949_a_0x83010203":{"summary":"Decode array (RFC 8949 §A: 0x83010203)","value":{"inputText":"83010203","mode":"decode","outputFormat":"hex"}},"encode_string_rfc_8949_a_ietf":{"summary":"Encode string (RFC 8949 §A: \"IETF\")","value":{"inputText":"\"IETF\"","mode":"encode","outputFormat":"hex"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_array_rfc_8949_a_1_2_3":{"summary":"Encode array (RFC 8949 §A: [1,2,3])","value":{"tool":"cbor-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"83010203"},"credits_used":5,"credits_remaining":null}},"decode_array_rfc_8949_a_0x83010203":{"summary":"Decode array (RFC 8949 §A: 0x83010203)","value":{"tool":"cbor-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"[\n  1,\n  2,\n  3\n]"},"credits_used":5,"credits_remaining":null}},"encode_string_rfc_8949_a_ietf":{"summary":"Encode string (RFC 8949 §A: \"IETF\")","value":{"tool":"cbor-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"6449455446"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/charge-converter":{"post":{"operationId":"run_charge_converter","summary":"Electric Charge Converter","tags":["Converters"],"description":"Convert electric charge between coulombs, millicoulombs, microcoulombs, nanocoulombs, picocoulombs, kilocoulombs, megacoulombs, elementary charge (e), faraday, and statcoulomb at once. Enter one value, pick its unit, and see the equivalent in all 10 units.\n\n[Try Electric Charge Converter in your browser →](https://iotools.cloud/tool/charge-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["coulomb","millicoulomb","microcoulomb","nanocoulomb","picocoulomb","kilocoulomb","megacoulomb","elementaryCharge","faraday","statcoulomb"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_coulomb_to_every_unit_6_decimals":{"summary":"1 coulomb to every unit (6 decimals)","value":{"value":"1","fromUnit":"coulomb","precision":"6"}},"1_elementary_charge_to_every_unit_4_decimals":{"summary":"1 elementary charge to every unit (4 decimals)","value":{"value":"1","fromUnit":"elementaryCharge","precision":"4"}},"5_faraday_to_every_unit_2_decimals":{"summary":"5 faraday to every unit (2 decimals)","value":{"value":"5","fromUnit":"faraday","precision":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_coulomb_to_every_unit_6_decimals":{"summary":"1 coulomb to every unit (6 decimals)","value":{"tool":"charge-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Coulomb (C)","value":"1"},{"unit":"Millicoulomb (mC)","value":"1000"},{"unit":"Microcoulomb (µC)","value":"1000000"},{"unit":"Nanocoulomb (nC)","value":"1000000000"},{"unit":"Picocoulomb (pC)","value":"1000000000000"},{"unit":"Kilocoulomb (kC)","value":"0.001"},{"unit":"Megacoulomb (MC)","value":"0.000001"},{"unit":"Elementary Charge (e)","value":"6.241509e+18"},{"unit":"Faraday (F)","value":"0.00001"},{"unit":"Statcoulomb (statC)","value":"2997924580"}]},"credits_used":5,"credits_remaining":null}},"1_elementary_charge_to_every_unit_4_decimals":{"summary":"1 elementary charge to every unit (4 decimals)","value":{"tool":"charge-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Coulomb (C)","value":"1.6022e-19"},{"unit":"Millicoulomb (mC)","value":"1.6022e-16"},{"unit":"Microcoulomb (µC)","value":"1.6022e-13"},{"unit":"Nanocoulomb (nC)","value":"0"},{"unit":"Picocoulomb (pC)","value":"0"},{"unit":"Kilocoulomb (kC)","value":"1.6022e-22"},{"unit":"Megacoulomb (MC)","value":"1.6022e-25"},{"unit":"Elementary Charge (e)","value":"1"},{"unit":"Faraday (F)","value":"1.6605e-24"},{"unit":"Statcoulomb (statC)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"5_faraday_to_every_unit_2_decimals":{"summary":"5 faraday to every unit (2 decimals)","value":{"tool":"charge-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Coulomb (C)","value":"482426.66"},{"unit":"Millicoulomb (mC)","value":"482426660.6"},{"unit":"Microcoulomb (µC)","value":"482426660600"},{"unit":"Nanocoulomb (nC)","value":"482426660600000"},{"unit":"Picocoulomb (pC)","value":"4.82e+17"},{"unit":"Kilocoulomb (kC)","value":"482.43"},{"unit":"Megacoulomb (MC)","value":"0.48"},{"unit":"Elementary Charge (e)","value":"3.01e+24"},{"unit":"Faraday (F)","value":"5"},{"unit":"Statcoulomb (statC)","value":"1.45e+15"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/chmod-calculator":{"post":{"operationId":"run_chmod_calculator","summary":"Chmod Calculator","tags":["Converters"],"description":"Convert Unix file permission checkboxes (read/write/execute for owner, group and others) into the numeric chmod value and symbolic notation, plus a ready-to-run chmod command.\n\n[Try Chmod Calculator in your browser →](https://iotools.cloud/tool/chmod-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ownerRead":{"type":"boolean","description":"Read (4)"},"ownerWrite":{"type":"boolean","description":"Write (2)"},"ownerExecute":{"type":"boolean","description":"Execute (1)"},"groupRead":{"type":"boolean","description":"Read (4)"},"groupWrite":{"type":"boolean","description":"Write (2)"},"groupExecute":{"type":"boolean","description":"Execute (1)"},"otherRead":{"type":"boolean","description":"Read (4)"},"otherWrite":{"type":"boolean","description":"Write (2)"},"otherExecute":{"type":"boolean","description":"Execute (1)"}},"required":[]},"examples":{"rwxr_xr_754":{"summary":"rwxr-xr-- (754)","value":{"ownerRead":"true","ownerWrite":"true","ownerExecute":"true","groupRead":"true","groupWrite":"","groupExecute":"true","otherRead":"true","otherWrite":"","otherExecute":""}},"rw_r_r_644":{"summary":"rw-r--r-- (644)","value":{"ownerRead":"true","ownerWrite":"true","ownerExecute":"","groupRead":"true","groupWrite":"","groupExecute":"","otherRead":"true","otherWrite":"","otherExecute":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rwxr_xr_754":{"summary":"rwxr-xr-- (754)","value":{"tool":"chmod-calculator","tool_version":"1.0.2","outputs":{"numeric":"754","symbolic":"rwxr-xr--","chmodCommand":"chmod 754 filename"},"credits_used":5,"credits_remaining":null}},"rw_r_r_644":{"summary":"rw-r--r-- (644)","value":{"tool":"chmod-calculator","tool_version":"1.0.2","outputs":{"numeric":"644","symbolic":"rw-r--r--","chmodCommand":"chmod 644 filename"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"numeric":{"type":"string","description":"Numeric (Octal) Notation"},"symbolic":{"type":"string","description":"Symbolic Notation"},"chmodCommand":{"type":"string","description":"Chmod Command"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cmyk-to-hex-converter":{"post":{"operationId":"run_cmyk_to_hex_converter","summary":"CMYK to Hex Converter","tags":["Converters"],"description":"Convert CMYK print percentages (Cyan, Magenta, Yellow, Key/Black 0-100%) to a HEX color code, with RGB, HSL, HSV and a live color swatch.\n\n[Try CMYK to Hex Converter in your browser →](https://iotools.cloud/tool/cmyk-to-hex-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cmykC":{"type":"number","description":"C (Cyan)","minimum":0,"maximum":100},"cmykM":{"type":"number","description":"M (Magenta)","minimum":0,"maximum":100},"cmykY":{"type":"number","description":"Y (Yellow)","minimum":0,"maximum":100},"cmykK":{"type":"number","description":"K (Key/Black)","minimum":0,"maximum":100}},"required":[]},"examples":{"vivid_orange_0_60_100_0":{"summary":"Vivid orange (0%, 60%, 100%, 0%)","value":{"cmykC":"0","cmykM":"60","cmykY":"100","cmykK":"0"}},"royal_blue_75_50_0_20":{"summary":"Royal blue (75%, 50%, 0%, 20%)","value":{"cmykC":"75","cmykM":"50","cmykY":"0","cmykK":"20"}},"pure_white_0_0_0_0":{"summary":"Pure white (0%, 0%, 0%, 0%)","value":{"cmykC":"0","cmykM":"0","cmykY":"0","cmykK":"0"}},"pure_black_0_0_0_100":{"summary":"Pure black (0%, 0%, 0%, 100%)","value":{"cmykC":"0","cmykM":"0","cmykY":"0","cmykK":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"vivid_orange_0_60_100_0":{"summary":"Vivid orange (0%, 60%, 100%, 0%)","value":{"tool":"cmyk-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#FF6600","rgb":"rgb(255, 102, 0)","colorTable":[{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"60%"},{"property":"Yellow","value":"100%"},{"property":"Key (Black)","value":"0%"},{"property":"Red","value":"255"},{"property":"Green","value":"102"},{"property":"Blue","value":"0"},{"property":"HEX","value":"#FF6600"},{"property":"RGB","value":"rgb(255, 102, 0)"},{"property":"HSL","value":"hsl(24, 100%, 50%)"},{"property":"HSV","value":"hsv(24, 100%, 100%)"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FF6600;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#FF6600</div>"},"credits_used":5,"credits_remaining":null}},"royal_blue_75_50_0_20":{"summary":"Royal blue (75%, 50%, 0%, 20%)","value":{"tool":"cmyk-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#3366CC","rgb":"rgb(51, 102, 204)","colorTable":[{"property":"Cyan","value":"75%"},{"property":"Magenta","value":"50%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"20%"},{"property":"Red","value":"51"},{"property":"Green","value":"102"},{"property":"Blue","value":"204"},{"property":"HEX","value":"#3366CC"},{"property":"RGB","value":"rgb(51, 102, 204)"},{"property":"HSL","value":"hsl(220, 60%, 50%)"},{"property":"HSV","value":"hsv(220, 75%, 80%)"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#3366CC;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#3366CC</div>"},"credits_used":5,"credits_remaining":null}},"pure_white_0_0_0_0":{"summary":"Pure white (0%, 0%, 0%, 0%)","value":{"tool":"cmyk-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#FFFFFF","rgb":"rgb(255, 255, 255)","colorTable":[{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"0%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"0%"},{"property":"Red","value":"255"},{"property":"Green","value":"255"},{"property":"Blue","value":"255"},{"property":"HEX","value":"#FFFFFF"},{"property":"RGB","value":"rgb(255, 255, 255)"},{"property":"HSL","value":"hsl(0, 0%, 100%)"},{"property":"HSV","value":"hsv(0, 0%, 100%)"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FFFFFF;color:#111111;font-family:monospace;font-size:15px;font-weight:600\">#FFFFFF</div>"},"credits_used":5,"credits_remaining":null}},"pure_black_0_0_0_100":{"summary":"Pure black (0%, 0%, 0%, 100%)","value":{"tool":"cmyk-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#000000","rgb":"rgb(0, 0, 0)","colorTable":[{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"0%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"100%"},{"property":"Red","value":"0"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"HEX","value":"#000000"},{"property":"RGB","value":"rgb(0, 0, 0)"},{"property":"HSL","value":"hsl(0, 0%, 0%)"},{"property":"HSV","value":"hsv(0, 0%, 0%)"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#000000;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#000000</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hex":{"type":"string","description":"HEX"},"rgb":{"type":"string","description":"RGB"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"swatchHtml":{"type":"string","description":"Swatch HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cocktail-measurement-converter":{"post":{"operationId":"run_cocktail_measurement_converter","summary":"Cocktail Measurement Converter","tags":["Converters"],"description":"Convert bartending measurements — ounces, ml, cl, teaspoons, tablespoons, dashes, splashes, jiggers, ponies, shots and more — into every other unit at once.\n\n[Try Cocktail Measurement Converter in your browser →](https://iotools.cloud/tool/cocktail-measurement-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount","minimum":0},"fromUnit":{"enum":["ml","cl","liter","flOz","tsp","tbsp","cup","pint","barspoon","dash","splash","pony","jigger","shot","double"],"description":"Unit"}},"required":[]},"examples":{"1_5_fl_oz_to_other_units":{"summary":"1.5 fl oz to other units","value":{"value":"1.5","fromUnit":"flOz"}},"100_ml_to_other_units":{"summary":"100 ml to other units","value":{"value":"100","fromUnit":"ml"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_5_fl_oz_to_other_units":{"summary":"1.5 fl oz to other units","value":{"tool":"cocktail-measurement-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Milliliter (ml)","value":"44.3603"},{"unit":"Centiliter (cl)","value":"4.436"},{"unit":"Liter (L)","value":"0.0444"},{"unit":"Fluid Ounce (fl oz)","value":"1.5"},{"unit":"Teaspoon (tsp)","value":"9"},{"unit":"Tablespoon (tbsp)","value":"3"},{"unit":"Cup","value":"0.1875"},{"unit":"Pint (pt)","value":"0.0938"},{"unit":"Barspoon (bsp)","value":"8.872"},{"unit":"Dash","value":"48"},{"unit":"Splash","value":"12"},{"unit":"Pony","value":"1.5"},{"unit":"Jigger","value":"1"},{"unit":"Shot","value":"1"},{"unit":"Double Shot","value":"0.5"}]},"credits_used":5,"credits_remaining":null}},"100_ml_to_other_units":{"summary":"100 ml to other units","value":{"tool":"cocktail-measurement-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Milliliter (ml)","value":"100"},{"unit":"Centiliter (cl)","value":"10"},{"unit":"Liter (L)","value":"0.1"},{"unit":"Fluid Ounce (fl oz)","value":"3.3814"},{"unit":"Teaspoon (tsp)","value":"20.2884"},{"unit":"Tablespoon (tbsp)","value":"6.7628"},{"unit":"Cup","value":"0.4227"},{"unit":"Pint (pt)","value":"0.2113"},{"unit":"Barspoon (bsp)","value":"20"},{"unit":"Dash","value":"108.205"},{"unit":"Splash","value":"27.0512"},{"unit":"Pony","value":"3.3814"},{"unit":"Jigger","value":"2.2543"},{"unit":"Shot","value":"2.2543"},{"unit":"Double Shot","value":"1.1271"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-temp-converter":{"post":{"operationId":"run_color_temp_converter","summary":"Color Temperature Converter","tags":["Converters"],"description":"Convert a color temperature in Kelvin (e.g. 2700K candlelight, 6500K daylight) into its approximate RGB color, hex code and CSS values using the Tanner Helland algorithm.\n\n[Try Color Temperature Converter in your browser →](https://iotools.cloud/tool/color-temp-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"kelvin":{"type":"number","description":"Temperature (K)","minimum":1000,"maximum":40000}},"required":[]},"examples":{"6500k_d65_daylight":{"summary":"6500K — D65 daylight","value":{"kelvin":"6500"}},"2700k_warm_incandescent":{"summary":"2700K — warm incandescent","value":{"kelvin":"2700"}},"10000k_clear_blue_sky":{"summary":"10000K — clear blue sky","value":{"kelvin":"10000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6500k_d65_daylight":{"summary":"6500K — D65 daylight","value":{"tool":"color-temp-converter","tool_version":"1.0.2","outputs":{"colorTable":[{"format":"Kelvin","value":"6500K"},{"format":"Hex","value":"#FFFEFA"},{"format":"RGB","value":"rgb(255, 254, 250)"},{"format":"CSS","value":"rgb(255, 254, 250)"},{"format":"HSL","value":"hsl(48, 100%, 99%)"}]},"credits_used":5,"credits_remaining":null}},"2700k_warm_incandescent":{"summary":"2700K — warm incandescent","value":{"tool":"color-temp-converter","tool_version":"1.0.2","outputs":{"colorTable":[{"format":"Kelvin","value":"2700K"},{"format":"Hex","value":"#FFA757"},{"format":"RGB","value":"rgb(255, 167, 87)"},{"format":"CSS","value":"rgb(255, 167, 87)"},{"format":"HSL","value":"hsl(29, 100%, 67%)"}]},"credits_used":5,"credits_remaining":null}},"10000k_clear_blue_sky":{"summary":"10000K — clear blue sky","value":{"tool":"color-temp-converter","tool_version":"1.0.2","outputs":{"colorTable":[{"format":"Kelvin","value":"10000K"},{"format":"Hex","value":"#CADAFF"},{"format":"RGB","value":"rgb(202, 218, 255)"},{"format":"CSS","value":"rgb(202, 218, 255)"},{"format":"HSL","value":"hsl(222, 100%, 90%)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cooking-measurement-converter":{"post":{"operationId":"run_cooking_measurement_converter","summary":"Cooking Measurement Converter","tags":["Converters"],"description":"Convert cooking and baking measurements — cups, tablespoons, teaspoons, fluid ounces, milliliters, liters, grams, kilograms, ounces and pounds — into every other unit at once, with optional ingredient-specific volume-to-weight conversion.\n\n[Try Cooking Measurement Converter in your browser →](https://iotools.cloud/tool/cooking-measurement-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount","minimum":0},"fromUnit":{"enum":["cup","tbsp","tsp","floz","ml","l","g","kg","oz","lb"],"description":"Unit"},"ingredient":{"enum":["none","all_purpose_flour","bread_flour","cake_flour","whole_wheat_flour","almond_flour","coconut_flour","rye_flour","oat_flour","cornstarch","granulated_sugar","brown_sugar_packed","powdered_sugar","honey","maple_syrup","corn_syrup","molasses","agave_nectar","water","milk_whole","heavy_cream","buttermilk","vegetable_oil","olive_oil","coconut_oil","sour_cream","yogurt","butter","cream_cheese","ricotta","parmesan_grated","cheddar_shredded","white_rice","brown_rice","rolled_oats","quinoa","couscous","breadcrumbs_dry","panko","almonds_whole","walnuts_chopped","pecans_chopped","peanuts","peanut_butter","flax_seeds","chia_seeds","sesame_seeds","sunflower_seeds","coconut_shredded","cocoa_powder","baking_powder","baking_soda","salt_table","salt_kosher","ground_cinnamon","ground_ginger","black_pepper","vanilla_extract","chocolate_chips","raisins","dried_cranberries","jam","mayonnaise","ketchup","soy_sauce"],"description":"Ingredient (for volume ↔ weight)"}},"required":[]},"examples":{"2_cups_of_all_purpose_flour_to_every_unit":{"summary":"2 cups of all-purpose flour to every unit","value":{"value":"2","fromUnit":"cup","ingredient":"all_purpose_flour"}},"500_ml_to_every_unit_no_ingredient":{"summary":"500 mL to every unit (no ingredient)","value":{"value":"500","fromUnit":"ml","ingredient":"none"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_cups_of_all_purpose_flour_to_every_unit":{"summary":"2 cups of all-purpose flour to every unit","value":{"tool":"cooking-measurement-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Cup","value":"2"},{"unit":"Tablespoon (tbsp)","value":"31.9995"},{"unit":"Teaspoon (tsp)","value":"95.9984"},{"unit":"Fluid Ounce (fl oz)","value":"15.9997"},{"unit":"Milliliter (mL)","value":"473.176"},{"unit":"Liter (L)","value":"0.4732"},{"unit":"Gram (g)","value":"240"},{"unit":"Kilogram (kg)","value":"0.24"},{"unit":"Ounce (oz)","value":"8.4658"},{"unit":"Pound (lb)","value":"0.5291"}]},"credits_used":5,"credits_remaining":null}},"500_ml_to_every_unit_no_ingredient":{"summary":"500 mL to every unit (no ingredient)","value":{"tool":"cooking-measurement-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Cup","value":"2.1134"},{"unit":"Tablespoon (tbsp)","value":"33.8135"},{"unit":"Teaspoon (tsp)","value":"101.4405"},{"unit":"Fluid Ounce (fl oz)","value":"16.9067"},{"unit":"Milliliter (mL)","value":"500"},{"unit":"Liter (L)","value":"0.5"},{"unit":"Gram (g)","value":"-"},{"unit":"Kilogram (kg)","value":"-"},{"unit":"Ounce (oz)","value":"-"},{"unit":"Pound (lb)","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/coordinate-format-converter":{"post":{"operationId":"run_coordinate_format_converter","summary":"Coordinate Format Converter","tags":["Converters"],"description":"Convert geographic coordinates between Decimal Degrees (DD), Degrees Minutes Seconds (DMS) and Degrees Decimal Minutes (DDM) — paste a latitude and longitude in any of the three formats and get all three side by side.\n\n[Try Coordinate Format Converter in your browser →](https://iotools.cloud/tool/coordinate-format-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"},"decimals":{"enum":["2","3","4","5","6","7","8"],"description":"Decimal Precision"}},"required":["latitude","longitude"]},"examples":{"new_york_city_from_decimal_degrees":{"summary":"New York City (from Decimal Degrees)","value":{"latitude":"40.7128","longitude":"-74.0060","decimals":"6"}},"new_york_city_from_dms_round_trip_check":{"summary":"New York City (from DMS, round-trip check)","value":{"latitude":"40°42'46.08\"N","longitude":"74°0'21.6\"W","decimals":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"new_york_city_from_decimal_degrees":{"summary":"New York City (from Decimal Degrees)","value":{"tool":"coordinate-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Decimal Degrees (DD)","latitude":"40.7128","longitude":"-74.006"},{"format":"Degrees Decimal Minutes (DDM)","latitude":"40°42.768'N","longitude":"74°0.36'W"},{"format":"Degrees Minutes Seconds (DMS)","latitude":"40°42'46.08\"N","longitude":"74°0'21.6\"W"}]},"credits_used":5,"credits_remaining":null}},"new_york_city_from_dms_round_trip_check":{"summary":"New York City (from DMS, round-trip check)","value":{"tool":"coordinate-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Decimal Degrees (DD)","latitude":"40.7128","longitude":"-74.006"},{"format":"Degrees Decimal Minutes (DDM)","latitude":"40°42.768'N","longitude":"74°0.36'W"},{"format":"Degrees Minutes Seconds (DMS)","latitude":"40°42'46.08\"N","longitude":"74°0'21.6\"W"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Converted Coordinates","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}}},"x-iotools-columns":["format","latitude","longitude"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crlf-lf-line-ending-converter":{"post":{"operationId":"run_crlf_lf_line_ending_converter","summary":"CRLF/LF Line Ending Converter","tags":["Converters"],"description":"Convert line endings between CRLF (Windows), LF (Unix/Linux/macOS) and CR (classic Mac) in pasted text or an uploaded file. Detects the input's current line-ending style, including mixed endings, before converting.\n\n[Try CRLF/LF Line Ending Converter in your browser →](https://iotools.cloud/tool/crlf-lf-line-ending-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Original Text"},"convertTo":{"enum":["lf","crlf","cr"],"description":"Convert To"}},"required":[]},"examples":{"mixed_line_endings_to_lf":{"summary":"Mixed line endings to LF","value":{"originalText":"First line with LF ending\nSecond line with CRLF ending\r\nThird line with CR ending\rFourth line back to LF\nFifth line mixed endings\r\nThe End\n","convertTo":"lf"}},"plain_lf_text_to_crlf":{"summary":"Plain LF text to CRLF","value":{"originalText":"Line one\nLine two\nLine three","convertTo":"crlf"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_line_endings_to_lf":{"summary":"Mixed line endings to LF","value":{"tool":"crlf-lf-line-ending-converter","tool_version":"1.0.2","outputs":{"convertedText":"First line with LF ending\nSecond line with CRLF ending\nThird line with CR ending\nFourth line back to LF\nFifth line mixed endings\nThe End\n","stats":[{"metric":"CRLF (\\r\\n) count","value":"2"},{"metric":"LF (\\n) count","value":"3"},{"metric":"CR (\\r) count","value":"1"},{"metric":"Detected style","value":"Mixed (CRLF + LF + CR)"},{"metric":"Converted to","value":"LF (\\n) — Unix / Linux / macOS"}]},"credits_used":5,"credits_remaining":null}},"plain_lf_text_to_crlf":{"summary":"Plain LF text to CRLF","value":{"tool":"crlf-lf-line-ending-converter","tool_version":"1.0.2","outputs":{"convertedText":"Line one\r\nLine two\r\nLine three","stats":[{"metric":"CRLF (\\r\\n) count","value":"0"},{"metric":"LF (\\n) count","value":"2"},{"metric":"CR (\\r) count","value":"0"},{"metric":"Detected style","value":"LF"},{"metric":"Converted to","value":"CRLF (\\r\\n) — Windows"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"convertedText":{"type":"string","description":"Converted Text"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-custom-properties-to-scss-converter":{"post":{"operationId":"run_css_custom_properties_to_scss_converter","summary":"CSS Custom Properties to SCSS Variables Converter","tags":["Converters"],"description":"Convert CSS custom properties (--name, var()) to Sass/SCSS variables ($name) and back. Unwraps :root into global Sass scope, resolves var() fallbacks, and preserves comments and structure.\n\n[Try CSS Custom Properties to SCSS Variables Converter in your browser →](https://iotools.cloud/tool/css-custom-properties-to-scss-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["css-to-scss","scss-to-css"],"description":"Direction"},"inputCode":{"type":"string","description":"Input"}},"required":[]},"examples":{"css_custom_properties_scss":{"summary":"CSS custom properties → SCSS","value":{"direction":"css-to-scss","inputCode":":root {\n  --primary-color: #464aff;\n  --spacing-base: 8px;\n  --accent-color: var(--primary-color);\n}\n\n.card {\n  color: var(--primary-color);\n  padding: var(--spacing-base, 16px);\n  border: 1px solid var(--border-color, #e0e0e0);\n}"}},"scss_variables_css_custom_properties":{"summary":"SCSS variables → CSS custom properties","value":{"direction":"scss-to-css","inputCode":"$primary-color: #464aff;\n$spacing-base: 8px !default;\n\n.card {\n  $card-radius: 4px;\n\n  color: $primary-color;\n  padding: $spacing-base;\n  border-radius: $card-radius;\n}"}},"media_query_override_stays_plain_css":{"summary":"Media-query override stays plain CSS","value":{"direction":"css-to-scss","inputCode":":root {\n  --primary: #464aff;\n}\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --primary: #111111;\n  }\n}\n\n.badge {\n  color: var(--primary);\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"css_custom_properties_scss":{"summary":"CSS custom properties → SCSS","value":{"tool":"css-custom-properties-to-scss-converter","tool_version":"1.0.2","outputs":{"outputCode":"$primary-color: #464aff;\n  $spacing-base: 8px;\n  $accent-color: $primary-color;\n\n.card {\n  color: $primary-color;\n  padding: $spacing-base;\n  border: 1px solid #e0e0e0;\n}\n"},"credits_used":5,"credits_remaining":null}},"scss_variables_css_custom_properties":{"summary":"SCSS variables → CSS custom properties","value":{"tool":"css-custom-properties-to-scss-converter","tool_version":"1.0.2","outputs":{"outputCode":":root {\n  --primary-color: #464aff;\n  --spacing-base: 8px;\n}\n\n.card {\n  --card-radius: 4px;\n\n  color: var(--primary-color);\n  padding: var(--spacing-base);\n  border-radius: var(--card-radius);\n}\n"},"credits_used":5,"credits_remaining":null}},"media_query_override_stays_plain_css":{"summary":"Media-query override stays plain CSS","value":{"tool":"css-custom-properties-to-scss-converter","tool_version":"1.0.2","outputs":{"outputCode":"$primary: #464aff;\n\n@media (prefers-color-scheme: dark) {\n  :root {\n    --primary: #111111;\n  }\n}\n\n.badge {\n  color: $primary;\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputCode":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-logical-properties-converter":{"post":{"operationId":"run_css_logical_properties_converter","summary":"CSS Logical Properties Converter","tags":["Converters"],"description":"Convert physical CSS properties (margin-left, width, top, text-align: left) to their logical-property equivalents (margin-inline-start, inline-size, inset-block-start, text-align: start), or the reverse.\n\n[Try CSS Logical Properties Converter in your browser →](https://iotools.cloud/tool/css-logical-properties-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputCss":{"type":"string","description":"CSS Input"},"direction":{"enum":["physical-to-logical","logical-to-physical"],"description":"Direction"}},"required":["inputCss"]},"examples":{"physical_to_logical":{"summary":"Physical to logical","value":{"inputCss":".box {\n  margin-left: 10px;\n  margin-right: 20px;\n  width: 100px;\n  text-align: left;\n}","direction":"physical-to-logical"}},"logical_to_physical":{"summary":"Logical to physical","value":{"inputCss":".card {\n  margin-inline-start: 16px;\n  padding-block-end: 12px;\n  inline-size: 100%;\n  text-align: start;\n}","direction":"logical-to-physical"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"physical_to_logical":{"summary":"Physical to logical","value":{"tool":"css-logical-properties-converter","tool_version":"1.0.2","outputs":{"outputCss":".box {\n  margin-inline-start: 10px;\n  margin-inline-end: 20px;\n  inline-size: 100px;\n  text-align: start;\n}"},"credits_used":5,"credits_remaining":null}},"logical_to_physical":{"summary":"Logical to physical","value":{"tool":"css-logical-properties-converter","tool_version":"1.0.2","outputs":{"outputCss":".card {\n  margin-left: 16px;\n  padding-bottom: 12px;\n  width: 100%;\n  text-align: left;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputCss":{"type":"string","description":"Converted CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-nesting-converter":{"post":{"operationId":"run_css_nesting_converter","summary":"CSS Nesting Converter","tags":["Converters"],"description":"Flatten native CSS nesting (& selectors and nested blocks) into plain flat CSS rules, for browsers or tools that don't support CSS Nesting yet.\n\n[Try CSS Nesting Converter in your browser →](https://iotools.cloud/tool/css-nesting-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputCss":{"type":"string","description":"Nested CSS"}},"required":[]},"examples":{"descendant_pseudo_class_nesting":{"summary":"Descendant + pseudo-class nesting","value":{"inputCss":".card {\n  color: #1a1a1a;\n  padding: 16px;\n\n  .title {\n    font-size: 20px;\n    font-weight: 600;\n  }\n\n  &:hover {\n    background: #f5f5ff;\n  }\n}"}},"deep_nesting_combinator_and_media":{"summary":"Deep nesting, combinator and @media","value":{"inputCss":".card {\n  color: #1a1a1a;\n  padding: 16px;\n\n  & .title {\n    font-size: 20px;\n    font-weight: 600;\n\n    &:hover {\n      color: #464aff;\n    }\n  }\n\n  &:hover {\n    background: #f5f5ff;\n  }\n\n  > .footer {\n    margin-top: 12px;\n  }\n\n  @media (min-width: 768px) {\n    padding: 24px;\n  }\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"descendant_pseudo_class_nesting":{"summary":"Descendant + pseudo-class nesting","value":{"tool":"css-nesting-converter","tool_version":"1.0.2","outputs":{"outputCss":".card {\n  color: #1a1a1a;\n  padding: 16px;\n}\n.card .title {\n  font-size: 20px;\n  font-weight: 600;\n}\n.card:hover {\n  background: #f5f5ff;\n}\n"},"credits_used":5,"credits_remaining":null}},"deep_nesting_combinator_and_media":{"summary":"Deep nesting, combinator and @media","value":{"tool":"css-nesting-converter","tool_version":"1.0.2","outputs":{"outputCss":".card {\n  color: #1a1a1a;\n  padding: 16px;\n}\n.card .title {\n  font-size: 20px;\n  font-weight: 600;\n}\n.card .title:hover {\n  color: #464aff;\n}\n.card:hover {\n  background: #f5f5ff;\n}\n.card > .footer {\n  margin-top: 12px;\n}\n@media (min-width: 768px) {\n  .card {\n    padding: 24px;\n  }\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputCss":{"type":"string","description":"Flattened CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-to-js-converter":{"post":{"operationId":"run_css_to_js_converter","summary":"CSS to JS Converter","tags":["Converters"],"description":"Convert CSS declarations into a JS style object (React inline style, React Native StyleSheet, styled-components, Emotion, or plain object) — and back from JS to CSS.\n\n[Try CSS to JS Converter in your browser →](https://iotools.cloud/tool/css-to-js-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["css-to-js","js-to-css"],"description":"Direction"},"cssInput":{"type":"string","description":"Input"},"outputFormat":{"enum":["react","react-native","styled-components","emotion","plain"],"description":"Output Format"}},"required":["cssInput"]},"examples":{"css_to_react_inline_style":{"summary":"CSS to React inline style","value":{"direction":"css-to-js","cssInput":".container {\n  display: flex;\n  background-color: #ffffff;\n  font-size: 16px;\n  line-height: 1.5;\n  z-index: 10;\n}","outputFormat":"react"}},"css_to_react_native_stylesheet":{"summary":"CSS to React Native StyleSheet","value":{"direction":"css-to-js","cssInput":"padding: 16px;\nmargin: 0 auto;\nfont-size: 14px;\nopacity: 0.5;","outputFormat":"react-native"}},"js_style_object_to_css":{"summary":"JS style object to CSS","value":{"direction":"js-to-css","cssInput":"{\n  backgroundColor: '#f5f5f5',\n  fontSize: '14px',\n  lineHeight: 1.5,\n}","outputFormat":"react"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"css_to_react_inline_style":{"summary":"CSS to React inline style","value":{"tool":"css-to-js-converter","tool_version":"1.0.2","outputs":{"output":"const styles = {\n  display: 'flex',\n  backgroundColor: '#ffffff',\n  fontSize: '16px',\n  lineHeight: 1.5,\n  zIndex: 10,\n};"},"credits_used":5,"credits_remaining":null}},"css_to_react_native_stylesheet":{"summary":"CSS to React Native StyleSheet","value":{"tool":"css-to-js-converter","tool_version":"1.0.2","outputs":{"output":"const styles = StyleSheet.create({\n  container: {\n    padding: 16,\n    margin: '0 auto',\n    fontSize: 14,\n    opacity: 0.5,\n  },\n});"},"credits_used":5,"credits_remaining":null}},"js_style_object_to_css":{"summary":"JS style object to CSS","value":{"tool":"css-to-js-converter","tool_version":"1.0.2","outputs":{"output":".selector {\n  background-color: #f5f5f5;\n  font-size: 14px;\n  line-height: 1.5;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-to-js-style-converter":{"post":{"operationId":"run_css_to_js_style_converter","summary":"CSS to JS Style Converter","tags":["Converters"],"description":"Convert CSS declarations to a React inline style object, a React Native StyleSheet, or a styled-components/Emotion css template literal — and convert JS style objects back to plain CSS.\n\n[Try CSS to JS Style Converter in your browser →](https://iotools.cloud/tool/css-to-js-style-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"conversionDirection":{"enum":["css-to-js","js-to-css"],"description":"Conversion Direction"},"outputFormat":{"enum":["react-inline","react-native","styled-components"],"description":"Output Format"},"cssInput":{"type":"string","description":"Input"}},"required":[]},"examples":{"css_to_react_inline_style":{"summary":"CSS to React inline style","value":{"conversionDirection":"css-to-js","outputFormat":"react-inline","cssInput":"background-color: #3b82f6;\nfont-size: 16px;\nopacity: 0.5;"}},"css_to_react_native_stylesheet":{"summary":"CSS to React Native StyleSheet","value":{"conversionDirection":"css-to-js","outputFormat":"react-native","cssInput":"width: 100px;\nmargin: 8px;\nfont-weight: 700;\ncolor: white;"}},"css_to_styled_components_emotion":{"summary":"CSS to styled-components / Emotion","value":{"conversionDirection":"css-to-js","outputFormat":"styled-components","cssInput":"display: flex;\npadding: 16px 32px;\ncolor: #ffffff;"}},"javascript_object_back_to_css":{"summary":"JavaScript object back to CSS","value":{"conversionDirection":"js-to-css","outputFormat":"react-inline","cssInput":"{\n  backgroundColor: '#3b82f6',\n  fontSize: 16,\n  opacity: 0.5,\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"css_to_react_inline_style":{"summary":"CSS to React inline style","value":{"tool":"css-to-js-style-converter","tool_version":"1.0.2","outputs":{"output":"const styles = {\n  backgroundColor: '#3b82f6',\n  fontSize: 16,\n  opacity: 0.5,\n};"},"credits_used":5,"credits_remaining":null}},"css_to_react_native_stylesheet":{"summary":"CSS to React Native StyleSheet","value":{"tool":"css-to-js-style-converter","tool_version":"1.0.2","outputs":{"output":"const styles = StyleSheet.create({\n  container: {\n    width: 100,\n    margin: 8,\n    fontWeight: 700,\n    color: 'white',\n  },\n});"},"credits_used":5,"credits_remaining":null}},"css_to_styled_components_emotion":{"summary":"CSS to styled-components / Emotion","value":{"tool":"css-to-js-style-converter","tool_version":"1.0.2","outputs":{"output":"const styles = css`\n  display: flex;\n  padding: 16px 32px;\n  color: #ffffff;\n`;"},"credits_used":5,"credits_remaining":null}},"javascript_object_back_to_css":{"summary":"JavaScript object back to CSS","value":{"tool":"css-to-js-style-converter","tool_version":"1.0.2","outputs":{"output":"background-color: #3b82f6;\nfont-size: 16px;\nopacity: 0.5;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-to-tailwind-converter":{"post":{"operationId":"run_css_to_tailwind_converter","summary":"CSS to Tailwind Converter","tags":["Converters"],"description":"Convert plain CSS declarations (display: flex, padding: 16px, color: #ffffff) into their closest Tailwind CSS utility classes, falling back to arbitrary-value syntax when no exact token matches.\n\n[Try CSS to Tailwind Converter in your browser →](https://iotools.cloud/tool/css-to-tailwind-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cssInput":{"type":"string","description":"CSS Input"}},"required":["cssInput"]},"examples":{"flex_layout_spacing":{"summary":"Flex layout + spacing","value":{"cssInput":"display: flex;\npadding: 16px;\njustify-content: center;"}},"arbitrary_color_font_size_scale":{"summary":"Arbitrary color + font-size scale","value":{"cssInput":"color: #123456;\nfont-size: 16px;\nposition: relative;"}},"unmatched_property_falls_back_to_a_comment":{"summary":"Unmatched property falls back to a comment","value":{"cssInput":"display: grid;\nmask-image: url(foo.svg);\ngap: 8px;"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flex_layout_spacing":{"summary":"Flex layout + spacing","value":{"tool":"css-to-tailwind-converter","tool_version":"1.0.2","outputs":{"tailwindClasses":"flex p-4 justify-center"},"credits_used":5,"credits_remaining":null}},"arbitrary_color_font_size_scale":{"summary":"Arbitrary color + font-size scale","value":{"tool":"css-to-tailwind-converter","tool_version":"1.0.2","outputs":{"tailwindClasses":"text-[#123456] text-base relative"},"credits_used":5,"credits_remaining":null}},"unmatched_property_falls_back_to_a_comment":{"summary":"Unmatched property falls back to a comment","value":{"tool":"css-to-tailwind-converter","tool_version":"1.0.2","outputs":{"tailwindClasses":"grid /* mask-image: url(foo.svg) - No direct Tailwind equivalent */ gap-2"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tailwindClasses":{"type":"string","description":"Tailwind CSS Classes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-to-json-converter":{"post":{"operationId":"run_csv_to_json_converter","summary":"CSV to JSON Converter","tags":["Converters"],"description":"Convert CSV to JSON. Parses real CSV grammar — quoted fields with embedded commas, newlines and escaped double-quotes — with a comma, semicolon or tab delimiter, and outputs either an array of objects (first row as headers) or an array of arrays. Runs entirely in your browser.\n\n[Try CSV to JSON Converter in your browser →](https://iotools.cloud/tool/csv-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvSource":{"type":"string","description":"CSV input"},"delimiter":{"enum":[",",";","tab"],"description":"Delimiter"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":[]},"examples":{"quoted_field_with_embedded_comma_header_row":{"summary":"Quoted field with embedded comma, header row","value":{"csvSource":"name,age,city\nAlice,30,New York\nBob,25,Los Angeles\n\"Smith, John\",35,\"San Francisco\"","delimiter":",","firstRowHeaders":"true","indent":"2"}},"no_headers_array_of_arrays":{"summary":"No headers — array of arrays","value":{"csvSource":"a,b,c\n1,2,3","delimiter":",","firstRowHeaders":"","indent":"2"}},"embedded_newline_escaped_quotes_semicolon_delimiter_minified":{"summary":"Embedded newline & escaped quotes, semicolon delimiter, minified","value":{"csvSource":"name;note\n\"Jane Doe\";\"She said \"\"hi\"\"\nand left\"\n\"John\";\"Simple\"","delimiter":";","firstRowHeaders":"true","indent":"minified"}},"tab_delimiter":{"summary":"Tab delimiter","value":{"csvSource":"name\tscore\nAlice\t10\nBob\t20","delimiter":"tab","firstRowHeaders":"true","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"quoted_field_with_embedded_comma_header_row":{"summary":"Quoted field with embedded comma, header row","value":{"tool":"csv-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"[\n  {\n    \"name\": \"Alice\",\n    \"age\": \"30\",\n    \"city\": \"New York\"\n  },\n  {\n    \"name\": \"Bob\",\n    \"age\": \"25\",\n    \"city\": \"Los Angeles\"\n  },\n  {\n    \"name\": \"Smith, John\",\n    \"age\": \"35\",\n    \"city\": \"San Francisco\"\n  }\n]"},"credits_used":5,"credits_remaining":null}},"no_headers_array_of_arrays":{"summary":"No headers — array of arrays","value":{"tool":"csv-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"[\n  [\n    \"a\",\n    \"b\",\n    \"c\"\n  ],\n  [\n    \"1\",\n    \"2\",\n    \"3\"\n  ]\n]"},"credits_used":5,"credits_remaining":null}},"embedded_newline_escaped_quotes_semicolon_delimiter_minified":{"summary":"Embedded newline & escaped quotes, semicolon delimiter, minified","value":{"tool":"csv-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"[{\"name\":\"Jane Doe\",\"note\":\"She said \\\"hi\\\"\\nand left\"},{\"name\":\"John\",\"note\":\"Simple\"}]"},"credits_used":5,"credits_remaining":null}},"tab_delimiter":{"summary":"Tab delimiter","value":{"tool":"csv-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"[\n  {\n    \"name\": \"Alice\",\n    \"score\": \"10\"\n  },\n  {\n    \"name\": \"Bob\",\n    \"score\": \"20\"\n  }\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-to-xml-converter":{"post":{"operationId":"run_csv_to_xml_converter","summary":"CSV to XML Converter","tags":["Converters"],"description":"Convert CSV to XML. Parses real CSV grammar — quoted fields with embedded commas, newlines and escaped double-quotes — with a comma, semicolon, tab or pipe delimiter (or auto-detect), and builds properly-indented, XML-escaped XML with customizable root/row element names. Runs entirely in your browser.\n\n[Try CSV to XML Converter in your browser →](https://iotools.cloud/tool/csv-to-xml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvSource":{"type":"string","description":"CSV input"},"delimiter":{"enum":["auto",",",";","tab","|"],"description":"Delimiter"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"rootElement":{"type":"string","description":"Root element name"},"rowElement":{"type":"string","description":"Row element name"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":[]},"examples":{"header_row_comma_delimiter_embedded_comma_in_a_quoted_field":{"summary":"Header row, comma delimiter, embedded comma in a quoted field","value":{"csvSource":"name,age,city\nAlice,30,New York\nBob,25,Los Angeles\n\"Smith, John\",35,\"San Francisco\"","delimiter":",","firstRowHeaders":"true","rootElement":"rows","rowElement":"row","indent":"2"}},"no_header_row_generic_field1_field2_names":{"summary":"No header row — generic field1, field2, … names","value":{"csvSource":"a,b,c\n1,2,3","delimiter":",","firstRowHeaders":"","rootElement":"rows","rowElement":"row","indent":"2"}},"semicolon_delimiter_escaped_quotes_embedded_newline_custom_root_row_names":{"summary":"Semicolon delimiter, escaped quotes & embedded newline, custom root/row names","value":{"csvSource":"name;note\n\"Jane Doe\";\"She said \"\"hi\"\"\nand left\"\n\"John\";\"A & B <tag>\"","delimiter":";","firstRowHeaders":"true","rootElement":"people","rowElement":"person","indent":"2"}},"auto_detect_tab_sanitized_headers_with_spaces_leading_digit_minified_output":{"summary":"Auto-detect (tab), sanitized headers with spaces/leading digit, minified output","value":{"csvSource":"First Name\t2nd Score\tCity\nAlice\t\tNYC","delimiter":"auto","firstRowHeaders":"true","rootElement":"rows","rowElement":"row","indent":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"header_row_comma_delimiter_embedded_comma_in_a_quoted_field":{"summary":"Header row, comma delimiter, embedded comma in a quoted field","value":{"tool":"csv-to-xml-converter","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rows>\n  <row>\n    <name>Alice</name>\n    <age>30</age>\n    <city>New York</city>\n  </row>\n  <row>\n    <name>Bob</name>\n    <age>25</age>\n    <city>Los Angeles</city>\n  </row>\n  <row>\n    <name>Smith, John</name>\n    <age>35</age>\n    <city>San Francisco</city>\n  </row>\n</rows>"},"credits_used":5,"credits_remaining":null}},"no_header_row_generic_field1_field2_names":{"summary":"No header row — generic field1, field2, … names","value":{"tool":"csv-to-xml-converter","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rows>\n  <row>\n    <field1>a</field1>\n    <field2>b</field2>\n    <field3>c</field3>\n  </row>\n  <row>\n    <field1>1</field1>\n    <field2>2</field2>\n    <field3>3</field3>\n  </row>\n</rows>"},"credits_used":5,"credits_remaining":null}},"semicolon_delimiter_escaped_quotes_embedded_newline_custom_root_row_names":{"summary":"Semicolon delimiter, escaped quotes & embedded newline, custom root/row names","value":{"tool":"csv-to-xml-converter","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people>\n  <person>\n    <name>Jane Doe</name>\n    <note>She said &quot;hi&quot;\nand left</note>\n  </person>\n  <person>\n    <name>John</name>\n    <note>A &amp; B &lt;tag&gt;</note>\n  </person>\n</people>"},"credits_used":5,"credits_remaining":null}},"auto_detect_tab_sanitized_headers_with_spaces_leading_digit_minified_output":{"summary":"Auto-detect (tab), sanitized headers with spaces/leading digit, minified output","value":{"tool":"csv-to-xml-converter","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><rows><row><First_Name>Alice</First_Name><_2nd_Score/><City>NYC</City></row></rows>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputXml":{"type":"string","description":"XML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-to-sql":{"post":{"operationId":"run_csv_to_sql","summary":"CSV to SQL Converter","tags":["Converters"],"description":"Convert CSV data with a header row into a CREATE TABLE statement and INSERT statements — infers each column's type (INTEGER/REAL/TEXT), picks MySQL/PostgreSQL/SQLite identifier quoting, and escapes string values.\n\n[Try CSV to SQL Converter in your browser →](https://iotools.cloud/tool/csv-to-sql/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvInput":{"type":"string","description":"CSV data"},"tableName":{"type":"string","description":"Table name"},"dialect":{"enum":["mysql","postgresql","sqlite"],"description":"Dialect"},"batchInserts":{"type":"boolean","description":"Batch INSERT (single statement with multiple VALUES rows)"}},"required":[]},"examples":{"mysql_batch_insert":{"summary":"MySQL, batch INSERT","value":{"csvInput":"id,name,price\n1,Widget,9.99\n2,\"O'Brien's Gadget\",19.50\n3,Sprocket,","tableName":"products","dialect":"mysql","batchInserts":"true"}},"postgresql_individual_inserts":{"summary":"PostgreSQL, individual INSERTs","value":{"csvInput":"id,name,price\n1,Widget,9.99\n2,\"O'Brien's Gadget\",19.50\n3,Sprocket,","tableName":"products","dialect":"postgresql","batchInserts":""}},"sqlite_batch_insert":{"summary":"SQLite, batch INSERT","value":{"csvInput":"id,name,price\n1,Widget,9.99\n2,\"O'Brien's Gadget\",19.50\n3,Sprocket,","tableName":"products","dialect":"sqlite","batchInserts":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mysql_batch_insert":{"summary":"MySQL, batch INSERT","value":{"tool":"csv-to-sql","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE `products` (\n  `id` INT,\n  `name` VARCHAR(255),\n  `price` DECIMAL(10,2)\n);\n\nINSERT INTO `products` (`id`, `name`, `price`) VALUES\n  (1, 'Widget', 9.99),\n  (2, 'O''Brien''s Gadget', 19.50),\n  (3, 'Sprocket', NULL);"},"credits_used":5,"credits_remaining":null}},"postgresql_individual_inserts":{"summary":"PostgreSQL, individual INSERTs","value":{"tool":"csv-to-sql","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE \"products\" (\n  \"id\" INTEGER,\n  \"name\" TEXT,\n  \"price\" NUMERIC(10,2)\n);\n\nINSERT INTO \"products\" (\"id\", \"name\", \"price\") VALUES (1, 'Widget', 9.99);\nINSERT INTO \"products\" (\"id\", \"name\", \"price\") VALUES (2, 'O''Brien''s Gadget', 19.50);\nINSERT INTO \"products\" (\"id\", \"name\", \"price\") VALUES (3, 'Sprocket', NULL);"},"credits_used":5,"credits_remaining":null}},"sqlite_batch_insert":{"summary":"SQLite, batch INSERT","value":{"tool":"csv-to-sql","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE \"products\" (\n  \"id\" INTEGER,\n  \"name\" TEXT,\n  \"price\" REAL\n);\n\nINSERT INTO \"products\" (\"id\", \"name\", \"price\") VALUES\n  (1, 'Widget', 9.99),\n  (2, 'O''Brien''s Gadget', 19.50),\n  (3, 'Sprocket', NULL);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sqlOutput":{"type":"string","description":"SQL output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-to-po":{"post":{"operationId":"run_csv_to_po","summary":"CSV to PO Converter","tags":["Converters"],"description":"Convert a two-column CSV translation spreadsheet (original text, translated text) into a GNU gettext .po source file. Runs entirely in your browser — no upload.\n\n[Try CSV to PO Converter in your browser →](https://iotools.cloud/tool/csv-to-po/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"csv":{"type":"string","description":"CSV data (original text, translated text)"},"delimiter":{"enum":["auto",",","\t",";","|"],"description":"Delimiter"},"hasHeader":{"type":"boolean","description":"First row is a header"}},"required":["csv"]},"examples":{"two_row_spreadsheet":{"summary":"Two-row spreadsheet","value":{"csv":"\"Hello\",\"Hola\"\n\"Goodbye\",\"Adiós\""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_row_spreadsheet":{"summary":"Two-row spreadsheet","value":{"tool":"csv-to-po","tool_version":"1.0.2","outputs":{"po":"msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: PACKAGE VERSION\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n\"Language-Team: LANGUAGE <LL@li.org>\\n\"\n\"Language: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\nmsgid \"Hello\"\nmsgstr \"Hola\"\n\nmsgid \"Goodbye\"\nmsgstr \"Adiós\"\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"po":{"type":"string","description":"PO file"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/curl-to-code-converter":{"post":{"operationId":"run_curl_to_code_converter","summary":"cURL to Code Converter","tags":["Converters"],"description":"Convert a curl command into equivalent request code — Python requests, JavaScript fetch/axios, Node.js, PHP (Guzzle or the cURL extension), Go net/http, or Ruby Net::HTTP.\n\n[Try cURL to Code Converter in your browser →](https://iotools.cloud/tool/curl-to-code-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"curlCommand":{"type":"string","description":"cURL Command"},"targetLanguage":{"enum":["python-requests","javascript-fetch","javascript-axios","node-fetch","php-guzzle","php-curl","go-nethttp","ruby-nethttp"],"description":"Target Language"},"includeComments":{"type":"boolean","description":"Include explanatory comments"}},"required":[]},"examples":{"post_with_json_body_python_requests":{"summary":"POST with JSON body -> Python requests","value":{"curlCommand":"curl -X POST \"https://api.example.com/v1/users\" -H \"Content-Type: application/json\" -d '{\"name\": \"Alice Smith\", \"email\": \"alice@example.com\"}'","targetLanguage":"python-requests","includeComments":"true"}},"post_with_json_body_php_curl":{"summary":"POST with JSON body -> PHP cURL","value":{"curlCommand":"curl -X POST \"https://api.example.com/v1/users\" -H \"Content-Type: application/json\" -d '{\"name\": \"Alice Smith\", \"email\": \"alice@example.com\"}'","targetLanguage":"php-curl","includeComments":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"post_with_json_body_python_requests":{"summary":"POST with JSON body -> Python requests","value":{"tool":"curl-to-code-converter","tool_version":"1.0.2","outputs":{"generatedCode":"# Generated from curl command\nimport requests\n\nurl = 'https://api.example.com/v1/users'\nheaders = {\n    'Content-Type': 'application/json',\n}\njson_data = {\n    'name': 'Alice Smith',\n    'email': 'alice@example.com',\n}\n\nresponse = requests.post(url, json=json_data, headers=headers, allow_redirects=False)\nprint(response.status_code)\nprint(response.text)"},"credits_used":5,"credits_remaining":null}},"post_with_json_body_php_curl":{"summary":"POST with JSON body -> PHP cURL","value":{"tool":"curl-to-code-converter","tool_version":"1.0.2","outputs":{"generatedCode":"<?php\n// Generated from curl command\n\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, 'https://api.example.com/v1/users');\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');\ncurl_setopt($ch, CURLOPT_HTTPHEADER, [\n    'Content-Type: application/json',\n]);\ncurl_setopt($ch, CURLOPT_POSTFIELDS, '{\"name\": \"Alice Smith\", \"email\": \"alice@example.com\"}');\n\n$response = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\necho $status . \"\\n\";\necho $response;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"generatedCode":{"type":"string","description":"Generated Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dailymotion-to-text":{"post":{"operationId":"run_dailymotion_to_text","summary":"Dailymotion to Text","tags":["Converters"],"description":"Turn a Dailymotion video into text — paste the link and get its subtitle track as clean prose, timestamped lines, or a downloadable SRT/VTT file.\n\n[Try Dailymotion to Text in your browser →](https://iotools.cloud/tool/dailymotion-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"videoUrl":{"type":"string","description":"Dailymotion video URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"type":"string","description":"Subtitle language code"}},"required":["videoUrl"]},"examples":{"euronews_news_bulletin":{"summary":"Euronews — news bulletin","value":{"videoUrl":"https://www.dailymotion.com/video/xb2ysnq","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"video":{"type":"string","description":"Video"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/data-storage-converter":{"post":{"operationId":"run_data_storage_converter","summary":"Data Storage Converter","tags":["Converters"],"description":"Convert digital storage sizes between bits, bytes, and every SI (KB, MB, GB, TB, PB, EB) and IEC binary (KiB, MiB, GiB, TiB, PiB, EiB) unit. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Data Storage Converter in your browser →](https://iotools.cloud/tool/data-storage-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["bit","nibble","byte","kb","mb","gb","tb","pb","eb","kib","mib","gib","tib","pib","eib"],"description":"Convert from"},"toUnit":{"enum":["all","bit","nibble","byte","kb","mb","gb","tb","pb","eb","kib","mib","gib","tib","pib","eib"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_gb_to_every_unit":{"summary":"1 GB to every unit","value":{"value":"1","fromUnit":"gb","toUnit":"all","precision":"4"}},"1_gib_to_byte":{"summary":"1 GiB to byte","value":{"value":"1","fromUnit":"gib","toUnit":"byte","precision":"2"}},"8_bits_to_every_unit_tiny_values_use_exponential":{"summary":"8 bits to every unit (tiny values use exponential)","value":{"value":"8","fromUnit":"bit","toUnit":"all","precision":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_gb_to_every_unit":{"summary":"1 GB to every unit","value":{"tool":"data-storage-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Bit (b)","value":"8000000000"},{"unit":"Nibble","value":"2000000000"},{"unit":"Byte (B)","value":"1000000000"},{"unit":"Kilobyte (KB)","value":"1000000"},{"unit":"Megabyte (MB)","value":"1000"},{"unit":"Gigabyte (GB)","value":"1"},{"unit":"Terabyte (TB)","value":"0.001"},{"unit":"Petabyte (PB)","value":"0"},{"unit":"Exabyte (EB)","value":"0"},{"unit":"Kibibyte (KiB)","value":"976562.5"},{"unit":"Mebibyte (MiB)","value":"953.6743"},{"unit":"Gibibyte (GiB)","value":"0.9313"},{"unit":"Tebibyte (TiB)","value":"0.0009"},{"unit":"Pebibyte (PiB)","value":"0"},{"unit":"Exbibyte (EiB)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"1_gib_to_byte":{"summary":"1 GiB to byte","value":{"tool":"data-storage-converter","tool_version":"1.0.2","outputs":{"result":"1073741824 Byte (B)","table":[]},"credits_used":5,"credits_remaining":null}},"8_bits_to_every_unit_tiny_values_use_exponential":{"summary":"8 bits to every unit (tiny values use exponential)","value":{"tool":"data-storage-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Bit (b)","value":"8"},{"unit":"Nibble","value":"2"},{"unit":"Byte (B)","value":"1"},{"unit":"Kilobyte (KB)","value":"0"},{"unit":"Megabyte (MB)","value":"0"},{"unit":"Gigabyte (GB)","value":"0"},{"unit":"Terabyte (TB)","value":"1e-12"},{"unit":"Petabyte (PB)","value":"1e-15"},{"unit":"Exabyte (EB)","value":"1e-18"},{"unit":"Kibibyte (KiB)","value":"0"},{"unit":"Mebibyte (MiB)","value":"0"},{"unit":"Gibibyte (GiB)","value":"0"},{"unit":"Tebibyte (TiB)","value":"9e-13"},{"unit":"Pebibyte (PiB)","value":"9e-16"},{"unit":"Exbibyte (EiB)","value":"9e-19"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/date-time-format-converter":{"post":{"operationId":"run_date_time_format_converter","summary":"Date-Time Format Converter","tags":["Converters"],"description":"Auto-detect a date-time string (ISO 8601/9075, RFC 3339/7231, Unix or millisecond timestamp, Mongo ObjectID, Excel serial, UTC string) and convert it into every other format at once. Timezone-less input is read and shown in UTC.\n\n[Try Date-Time Format Converter in your browser →](https://iotools.cloud/tool/date-time-format-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dateTimeString":{"type":"string","description":"Date-time string"}},"required":[]},"examples":{"space_separated_date_time_utc":{"summary":"Space-separated date-time (UTC)","value":{"dateTimeString":"2024-07-22 15:00:00"}},"iso_8601_with_timezone_offset":{"summary":"ISO 8601 with timezone offset","value":{"dateTimeString":"2024-07-22T15:00:00+02:00"}},"unix_timestamp_seconds":{"summary":"Unix timestamp (seconds)","value":{"dateTimeString":"1700000000"}},"mongo_objectid":{"summary":"Mongo ObjectID","value":{"dateTimeString":"5f9a1c2b3d4e5f6a7b8c9d0e"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"space_separated_date_time_utc":{"summary":"Space-separated date-time (UTC)","value":{"tool":"date-time-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"JS locale date string","value":"Mon Jul 22 2024 15:00:00 GMT+0000 (Coordinated Universal Time)"},{"format":"ISO 8601","value":"2024-07-22T15:00:00+00:00"},{"format":"ISO 9075","value":"2024-07-22 15:00:00"},{"format":"RFC 3339","value":"2024-07-22T15:00:00+00:00"},{"format":"RFC 7231","value":"Mon, 22 Jul 2024 15:00:00 GMT"},{"format":"Unix timestamp (s)","value":"1721660400"},{"format":"Timestamp (ms)","value":"1721660400000"},{"format":"UTC format","value":"Mon, 22 Jul 2024 15:00:00 GMT"},{"format":"Mongo ObjectID","value":"669e73f00000000000000000"},{"format":"Excel date/time","value":"45495.625"}]},"credits_used":5,"credits_remaining":null}},"iso_8601_with_timezone_offset":{"summary":"ISO 8601 with timezone offset","value":{"tool":"date-time-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"JS locale date string","value":"Mon Jul 22 2024 13:00:00 GMT+0000 (Coordinated Universal Time)"},{"format":"ISO 8601","value":"2024-07-22T13:00:00+00:00"},{"format":"ISO 9075","value":"2024-07-22 13:00:00"},{"format":"RFC 3339","value":"2024-07-22T13:00:00+00:00"},{"format":"RFC 7231","value":"Mon, 22 Jul 2024 13:00:00 GMT"},{"format":"Unix timestamp (s)","value":"1721653200"},{"format":"Timestamp (ms)","value":"1721653200000"},{"format":"UTC format","value":"Mon, 22 Jul 2024 13:00:00 GMT"},{"format":"Mongo ObjectID","value":"669e57d00000000000000000"},{"format":"Excel date/time","value":"45495.54166666667"}]},"credits_used":5,"credits_remaining":null}},"unix_timestamp_seconds":{"summary":"Unix timestamp (seconds)","value":{"tool":"date-time-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"JS locale date string","value":"Tue Nov 14 2023 22:13:20 GMT+0000 (Coordinated Universal Time)"},{"format":"ISO 8601","value":"2023-11-14T22:13:20+00:00"},{"format":"ISO 9075","value":"2023-11-14 22:13:20"},{"format":"RFC 3339","value":"2023-11-14T22:13:20+00:00"},{"format":"RFC 7231","value":"Tue, 14 Nov 2023 22:13:20 GMT"},{"format":"Unix timestamp (s)","value":"1700000000"},{"format":"Timestamp (ms)","value":"1700000000000"},{"format":"UTC format","value":"Tue, 14 Nov 2023 22:13:20 GMT"},{"format":"Mongo ObjectID","value":"6553f1000000000000000000"},{"format":"Excel date/time","value":"45244.92592592593"}]},"credits_used":5,"credits_remaining":null}},"mongo_objectid":{"summary":"Mongo ObjectID","value":{"tool":"date-time-format-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"JS locale date string","value":"Thu Oct 29 2020 01:34:35 GMT+0000 (Coordinated Universal Time)"},{"format":"ISO 8601","value":"2020-10-29T01:34:35+00:00"},{"format":"ISO 9075","value":"2020-10-29 01:34:35"},{"format":"RFC 3339","value":"2020-10-29T01:34:35+00:00"},{"format":"RFC 7231","value":"Thu, 29 Oct 2020 01:34:35 GMT"},{"format":"Unix timestamp (s)","value":"1603935275"},{"format":"Timestamp (ms)","value":"1603935275000"},{"format":"UTC format","value":"Thu, 29 Oct 2020 01:34:35 GMT"},{"format":"Mongo ObjectID","value":"5f9a1c2b0000000000000000"},{"format":"Excel date/time","value":"44133.065682870365"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Converted formats","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/decibel-converter":{"post":{"operationId":"run_decibel_converter","summary":"Decibel (dB) Converter","tags":["Converters"],"description":"Convert decibel levels to and from their linear quantities and ratios for Sound Pressure Level (dB SPL), Voltage (dBV / dBu) and Power (dBm / dBW). Enter a value in any unit and read the equivalents, with the formulas and common reference levels.\n\n[Try Decibel (dB) Converter in your browser →](https://iotools.cloud/tool/decibel-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refType":{"enum":["spl","voltage","power"],"description":"Reference"},"value":{"type":"number","description":"Value"},"unitSpl":{"enum":["dbspl","pa","pratio","iratio"],"description":"Unit"},"unitVoltage":{"enum":["dbv","dbu","v","vratio","vpratio"],"description":"Unit"},"unitPower":{"enum":["dbm","dbw","w","pratiop"],"description":"Unit"}},"required":["value"]},"examples":{"85_db_spl_to_pressure_ratios":{"summary":"85 dB SPL to pressure & ratios","value":{"refType":"spl","value":"85","unitSpl":"dbspl"}},"4_dbu_to_volts_dbv":{"summary":"+4 dBu to volts & dBV","value":{"refType":"voltage","value":"4","unitVoltage":"dbu"}},"20_dbm_to_watts_dbw":{"summary":"20 dBm to watts & dBW","value":{"refType":"power","value":"20","unitPower":"dbm"}},"0_02_pa_to_db_spl":{"summary":"0.02 Pa to dB SPL","value":{"refType":"spl","value":"0.02","unitSpl":"pa"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"85_db_spl_to_pressure_ratios":{"summary":"85 dB SPL to pressure & ratios","value":{"tool":"decibel-converter","tool_version":"1.0.2","outputs":{"results":[{"quantity":"dB SPL","value":"85 dB SPL"},{"quantity":"Sound Pressure","value":"0.3557 Pa"},{"quantity":"Pressure Ratio (p / p₀)","value":"17782.7941"},{"quantity":"Intensity Ratio (I / I₀)","value":"3.1623e+8"}],"reference":[{"source":"Threshold of hearing","level":"0 dB"},{"source":"Rustling leaves","level":"10 dB"},{"source":"Whisper at 1 m","level":"30 dB"},{"source":"Quiet library / office","level":"40 dB"},{"source":"Normal conversation","level":"60 dB"},{"source":"Busy traffic","level":"75 dB"},{"source":"Vacuum cleaner","level":"80 dB"},{"source":"Heavy traffic / lawn mower","level":"90 dB"},{"source":"Subway / motorcycle","level":"100 dB"},{"source":"Live rock concert","level":"110 dB"},{"source":"Threshold of pain","level":"130 dB"},{"source":"Jet engine at 30 m","level":"140 dB"},{"source":"Firearm muzzle blast","level":"160 dB"}],"formula":"Sound Pressure Level (reference p₀ = 20 µPa)\n\ndB SPL = 20 · log₁₀(p / p₀)\np = p₀ · 10^(dB SPL / 20)\nPressure Ratio = p / p₀\nIntensity Ratio (I / I₀) = (p / p₀)²"},"credits_used":5,"credits_remaining":null}},"4_dbu_to_volts_dbv":{"summary":"+4 dBu to volts & dBV","value":{"tool":"decibel-converter","tool_version":"1.0.2","outputs":{"results":[{"quantity":"dBV","value":"1.7815 dBV"},{"quantity":"dBu","value":"4 dBu"},{"quantity":"Voltage","value":"1.2277 V"},{"quantity":"Amplitude Ratio (V / V₀)","value":"1.2277"},{"quantity":"Power Ratio (P / P₀)","value":"1.5071"}],"formula":"Voltage (dBV reference = 1 V, dBu reference ≈ 0.7746 V)\n\ndBV = 20 · log₁₀(V / 1 V)\ndBu = 20 · log₁₀(V / 0.7746 V)\nV = V_ref · 10^(dB / 20)\nAmplitude Ratio = V / V_ref\nPower Ratio = (V / V_ref)²","reference":[{"source":"Pro audio nominal (+4 dBu)","level":"+4 dBu ≈ +1.78 dBV"},{"source":"Consumer audio nominal (-10 dBV)","level":"-10 dBV ≈ -7.78 dBu"},{"source":"Microphone (dynamic, typical)","level":"-60 to -40 dBu"},{"source":"Line level (line-out, pro)","level":"0 dBu (0.775 V)"},{"source":"Line level (line-out, consumer)","level":"-10 dBV (0.316 V)"},{"source":"Headphone amp output","level":"0 to +6 dBu"}]},"credits_used":5,"credits_remaining":null}},"20_dbm_to_watts_dbw":{"summary":"20 dBm to watts & dBW","value":{"tool":"decibel-converter","tool_version":"1.0.2","outputs":{"results":[{"quantity":"dBm","value":"20 dBm"},{"quantity":"dBW","value":"-10 dBW"},{"quantity":"Power","value":"0.1000 W"},{"quantity":"Power Ratio (P / P₀)","value":"0.1000"}],"reference":[{"source":"Bluetooth (Class 2)","level":"+4 dBm (2.5 mW)"},{"source":"Wi-Fi router (typical)","level":"+20 dBm (100 mW)"},{"source":"Cellular handset (max)","level":"+33 dBm (2 W)"},{"source":"FM radio broadcast (small)","level":"+47 dBm (50 W)"},{"source":"Microwave oven","level":"+60 dBm (1 kW)"},{"source":"AM radio broadcast","level":"+90 dBm (1 MW)"},{"source":"Receiver noise floor (typical)","level":"-100 dBm"},{"source":"GPS signal at Earth","level":"-130 dBm"}],"formula":"Power (dBm reference = 1 mW, dBW reference = 1 W)\n\ndBm = 10 · log₁₀(P / 1 mW)\ndBW = 10 · log₁₀(P / 1 W)\nP = P_ref · 10^(dB / 10)\nPower Ratio = P / P_ref\ndBm = dBW + 30"},"credits_used":5,"credits_remaining":null}},"0_02_pa_to_db_spl":{"summary":"0.02 Pa to dB SPL","value":{"tool":"decibel-converter","tool_version":"1.0.2","outputs":{"results":[{"quantity":"dB SPL","value":"60 dB SPL"},{"quantity":"Sound Pressure","value":"0.02000 Pa"},{"quantity":"Pressure Ratio (p / p₀)","value":"1000"},{"quantity":"Intensity Ratio (I / I₀)","value":"1000000"}],"formula":"Sound Pressure Level (reference p₀ = 20 µPa)\n\ndB SPL = 20 · log₁₀(p / p₀)\np = p₀ · 10^(dB SPL / 20)\nPressure Ratio = p / p₀\nIntensity Ratio (I / I₀) = (p / p₀)²","reference":[{"source":"Threshold of hearing","level":"0 dB"},{"source":"Rustling leaves","level":"10 dB"},{"source":"Whisper at 1 m","level":"30 dB"},{"source":"Quiet library / office","level":"40 dB"},{"source":"Normal conversation","level":"60 dB"},{"source":"Busy traffic","level":"75 dB"},{"source":"Vacuum cleaner","level":"80 dB"},{"source":"Heavy traffic / lawn mower","level":"90 dB"},{"source":"Subway / motorcycle","level":"100 dB"},{"source":"Live rock concert","level":"110 dB"},{"source":"Threshold of pain","level":"130 dB"},{"source":"Jet engine at 30 m","level":"140 dB"},{"source":"Firearm muzzle blast","level":"160 dB"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"formula":{"type":"string","description":"Formulas"},"reference":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"Source"},"level":{"type":"string","description":"Level"}}},"x-iotools-columns":["source","level"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/docker-run-to-compose-converter":{"post":{"operationId":"run_docker_run_to_compose_converter","summary":"Docker Run to Compose Converter","tags":["Converters"],"description":"Turn a `docker run …` command into an equivalent docker-compose.yml service definition — ports, volumes, environment, networks, healthchecks, resource limits and more. Runs entirely in your browser.\n\n[Try Docker Run to Compose Converter in your browser →](https://iotools.cloud/tool/docker-run-to-compose-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dockerRunInput":{"type":"string","description":"Docker Run Command"}},"required":[]},"examples":{"nginx_proxy_with_ports_env_health_checks_and_resource_limits":{"summary":"nginx proxy with ports, env, health checks and resource limits","value":{"dockerRunInput":"docker run -d \\\n  --name nginx-proxy \\\n  --restart unless-stopped \\\n  -p 80:80 \\\n  -p 443:443 \\\n  -v /etc/nginx/conf.d:/etc/nginx/conf.d \\\n  -v /var/log/nginx:/var/log/nginx \\\n  -e NGINX_HOST=example.com \\\n  -e NGINX_PORT=80 \\\n  --network my-network \\\n  --memory 512m \\\n  --cpus 1.5 \\\n  --health-cmd \"curl -f http://localhost/ || exit 1\" \\\n  --health-interval 30s \\\n  --health-timeout 10s \\\n  --health-retries 3 \\\n  nginx:alpine"}},"simple_service_with_a_named_volume_and_always_restart":{"summary":"Simple service with a named volume and always-restart","value":{"dockerRunInput":"docker run -d --name redis -p 6379:6379 -v redis-data:/data --restart always redis:7-alpine"}},"host_networking_with_an_override_command":{"summary":"Host networking with an override command","value":{"dockerRunInput":"docker run --network host -e FOO=bar busybox echo hello world"}},"not_a_docker_run_command":{"summary":"Not a docker run command","value":{"dockerRunInput":"kubectl apply -f deployment.yaml"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nginx_proxy_with_ports_env_health_checks_and_resource_limits":{"summary":"nginx proxy with ports, env, health checks and resource limits","value":{"tool":"docker-run-to-compose-converter","tool_version":"1.0.2","outputs":{"composeOutput":"services:\n  nginx-proxy:\n    image: nginx:alpine\n    container_name: nginx-proxy\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - \"/etc/nginx/conf.d:/etc/nginx/conf.d\"\n      - \"/var/log/nginx:/var/log/nginx\"\n    environment:\n      - NGINX_HOST=example.com\n      - NGINX_PORT=\"80\"\n    networks:\n      - my-network\n    deploy:\n      resources:\n        limits:\n          memory: 512m\n          cpus: \"1.5\"\n    healthcheck:\n      test: [\"CMD-SHELL\", \"curl -f http://localhost/ || exit 1\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n\nnetworks:\n  my-network:\n    external: true"},"credits_used":5,"credits_remaining":null}},"simple_service_with_a_named_volume_and_always_restart":{"summary":"Simple service with a named volume and always-restart","value":{"tool":"docker-run-to-compose-converter","tool_version":"1.0.2","outputs":{"composeOutput":"services:\n  redis:\n    image: redis:7-alpine\n    container_name: redis\n    restart: always\n    ports:\n      - \"6379:6379\"\n    volumes:\n      - \"redis-data:/data\""},"credits_used":5,"credits_remaining":null}},"host_networking_with_an_override_command":{"summary":"Host networking with an override command","value":{"tool":"docker-run-to-compose-converter","tool_version":"1.0.2","outputs":{"composeOutput":"services:\n  busybox:\n    image: busybox\n    command: echo hello world\n    environment:\n      - FOO=bar\n    network_mode: host"},"credits_used":5,"credits_remaining":null}},"not_a_docker_run_command":{"summary":"Not a docker run command","value":{"tool":"docker-run-to-compose-converter","tool_version":"1.0.2","outputs":{"composeOutput":"# Error: Could not parse docker run command.\n# Make sure it starts with \"docker run\"."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"composeOutput":{"type":"string","description":"docker-compose.yml"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dotenv-to-json-converter":{"post":{"operationId":"run_dotenv_to_json_converter","summary":"Dotenv to JSON Converter","tags":["Converters"],"description":"Convert a .env file into a JSON object — and back from JSON to .env. Parses export prefixes, quoted values and inline comments; optional nested JSON (split keys by __), alphabetical key sorting and dropping empty values. Runs entirely in your browser.\n\n[Try Dotenv to JSON Converter in your browser →](https://iotools.cloud/tool/dotenv-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"conversionDirection":{"enum":["env-to-json","json-to-env"],"description":"Direction"},"input":{"type":"string","description":"Input"},"nestedJson":{"type":"boolean","description":"Nested JSON (split keys by __)"},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically"},"excludeEmpty":{"type":"boolean","description":"Exclude empty values"}},"required":[]},"examples":{"env_json_flat":{"summary":".env → JSON (flat)","value":{"conversionDirection":"env-to-json","input":"# Database Configuration\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_production\nDB_USER=admin\nDB_PASS=\"s3cret value\"\n\n# API Settings\nAPI_URL=https://api.example.com/v2\nAPI_KEY=abc123def456\nexport API_SECRET=my-secret-key\n\n# Nested keys (split by __)\nAPP__NAME=MyApplication\nAPP__DEBUG=true\nAPP__LOG_LEVEL=info\n\n# Feature Flags\nENABLE_CACHE=true\nCACHE_TTL=3600  # seconds\nEMPTY_VAR=","nestedJson":"","sortKeys":"","excludeEmpty":""}},"env_nested_json_sorted_empty_dropped":{"summary":".env → nested JSON, sorted, empty dropped","value":{"conversionDirection":"env-to-json","input":"# Database Configuration\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_production\nDB_USER=admin\nDB_PASS=\"s3cret value\"\n\n# API Settings\nAPI_URL=https://api.example.com/v2\nAPI_KEY=abc123def456\nexport API_SECRET=my-secret-key\n\n# Nested keys (split by __)\nAPP__NAME=MyApplication\nAPP__DEBUG=true\nAPP__LOG_LEVEL=info\n\n# Feature Flags\nENABLE_CACHE=true\nCACHE_TTL=3600  # seconds\nEMPTY_VAR=","nestedJson":"true","sortKeys":"true","excludeEmpty":"true"}},"json_env_sorted_nested_keys_flattened":{"summary":"JSON → .env (sorted, nested keys flattened)","value":{"conversionDirection":"json-to-env","input":"{\n  \"database\": {\n    \"host\": \"localhost\",\n    \"port\": \"5432\",\n    \"name\": \"myapp_production\"\n  },\n  \"api\": {\n    \"url\": \"https://api.example.com/v2\",\n    \"key\": \"abc123def456\"\n  },\n  \"APP_DEBUG\": \"true\",\n  \"CACHE_TTL\": \"3600\",\n  \"NOTE\": \"value with spaces\",\n  \"EMPTY_VAR\": \"\"\n}","sortKeys":"true","excludeEmpty":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"env_json_flat":{"summary":".env → JSON (flat)","value":{"tool":"dotenv-to-json-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"DB_HOST\": \"localhost\",\n  \"DB_PORT\": \"5432\",\n  \"DB_NAME\": \"myapp_production\",\n  \"DB_USER\": \"admin\",\n  \"DB_PASS\": \"s3cret value\",\n  \"API_URL\": \"https://api.example.com/v2\",\n  \"API_KEY\": \"abc123def456\",\n  \"API_SECRET\": \"my-secret-key\",\n  \"APP__NAME\": \"MyApplication\",\n  \"APP__DEBUG\": \"true\",\n  \"APP__LOG_LEVEL\": \"info\",\n  \"ENABLE_CACHE\": \"true\",\n  \"CACHE_TTL\": \"3600\",\n  \"EMPTY_VAR\": \"\"\n}"},"credits_used":5,"credits_remaining":null}},"env_nested_json_sorted_empty_dropped":{"summary":".env → nested JSON, sorted, empty dropped","value":{"tool":"dotenv-to-json-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"API_KEY\": \"abc123def456\",\n  \"API_SECRET\": \"my-secret-key\",\n  \"API_URL\": \"https://api.example.com/v2\",\n  \"APP\": {\n    \"DEBUG\": \"true\",\n    \"LOG_LEVEL\": \"info\",\n    \"NAME\": \"MyApplication\"\n  },\n  \"CACHE_TTL\": \"3600\",\n  \"DB_HOST\": \"localhost\",\n  \"DB_NAME\": \"myapp_production\",\n  \"DB_PASS\": \"s3cret value\",\n  \"DB_PORT\": \"5432\",\n  \"DB_USER\": \"admin\",\n  \"ENABLE_CACHE\": \"true\"\n}"},"credits_used":5,"credits_remaining":null}},"json_env_sorted_nested_keys_flattened":{"summary":"JSON → .env (sorted, nested keys flattened)","value":{"tool":"dotenv-to-json-converter","tool_version":"1.0.2","outputs":{"output":"api_key=abc123def456\napi_url=https://api.example.com/v2\nAPP_DEBUG=true\nCACHE_TTL=3600\ndatabase_host=localhost\ndatabase_name=myapp_production\ndatabase_port=5432\nEMPTY_VAR=\nNOTE=\"value with spaces\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/electric-converter":{"post":{"operationId":"run_electric_converter","summary":"Electric Current Converter","tags":["Converters"],"description":"Convert electric current between amperes, milliamperes, microamperes, nanoamperes, picoamperes, kiloamperes, megaamperes, statamperes, and abamperes at once. Enter one value, pick its unit, and see the equivalent in all 9 units.\n\n[Try Electric Current Converter in your browser →](https://iotools.cloud/tool/electric-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["ampere","milliampere","microampere","nanoampere","picoampere","kiloampere","megaampere","statampere","abampere"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_ampere_to_every_unit_4_decimals":{"summary":"1 ampere to every unit (4 decimals)","value":{"value":"1","fromUnit":"ampere","precision":"4"}},"100_milliampere_to_every_unit_2_decimals":{"summary":"100 milliampere to every unit (2 decimals)","value":{"value":"100","fromUnit":"milliampere","precision":"2"}},"1_abampere_to_every_unit_6_decimals":{"summary":"1 abampere to every unit (6 decimals)","value":{"value":"1","fromUnit":"abampere","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_ampere_to_every_unit_4_decimals":{"summary":"1 ampere to every unit (4 decimals)","value":{"tool":"electric-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Ampere (A)","value":"1"},{"unit":"Milliampere (mA)","value":"1000"},{"unit":"Microampere (µA)","value":"1000000"},{"unit":"Nanoampere (nA)","value":"1000000000"},{"unit":"Picoampere (pA)","value":"1000000000000"},{"unit":"Kiloampere (kA)","value":"0.001"},{"unit":"Megaampere (MA)","value":"0"},{"unit":"Statampere (statA)","value":"2997924580"},{"unit":"Abampere (abA)","value":"0.1"}]},"credits_used":5,"credits_remaining":null}},"100_milliampere_to_every_unit_2_decimals":{"summary":"100 milliampere to every unit (2 decimals)","value":{"tool":"electric-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Ampere (A)","value":"0.1"},{"unit":"Milliampere (mA)","value":"100"},{"unit":"Microampere (µA)","value":"100000"},{"unit":"Nanoampere (nA)","value":"100000000"},{"unit":"Picoampere (pA)","value":"100000000000"},{"unit":"Kiloampere (kA)","value":"0"},{"unit":"Megaampere (MA)","value":"0"},{"unit":"Statampere (statA)","value":"299792458"},{"unit":"Abampere (abA)","value":"0.01"}]},"credits_used":5,"credits_remaining":null}},"1_abampere_to_every_unit_6_decimals":{"summary":"1 abampere to every unit (6 decimals)","value":{"tool":"electric-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Ampere (A)","value":"10"},{"unit":"Milliampere (mA)","value":"10000"},{"unit":"Microampere (µA)","value":"10000000"},{"unit":"Nanoampere (nA)","value":"10000000000"},{"unit":"Picoampere (pA)","value":"10000000000000"},{"unit":"Kiloampere (kA)","value":"0.01"},{"unit":"Megaampere (MA)","value":"0.00001"},{"unit":"Statampere (statA)","value":"29979245800.000004"},{"unit":"Abampere (abA)","value":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/energy-converter":{"post":{"operationId":"run_energy_converter","summary":"Energy Converter","tags":["Converters"],"description":"Convert energy between joules, kilowatt-hours, calories, BTU, electronvolts, and 19 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Energy Converter in your browser →](https://iotools.cloud/tool/energy-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["joule","kilojoule","megajoule","gigajoule","calorie","kilocalorie","watt_hour","kilowatt_hour","megawatt_hour","gigawatt_hour","british_thermal_unit","therm","foot_pound","electronvolt","kiloelectronvolt","megaelectronvolt","gigaelectronvolt","erg","tonne_of_oil_equivalent","tonne_of_coal_equivalent","barrel_of_oil_equivalent","quad","thermie","horsepower_hour"],"description":"Convert from"},"toUnit":{"enum":["all","joule","kilojoule","megajoule","gigajoule","calorie","kilocalorie","watt_hour","kilowatt_hour","megawatt_hour","gigawatt_hour","british_thermal_unit","therm","foot_pound","electronvolt","kiloelectronvolt","megaelectronvolt","gigaelectronvolt","erg","tonne_of_oil_equivalent","tonne_of_coal_equivalent","barrel_of_oil_equivalent","quad","thermie","horsepower_hour"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_kj_to_every_unit":{"summary":"1 kJ to every unit","value":{"value":"1","fromUnit":"kilojoule","toUnit":"all","precision":"4"}},"10_kwh_to_joule":{"summary":"10 kWh to joule","value":{"value":"10","fromUnit":"kilowatt_hour","toUnit":"joule","precision":"2"}},"1000_btu_to_every_unit":{"summary":"1000 BTU to every unit","value":{"value":"1000","fromUnit":"british_thermal_unit","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_kj_to_every_unit":{"summary":"1 kJ to every unit","value":{"tool":"energy-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Joule (J)","value":"1000"},{"unit":"Kilojoule (kJ)","value":"1"},{"unit":"Megajoule (MJ)","value":"0.001"},{"unit":"Gigajoule (GJ)","value":"0"},{"unit":"Calorie (cal)","value":"239.0057"},{"unit":"Kilocalorie (kcal)","value":"0.239"},{"unit":"Watt Hour (Wh)","value":"0.2778"},{"unit":"Kilowatt Hour (kWh)","value":"0.0003"},{"unit":"Megawatt Hour (MWh)","value":"0"},{"unit":"Gigawatt Hour (GWh)","value":"0"},{"unit":"British Thermal Unit (BTU)","value":"0.9478"},{"unit":"Therm (thm)","value":"0"},{"unit":"Foot-Pound (ft⋅lb)","value":"737.561"},{"unit":"Electronvolt (eV)","value":"6.2415e+21"},{"unit":"Kiloelectronvolt (keV)","value":"6.2415e+18"},{"unit":"Megaelectronvolt (MeV)","value":"6.2415e+15"},{"unit":"Gigaelectronvolt (GeV)","value":"6241509074460.763"},{"unit":"Erg (erg)","value":"10000000000"},{"unit":"Tonne of Oil Equivalent (toe)","value":"0"},{"unit":"Tonne of Coal Equivalent (tce)","value":"0"},{"unit":"Barrel of Oil Equivalent (boe)","value":"0"},{"unit":"Quad (quad)","value":"9.4787e-16"},{"unit":"Thermie (th)","value":"0.0002"},{"unit":"Horsepower Hour (hp⋅h)","value":"0.0004"}]},"credits_used":5,"credits_remaining":null}},"10_kwh_to_joule":{"summary":"10 kWh to joule","value":{"tool":"energy-converter","tool_version":"1.0.2","outputs":{"result":"36000000 Joule (J)","table":[]},"credits_used":5,"credits_remaining":null}},"1000_btu_to_every_unit":{"summary":"1000 BTU to every unit","value":{"tool":"energy-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Joule (J)","value":"1055060"},{"unit":"Kilojoule (kJ)","value":"1055.06"},{"unit":"Megajoule (MJ)","value":"1.05506"},{"unit":"Gigajoule (GJ)","value":"0.001055"},{"unit":"Calorie (cal)","value":"252165.391969"},{"unit":"Kilocalorie (kcal)","value":"252.165392"},{"unit":"Watt Hour (Wh)","value":"293.072222"},{"unit":"Kilowatt Hour (kWh)","value":"0.293072"},{"unit":"Megawatt Hour (MWh)","value":"0.000293"},{"unit":"Gigawatt Hour (GWh)","value":"0"},{"unit":"British Thermal Unit (BTU)","value":"1000"},{"unit":"Therm (thm)","value":"0.01"},{"unit":"Foot-Pound (ft⋅lb)","value":"778171.143662"},{"unit":"Electronvolt (eV)","value":"6.585167e+24"},{"unit":"Kiloelectronvolt (keV)","value":"6.585167e+21"},{"unit":"Megaelectronvolt (MeV)","value":"6.585167e+18"},{"unit":"Gigaelectronvolt (GeV)","value":"6.585167e+15"},{"unit":"Erg (erg)","value":"10550600000000"},{"unit":"Tonne of Oil Equivalent (toe)","value":"0.000025"},{"unit":"Tonne of Coal Equivalent (tce)","value":"0.000036"},{"unit":"Barrel of Oil Equivalent (boe)","value":"0.000172"},{"unit":"Quad (quad)","value":"1.000057e-12"},{"unit":"Thermie (th)","value":"0.252165"},{"unit":"Horsepower Hour (hp⋅h)","value":"0.393016"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/force-unit-converter":{"post":{"operationId":"run_force_unit_converter","summary":"Force Unit Converter","tags":["Converters"],"description":"Convert force between newtons, kilonewtons, dynes, kilogram-force (kgf), pound-force (lbf), ounce-force, poundals, and ton-force units at once. Enter one value, pick its unit, and see the equivalent in all 12 units.\n\n[Try Force Unit Converter in your browser →](https://iotools.cloud/tool/force-unit-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["newton","kilonewton","meganewton","dyne","kgf","gf","metricTonf","lbf","ozf","poundal","shortTonf","longTonf"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_kgf_to_every_unit_4_decimals":{"summary":"1 kgf to every unit (4 decimals)","value":{"value":"1","fromUnit":"kgf","precision":"4"}},"100_lbf_to_every_unit_2_decimals":{"summary":"100 lbf to every unit (2 decimals)","value":{"value":"100","fromUnit":"lbf","precision":"2"}},"1_n_to_every_unit_6_decimals":{"summary":"1 N to every unit (6 decimals)","value":{"value":"1","fromUnit":"newton","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_kgf_to_every_unit_4_decimals":{"summary":"1 kgf to every unit (4 decimals)","value":{"tool":"force-unit-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton (N)","value":"9.8066"},{"unit":"Kilonewton (kN)","value":"0.0098"},{"unit":"Meganewton (MN)","value":"0"},{"unit":"Dyne (dyn)","value":"980665"},{"unit":"Kilogram-force (kgf)","value":"1"},{"unit":"Gram-force (gf)","value":"1000"},{"unit":"Metric ton-force (tf)","value":"0.001"},{"unit":"Pound-force (lbf)","value":"2.2046"},{"unit":"Ounce-force (ozf)","value":"35.274"},{"unit":"Poundal (pdl)","value":"70.9316"},{"unit":"Short ton-force (US tonf)","value":"0.0011"},{"unit":"Long ton-force (UK tonf)","value":"0.001"}]},"credits_used":5,"credits_remaining":null}},"100_lbf_to_every_unit_2_decimals":{"summary":"100 lbf to every unit (2 decimals)","value":{"tool":"force-unit-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton (N)","value":"444.82"},{"unit":"Kilonewton (kN)","value":"0.44"},{"unit":"Meganewton (MN)","value":"0"},{"unit":"Dyne (dyn)","value":"44482216.15"},{"unit":"Kilogram-force (kgf)","value":"45.36"},{"unit":"Gram-force (gf)","value":"45359.24"},{"unit":"Metric ton-force (tf)","value":"0.05"},{"unit":"Pound-force (lbf)","value":"100"},{"unit":"Ounce-force (ozf)","value":"1600"},{"unit":"Poundal (pdl)","value":"3217.4"},{"unit":"Short ton-force (US tonf)","value":"0.05"},{"unit":"Long ton-force (UK tonf)","value":"0.04"}]},"credits_used":5,"credits_remaining":null}},"1_n_to_every_unit_6_decimals":{"summary":"1 N to every unit (6 decimals)","value":{"tool":"force-unit-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton (N)","value":"1"},{"unit":"Kilonewton (kN)","value":"0.001"},{"unit":"Meganewton (MN)","value":"0.000001"},{"unit":"Dyne (dyn)","value":"100000"},{"unit":"Kilogram-force (kgf)","value":"0.101972"},{"unit":"Gram-force (gf)","value":"101.971621"},{"unit":"Metric ton-force (tf)","value":"0.000102"},{"unit":"Pound-force (lbf)","value":"0.224809"},{"unit":"Ounce-force (ozf)","value":"3.596943"},{"unit":"Poundal (pdl)","value":"7.233014"},{"unit":"Short ton-force (US tonf)","value":"0.000112"},{"unit":"Long ton-force (UK tonf)","value":"0.0001"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fraction-decimal":{"post":{"operationId":"run_fraction_decimal","summary":"Fraction to Decimal Converter","tags":["Converters"],"description":"Convert fractions to decimals (with repeating-cycle detection and step-by-step long division), convert decimals back to fractions (including 0.(3) and 0.333... repeating notation), and add, subtract, multiply, or divide two fractions.\n\n[Try Fraction to Decimal Converter in your browser →](https://iotools.cloud/tool/fraction-decimal/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["fraction-to-decimal","decimal-to-fraction","operations"],"description":"Mode"},"wholeNumber":{"type":"number","description":"Whole number (optional)"},"numerator":{"type":"number","description":"Numerator"},"denominator":{"type":"number","description":"Denominator"},"decimalInput":{"type":"string","description":"Decimal"},"maxDenominator":{"enum":["0","100","1000","10000"],"description":"Max denominator"},"opNumeratorA":{"type":"number","description":"Fraction A — numerator"},"opDenominatorA":{"type":"number","description":"Fraction A — denominator"},"operation":{"enum":["add","subtract","multiply","divide"],"description":"Operation"},"opNumeratorB":{"type":"number","description":"Fraction B — numerator"},"opDenominatorB":{"type":"number","description":"Fraction B — denominator"}},"required":[]},"examples":{"1_7_repeating_decimal":{"summary":"1/7 → repeating decimal","value":{"mode":"fraction-to-decimal","numerator":"1","denominator":"7","wholeNumber":""}},"3_8_terminating_decimal":{"summary":"3/8 → terminating decimal","value":{"mode":"fraction-to-decimal","numerator":"3","denominator":"8","wholeNumber":""}},"mixed_number_2_3_4":{"summary":"Mixed number 2 3/4","value":{"mode":"fraction-to-decimal","numerator":"3","denominator":"4","wholeNumber":"2"}},"0_75_3_4":{"summary":"0.75 → 3/4","value":{"mode":"decimal-to-fraction","decimalInput":"0.75","maxDenominator":"0"}},"repeating_0_3_1_3":{"summary":"Repeating 0.(3) → 1/3","value":{"mode":"decimal-to-fraction","decimalInput":"0.(3)","maxDenominator":"0"}},"add_1_3_1_4":{"summary":"Add 1/3 + 1/4","value":{"mode":"operations","opNumeratorA":"1","opDenominatorA":"3","operation":"add","opNumeratorB":"1","opDenominatorB":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_7_repeating_decimal":{"summary":"1/7 → repeating decimal","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Decimal","value":"0.(142857)"},{"property":"Simplified Fraction","value":"1/7"},{"property":"Percentage","value":"14.28571429%"},{"property":"Type","value":"Repeating decimal"},{"property":"Cycle Length","value":"6"},{"property":"Repeating Digits","value":"142857"}],"longDivision":"1 ÷ 7\n──────────────────────────────\nInteger part: 0\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         1 |   10 |    1 |            3\n   2 |         3 |   30 |    4 |            2\n   3 |         2 |   20 |    2 |            6\n   4 |         6 |   60 |    8 |            4\n   5 |         4 |   40 |    5 |            5\n   6 |         5 |   50 |    7 |            1\n\n↻ Remainder 1 seen again at step 1 → repeating cycle detected!\n  Cycle length: 6 digit(s)"},"credits_used":5,"credits_remaining":null}},"3_8_terminating_decimal":{"summary":"3/8 → terminating decimal","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Decimal","value":"0.375"},{"property":"Simplified Fraction","value":"3/8"},{"property":"Percentage","value":"37.5%"},{"property":"Type","value":"Terminating decimal"}],"longDivision":"3 ÷ 8\n──────────────────────────────\nInteger part: 0\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         3 |   30 |    3 |            6\n   2 |         6 |   60 |    7 |            4\n   3 |         4 |   40 |    5 |            0\n\nRemainder = 0 → Terminating decimal"},"credits_used":5,"credits_remaining":null}},"mixed_number_2_3_4":{"summary":"Mixed number 2 3/4","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Decimal","value":"2.75"},{"property":"Simplified Fraction","value":"11/4"},{"property":"Mixed Number","value":"2 3/4"},{"property":"Percentage","value":"275%"},{"property":"Type","value":"Terminating decimal"}],"longDivision":"11 ÷ 4\n──────────────────────────────\nInteger part: 2\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         3 |   30 |    7 |            2\n   2 |         2 |   20 |    5 |            0\n\nRemainder = 0 → Terminating decimal"},"credits_used":5,"credits_remaining":null}},"0_75_3_4":{"summary":"0.75 → 3/4","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction","value":"3/4"},{"property":"Decimal","value":"0.75"},{"property":"Exact","value":"Yes"}],"longDivision":"3 ÷ 4\n──────────────────────────────\nInteger part: 0\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         3 |   30 |    7 |            2\n   2 |         2 |   20 |    5 |            0\n\nRemainder = 0 → Terminating decimal"},"credits_used":5,"credits_remaining":null}},"repeating_0_3_1_3":{"summary":"Repeating 0.(3) → 1/3","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction","value":"1/3"},{"property":"Decimal","value":"0.3333333333333333"},{"property":"Exact","value":"Yes"}],"longDivision":"1 ÷ 3\n──────────────────────────────\nInteger part: 0\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         1 |   10 |    3 |            1\n\n↻ Remainder 1 seen again at step 1 → repeating cycle detected!\n  Cycle length: 1 digit(s)"},"credits_used":5,"credits_remaining":null}},"add_1_3_1_4":{"summary":"Add 1/3 + 1/4","value":{"tool":"fraction-decimal","tool_version":"1.0.2","outputs":{"results":[{"property":"Expression","value":"1/3 + 1/4"},{"property":"Result","value":"7/12"},{"property":"Decimal","value":"0.58(3)"}],"longDivision":"7 ÷ 12\n──────────────────────────────\nInteger part: 0\n\nDecimal digits by long division:\nStep | Remainder | ×10  | Digit | New Remainder\n─────┼───────────┼──────┼───────┼──────────────\n   1 |         7 |   70 |    5 |           10\n   2 |        10 |  100 |    8 |            4\n   3 |         4 |   40 |    3 |            4\n\n↻ Remainder 4 seen again at step 3 → repeating cycle detected!\n  Cycle length: 1 digit(s)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"longDivision":{"type":"string","description":"Step-by-step long division"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/frequency-converter":{"post":{"operationId":"run_frequency_converter","summary":"Frequency Converter","tags":["Converters"],"description":"Convert frequency between hertz, kilohertz, megahertz, gigahertz, terahertz, RPM, BPM, radians per second, and degrees per second at once. Enter one value, pick its unit, and see the equivalent in all 9 units.\n\n[Try Frequency Converter in your browser →](https://iotools.cloud/tool/frequency-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["hertz","kilohertz","megahertz","gigahertz","terahertz","rpm","bpm","radiansPerSecond","degreesPerSecond"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1000_hz_to_every_unit_4_decimals":{"summary":"1000 Hz to every unit (4 decimals)","value":{"value":"1000","fromUnit":"hertz","precision":"4"}},"3000_rpm_to_every_unit_2_decimals":{"summary":"3000 RPM to every unit (2 decimals)","value":{"value":"3000","fromUnit":"rpm","precision":"2"}},"1_rad_s_to_every_unit_6_decimals":{"summary":"1 rad/s to every unit (6 decimals)","value":{"value":"1","fromUnit":"radiansPerSecond","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1000_hz_to_every_unit_4_decimals":{"summary":"1000 Hz to every unit (4 decimals)","value":{"tool":"frequency-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Hertz (Hz)","value":"1000"},{"unit":"Kilohertz (kHz)","value":"1"},{"unit":"Megahertz (MHz)","value":"0.001"},{"unit":"Gigahertz (GHz)","value":"0"},{"unit":"Terahertz (THz)","value":"0"},{"unit":"Rotations per Minute (RPM)","value":"60000"},{"unit":"Beats per Minute (BPM)","value":"60000"},{"unit":"Radians per Second (rad/s)","value":"6283.1853"},{"unit":"Degrees per Second (°/s)","value":"360000"}]},"credits_used":5,"credits_remaining":null}},"3000_rpm_to_every_unit_2_decimals":{"summary":"3000 RPM to every unit (2 decimals)","value":{"tool":"frequency-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Hertz (Hz)","value":"50"},{"unit":"Kilohertz (kHz)","value":"0.05"},{"unit":"Megahertz (MHz)","value":"0"},{"unit":"Gigahertz (GHz)","value":"0"},{"unit":"Terahertz (THz)","value":"5.00e-11"},{"unit":"Rotations per Minute (RPM)","value":"3000"},{"unit":"Beats per Minute (BPM)","value":"3000"},{"unit":"Radians per Second (rad/s)","value":"314.16"},{"unit":"Degrees per Second (°/s)","value":"18000"}]},"credits_used":5,"credits_remaining":null}},"1_rad_s_to_every_unit_6_decimals":{"summary":"1 rad/s to every unit (6 decimals)","value":{"tool":"frequency-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Hertz (Hz)","value":"0.159155"},{"unit":"Kilohertz (kHz)","value":"0.000159"},{"unit":"Megahertz (MHz)","value":"0"},{"unit":"Gigahertz (GHz)","value":"0"},{"unit":"Terahertz (THz)","value":"1.591549e-13"},{"unit":"Rotations per Minute (RPM)","value":"9.549297"},{"unit":"Beats per Minute (BPM)","value":"9.549297"},{"unit":"Radians per Second (rad/s)","value":"1"},{"unit":"Degrees per Second (°/s)","value":"57.29578"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/geohash-converter":{"post":{"operationId":"run_geohash_converter","summary":"Geohash Converter","tags":["Converters"],"description":"Encode latitude and longitude into a geohash, or decode a geohash back to coordinates. Reports the cell's bounding box, real-world size and all eight neighbouring geohashes.\n\n[Try Geohash Converter in your browser →](https://iotools.cloud/tool/geohash-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["encode","decode"],"description":"Mode"},"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"},"precision":{"type":"number","description":"Precision (characters)","minimum":1,"maximum":12},"geohash":{"type":"string","description":"Geohash"}},"required":[]},"examples":{"encode_new_york_city":{"summary":"Encode New York City","value":{"mode":"encode","latitude":"40.7128","longitude":"-74.0060","precision":"9"}},"decode_a_geohash":{"summary":"Decode a geohash","value":{"mode":"decode","geohash":"dr5regw3p"}},"short_hash_city_sized_cell":{"summary":"Short hash (city-sized cell)","value":{"mode":"encode","latitude":"48.8584","longitude":"2.2945","precision":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_new_york_city":{"summary":"Encode New York City","value":{"tool":"geohash-converter","tool_version":"1.0.2","outputs":{"resultGeohash":"dr5regw3p","resultCoordinates":"40.712779, -74.005988","cellDetails":[{"property":"Geohash","value":"dr5regw3p"},{"property":"Precision","value":"9 characters"},{"property":"Centre latitude","value":"40.712779"},{"property":"Centre longitude","value":"-74.005988"},{"property":"South-west corner","value":"40.712757, -74.006009"},{"property":"North-east corner","value":"40.712800, -74.005966"},{"property":"Cell width","value":"3.6 m"},{"property":"Cell height","value":"4.8 m"},{"property":"Latitude error","value":"± 0.000021°"},{"property":"Longitude error","value":"± 0.000021°"}],"neighbours":[{"direction":"North","geohash":"dr5regw3r"},{"direction":"North-east","geohash":"dr5regw92"},{"direction":"East","geohash":"dr5regw90"},{"direction":"South-east","geohash":"dr5regw8b"},{"direction":"South","geohash":"dr5regw2z"},{"direction":"South-west","geohash":"dr5regw2y"},{"direction":"West","geohash":"dr5regw3n"},{"direction":"North-west","geohash":"dr5regw3q"}]},"credits_used":5,"credits_remaining":null}},"decode_a_geohash":{"summary":"Decode a geohash","value":{"tool":"geohash-converter","tool_version":"1.0.2","outputs":{"resultGeohash":"dr5regw3p","resultCoordinates":"40.712779, -74.005988","cellDetails":[{"property":"Geohash","value":"dr5regw3p"},{"property":"Precision","value":"9 characters"},{"property":"Centre latitude","value":"40.712779"},{"property":"Centre longitude","value":"-74.005988"},{"property":"South-west corner","value":"40.712757, -74.006009"},{"property":"North-east corner","value":"40.712800, -74.005966"},{"property":"Cell width","value":"3.6 m"},{"property":"Cell height","value":"4.8 m"},{"property":"Latitude error","value":"± 0.000021°"},{"property":"Longitude error","value":"± 0.000021°"}],"neighbours":[{"direction":"North","geohash":"dr5regw3r"},{"direction":"North-east","geohash":"dr5regw92"},{"direction":"East","geohash":"dr5regw90"},{"direction":"South-east","geohash":"dr5regw8b"},{"direction":"South","geohash":"dr5regw2z"},{"direction":"South-west","geohash":"dr5regw2y"},{"direction":"West","geohash":"dr5regw3n"},{"direction":"North-west","geohash":"dr5regw3q"}]},"credits_used":5,"credits_remaining":null}},"short_hash_city_sized_cell":{"summary":"Short hash (city-sized cell)","value":{"tool":"geohash-converter","tool_version":"1.0.2","outputs":{"resultGeohash":"u09tu","resultCoordinates":"48.845215, 2.307129","cellDetails":[{"property":"Geohash","value":"u09tu"},{"property":"Precision","value":"5 characters"},{"property":"Centre latitude","value":"48.845215"},{"property":"Centre longitude","value":"2.307129"},{"property":"South-west corner","value":"48.823242, 2.285156"},{"property":"North-east corner","value":"48.867188, 2.329102"},{"property":"Cell width","value":"3.22 km"},{"property":"Cell height","value":"4.89 km"},{"property":"Latitude error","value":"± 0.021973°"},{"property":"Longitude error","value":"± 0.021973°"}],"neighbours":[{"direction":"North","geohash":"u09wh"},{"direction":"North-east","geohash":"u09wj"},{"direction":"East","geohash":"u09tv"},{"direction":"South-east","geohash":"u09tt"},{"direction":"South","geohash":"u09ts"},{"direction":"South-west","geohash":"u09te"},{"direction":"West","geohash":"u09tg"},{"direction":"North-west","geohash":"u09w5"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultGeohash":{"type":"string","description":"Geohash"},"resultCoordinates":{"type":"string","description":"Cell centre (latitude, longitude)"},"cellDetails":{"type":"array","description":"Cell details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"neighbours":{"type":"array","description":"Neighbouring cells","items":{"type":"object","properties":{"direction":{"type":"string","description":"Direction"},"geohash":{"type":"string","description":"Geohash"}}},"x-iotools-columns":["direction","geohash"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/geojson-wkt-converter":{"post":{"operationId":"run_geojson_wkt_converter","summary":"GeoJSON to WKT Converter","tags":["Converters"],"description":"Convert geometry between GeoJSON and WKT (Well-Known Text) in either direction — Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon and GeometryCollection. Auto-detects the input format, with options for coordinate precision, pretty-printed JSON and uppercase WKT keywords. Runs entirely in your browser.\n\n[Try GeoJSON to WKT Converter in your browser →](https://iotools.cloud/tool/geojson-wkt-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["auto","geojson-to-wkt","wkt-to-geojson"],"description":"Direction"},"input":{"type":"string","description":"Input geometry (GeoJSON or WKT)"},"coordPrecision":{"enum":["full","4","5","6","7","8"],"description":"Coordinate precision"},"prettyPrint":{"type":"boolean","description":"Pretty-print GeoJSON output (2-space indent)"},"uppercase":{"type":"boolean","description":"Uppercase WKT keywords (POINT, POLYGON, …)"}},"required":["input"]},"examples":{"geojson_polygon_wkt":{"summary":"GeoJSON Polygon → WKT","value":{"direction":"geojson-to-wkt","input":"{\"type\":\"Polygon\",\"coordinates\":[[[30,10],[40,40],[20,40],[10,20],[30,10]]]}","coordPrecision":"full","uppercase":"true","prettyPrint":"true"}},"wkt_linestring_pretty_geojson":{"summary":"WKT LineString → pretty GeoJSON","value":{"direction":"wkt-to-geojson","input":"LINESTRING (30 10, 10 30, 40 40)","coordPrecision":"full","uppercase":"true","prettyPrint":"true"}},"geojson_multipolygon_wkt_nested_rings":{"summary":"GeoJSON MultiPolygon → WKT (nested rings)","value":{"direction":"geojson-to-wkt","input":"{\"type\":\"MultiPolygon\",\"coordinates\":[[[[30,20],[45,40],[10,40],[30,20]]],[[[15,5],[40,10],[10,20],[5,10],[15,5]]]]}","coordPrecision":"full","uppercase":"true","prettyPrint":"true"}},"auto_detect_wkt_point_compact_geojson":{"summary":"Auto-detect WKT Point → compact GeoJSON","value":{"direction":"auto","input":"POINT (-0.1278 51.5074)","coordPrecision":"full","uppercase":"true","prettyPrint":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"geojson_polygon_wkt":{"summary":"GeoJSON Polygon → WKT","value":{"tool":"geojson-wkt-converter","tool_version":"1.0.2","outputs":{"output":"POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"},"credits_used":5,"credits_remaining":null}},"wkt_linestring_pretty_geojson":{"summary":"WKT LineString → pretty GeoJSON","value":{"tool":"geojson-wkt-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"type\": \"LineString\",\n  \"coordinates\": [\n    [\n      30,\n      10\n    ],\n    [\n      10,\n      30\n    ],\n    [\n      40,\n      40\n    ]\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"geojson_multipolygon_wkt_nested_rings":{"summary":"GeoJSON MultiPolygon → WKT (nested rings)","value":{"tool":"geojson-wkt-converter","tool_version":"1.0.2","outputs":{"output":"MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))"},"credits_used":5,"credits_remaining":null}},"auto_detect_wkt_point_compact_geojson":{"summary":"Auto-detect WKT Point → compact GeoJSON","value":{"tool":"geojson-wkt-converter","tool_version":"1.0.2","outputs":{"output":"{\"type\":\"Point\",\"coordinates\":[-0.1278,51.5074]}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Converted geometry"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-to-sprite-sheet":{"post":{"operationId":"run_gif_to_sprite_sheet","summary":"GIF to Sprite Sheet","tags":["Converters"],"description":"Lay out every frame of an animated GIF into a single sprite sheet image — choose the grid columns, spacing, frame scale and background, then download as PNG.\n\n[Try GIF to Sprite Sheet in your browser →](https://iotools.cloud/tool/gif-to-sprite-sheet/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"columns":{"type":"number","description":"Columns","minimum":1,"maximum":400},"frameStep":{"type":"number","description":"Include every Nth frame","minimum":1,"maximum":10},"scale":{"type":"number","description":"Frame scale","minimum":25,"maximum":200},"spacing":{"type":"number","description":"Spacing between frames (px)","minimum":0,"maximum":40},"background":{"enum":["transparent","white","black"],"description":"Background"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Layout"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/har-to-curl-extractor":{"post":{"operationId":"run_har_to_curl_extractor","summary":"HAR to cURL Extractor","tags":["Converters"],"description":"Convert HAR (HTTP Archive) requests into runnable cURL commands — with header, cookie, auth-masking, and body options, plus method/status/type filters.\n\n[Try HAR to cURL Extractor in your browser →](https://iotools.cloud/tool/har-to-curl-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"harInput":{"type":"string","description":"HAR Content"},"includeHeaders":{"type":"boolean","description":"Include request headers (-H)"},"includeCookies":{"type":"boolean","description":"Include Cookie header"},"includeBody":{"type":"boolean","description":"Include request body (--data)"},"stripPseudo":{"type":"boolean","description":"Skip HTTP/2 pseudo-headers (:method, :path, etc.)"},"maskAuth":{"type":"boolean","description":"Mask Authorization / token header values"},"multiline":{"type":"boolean","description":"Multi-line output (backslash line continuations)"},"filterSearch":{"type":"string","description":"Search"},"filterMethod":{"enum":["any","GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"description":"Method"},"filterStatus":{"enum":["any","2xx","3xx","4xx","5xx"],"description":"Status"},"filterType":{"enum":["any","xhr","document","no-static"],"description":"Type"}},"required":[]},"examples":{"all_requests_masked_auth":{"summary":"All requests, masked auth","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"entries\": [\n      {\n        \"time\": 220,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/users?limit=20&offset=0\",\n          \"headers\": [\n            {\n              \"name\": \":method\",\n              \"value\": \"GET\"\n            },\n            {\n              \"name\": \":authority\",\n              \"value\": \"api.example.com\"\n            },\n            {\n              \"name\": \"accept\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            },\n            {\n              \"name\": \"cookie\",\n              \"value\": \"session=abc123; theme=dark\"\n            }\n          ]\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 256,\n            \"mimeType\": \"application/json\"\n          }\n        }\n      },\n      {\n        \"time\": 320,\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\",\n          \"headers\": [\n            {\n              \"name\": \"content-type\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            }\n          ],\n          \"postData\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2,\\\"currency\\\":\\\"USD\\\"}\"\n          }\n        },\n        \"response\": {\n          \"status\": 201,\n          \"content\": {\n            \"size\": 142,\n            \"mimeType\": \"application/json\"\n          }\n        }\n      },\n      {\n        \"time\": 95,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://cdn.example.com/static/logo.svg\",\n          \"headers\": [\n            {\n              \"name\": \"accept\",\n              \"value\": \"image/svg+xml\"\n            }\n          ]\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 4321,\n            \"mimeType\": \"image/svg+xml\"\n          }\n        }\n      }\n    ]\n  }\n}","includeHeaders":"true","includeCookies":"true","includeBody":"true","stripPseudo":"true","maskAuth":"true","multiline":"true","filterSearch":"","filterMethod":"any","filterStatus":"any","filterType":"any"}},"api_only_single_line_no_headers":{"summary":"API-only, single-line, no headers","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"entries\": [\n      {\n        \"time\": 220,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/users?limit=20&offset=0\",\n          \"headers\": [\n            {\n              \"name\": \":method\",\n              \"value\": \"GET\"\n            },\n            {\n              \"name\": \":authority\",\n              \"value\": \"api.example.com\"\n            },\n            {\n              \"name\": \"accept\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            },\n            {\n              \"name\": \"cookie\",\n              \"value\": \"session=abc123; theme=dark\"\n            }\n          ]\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 256,\n            \"mimeType\": \"application/json\"\n          }\n        }\n      },\n      {\n        \"time\": 320,\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\",\n          \"headers\": [\n            {\n              \"name\": \"content-type\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            }\n          ],\n          \"postData\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2,\\\"currency\\\":\\\"USD\\\"}\"\n          }\n        },\n        \"response\": {\n          \"status\": 201,\n          \"content\": {\n            \"size\": 142,\n            \"mimeType\": \"application/json\"\n          }\n        }\n      },\n      {\n        \"time\": 95,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://cdn.example.com/static/logo.svg\",\n          \"headers\": [\n            {\n              \"name\": \"accept\",\n              \"value\": \"image/svg+xml\"\n            }\n          ]\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 4321,\n            \"mimeType\": \"image/svg+xml\"\n          }\n        }\n      }\n    ]\n  }\n}","includeHeaders":"","includeCookies":"","includeBody":"true","stripPseudo":"true","maskAuth":"","multiline":"","filterSearch":"","filterMethod":"any","filterStatus":"any","filterType":"xhr"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"all_requests_masked_auth":{"summary":"All requests, masked auth","value":{"tool":"har-to-curl-extractor","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Included","value":"3 of 3"},{"metric":"Unique Domains","value":"2"}],"curlOutput":"# [1] GET 200  api.example.com/v1/users\ncurl 'https://api.example.com/v1/users?limit=20&offset=0' \\\n  -H 'accept: application/json' \\\n  -H 'authorization: Bearer <TOKEN>' \\\n  -H 'cookie: session=abc123; theme=dark'\n\n# [2] POST 201  api.example.com/v1/orders\ncurl https://api.example.com/v1/orders \\\n  -X POST \\\n  -H 'content-type: application/json' \\\n  -H 'authorization: Bearer <TOKEN>' \\\n  --data-raw '{\"productId\":\"sku-42\",\"qty\":2,\"currency\":\"USD\"}'\n\n# [3] GET 200  cdn.example.com/static/logo.svg\ncurl https://cdn.example.com/static/logo.svg \\\n  -H 'accept: image/svg+xml'"},"credits_used":5,"credits_remaining":null}},"api_only_single_line_no_headers":{"summary":"API-only, single-line, no headers","value":{"tool":"har-to-curl-extractor","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Included","value":"2 of 3"},{"metric":"Unique Domains","value":"1"}],"curlOutput":"# [1] GET 200  api.example.com/v1/users\ncurl 'https://api.example.com/v1/users?limit=20&offset=0'\n\n# [2] POST 201  api.example.com/v1/orders\ncurl https://api.example.com/v1/orders -X POST --data-raw '{\"productId\":\"sku-42\",\"qty\":2,\"currency\":\"USD\"}'"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"curlOutput":{"type":"string","description":"cURL Commands"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/har-to-postman-collection-converter":{"post":{"operationId":"run_har_to_postman_collection_converter","summary":"HAR to Postman Collection Converter","tags":["Converters"],"description":"Convert a HAR (HTTP Archive) file into a Postman Collection v2.1 — grouped by host or path, with cookie/auth cleanup and a promoted {{baseUrl}} variable.\n\n[Try HAR to Postman Collection Converter in your browser →](https://iotools.cloud/tool/har-to-postman-collection-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"harInput":{"type":"string","description":"HAR Content"},"collectionName":{"type":"string","description":"Collection name"},"grouping":{"enum":["host","path","none"],"description":"Group by"},"filterSearch":{"type":"string","description":"Search"},"filterMethod":{"enum":["any","GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"description":"Method"},"filterStatus":{"enum":["any","2xx","3xx","4xx","5xx"],"description":"Status"},"filterType":{"enum":["any","xhr","document","no-static"],"description":"Type"},"stripCookies":{"type":"boolean","description":"Strip Cookie request headers"},"stripAuth":{"type":"boolean","description":"Replace Authorization values with {{token}} variable"},"stripPseudo":{"type":"boolean","description":"Skip HTTP/2 pseudo-headers (:method, :path, etc.)"},"promoteVars":{"type":"boolean","description":"Promote scheme + host to a {{baseUrl}} collection variable"}},"required":[]},"examples":{"grouped_by_host_defaults":{"summary":"Grouped by host, defaults","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"entries\": [\n      {\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/users?limit=20\",\n          \"headers\": [\n            {\n              \"name\": \":method\",\n              \"value\": \"GET\"\n            },\n            {\n              \"name\": \"accept\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            },\n            {\n              \"name\": \"cookie\",\n              \"value\": \"session=abc123\"\n            }\n          ]\n        },\n        \"response\": {\n          \"status\": 200,\n          \"statusText\": \"OK\",\n          \"headers\": [\n            {\n              \"name\": \"content-type\",\n              \"value\": \"application/json\"\n            }\n          ],\n          \"content\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"[]\"\n          }\n        }\n      },\n      {\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\",\n          \"headers\": [\n            {\n              \"name\": \"content-type\",\n              \"value\": \"application/json\"\n            },\n            {\n              \"name\": \"authorization\",\n              \"value\": \"Bearer eyJhbGciOi.example.token\"\n            }\n          ],\n          \"postData\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2}\"\n          }\n        },\n        \"response\": {\n          \"status\": 201,\n          \"statusText\": \"Created\",\n          \"headers\": [\n            {\n              \"name\": \"content-type\",\n              \"value\": \"application/json\"\n            }\n          ],\n          \"content\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"orderId\\\":\\\"ord_1\\\"}\"\n          }\n        }\n      }\n    ]\n  }\n}","collectionName":"My API","grouping":"host","filterSearch":"","filterMethod":"any","filterStatus":"any","filterType":"any","stripCookies":"true","stripAuth":"true","stripPseudo":"true","promoteVars":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"grouped_by_host_defaults":{"summary":"Grouped by host, defaults","value":{"tool":"har-to-postman-collection-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Included","value":"2 of 2"},{"metric":"Base URL","value":"https://api.example.com"}],"postmanOutput":"{\n  \"info\": {\n    \"name\": \"My API\",\n    \"description\": \"Generated from a HAR (HTTP Archive) export by iotools.cloud — HAR to Postman Collection Converter.\",\n    \"schema\": \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\",\n    \"_exporter_id\": \"iotools-har-to-postman\"\n  },\n  \"item\": [\n    {\n      \"name\": \"api.example.com\",\n      \"item\": [\n        {\n          \"name\": \"GET /v1/users\",\n          \"request\": {\n            \"method\": \"GET\",\n            \"header\": [\n              {\n                \"key\": \"accept\",\n                \"value\": \"application/json\"\n              },\n              {\n                \"key\": \"authorization\",\n                \"value\": \"{{token}}\"\n              }\n            ],\n            \"url\": {\n              \"raw\": \"{{baseUrl}}/v1/users?limit=20\",\n              \"host\": [\n                \"{{baseUrl}}\"\n              ],\n              \"path\": [\n                \"v1\",\n                \"users\"\n              ],\n              \"query\": [\n                {\n                  \"key\": \"limit\",\n                  \"value\": \"20\"\n                }\n              ]\n            }\n          },\n          \"response\": [\n            {\n              \"name\": \"GET /v1/users · 200\",\n              \"originalRequest\": {\n                \"method\": \"GET\",\n                \"header\": [\n                  {\n                    \"key\": \"accept\",\n                    \"value\": \"application/json\"\n                  },\n                  {\n                    \"key\": \"authorization\",\n                    \"value\": \"{{token}}\"\n                  }\n                ],\n                \"url\": {\n                  \"raw\": \"{{baseUrl}}/v1/users?limit=20\",\n                  \"host\": [\n                    \"{{baseUrl}}\"\n                  ],\n                  \"path\": [\n                    \"v1\",\n                    \"users\"\n                  ],\n                  \"query\": [\n                    {\n                      \"key\": \"limit\",\n                      \"value\": \"20\"\n                    }\n                  ]\n                }\n              },\n              \"status\": \"OK\",\n              \"code\": 200,\n              \"_postman_previewlanguage\": \"json\",\n              \"header\": [\n                {\n                  \"key\": \"content-type\",\n                  \"value\": \"application/json\"\n                }\n              ],\n              \"body\": \"[]\"\n            }\n          ]\n        },\n        {\n          \"name\": \"POST /v1/orders\",\n          \"request\": {\n            \"method\": \"POST\",\n            \"header\": [\n              {\n                \"key\": \"content-type\",\n                \"value\": \"application/json\"\n              },\n              {\n                \"key\": \"authorization\",\n                \"value\": \"{{token}}\"\n              }\n            ],\n            \"url\": {\n              \"raw\": \"{{baseUrl}}/v1/orders\",\n              \"host\": [\n                \"{{baseUrl}}\"\n              ],\n              \"path\": [\n                \"v1\",\n                \"orders\"\n              ]\n            },\n            \"body\": {\n              \"mode\": \"raw\",\n              \"raw\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2}\",\n              \"options\": {\n                \"raw\": {\n                  \"language\": \"json\"\n                }\n              }\n            }\n          },\n          \"response\": [\n            {\n              \"name\": \"POST /v1/orders · 201\",\n              \"originalRequest\": {\n                \"method\": \"POST\",\n                \"header\": [\n                  {\n                    \"key\": \"content-type\",\n                    \"value\": \"application/json\"\n                  },\n                  {\n                    \"key\": \"authorization\",\n                    \"value\": \"{{token}}\"\n                  }\n                ],\n                \"url\": {\n                  \"raw\": \"{{baseUrl}}/v1/orders\",\n                  \"host\": [\n                    \"{{baseUrl}}\"\n                  ],\n                  \"path\": [\n                    \"v1\",\n                    \"orders\"\n                  ]\n                },\n                \"body\": {\n                  \"mode\": \"raw\",\n                  \"raw\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2}\",\n                  \"options\": {\n                    \"raw\": {\n                      \"language\": \"json\"\n                    }\n                  }\n                }\n              },\n              \"status\": \"Created\",\n              \"code\": 201,\n              \"_postman_previewlanguage\": \"json\",\n              \"header\": [\n                {\n                  \"key\": \"content-type\",\n                  \"value\": \"application/json\"\n                }\n              ],\n              \"body\": \"{\\\"orderId\\\":\\\"ord_1\\\"}\"\n            }\n          ]\n        }\n      ]\n    }\n  ],\n  \"variable\": [\n    {\n      \"key\": \"baseUrl\",\n      \"value\": \"https://api.example.com\",\n      \"type\": \"string\"\n    },\n    {\n      \"key\": \"token\",\n      \"value\": \"\",\n      \"type\": \"string\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"postmanOutput":{"type":"string","description":"Postman Collection (v2.1)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hardness-scale-converter":{"post":{"operationId":"run_hardness_scale_converter","summary":"Hardness Scale Converter","tags":["Converters"],"description":"Convert a material hardness value between the Mohs, Vickers (HV), Brinell (HB) and Rockwell A/B/C (HRA/HRB/HRC) scales. Enter a value on any one scale and read its approximate equivalent on all the others, using standardized ASTM E140-style correlation data for steels.\n\n[Try Hardness Scale Converter in your browser →](https://iotools.cloud/tool/hardness-scale-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceScale":{"enum":["HV","HB","HRC","HRB","HRA","Mohs"],"description":"Source Scale"},"hardnessValue":{"type":"number","description":"Hardness Value","minimum":0}},"required":["hardnessValue"]},"examples":{"300_hv_to_all_scales":{"summary":"300 HV to all scales","value":{"sourceScale":"HV","hardnessValue":"300"}},"200_hb_to_all_scales":{"summary":"200 HB to all scales","value":{"sourceScale":"HB","hardnessValue":"200"}},"mohs_5_to_all_scales":{"summary":"Mohs 5 to all scales","value":{"sourceScale":"Mohs","hardnessValue":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"300_hv_to_all_scales":{"summary":"300 HV to all scales","value":{"tool":"hardness-scale-converter","tool_version":"1.0.2","outputs":{"results":[{"scale":"Mohs","value":"4.4"},{"scale":"Vickers (HV)","value":"300"},{"scale":"Brinell (HB)","value":"284"},{"scale":"Rockwell C (HRC)","value":"29"},{"scale":"Rockwell B (HRB)","value":"105"},{"scale":"Rockwell A (HRA)","value":"65.2"}]},"credits_used":5,"credits_remaining":null}},"200_hb_to_all_scales":{"summary":"200 HB to all scales","value":{"tool":"hardness-scale-converter","tool_version":"1.0.2","outputs":{"results":[{"scale":"Mohs","value":"4.1"},{"scale":"Vickers (HV)","value":"211"},{"scale":"Brinell (HB)","value":"200"},{"scale":"Rockwell C (HRC)","value":"14.8"},{"scale":"Rockwell B (HRB)","value":"94.1"},{"scale":"Rockwell A (HRA)","value":"—"}]},"credits_used":5,"credits_remaining":null}},"mohs_5_to_all_scales":{"summary":"Mohs 5 to all scales","value":{"tool":"hardness-scale-converter","tool_version":"1.0.2","outputs":{"results":[{"scale":"Mohs","value":"5"},{"scale":"Vickers (HV)","value":"540"},{"scale":"Brinell (HB)","value":"496"},{"scale":"Rockwell C (HRC)","value":"51.7"},{"scale":"Rockwell B (HRB)","value":"—"},{"scale":"Rockwell A (HRA)","value":"76.7"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Converted Values","items":{"type":"object","properties":{"scale":{"type":"string","description":"Scale"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["scale","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hcl-to-json-converter":{"post":{"operationId":"run_hcl_to_json_converter","summary":"HCL to JSON Converter","tags":["Converters"],"description":"Convert Terraform HCL configuration to its equivalent JSON representation, following Terraform's documented JSON syntax mapping — nested blocks, labels, repeated blocks, lists, maps and heredocs. Non-literal expressions (references, function calls) are preserved as `${...}` interpolation strings. Runs entirely in your browser.\n\n[Try HCL to JSON Converter in your browser →](https://iotools.cloud/tool/hcl-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hclSource":{"type":"string","description":"HCL input"},"indent":{"enum":["2","4","minified"],"description":"Indent"}},"required":["hclSource"]},"examples":{"resource_with_repeated_blocks_a_map_and_a_reference_expression":{"summary":"Resource with repeated blocks, a map, and a reference expression","value":{"hclSource":"resource \"aws_instance\" \"web\" {\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = var.instance_type\n  count         = 2\n\n  network_interface {\n    device_index = 0\n    description  = \"Main network interface\"\n  }\n\n  network_interface {\n    device_index = 1\n    description  = \"Secondary network interface\"\n  }\n\n  tags = {\n    Name = \"web\"\n    Env  = \"prod\"\n  }\n}\n\nvariable \"instance_type\" {\n  default = \"t3.micro\"\n}","indent":"2"}},"list_heredoc_and_boolean_null_literals_minified":{"summary":"List, heredoc and boolean/null literals (minified)","value":{"hclSource":"locals {\n  azs     = [\"us-east-1a\", \"us-east-1b\"]\n  enabled = true\n  extra   = null\n  script  = <<-EOT\n    echo hello\n    echo world\n  EOT\n}","indent":"minified"}},"for_expression_stays_an_opaque_interpolation_not_a_corrupted_list":{"summary":"for-expression stays an opaque interpolation, not a corrupted list","value":{"hclSource":"locals {\n  ids = [for s in var.list : s.id]\n}","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"resource_with_repeated_blocks_a_map_and_a_reference_expression":{"summary":"Resource with repeated blocks, a map, and a reference expression","value":{"tool":"hcl-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"resource\": {\n    \"aws_instance\": {\n      \"web\": {\n        \"ami\": \"${data.aws_ami.ubuntu.id}\",\n        \"instance_type\": \"${var.instance_type}\",\n        \"count\": 2,\n        \"network_interface\": [\n          {\n            \"device_index\": 0,\n            \"description\": \"Main network interface\"\n          },\n          {\n            \"device_index\": 1,\n            \"description\": \"Secondary network interface\"\n          }\n        ],\n        \"tags\": {\n          \"Name\": \"web\",\n          \"Env\": \"prod\"\n        }\n      }\n    }\n  },\n  \"variable\": {\n    \"instance_type\": {\n      \"default\": \"t3.micro\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"list_heredoc_and_boolean_null_literals_minified":{"summary":"List, heredoc and boolean/null literals (minified)","value":{"tool":"hcl-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\"locals\":{\"azs\":[\"us-east-1a\",\"us-east-1b\"],\"enabled\":true,\"extra\":null,\"script\":\"  echo hello\\n  echo world\"}}"},"credits_used":5,"credits_remaining":null}},"for_expression_stays_an_opaque_interpolation_not_a_corrupted_list":{"summary":"for-expression stays an opaque interpolation, not a corrupted list","value":{"tool":"hcl-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"locals\": {\n    \"ids\": \"${[for s in var.list: s.id]}\"\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hex-color-to-name":{"post":{"operationId":"run_hex_color_to_name","summary":"HEX Color to Name","tags":["Converters"],"description":"Find the name of a HEX color: enter a HEX code (#RRGGBB, #RGB, with or without #) to get the closest CSS named color by Euclidean RGB distance, whether it's an exact match, and a ranked list of nearby named colors.\n\n[Try HEX Color to Name in your browser →](https://iotools.cloud/tool/hex-color-to-name/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hexColor":{"type":"string","description":"HEX Color"},"matchCount":{"type":"number","description":"Number of matches to show","minimum":1,"maximum":10}},"required":["hexColor"]},"examples":{"exact_match_pure_red":{"summary":"Exact match — pure red","value":{"hexColor":"#FF0000","matchCount":"5"}},"close_match_near_cornflowerblue":{"summary":"Close match — near cornflowerblue","value":{"hexColor":"#6395EE","matchCount":"5"}},"shorthand_hex_without":{"summary":"Shorthand hex without #","value":{"hexColor":"708","matchCount":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"exact_match_pure_red":{"summary":"Exact match — pure red","value":{"tool":"hex-color-to-name","tool_version":"1.0.2","outputs":{"closestColor":"red","matchType":"Exact match","matchTable":[{"color-name":"red","hex":"#FF0000","rgb":"rgb(255, 0, 0)","distance":"0.00"},{"color-name":"orangered","hex":"#FF4500","rgb":"rgb(255, 69, 0)","distance":"69.00"},{"color-name":"crimson","hex":"#DC143C","rgb":"rgb(220, 20, 60)","distance":"72.28"},{"color-name":"firebrick","hex":"#B22222","rgb":"rgb(178, 34, 34)","distance":"90.78"},{"color-name":"brown","hex":"#A52A2A","rgb":"rgb(165, 42, 42)","distance":"107.83"}]},"credits_used":5,"credits_remaining":null}},"close_match_near_cornflowerblue":{"summary":"Close match — near cornflowerblue","value":{"tool":"hex-color-to-name","tool_version":"1.0.2","outputs":{"closestColor":"cornflowerblue","matchType":"Closest match","matchTable":[{"color-name":"cornflowerblue","hex":"#6495ED","rgb":"rgb(100, 149, 237)","distance":"1.41"},{"color-name":"mediumslateblue","hex":"#7B68EE","rgb":"rgb(123, 104, 238)","distance":"51.00"},{"color-name":"royalblue","hex":"#4169E1","rgb":"rgb(65, 105, 225)","distance":"57.11"},{"color-name":"mediumpurple","hex":"#9370DB","rgb":"rgb(147, 112, 219)","distance":"63.51"},{"color-name":"skyblue","hex":"#87CEEB","rgb":"rgb(135, 206, 235)","distance":"67.48"}]},"credits_used":5,"credits_remaining":null}},"shorthand_hex_without":{"summary":"Shorthand hex without #","value":{"tool":"hex-color-to-name","tool_version":"1.0.2","outputs":{"closestColor":"purple","matchType":"Closest match","matchTable":[{"color-name":"purple","hex":"#800080","rgb":"rgb(128, 0, 128)","distance":"12.04"},{"color-name":"darkmagenta","hex":"#8B008B","rgb":"rgb(139, 0, 139)","distance":"20.22"},{"color-name":"indigo","hex":"#4B0082","rgb":"rgb(75, 0, 130)","distance":"44.41"},{"color-name":"darkslateblue","hex":"#483D8B","rgb":"rgb(72, 61, 139)","distance":"77.06"},{"color-name":"darkviolet","hex":"#9400D3","rgb":"rgb(148, 0, 211)","distance":"80.41"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"closestColor":{"type":"string","description":"Closest Color Name"},"matchType":{"type":"string","description":"Match"},"matchTable":{"type":"array","description":"Closest CSS Named Colors","items":{"type":"object","properties":{"color-name":{"type":"string","description":"Color Name"},"hex":{"type":"string","description":"HEX"},"rgb":{"type":"string","description":"RGB"},"distance":{"type":"string","description":"Distance"}}},"x-iotools-columns":["color-name","hex","rgb","distance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hex-to-rgba-converter":{"post":{"operationId":"run_hex_to_rgba_converter","summary":"HEX to RGBA Converter","tags":["Converters"],"description":"Convert a HEX color (#RGB, #RGBA, #RRGGBB or #RRGGBBAA) to CSS rgba()/rgb() notation, with a full breakdown of red, green, blue, alpha and HSLA — plus an optional alpha override.\n\n[Try HEX to RGBA Converter in your browser →](https://iotools.cloud/tool/hex-to-rgba-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hex":{"type":"string","description":"HEX Color"},"alphaOverride":{"type":"number","description":"Alpha Override","minimum":0,"maximum":1}},"required":["hex"]},"examples":{"6_digit_hex_no_alpha":{"summary":"6-digit hex (no alpha)","value":{"hex":"#FF0000","alphaOverride":""}},"8_digit_hex_with_alpha":{"summary":"8-digit hex (with alpha)","value":{"hex":"#FF000080","alphaOverride":""}},"3_digit_shorthand":{"summary":"3-digit shorthand","value":{"hex":"#0AF","alphaOverride":""}},"4_digit_shorthand_with_alpha":{"summary":"4-digit shorthand (with alpha)","value":{"hex":"#0AF8","alphaOverride":""}},"alpha_override_on_opaque_hex":{"summary":"Alpha override on opaque hex","value":{"hex":"#336699","alphaOverride":"0.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_digit_hex_no_alpha":{"summary":"6-digit hex (no alpha)","value":{"tool":"hex-to-rgba-converter","tool_version":"1.0.2","outputs":{"rgba":"rgba(255, 0, 0, 1)","colorTable":[{"property":"Red","value":"255"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"Alpha","value":"1"},{"property":"RGB","value":"rgb(255, 0, 0)"},{"property":"RGBA","value":"rgba(255, 0, 0, 1)"},{"property":"HSLA","value":"hsla(0, 100%, 50%, 1)"},{"property":"Hex","value":"#FF0000"}]},"credits_used":5,"credits_remaining":null}},"8_digit_hex_with_alpha":{"summary":"8-digit hex (with alpha)","value":{"tool":"hex-to-rgba-converter","tool_version":"1.0.2","outputs":{"rgba":"rgba(255, 0, 0, 0.502)","colorTable":[{"property":"Red","value":"255"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"Alpha","value":"0.502"},{"property":"RGB","value":"rgb(255, 0, 0)"},{"property":"RGBA","value":"rgba(255, 0, 0, 0.502)"},{"property":"HSLA","value":"hsla(0, 100%, 50%, 0.502)"},{"property":"Hex","value":"#FF000080"}]},"credits_used":5,"credits_remaining":null}},"3_digit_shorthand":{"summary":"3-digit shorthand","value":{"tool":"hex-to-rgba-converter","tool_version":"1.0.2","outputs":{"rgba":"rgba(0, 170, 255, 1)","colorTable":[{"property":"Red","value":"0"},{"property":"Green","value":"170"},{"property":"Blue","value":"255"},{"property":"Alpha","value":"1"},{"property":"RGB","value":"rgb(0, 170, 255)"},{"property":"RGBA","value":"rgba(0, 170, 255, 1)"},{"property":"HSLA","value":"hsla(200, 100%, 50%, 1)"},{"property":"Hex","value":"#00AAFF"}]},"credits_used":5,"credits_remaining":null}},"4_digit_shorthand_with_alpha":{"summary":"4-digit shorthand (with alpha)","value":{"tool":"hex-to-rgba-converter","tool_version":"1.0.2","outputs":{"rgba":"rgba(0, 170, 255, 0.533)","colorTable":[{"property":"Red","value":"0"},{"property":"Green","value":"170"},{"property":"Blue","value":"255"},{"property":"Alpha","value":"0.533"},{"property":"RGB","value":"rgb(0, 170, 255)"},{"property":"RGBA","value":"rgba(0, 170, 255, 0.533)"},{"property":"HSLA","value":"hsla(200, 100%, 50%, 0.533)"},{"property":"Hex","value":"#00AAFF88"}]},"credits_used":5,"credits_remaining":null}},"alpha_override_on_opaque_hex":{"summary":"Alpha override on opaque hex","value":{"tool":"hex-to-rgba-converter","tool_version":"1.0.2","outputs":{"rgba":"rgba(51, 102, 153, 0.5)","colorTable":[{"property":"Red","value":"51"},{"property":"Green","value":"102"},{"property":"Blue","value":"153"},{"property":"Alpha","value":"0.5"},{"property":"RGB","value":"rgb(51, 102, 153)"},{"property":"RGBA","value":"rgba(51, 102, 153, 0.5)"},{"property":"HSLA","value":"hsla(210, 50%, 40%, 0.5)"},{"property":"Hex","value":"#33669980"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"rgba":{"type":"string","description":"RGBA"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hex-to-text":{"post":{"operationId":"run_hex_to_text","summary":"Hex to Text Converter","tags":["Converters"],"description":"Convert a hexadecimal string to readable text, or encode text into hex bytes. Handles space, comma, dash, 0x and \\x formats plus multi-byte UTF-8, with selectable output delimiter and case.\n\n[Try Hex to Text Converter in your browser →](https://iotools.cloud/tool/hex-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"mode":{"enum":["hexToText","textToHex"],"description":"Mode"},"delimiter":{"enum":["space","none","comma","dash","0x","\\x"],"description":"Output delimiter"},"hexCase":{"enum":["uppercase","lowercase"],"description":"Hex case"}},"required":[]},"examples":{"hex_to_text_space_separated":{"summary":"Hex to text (space-separated)","value":{"mode":"hexToText","inputText":"48 65 6C 6C 6F 20 57 6F 72 6C 64 21"}},"hex_to_text_continuous_no_separators":{"summary":"Hex to text (continuous, no separators)","value":{"mode":"hexToText","inputText":"48656C6C6F"}},"text_to_hex":{"summary":"Text to hex","value":{"mode":"textToHex","inputText":"Hi","delimiter":"space","hexCase":"uppercase"}},"text_to_hex_multi_byte_utf_8":{"summary":"Text to hex (multi-byte UTF-8)","value":{"mode":"textToHex","inputText":"café","delimiter":"space","hexCase":"uppercase"}},"hex_to_text_emoji_4_byte_utf_8":{"summary":"Hex to text (emoji, 4-byte UTF-8)","value":{"mode":"hexToText","inputText":"F0 9F 98 80"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hex_to_text_space_separated":{"summary":"Hex to text (space-separated)","value":{"tool":"hex-to-text","tool_version":"1.0.2","outputs":{"output":"Hello World!"},"credits_used":5,"credits_remaining":null}},"hex_to_text_continuous_no_separators":{"summary":"Hex to text (continuous, no separators)","value":{"tool":"hex-to-text","tool_version":"1.0.2","outputs":{"output":"Hello"},"credits_used":5,"credits_remaining":null}},"text_to_hex":{"summary":"Text to hex","value":{"tool":"hex-to-text","tool_version":"1.0.2","outputs":{"output":"48 69"},"credits_used":5,"credits_remaining":null}},"text_to_hex_multi_byte_utf_8":{"summary":"Text to hex (multi-byte UTF-8)","value":{"tool":"hex-to-text","tool_version":"1.0.2","outputs":{"output":"63 61 66 C3 A9"},"credits_used":5,"credits_remaining":null}},"hex_to_text_emoji_4_byte_utf_8":{"summary":"Hex to text (emoji, 4-byte UTF-8)","value":{"tool":"hex-to-text","tool_version":"1.0.2","outputs":{"output":"😀"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hsv-to-rgb-converter":{"post":{"operationId":"run_hsv_to_rgb_converter","summary":"HSV to RGB Converter","tags":["Converters"],"description":"Convert an HSV/HSB color (Hue 0-360°, Saturation and Value/Brightness 0-100%) to RGB and a hex code, with a per-channel breakdown and a live color swatch.\n\n[Try HSV to RGB Converter in your browser →](https://iotools.cloud/tool/hsv-to-rgb-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hue":{"type":"number","description":"Hue (H)","minimum":0,"maximum":360},"saturation":{"type":"number","description":"Saturation (S)","minimum":0,"maximum":100},"value":{"type":"number","description":"Value / Brightness (V)","minimum":0,"maximum":100}},"required":[]},"examples":{"pure_red_h0_s100_v100":{"summary":"Pure red (H0, S100%, V100%)","value":{"hue":"0","saturation":"100","value":"100"}},"pure_green_h120_s100_v100":{"summary":"Pure green (H120, S100%, V100%)","value":{"hue":"120","saturation":"100","value":"100"}},"pure_blue_h240_s100_v100":{"summary":"Pure blue (H240, S100%, V100%)","value":{"hue":"240","saturation":"100","value":"100"}},"mid_grey_h0_s0_v50":{"summary":"Mid grey (H0, S0%, V50%)","value":{"hue":"0","saturation":"0","value":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pure_red_h0_s100_v100":{"summary":"Pure red (H0, S100%, V100%)","value":{"tool":"hsv-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(255, 0, 0)","hex":"#FF0000","colorTable":[{"property":"Hue","value":"0°"},{"property":"Saturation","value":"100%"},{"property":"Value","value":"100%"},{"property":"Red","value":"255"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"RGB","value":"rgb(255, 0, 0)"},{"property":"HEX","value":"#FF0000"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FF0000;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#FF0000</div>"},"credits_used":5,"credits_remaining":null}},"pure_green_h120_s100_v100":{"summary":"Pure green (H120, S100%, V100%)","value":{"tool":"hsv-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(0, 255, 0)","hex":"#00FF00","colorTable":[{"property":"Hue","value":"120°"},{"property":"Saturation","value":"100%"},{"property":"Value","value":"100%"},{"property":"Red","value":"0"},{"property":"Green","value":"255"},{"property":"Blue","value":"0"},{"property":"RGB","value":"rgb(0, 255, 0)"},{"property":"HEX","value":"#00FF00"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#00FF00;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#00FF00</div>"},"credits_used":5,"credits_remaining":null}},"pure_blue_h240_s100_v100":{"summary":"Pure blue (H240, S100%, V100%)","value":{"tool":"hsv-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(0, 0, 255)","hex":"#0000FF","colorTable":[{"property":"Hue","value":"240°"},{"property":"Saturation","value":"100%"},{"property":"Value","value":"100%"},{"property":"Red","value":"0"},{"property":"Green","value":"0"},{"property":"Blue","value":"255"},{"property":"RGB","value":"rgb(0, 0, 255)"},{"property":"HEX","value":"#0000FF"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#0000FF;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#0000FF</div>"},"credits_used":5,"credits_remaining":null}},"mid_grey_h0_s0_v50":{"summary":"Mid grey (H0, S0%, V50%)","value":{"tool":"hsv-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(128, 128, 128)","hex":"#808080","colorTable":[{"property":"Hue","value":"0°"},{"property":"Saturation","value":"0%"},{"property":"Value","value":"50%"},{"property":"Red","value":"128"},{"property":"Green","value":"128"},{"property":"Blue","value":"128"},{"property":"RGB","value":"rgb(128, 128, 128)"},{"property":"HEX","value":"#808080"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#808080;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#808080</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"rgb":{"type":"string","description":"RGB"},"hex":{"type":"string","description":"HEX"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"swatchHtml":{"type":"string","description":"Swatch HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-decode":{"post":{"operationId":"run_html_decode","summary":"HTML Decode","tags":["Converters"],"description":"Decode HTML-encoded text back into literal characters. Handles named entities (&amp; &lt; &gt; &quot; &copy; &mdash; and ~190 more), decimal numeric references (&#169;), and hex numeric references (&#x27;, case-insensitive) — entirely in your browser.\n\n[Try HTML Decode in your browser →](https://iotools.cloud/tool/html-decode/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"encodedHtml":{"type":"string","description":"HTML-Encoded Text"}},"required":[]},"examples":{"basic_entities":{"summary":"Basic entities","value":{"encodedHtml":"&lt;div&gt;Tom &amp; Jerry said &quot;hi&quot;&lt;/div&gt;"}},"named_decimal_and_hex_entities_mixed":{"summary":"Named, decimal, and hex entities mixed","value":{"encodedHtml":"Caf&eacute; &amp; Cr&egrave;me &mdash; &lt;Item&gt; costs &#36;5.99 &#x28;on sale&#x29; &copy; 2024 &hellip;"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_entities":{"summary":"Basic entities","value":{"tool":"html-decode","tool_version":"1.0.2","outputs":{"decodedHtml":"<div>Tom & Jerry said \"hi\"</div>"},"credits_used":5,"credits_remaining":null}},"named_decimal_and_hex_entities_mixed":{"summary":"Named, decimal, and hex entities mixed","value":{"tool":"html-decode","tool_version":"1.0.2","outputs":{"decodedHtml":"Café & Crème — <Item> costs $5.99 (on sale) © 2024 …"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"decodedHtml":{"type":"string","description":"Decoded HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-encoder-decoder":{"post":{"operationId":"run_html_encoder_decoder","summary":"HTML Encoder / Decoder","tags":["Converters"],"description":"Encode text into HTML entities or decode entities back into plain characters. Choose named (&lt;), decimal (&#60;) or hex (&#x3C;) output, and how much to escape — the parser-significant characters, control characters, or everything non-ASCII. Runs entirely in your browser.\n\n[Try HTML Encoder / Decoder in your browser →](https://iotools.cloud/tool/html-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text or HTML"},"mode":{"enum":["encode","decode","auto"],"description":"Direction"},"scope":{"enum":["minimal","extended","non-ascii"],"description":"Encode which characters"},"format":{"enum":["named","decimal","hex"],"description":"Entity format"}},"required":[]},"examples":{"escape_an_anchor_tag":{"summary":"Escape an anchor tag","value":{"text":"<a href=\"/search?q=cats&type=all\">Cats & dogs</a>","mode":"encode","scope":"minimal","format":"named"}},"hex_entities_ascii_safe_output":{"summary":"Hex entities, ASCII-safe output","value":{"text":"Café — 5 € <b>naïve</b>","mode":"encode","scope":"non-ascii","format":"hex"}},"decode_back_to_plain_text":{"summary":"Decode back to plain text","value":{"text":"Caf&eacute; &amp; Cr&egrave;me &mdash; &#36;5.99 &#x28;on sale&#x29;","mode":"decode","scope":"minimal","format":"named"}},"auto_detect_picks_decoding":{"summary":"Auto-detect picks decoding","value":{"text":"&lt;p&gt;Tom &amp; Jerry&lt;/p&gt;","mode":"auto","scope":"minimal","format":"named"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"escape_an_anchor_tag":{"summary":"Escape an anchor tag","value":{"tool":"html-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"&lt;a href=&quot;/search?q=cats&amp;type=all&quot;&gt;Cats &amp; dogs&lt;/a&gt;"},"credits_used":5,"credits_remaining":null}},"hex_entities_ascii_safe_output":{"summary":"Hex entities, ASCII-safe output","value":{"tool":"html-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Caf&#xE9; &#x2014; 5 &#x20AC; &#x3C;b&#x3E;na&#xEF;ve&#x3C;/b&#x3E;"},"credits_used":5,"credits_remaining":null}},"decode_back_to_plain_text":{"summary":"Decode back to plain text","value":{"tool":"html-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Café & Crème — $5.99 (on sale)"},"credits_used":5,"credits_remaining":null}},"auto_detect_picks_decoding":{"summary":"Auto-detect picks decoding","value":{"tool":"html-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"<p>Tom & Jerry</p>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-stripper":{"post":{"operationId":"run_html_stripper","summary":"HTML Stripper","tags":["Converters"],"description":"Strip all HTML tags from a snippet or file, leaving just the visible text. Removes &lt;script>/&lt;style> content and comments entirely, decodes HTML entities, and turns block-level elements into line breaks.\n\n[Try HTML Stripper in your browser →](https://iotools.cloud/tool/html-stripper/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputHtml":{"type":"string","description":"HTML Input"},"preserveLineBreaks":{"type":"boolean","description":"Preserve Line Breaks"},"preserveSpaces":{"type":"boolean","description":"Preserve Spaces"},"preserveLinks":{"type":"boolean","description":"Preserve Links (URLs)"}},"required":[]},"examples":{"script_content_removed":{"summary":"Script content removed","value":{"inputHtml":"<p>Visible text</p><script>alert(\"hidden\");</script><p>More text</p>","preserveLineBreaks":"true","preserveSpaces":"","preserveLinks":""}},"html_entities_decoded":{"summary":"HTML entities decoded","value":{"inputHtml":"<p>Ben &amp; Jerry&#39;s &lt;3 ice cream &amp; more!</p>","preserveLineBreaks":"true","preserveSpaces":"","preserveLinks":""}},"links_preserved":{"summary":"Links preserved","value":{"inputHtml":"<p>Visit <a href=\"https://example.com\">our site</a> for more.</p>","preserveLineBreaks":"true","preserveSpaces":"","preserveLinks":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"script_content_removed":{"summary":"Script content removed","value":{"tool":"html-stripper","tool_version":"1.0.2","outputs":{"output":"Visible text\nMore text"},"credits_used":5,"credits_remaining":null}},"html_entities_decoded":{"summary":"HTML entities decoded","value":{"tool":"html-stripper","tool_version":"1.0.2","outputs":{"output":"Ben & Jerry's <3 ice cream & more!"},"credits_used":5,"credits_remaining":null}},"links_preserved":{"summary":"Links preserved","value":{"tool":"html-stripper","tool_version":"1.0.2","outputs":{"output":"Visit our site (https://example.com) for more."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Plain Text Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-table-extractor":{"post":{"operationId":"run_html_table_extractor","summary":"HTML Table Extractor","tags":["Converters"],"description":"Extract &lt;table> data from pasted HTML into CSV, TSV, JSON or Markdown, expanding merged colspan/rowspan cells.\n\n[Try HTML Table Extractor in your browser →](https://iotools.cloud/tool/html-table-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"html":{"type":"string","description":"HTML"},"format":{"enum":["csv","tsv","json","markdown"],"description":"Output format"},"table":{"type":"string","description":"Table to extract"},"headers":{"type":"boolean","description":"First row contains headers"},"expandMerged":{"type":"boolean","description":"Expand merged cells (colspan / rowspan)"}},"required":["html"]},"examples":{"simple_table_csv":{"summary":"Simple table → CSV","value":{"html":"<table><tr><th>Name</th><th>Role</th></tr><tr><td>Ada</td><td>Engineer</td></tr><tr><td>Grace, R.</td><td>Admiral</td></tr></table>","format":"csv","table":"1","headers":"true","expandMerged":"true"}},"headers_json_objects":{"summary":"Headers → JSON objects","value":{"html":"<table><thead><tr><th>City</th><th>Population</th></tr></thead><tbody><tr><td>Hanoi</td><td>8,053,663</td></tr><tr><td>Da Nang</td><td>1,134,310</td></tr></tbody></table>","format":"json","table":"1","headers":"true","expandMerged":"true"}},"merged_cells_expanded_tsv":{"summary":"Merged cells expanded → TSV","value":{"html":"<table><tr><td rowspan=\"2\">EU</td><td>France</td></tr><tr><td>Spain</td></tr><tr><td colspan=\"2\">Total</td></tr></table>","format":"tsv","table":"1","headers":"","expandMerged":"true"}},"second_table_on_the_page_markdown":{"summary":"Second table on the page → Markdown","value":{"html":"<table><caption>Ignore me</caption><tr><td>a</td></tr></table><table><caption>Scores</caption><tr><th>Team</th><th>Points</th></tr><tr><td>Red</td><td>12</td></tr></table>","format":"markdown","table":"2","headers":"true","expandMerged":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_table_csv":{"summary":"Simple table → CSV","value":{"tool":"html-table-extractor","tool_version":"1.0.2","outputs":{"output":"Name,Role\nAda,Engineer\n\"Grace, R.\",Admiral","summary":"Table 1 of 1 · 3 rows × 2 columns","tables":[{"index":"1","rows":"3","columns":"2","caption-first-cell":"Name"}]},"credits_used":5,"credits_remaining":null}},"headers_json_objects":{"summary":"Headers → JSON objects","value":{"tool":"html-table-extractor","tool_version":"1.0.2","outputs":{"output":"[\n  {\n    \"City\": \"Hanoi\",\n    \"Population\": \"8,053,663\"\n  },\n  {\n    \"City\": \"Da Nang\",\n    \"Population\": \"1,134,310\"\n  }\n]","summary":"Table 1 of 1 · 3 rows × 2 columns","tables":[{"index":"1","rows":"3","columns":"2","caption-first-cell":"City"}]},"credits_used":5,"credits_remaining":null}},"merged_cells_expanded_tsv":{"summary":"Merged cells expanded → TSV","value":{"tool":"html-table-extractor","tool_version":"1.0.2","outputs":{"output":"EU\tFrance\nEU\tSpain\nTotal\tTotal","summary":"Table 1 of 1 · 3 rows × 2 columns","tables":[{"index":"1","rows":"3","columns":"2","caption-first-cell":"EU"}]},"credits_used":5,"credits_remaining":null}},"second_table_on_the_page_markdown":{"summary":"Second table on the page → Markdown","value":{"tool":"html-table-extractor","tool_version":"1.0.2","outputs":{"output":"| Team | Points |\n| --- | --- |\n| Red | 12 |","summary":"Table 2 of 2 · 2 rows × 2 columns","tables":[{"index":"1","rows":"1","columns":"1","caption-first-cell":"Ignore me"},{"index":"2","rows":"2","columns":"2","caption-first-cell":"Scores"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Extracted data"},"summary":{"type":"string","description":"Summary"},"tables":{"type":"array","description":"Tables found","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"rows":{"type":"string","description":"Rows"},"columns":{"type":"string","description":"Columns"},"caption-first-cell":{"type":"string","description":"Caption / first cell"}}},"x-iotools-columns":["index","rows","columns","caption-first-cell"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-to-markdown":{"post":{"operationId":"run_html_to_markdown","summary":"HTML to Markdown Converter","tags":["Converters"],"description":"Convert an HTML snippet into clean Markdown. Handles headings, bold/italic, links, images, ordered and unordered lists, blockquotes, inline code and code blocks, tables, horizontal rules and line breaks. Runs entirely in your browser.\n\n[Try HTML to Markdown Converter in your browser →](https://iotools.cloud/tool/html-to-markdown/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"htmlSource":{"type":"string","description":"HTML Input"},"headingStyle":{"enum":["atx","setext"],"description":"Heading style"},"codeBlockStyle":{"enum":["fenced","indented"],"description":"Code block style"},"bulletMarker":{"enum":["-","*","+"],"description":"Bullet list marker"},"preserveBreaks":{"type":"boolean","description":"Preserve line breaks (&lt;br> becomes trailing spaces)"}},"required":["htmlSource"]},"examples":{"heading_bold_link":{"summary":"Heading, bold & link","value":{"htmlSource":"<h1>Title</h1><p>Hello <strong>world</strong> visit <a href=\"https://example.com\">Example</a></p>"}},"unordered_list":{"summary":"Unordered list","value":{"htmlSource":"<h2>Features</h2><ul><li>Fast</li><li>Easy to <em>use</em></li></ul>"}},"blockquote_code_block":{"summary":"Blockquote & code block","value":{"htmlSource":"<blockquote><p>Wise words</p></blockquote><pre><code>const x = 1;</code></pre>"}},"image_rule_inline_code":{"summary":"Image, rule & inline code","value":{"htmlSource":"<p>Use <code>&lt;div&gt;</code> tags.</p><hr><p><img src=\"/logo.png\" alt=\"Logo\"></p>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"heading_bold_link":{"summary":"Heading, bold & link","value":{"tool":"html-to-markdown","tool_version":"1.0.2","outputs":{"markdown":"# Title\n\nHello **world** visit [Example](https://example.com)"},"credits_used":5,"credits_remaining":null}},"unordered_list":{"summary":"Unordered list","value":{"tool":"html-to-markdown","tool_version":"1.0.2","outputs":{"markdown":"## Features\n\n- Fast\n- Easy to *use*"},"credits_used":5,"credits_remaining":null}},"blockquote_code_block":{"summary":"Blockquote & code block","value":{"tool":"html-to-markdown","tool_version":"1.0.2","outputs":{"markdown":"> Wise words\n\n```\nconst x = 1;\n```"},"credits_used":5,"credits_remaining":null}},"image_rule_inline_code":{"summary":"Image, rule & inline code","value":{"tool":"html-to-markdown","tool_version":"1.0.2","outputs":{"markdown":"Use `<div>` tags.\n\n---\n\n![Logo](/logo.png)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/icalendar-ics-to-json-converter":{"post":{"operationId":"run_icalendar_ics_to_json_converter","summary":"iCalendar (ICS) to JSON Converter","tags":["Converters"],"description":"Parse .ics calendar files into structured JSON — typed dates, RRULE recurrence rules, organizer/attendee addresses, and an optional recurrence-preview expansion.\n\n[Try iCalendar (ICS) to JSON Converter in your browser →](https://iotools.cloud/tool/icalendar-ics-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"icsSource":{"type":"string","description":"ICS Source"},"prettyPrint":{"type":"boolean","description":"Pretty-print JSON output"},"flatEvents":{"type":"boolean","description":"Output flat events array (skip VCALENDAR wrapper)"},"parseDates":{"type":"boolean","description":"Parse DTSTART/DTEND/DTSTAMP into ISO 8601"},"includeRaw":{"type":"boolean","description":"Include raw property values alongside parsed values"},"expandRecurrence":{"type":"boolean","description":"Expand RRULE into preview occurrences"},"recurrenceLimit":{"type":"number","description":"Max occurrences to preview","minimum":1,"maximum":500}},"required":[]},"examples":{"weekly_recurring_event":{"summary":"Weekly recurring event","value":{"icsSource":"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//iotools.cloud//Example//EN\nCALSCALE:GREGORIAN\nBEGIN:VEVENT\nUID:demo-event-1@iotools.cloud\nDTSTAMP:20250115T120000Z\nDTSTART:20250120T090000Z\nDTEND:20250120T100000Z\nSUMMARY:Weekly team standup\nDESCRIPTION:Quick sync on priorities\\, blockers\\,\n  and the week ahead.\nLOCATION:Zoom\nRRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=10\nORGANIZER;CN=\"Jane Doe\":mailto:jane@example.com\nATTENDEE;CN=\"Alex Smith\";RSVP=TRUE:mailto:alex@example.com\nBEGIN:VALARM\nACTION:DISPLAY\nDESCRIPTION:Standup reminder\nTRIGGER:-PT10M\nEND:VALARM\nEND:VEVENT\nEND:VCALENDAR","prettyPrint":"true","flatEvents":"true","parseDates":"true","includeRaw":"","expandRecurrence":"","recurrenceLimit":"10"}},"with_recurrence_preview_3_occurrences":{"summary":"With recurrence preview (3 occurrences)","value":{"icsSource":"BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//iotools.cloud//Example//EN\nCALSCALE:GREGORIAN\nBEGIN:VEVENT\nUID:demo-event-1@iotools.cloud\nDTSTAMP:20250115T120000Z\nDTSTART:20250120T090000Z\nDTEND:20250120T100000Z\nSUMMARY:Weekly team standup\nDESCRIPTION:Quick sync on priorities\\, blockers\\,\n  and the week ahead.\nLOCATION:Zoom\nRRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=10\nORGANIZER;CN=\"Jane Doe\":mailto:jane@example.com\nATTENDEE;CN=\"Alex Smith\";RSVP=TRUE:mailto:alex@example.com\nBEGIN:VALARM\nACTION:DISPLAY\nDESCRIPTION:Standup reminder\nTRIGGER:-PT10M\nEND:VALARM\nEND:VEVENT\nEND:VCALENDAR","prettyPrint":"true","flatEvents":"true","parseDates":"true","includeRaw":"","expandRecurrence":"true","recurrenceLimit":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"weekly_recurring_event":{"summary":"Weekly recurring event","value":{"tool":"icalendar-ics-to-json-converter","tool_version":"1.0.2","outputs":{"jsonOutput":"{\n  \"events\": [\n    {\n      \"type\": \"VEVENT\",\n      \"UID\": \"demo-event-1@iotools.cloud\",\n      \"DTSTAMP\": {\n        \"iso\": \"2025-01-15T12:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"DTSTART\": {\n        \"iso\": \"2025-01-20T09:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"DTEND\": {\n        \"iso\": \"2025-01-20T10:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"SUMMARY\": \"Weekly team standup\",\n      \"DESCRIPTION\": \"Quick sync on priorities, blockers, and the week ahead.\",\n      \"LOCATION\": \"Zoom\",\n      \"RRULE\": {\n        \"FREQ\": \"WEEKLY\",\n        \"BYDAY\": [\n          \"MO\"\n        ],\n        \"COUNT\": 10\n      },\n      \"ORGANIZER\": {\n        \"value\": {\n          \"calAddress\": \"mailto:jane@example.com\",\n          \"email\": \"jane@example.com\"\n        },\n        \"params\": {\n          \"CN\": \"Jane Doe\"\n        }\n      },\n      \"ATTENDEE\": {\n        \"value\": {\n          \"calAddress\": \"mailto:alex@example.com\",\n          \"email\": \"alex@example.com\"\n        },\n        \"params\": {\n          \"CN\": \"Alex Smith\",\n          \"RSVP\": \"TRUE\"\n        }\n      },\n      \"components\": [\n        {\n          \"type\": \"VALARM\",\n          \"ACTION\": \"DISPLAY\",\n          \"DESCRIPTION\": \"Standup reminder\",\n          \"TRIGGER\": {\n            \"duration\": \"-PT10M\",\n            \"offsetSeconds\": -600\n          }\n        }\n      ]\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"with_recurrence_preview_3_occurrences":{"summary":"With recurrence preview (3 occurrences)","value":{"tool":"icalendar-ics-to-json-converter","tool_version":"1.0.2","outputs":{"jsonOutput":"{\n  \"events\": [\n    {\n      \"type\": \"VEVENT\",\n      \"UID\": \"demo-event-1@iotools.cloud\",\n      \"DTSTAMP\": {\n        \"iso\": \"2025-01-15T12:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"DTSTART\": {\n        \"iso\": \"2025-01-20T09:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"DTEND\": {\n        \"iso\": \"2025-01-20T10:00:00Z\",\n        \"isDate\": false,\n        \"isUtc\": true,\n        \"tzid\": null\n      },\n      \"SUMMARY\": \"Weekly team standup\",\n      \"DESCRIPTION\": \"Quick sync on priorities, blockers, and the week ahead.\",\n      \"LOCATION\": \"Zoom\",\n      \"RRULE\": {\n        \"FREQ\": \"WEEKLY\",\n        \"BYDAY\": [\n          \"MO\"\n        ],\n        \"COUNT\": 10\n      },\n      \"ORGANIZER\": {\n        \"value\": {\n          \"calAddress\": \"mailto:jane@example.com\",\n          \"email\": \"jane@example.com\"\n        },\n        \"params\": {\n          \"CN\": \"Jane Doe\"\n        }\n      },\n      \"ATTENDEE\": {\n        \"value\": {\n          \"calAddress\": \"mailto:alex@example.com\",\n          \"email\": \"alex@example.com\"\n        },\n        \"params\": {\n          \"CN\": \"Alex Smith\",\n          \"RSVP\": \"TRUE\"\n        }\n      },\n      \"components\": [\n        {\n          \"type\": \"VALARM\",\n          \"ACTION\": \"DISPLAY\",\n          \"DESCRIPTION\": \"Standup reminder\",\n          \"TRIGGER\": {\n            \"duration\": \"-PT10M\",\n            \"offsetSeconds\": -600\n          }\n        }\n      ],\n      \"RECURRENCE_PREVIEW\": [\n        \"2025-01-20T09:00:00Z\",\n        \"2025-01-27T09:00:00Z\",\n        \"2025-02-03T09:00:00Z\"\n      ]\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jsonOutput":{"type":"string","description":"JSON Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ieee-754-floating-point-converter":{"post":{"operationId":"run_ieee_754_floating_point_converter","summary":"IEEE 754 Floating Point Converter","tags":["Converters"],"description":"Convert a decimal number to its exact IEEE 754 binary representation (32-bit single or 64-bit double precision). Shows the sign / exponent / mantissa bit layout, the hexadecimal value, and a full breakdown including special-value detection (NaN, infinity, zero, subnormal).\n\n[Try IEEE 754 Floating Point Converter in your browser →](https://iotools.cloud/tool/ieee-754-floating-point-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"decimal":{"type":"string","description":"Decimal number"},"precision":{"enum":["32","64"],"description":"Precision"}},"required":[]},"examples":{"1_0_single_precision":{"summary":"1.0 (single precision)","value":{"decimal":"1","precision":"32"}},"1_0_single_precision_2":{"summary":"-1.0 (single precision)","value":{"decimal":"-1","precision":"32"}},"0_5_single_precision":{"summary":"0.5 (single precision)","value":{"decimal":"0.5","precision":"32"}},"0_1_single_precision_non_terminating":{"summary":"0.1 (single precision — non-terminating)","value":{"decimal":"0.1","precision":"32"}},"0_1_double_precision":{"summary":"0.1 (double precision)","value":{"decimal":"0.1","precision":"64"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_0_single_precision":{"summary":"1.0 (single precision)","value":{"tool":"ieee-754-floating-point-converter","tool_version":"1.0.2","outputs":{"binary":"0 01111111 00000000000000000000000","hex":"0x3F800000","details":[{"property":"Precision","value":"32-bit (single)"},{"property":"Value type","value":"Normalized"},{"property":"Sign bit","value":"0 (positive)"},{"property":"Exponent (raw)","value":"127 (01111111)"},{"property":"Exponent bias","value":"127"},{"property":"Exponent (actual)","value":"0"},{"property":"Mantissa (fraction) bits","value":"00000000000000000000000"},{"property":"Significand","value":"1.00000000000000000000000"},{"property":"Stored value","value":"1"},{"property":"Hexadecimal","value":"0x3F800000"}]},"credits_used":5,"credits_remaining":null}},"1_0_single_precision_2":{"summary":"-1.0 (single precision)","value":{"tool":"ieee-754-floating-point-converter","tool_version":"1.0.2","outputs":{"binary":"1 01111111 00000000000000000000000","hex":"0xBF800000","details":[{"property":"Precision","value":"32-bit (single)"},{"property":"Value type","value":"Normalized"},{"property":"Sign bit","value":"1 (negative)"},{"property":"Exponent (raw)","value":"127 (01111111)"},{"property":"Exponent bias","value":"127"},{"property":"Exponent (actual)","value":"0"},{"property":"Mantissa (fraction) bits","value":"00000000000000000000000"},{"property":"Significand","value":"1.00000000000000000000000"},{"property":"Stored value","value":"-1"},{"property":"Hexadecimal","value":"0xBF800000"}]},"credits_used":5,"credits_remaining":null}},"0_5_single_precision":{"summary":"0.5 (single precision)","value":{"tool":"ieee-754-floating-point-converter","tool_version":"1.0.2","outputs":{"binary":"0 01111110 00000000000000000000000","hex":"0x3F000000","details":[{"property":"Precision","value":"32-bit (single)"},{"property":"Value type","value":"Normalized"},{"property":"Sign bit","value":"0 (positive)"},{"property":"Exponent (raw)","value":"126 (01111110)"},{"property":"Exponent bias","value":"127"},{"property":"Exponent (actual)","value":"-1"},{"property":"Mantissa (fraction) bits","value":"00000000000000000000000"},{"property":"Significand","value":"1.00000000000000000000000"},{"property":"Stored value","value":"0.5"},{"property":"Hexadecimal","value":"0x3F000000"}]},"credits_used":5,"credits_remaining":null}},"0_1_single_precision_non_terminating":{"summary":"0.1 (single precision — non-terminating)","value":{"tool":"ieee-754-floating-point-converter","tool_version":"1.0.2","outputs":{"binary":"0 01111011 10011001100110011001101","hex":"0x3DCCCCCD","details":[{"property":"Precision","value":"32-bit (single)"},{"property":"Value type","value":"Normalized"},{"property":"Sign bit","value":"0 (positive)"},{"property":"Exponent (raw)","value":"123 (01111011)"},{"property":"Exponent bias","value":"127"},{"property":"Exponent (actual)","value":"-4"},{"property":"Mantissa (fraction) bits","value":"10011001100110011001101"},{"property":"Significand","value":"1.10011001100110011001101"},{"property":"Stored value","value":"0.10000000149011612"},{"property":"Hexadecimal","value":"0x3DCCCCCD"}]},"credits_used":5,"credits_remaining":null}},"0_1_double_precision":{"summary":"0.1 (double precision)","value":{"tool":"ieee-754-floating-point-converter","tool_version":"1.0.2","outputs":{"binary":"0 01111111011 1001100110011001100110011001100110011001100110011010","hex":"0x3FB999999999999A","details":[{"property":"Precision","value":"64-bit (double)"},{"property":"Value type","value":"Normalized"},{"property":"Sign bit","value":"0 (positive)"},{"property":"Exponent (raw)","value":"1019 (01111111011)"},{"property":"Exponent bias","value":"1023"},{"property":"Exponent (actual)","value":"-4"},{"property":"Mantissa (fraction) bits","value":"1001100110011001100110011001100110011001100110011010"},{"property":"Significand","value":"1.1001100110011001100110011001100110011001100110011010"},{"property":"Stored value","value":"0.1"},{"property":"Hexadecimal","value":"0x3FB999999999999A"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"binary":{"type":"string","description":"Binary (sign · exponent · mantissa)"},"hex":{"type":"string","description":"Hexadecimal"},"details":{"type":"array","description":"Bit breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-compressor":{"post":{"operationId":"run_image_compressor","summary":"Image Compressor","tags":["Converters"],"description":"Compress and resize a JPG or PNG — set quality, max width/height, output format and a JPEG background. Free and private in your browser; also available as a paid API.\n\n[Try Image Compressor in your browser →](https://iotools.cloud/tool/image-compressor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"},"quality":{"type":"number","description":"Quality","minimum":1,"maximum":100},"maxWidth":{"type":"number","description":"Max width (px)","minimum":1,"maximum":10000},"maxHeight":{"type":"number","description":"Max height (px)","minimum":1,"maximum":10000},"outputFormat":{"enum":["auto","jpeg","png"],"description":"Output format"},"background":{"type":"string","description":"Background for JPEG"}},"required":["file"]},"examples":{"compress_a_png_to_jpeg_at_60_quality_max_1920px_white_background":{"summary":"Compress a PNG to JPEG at 60% quality, max 1920px, white background","value":{"file":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJUlEQVR4AYXBAQEAIAyAMKSSnUxrJ99AtrXPfXxIkCBBggQJEgZ5JwJ01a+JcwAAAABJRU5ErkJggg==","quality":"60","maxWidth":"1920","maxHeight":"1920","outputFormat":"jpeg","background":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter":{"post":{"operationId":"run_image_converter","summary":"Image Converter","tags":["Converters"],"description":"Convert an image between JPG, PNG, WebP, AVIF, GIF, TIFF, BMP, HEIC, SVG and PDF (rasterized) — pick any format pair.\n\n[Try Image Converter in your browser →](https://iotools.cloud/tool/image-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"},"targetFormat":{"enum":["png","jpg","webp","avif","gif","tiff","bmp"],"description":"Convert to"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-avif":{"post":{"operationId":"run_image_converter_to_avif","summary":"Any Image to AVIF Converter","tags":["Converters"],"description":"Convert JPG, PNG, WebP, GIF, BMP, TIFF, HEIC, SVG or PDF to AVIF online. Server-side conversion.\n\n[Try Any Image to AVIF Converter in your browser →](https://iotools.cloud/tool/image-converter/to-avif/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-bmp":{"post":{"operationId":"run_image_converter_to_bmp","summary":"Any Image to BMP Converter","tags":["Converters"],"description":"Convert JPG, PNG, WebP, AVIF, GIF, TIFF, HEIC, SVG or PDF to BMP online. Server-side conversion.\n\n[Try Any Image to BMP Converter in your browser →](https://iotools.cloud/tool/image-converter/to-bmp/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-gif":{"post":{"operationId":"run_image_converter_to_gif","summary":"Any Image to GIF Converter","tags":["Converters"],"description":"Convert JPG, PNG, WebP, AVIF, BMP, TIFF, HEIC, SVG or PDF to GIF online. Server-side conversion.\n\n[Try Any Image to GIF Converter in your browser →](https://iotools.cloud/tool/image-converter/to-gif/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-jpg":{"post":{"operationId":"run_image_converter_to_jpg","summary":"Any Image to JPG Converter","tags":["Converters"],"description":"Convert PNG, WebP, AVIF, GIF, BMP, TIFF, HEIC, SVG or PDF to JPG online. Server-side conversion.\n\n[Try Any Image to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-png":{"post":{"operationId":"run_image_converter_to_png","summary":"Any Image to PNG Converter","tags":["Converters"],"description":"Convert JPG, WebP, AVIF, GIF, BMP, TIFF, HEIC, SVG or PDF to PNG online. Server-side conversion.\n\n[Try Any Image to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-tiff":{"post":{"operationId":"run_image_converter_to_tiff","summary":"Any Image to TIFF Converter","tags":["Converters"],"description":"Convert JPG, PNG, WebP, AVIF, GIF, BMP, HEIC, SVG or PDF to TIFF online. Server-side conversion.\n\n[Try Any Image to TIFF Converter in your browser →](https://iotools.cloud/tool/image-converter/to-tiff/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/to-webp":{"post":{"operationId":"run_image_converter_to_webp","summary":"Any Image to WebP Converter","tags":["Converters"],"description":"Convert JPG, PNG, AVIF, GIF, BMP, TIFF, HEIC, SVG or PDF to WebP online. Server-side conversion.\n\n[Try Any Image to WebP Converter in your browser →](https://iotools.cloud/tool/image-converter/to-webp/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/avif-to-jpg":{"post":{"operationId":"run_image_converter_avif_to_jpg","summary":"AVIF to JPG Converter","tags":["Converters"],"description":"Convert an AVIF image to JPG online. Server-side conversion.\n\n[Try AVIF to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/avif-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/avif-to-png":{"post":{"operationId":"run_image_converter_avif_to_png","summary":"AVIF to PNG Converter","tags":["Converters"],"description":"Convert an AVIF image to PNG online. Server-side conversion.\n\n[Try AVIF to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/avif-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/bmp-to-jpg":{"post":{"operationId":"run_image_converter_bmp_to_jpg","summary":"BMP to JPG Converter","tags":["Converters"],"description":"Convert a BMP image to JPG online. Server-side conversion with much smaller file size.\n\n[Try BMP to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/bmp-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/bmp-to-png":{"post":{"operationId":"run_image_converter_bmp_to_png","summary":"BMP to PNG Converter","tags":["Converters"],"description":"Convert a BMP image to PNG online. Server-side conversion with proper compression.\n\n[Try BMP to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/bmp-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/gif-to-jpg":{"post":{"operationId":"run_image_converter_gif_to_jpg","summary":"GIF to JPG Converter","tags":["Converters"],"description":"Convert a GIF image to JPG online. Server-side conversion (first frame for animated GIFs).\n\n[Try GIF to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/gif-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/gif-to-png":{"post":{"operationId":"run_image_converter_gif_to_png","summary":"GIF to PNG Converter","tags":["Converters"],"description":"Convert a GIF image to PNG online. Server-side conversion (first frame for animated GIFs).\n\n[Try GIF to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/gif-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/heic-to-jpg":{"post":{"operationId":"run_image_converter_heic_to_jpg","summary":"HEIC to JPG Converter","tags":["Converters"],"description":"Convert an iPhone HEIC photo to JPG online. Server-side conversion — works on any device, no HEIC support required.\n\n[Try HEIC to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/heic-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/heic-to-png":{"post":{"operationId":"run_image_converter_heic_to_png","summary":"HEIC to PNG Converter","tags":["Converters"],"description":"Convert an iPhone HEIC photo to PNG online. Server-side conversion — works on any device, no HEIC support required.\n\n[Try HEIC to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/heic-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/jpg-to-png":{"post":{"operationId":"run_image_converter_jpg_to_png","summary":"JPG to PNG Converter","tags":["Converters"],"description":"Convert a JPG image to PNG online. Server-side conversion, no quality loss beyond the source JPG.\n\n[Try JPG to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/jpg-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/png-to-jpg":{"post":{"operationId":"run_image_converter_png_to_jpg","summary":"PNG to JPG Converter","tags":["Converters"],"description":"Convert a PNG image to JPG online. Server-side conversion, transparent areas are flattened to white.\n\n[Try PNG to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/png-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/svg-to-jpg":{"post":{"operationId":"run_image_converter_svg_to_jpg","summary":"SVG to JPG Converter","tags":["Converters"],"description":"Rasterize an SVG vector image to JPG online. Server-side conversion via a dedicated SVG renderer.\n\n[Try SVG to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/svg-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/svg-to-png":{"post":{"operationId":"run_image_converter_svg_to_png","summary":"SVG to PNG Converter","tags":["Converters"],"description":"Rasterize an SVG vector image to PNG online. Server-side conversion via a dedicated SVG renderer.\n\n[Try SVG to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/svg-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/tiff-to-jpg":{"post":{"operationId":"run_image_converter_tiff_to_jpg","summary":"TIFF to JPG Converter","tags":["Converters"],"description":"Convert a TIFF image to JPG online. Server-side conversion.\n\n[Try TIFF to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/tiff-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/tiff-to-png":{"post":{"operationId":"run_image_converter_tiff_to_png","summary":"TIFF to PNG Converter","tags":["Converters"],"description":"Convert a TIFF image to PNG online. Server-side conversion.\n\n[Try TIFF to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/tiff-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/webp-to-jpg":{"post":{"operationId":"run_image_converter_webp_to_jpg","summary":"WebP to JPG Converter","tags":["Converters"],"description":"Convert a WebP image to JPG online. Server-side conversion.\n\n[Try WebP to JPG Converter in your browser →](https://iotools.cloud/tool/image-converter/webp-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-converter/webp-to-png":{"post":{"operationId":"run_image_converter_webp_to_png","summary":"WebP to PNG Converter","tags":["Converters"],"description":"Convert a WebP image to PNG online. Server-side conversion, works with animated and static WebP.\n\n[Try WebP to PNG Converter in your browser →](https://iotools.cloud/tool/image-converter/webp-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ini-to-json":{"post":{"operationId":"run_ini_to_json","summary":"INI to JSON Converter","tags":["Converters"],"description":"Convert INI configuration text into a JSON object. Parses [section] headers (including dotted, nested sections), key = value pairs, quoted values and comments. Optional type coercion turns true/false and numeric strings into real JSON booleans and numbers. Runs entirely in your browser.\n\n[Try INI to JSON Converter in your browser →](https://iotools.cloud/tool/ini-to-json/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"iniSource":{"type":"string","description":"INI Input"},"typeCoercion":{"type":"boolean","description":"Type coercion (convert booleans, numbers, null)"},"stripComments":{"type":"boolean","description":"Strip inline comments (after ; or #)"},"duplicateKeys":{"enum":["last","array"],"description":"Duplicate keys"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":[]},"examples":{"multi_section_config_type_coercion_on":{"summary":"Multi-section config (type coercion on)","value":{"iniSource":"[server]\nhost = localhost\nport = 8080\ndebug = true\n\n[database]\nname = mydb","typeCoercion":"true","stripComments":"true","duplicateKeys":"last","indent":"2"}},"nested_section_globals_inline_comment":{"summary":"Nested section, globals & inline comment","value":{"iniSource":"; global config\napp_name = \"My App\"\nversion = 2\n\n[database.options]\ncharset = utf8mb4\npersistent = false\ntimeout = 30 ; seconds","typeCoercion":"true","stripComments":"true","duplicateKeys":"last","indent":"2"}},"value_with_and_quoted_coercion_off":{"summary":"Value with = and quoted ; (coercion off)","value":{"iniSource":"[urls]\ncallback = https://example.com/cb?a=1&b=2\nnote = \"value; with semicolon\"","typeCoercion":"","stripComments":"true","duplicateKeys":"last","indent":"2"}},"duplicate_keys_collected_as_array":{"summary":"Duplicate keys collected as array","value":{"iniSource":"[colors]\nitem = red\nitem = green\nitem = blue","typeCoercion":"true","stripComments":"true","duplicateKeys":"array","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"multi_section_config_type_coercion_on":{"summary":"Multi-section config (type coercion on)","value":{"tool":"ini-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"server\": {\n    \"host\": \"localhost\",\n    \"port\": 8080,\n    \"debug\": true\n  },\n  \"database\": {\n    \"name\": \"mydb\"\n  }\n}"},"credits_used":5,"credits_remaining":null}},"nested_section_globals_inline_comment":{"summary":"Nested section, globals & inline comment","value":{"tool":"ini-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"app_name\": \"My App\",\n  \"version\": 2,\n  \"database\": {\n    \"options\": {\n      \"charset\": \"utf8mb4\",\n      \"persistent\": false,\n      \"timeout\": 30\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"value_with_and_quoted_coercion_off":{"summary":"Value with = and quoted ; (coercion off)","value":{"tool":"ini-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"urls\": {\n    \"callback\": \"https://example.com/cb?a=1&b=2\",\n    \"note\": \"value; with semicolon\"\n  }\n}"},"credits_used":5,"credits_remaining":null}},"duplicate_keys_collected_as_array":{"summary":"Duplicate keys collected as array","value":{"tool":"ini-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"colors\": {\n    \"item\": [\n      \"red\",\n      \"green\",\n      \"blue\"\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ini-to-yaml-converter":{"post":{"operationId":"run_ini_to_yaml_converter","summary":"INI to YAML Converter","tags":["Converters"],"description":"Convert INI configuration text into YAML. Parses [section] headers (including dotted, nested sections), key = value pairs, quoted values and comments, and emits clean block-style YAML. Optional type coercion turns true/false and numeric strings into real YAML booleans and numbers. Runs entirely in your browser.\n\n[Try INI to YAML Converter in your browser →](https://iotools.cloud/tool/ini-to-yaml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"iniSource":{"type":"string","description":"INI Input"},"typeCoercion":{"type":"boolean","description":"Type coercion (convert booleans, numbers, null)"},"stripComments":{"type":"boolean","description":"Strip inline comments (after ; or #)"},"duplicateKeys":{"enum":["last","array"],"description":"Duplicate keys"}},"required":[]},"examples":{"multi_section_config_type_coercion_on":{"summary":"Multi-section config (type coercion on)","value":{"iniSource":"[server]\nhost = localhost\nport = 8080\ndebug = true\n\n[database]\nname = mydb","typeCoercion":"true","stripComments":"true","duplicateKeys":"last"}},"nested_section_globals_quoted_value_inline_comment":{"summary":"Nested section, globals, quoted value & inline comment","value":{"iniSource":"; global config\ntitle = Config: Prod\nversion = 2\n\n[database.options]\ncharset = utf8mb4\ntimeout = 30 ; seconds","typeCoercion":"true","stripComments":"true","duplicateKeys":"last"}},"duplicate_keys_collected_as_array":{"summary":"Duplicate keys collected as array","value":{"iniSource":"[colors]\nitem = red\nitem = green\nitem = blue","typeCoercion":"true","stripComments":"true","duplicateKeys":"array"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"multi_section_config_type_coercion_on":{"summary":"Multi-section config (type coercion on)","value":{"tool":"ini-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"server:\n  host: localhost\n  port: 8080\n  debug: true\ndatabase:\n  name: mydb"},"credits_used":5,"credits_remaining":null}},"nested_section_globals_quoted_value_inline_comment":{"summary":"Nested section, globals, quoted value & inline comment","value":{"tool":"ini-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"title: \"Config: Prod\"\nversion: 2\ndatabase:\n  options:\n    charset: utf8mb4\n    timeout: 30"},"credits_used":5,"credits_remaining":null}},"duplicate_keys_collected_as_array":{"summary":"Duplicate keys collected as array","value":{"tool":"ini-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"colors:\n  item:\n    - red\n    - green\n    - blue"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputYaml":{"type":"string","description":"YAML Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/integer-base-converter":{"post":{"operationId":"run_integer_base_converter","summary":"Integer Base Converter","tags":["Converters"],"description":"Convert an integer between any number bases from 2 to 36 — binary, octal, decimal, hexadecimal or any custom base. Handles negative numbers and arbitrarily large integers, and shows the value in all four common bases at once.\n\n[Try Integer Base Converter in your browser →](https://iotools.cloud/tool/integer-base-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputNumber":{"type":"string","description":"Number"},"fromBase":{"type":"number","description":"From base","minimum":2,"maximum":36},"toBase":{"type":"number","description":"To base","minimum":2,"maximum":36}},"required":[]},"examples":{"decimal_255_to_hexadecimal":{"summary":"Decimal 255 to hexadecimal","value":{"inputNumber":"255","fromBase":"10","toBase":"16"}},"binary_11111111_to_decimal":{"summary":"Binary 11111111 to decimal","value":{"inputNumber":"11111111","fromBase":"2","toBase":"10"}},"decimal_1295_to_base_36":{"summary":"Decimal 1295 to base 36","value":{"inputNumber":"1295","fromBase":"10","toBase":"36"}},"negative_hex_ff_to_binary":{"summary":"Negative hex -FF to binary","value":{"inputNumber":"-FF","fromBase":"16","toBase":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decimal_255_to_hexadecimal":{"summary":"Decimal 255 to hexadecimal","value":{"tool":"integer-base-converter","tool_version":"1.0.2","outputs":{"result":"FF","table":[{"base":"Binary (2)","value":"11111111"},{"base":"Octal (8)","value":"377"},{"base":"Decimal (10)","value":"255"},{"base":"Hexadecimal (16)","value":"FF"}]},"credits_used":5,"credits_remaining":null}},"binary_11111111_to_decimal":{"summary":"Binary 11111111 to decimal","value":{"tool":"integer-base-converter","tool_version":"1.0.2","outputs":{"result":"255","table":[{"base":"Binary (2)","value":"11111111"},{"base":"Octal (8)","value":"377"},{"base":"Decimal (10)","value":"255"},{"base":"Hexadecimal (16)","value":"FF"}]},"credits_used":5,"credits_remaining":null}},"decimal_1295_to_base_36":{"summary":"Decimal 1295 to base 36","value":{"tool":"integer-base-converter","tool_version":"1.0.2","outputs":{"result":"ZZ","table":[{"base":"Binary (2)","value":"10100001111"},{"base":"Octal (8)","value":"2417"},{"base":"Decimal (10)","value":"1295"},{"base":"Hexadecimal (16)","value":"50F"}]},"credits_used":5,"credits_remaining":null}},"negative_hex_ff_to_binary":{"summary":"Negative hex -FF to binary","value":{"tool":"integer-base-converter","tool_version":"1.0.2","outputs":{"result":"-11111111","table":[{"base":"Binary (2)","value":"-11111111"},{"base":"Octal (8)","value":"-377"},{"base":"Decimal (10)","value":"-255"},{"base":"Hexadecimal (16)","value":"-FF"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Converted value"},"table":{"type":"array","items":{"type":"object","properties":{"base":{"type":"string","description":"Base"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["base","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ip-address-to-hex-converter":{"post":{"operationId":"run_ip_address_to_hex_converter","summary":"IP Address to Hex Converter","tags":["Converters"],"description":"Convert an IPv4 or IPv6 address to integer, hexadecimal, and binary format. Enter either address family and get the integer value, hex, colon-separated hex, binary, reverse-DNS (PTR) pointer, and address-type classification (private, loopback, link-local, public...) all at once.\n\n[Try IP Address to Hex Converter in your browser →](https://iotools.cloud/tool/ip-address-to-hex-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"IP Address"}},"required":[]},"examples":{"ipv4_private_address_192_168_1_1":{"summary":"IPv4 private address (192.168.1.1)","value":{"address":"192.168.1.1"}},"ipv4_public_address_8_8_8_8":{"summary":"IPv4 public address (8.8.8.8)","value":{"address":"8.8.8.8"}},"ipv6_compressed_address_2001_db8_1":{"summary":"IPv6 compressed address (2001:db8::1)","value":{"address":"2001:db8::1"}},"ipv6_loopback_1":{"summary":"IPv6 loopback (::1)","value":{"address":"::1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ipv4_private_address_192_168_1_1":{"summary":"IPv4 private address (192.168.1.1)","value":{"tool":"ip-address-to-hex-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"IP Version","value":"IPv4"},{"format":"Integer","value":"3232235777"},{"format":"Hexadecimal","value":"0xC0A80101"},{"format":"Colon-Hex","value":"C0:A8:01:01"},{"format":"Binary","value":"11000000101010000000000100000001"},{"format":"Reverse DNS Pointer","value":"1.1.168.192.in-addr.arpa"},{"format":"Address Type","value":"Private (RFC 1918)"}]},"credits_used":5,"credits_remaining":null}},"ipv4_public_address_8_8_8_8":{"summary":"IPv4 public address (8.8.8.8)","value":{"tool":"ip-address-to-hex-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"IP Version","value":"IPv4"},{"format":"Integer","value":"134744072"},{"format":"Hexadecimal","value":"0x08080808"},{"format":"Colon-Hex","value":"08:08:08:08"},{"format":"Binary","value":"00001000000010000000100000001000"},{"format":"Reverse DNS Pointer","value":"8.8.8.8.in-addr.arpa"},{"format":"Address Type","value":"Public / Global"}]},"credits_used":5,"credits_remaining":null}},"ipv6_compressed_address_2001_db8_1":{"summary":"IPv6 compressed address (2001:db8::1)","value":{"tool":"ip-address-to-hex-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"IP Version","value":"IPv6"},{"format":"Integer","value":"42540766411282592856903984951653826561"},{"format":"Hexadecimal","value":"0x20010DB8000000000000000000000001"},{"format":"Colon-Hex","value":"2001:0DB8:0000:0000:0000:0000:0000:0001"},{"format":"Binary","value":"00100000000000010000110110111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"},{"format":"Reverse DNS Pointer","value":"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa"},{"format":"Address Type","value":"Public / Global"}]},"credits_used":5,"credits_remaining":null}},"ipv6_loopback_1":{"summary":"IPv6 loopback (::1)","value":{"tool":"ip-address-to-hex-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"IP Version","value":"IPv6"},{"format":"Integer","value":"1"},{"format":"Hexadecimal","value":"0x00000000000000000000000000000001"},{"format":"Colon-Hex","value":"0000:0000:0000:0000:0000:0000:0000:0001"},{"format":"Binary","value":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"},{"format":"Reverse DNS Pointer","value":"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"},{"format":"Address Type","value":"Loopback"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Representations","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv4-converter":{"post":{"operationId":"run_ipv4_converter","summary":"IPv4 Address Converter","tags":["Converters"],"description":"Convert an IPv4 address between dotted-decimal, integer, hexadecimal, octal and binary. Enter any one format — 192.168.1.1, 3232235777, 0xC0A80101 or a 32-bit binary string — and see every other representation at once.\n\n[Try IPv4 Address Converter in your browser →](https://iotools.cloud/tool/ipv4-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"IPv4 Address"}},"required":[]},"examples":{"dotted_decimal_192_168_1_1":{"summary":"Dotted-decimal 192.168.1.1","value":{"address":"192.168.1.1"}},"integer_16909060_1_2_3_4":{"summary":"Integer 16909060 (1.2.3.4)","value":{"address":"16909060"}},"hex_0xffffffff_broadcast":{"summary":"Hex 0xFFFFFFFF (broadcast)","value":{"address":"0xFFFFFFFF"}},"binary_0b_10_0_0_1":{"summary":"Binary 0b… (10.0.0.1)","value":{"address":"0b00001010000000000000000000000001"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"dotted_decimal_192_168_1_1":{"summary":"Dotted-decimal 192.168.1.1","value":{"tool":"ipv4-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Dotted Decimal","value":"192.168.1.1"},{"format":"Decimal (Integer)","value":"3232235777"},{"format":"Hexadecimal","value":"0xC0A80101"},{"format":"Octal","value":"30052000401"},{"format":"Binary (Dotted)","value":"11000000.10101000.00000001.00000001"},{"format":"Binary (32-bit)","value":"11000000101010000000000100000001"}]},"credits_used":5,"credits_remaining":null}},"integer_16909060_1_2_3_4":{"summary":"Integer 16909060 (1.2.3.4)","value":{"tool":"ipv4-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Dotted Decimal","value":"1.2.3.4"},{"format":"Decimal (Integer)","value":"16909060"},{"format":"Hexadecimal","value":"0x01020304"},{"format":"Octal","value":"100401404"},{"format":"Binary (Dotted)","value":"00000001.00000010.00000011.00000100"},{"format":"Binary (32-bit)","value":"00000001000000100000001100000100"}]},"credits_used":5,"credits_remaining":null}},"hex_0xffffffff_broadcast":{"summary":"Hex 0xFFFFFFFF (broadcast)","value":{"tool":"ipv4-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Dotted Decimal","value":"255.255.255.255"},{"format":"Decimal (Integer)","value":"4294967295"},{"format":"Hexadecimal","value":"0xFFFFFFFF"},{"format":"Octal","value":"37777777777"},{"format":"Binary (Dotted)","value":"11111111.11111111.11111111.11111111"},{"format":"Binary (32-bit)","value":"11111111111111111111111111111111"}]},"credits_used":5,"credits_remaining":null}},"binary_0b_10_0_0_1":{"summary":"Binary 0b… (10.0.0.1)","value":{"tool":"ipv4-converter","tool_version":"1.0.2","outputs":{"result":[{"format":"Dotted Decimal","value":"10.0.0.1"},{"format":"Decimal (Integer)","value":"167772161"},{"format":"Hexadecimal","value":"0x0A000001"},{"format":"Octal","value":"1200000001"},{"format":"Binary (Dotted)","value":"00001010.00000000.00000000.00000001"},{"format":"Binary (32-bit)","value":"00001010000000000000000000000001"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Representations","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv4-range-expander":{"post":{"operationId":"run_ipv4_range_expander","summary":"IPv4 Range Expander","tags":["Converters"],"description":"Expand an IPv4 range into the full list of individual addresses. Accepts CIDR notation (192.168.1.0/28) or a start-end range (192.168.1.1-192.168.1.10) and returns every address, one per line, with a total count.\n\n[Try IPv4 Range Expander in your browser →](https://iotools.cloud/tool/ipv4-range-expander/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"IP Range"}},"required":[]},"examples":{"cidr_30_4_addresses":{"summary":"CIDR /30 (4 addresses)","value":{"input":"192.168.1.0/30"}},"start_end_range_4_addresses":{"summary":"Start-end range (4 addresses)","value":{"input":"10.0.0.1-10.0.0.4"}},"cidr_29_with_host_bits_masked_to_network_8_addresses":{"summary":"CIDR /29 with host bits (masked to network, 8 addresses)","value":{"input":"192.168.1.5/29"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cidr_30_4_addresses":{"summary":"CIDR /30 (4 addresses)","value":{"tool":"ipv4-range-expander","tool_version":"1.0.2","outputs":{"output":"192.168.1.0\n192.168.1.1\n192.168.1.2\n192.168.1.3","count":"4 addresses"},"credits_used":5,"credits_remaining":null}},"start_end_range_4_addresses":{"summary":"Start-end range (4 addresses)","value":{"tool":"ipv4-range-expander","tool_version":"1.0.2","outputs":{"output":"10.0.0.1\n10.0.0.2\n10.0.0.3\n10.0.0.4","count":"4 addresses"},"credits_used":5,"credits_remaining":null}},"cidr_29_with_host_bits_masked_to_network_8_addresses":{"summary":"CIDR /29 with host bits (masked to network, 8 addresses)","value":{"tool":"ipv4-range-expander","tool_version":"1.0.2","outputs":{"output":"192.168.1.0\n192.168.1.1\n192.168.1.2\n192.168.1.3\n192.168.1.4\n192.168.1.5\n192.168.1.6\n192.168.1.7","count":"8 addresses"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Expanded Addresses"},"count":{"type":"string","description":"Total"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/range-list-tool":{"post":{"operationId":"run_range_list_tool","summary":"Range List Tool","tags":["Converters"],"description":"Expand compact number ranges (10-12, 8, 20) into a full sorted list, or collapse a list of numbers back into compact ranges. Automatically sorts and deduplicates in both directions.\n\n[Try Range List Tool in your browser →](https://iotools.cloud/tool/range-list-tool/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["expand","collapse"],"description":"Mode"},"input":{"type":"string","description":"Input"}},"required":[]},"examples":{"expand_1_5_8_10_12":{"summary":"Expand: 1-5, 8, 10-12","value":{"mode":"expand","input":"1-5, 8, 10-12"}},"expand_with_duplicates_and_unsorted_overlap":{"summary":"Expand with duplicates and unsorted overlap","value":{"mode":"expand","input":"5, 1-3, 3, 2"}},"collapse_1_2_3_4_5_8_10_11_12":{"summary":"Collapse: 1, 2, 3, 4, 5, 8, 10, 11, 12","value":{"mode":"collapse","input":"1, 2, 3, 4, 5, 8, 10, 11, 12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"expand_1_5_8_10_12":{"summary":"Expand: 1-5, 8, 10-12","value":{"tool":"range-list-tool","tool_version":"1.0.2","outputs":{"output":"1, 2, 3, 4, 5, 8, 10, 11, 12","count":"9 numbers"},"credits_used":5,"credits_remaining":null}},"expand_with_duplicates_and_unsorted_overlap":{"summary":"Expand with duplicates and unsorted overlap","value":{"tool":"range-list-tool","tool_version":"1.0.2","outputs":{"output":"1, 2, 3, 5","count":"4 numbers"},"credits_used":5,"credits_remaining":null}},"collapse_1_2_3_4_5_8_10_11_12":{"summary":"Collapse: 1, 2, 3, 4, 5, 8, 10, 11, 12","value":{"tool":"range-list-tool","tool_version":"1.0.2","outputs":{"output":"1-5, 8, 10-12","count":"3 ranges"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"count":{"type":"string","description":"Total"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv4-to-ipv6-converter":{"post":{"operationId":"run_ipv4_to_ipv6_converter","summary":"IPv4 to IPv6 Converter","tags":["Converters"],"description":"Convert an IPv4 address to its IPv6 representations: the IPv4-mapped address (::ffff:a.b.c.d and the ::ffff:HHHH:HHHH hex form), the derived 6to4 prefix (2002:HHHH:HHHH::/48), and the deprecated IPv4-compatible form.\n\n[Try IPv4 to IPv6 Converter in your browser →](https://iotools.cloud/tool/ipv4-to-ipv6-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ipv4":{"type":"string","description":"IPv4 Address"}},"required":[]},"examples":{"private_address_192_168_1_1":{"summary":"Private address 192.168.1.1","value":{"ipv4":"192.168.1.1"}},"public_dns_8_8_8_8":{"summary":"Public DNS 8.8.8.8","value":{"ipv4":"8.8.8.8"}},"documentation_address_203_0_113_42":{"summary":"Documentation address 203.0.113.42","value":{"ipv4":"203.0.113.42"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"private_address_192_168_1_1":{"summary":"Private address 192.168.1.1","value":{"tool":"ipv4-to-ipv6-converter","tool_version":"1.0.2","outputs":{"result":[{"type":"IPv4-Mapped IPv6 (dotted)","address":"::ffff:192.168.1.1"},{"type":"IPv4-Mapped IPv6 (hex)","address":"::ffff:c0a8:101"},{"type":"6to4 Prefix (2002::/16)","address":"2002:c0a8:101::/48"},{"type":"IPv4-Compatible IPv6 (deprecated)","address":"::192.168.1.1"}]},"credits_used":5,"credits_remaining":null}},"public_dns_8_8_8_8":{"summary":"Public DNS 8.8.8.8","value":{"tool":"ipv4-to-ipv6-converter","tool_version":"1.0.2","outputs":{"result":[{"type":"IPv4-Mapped IPv6 (dotted)","address":"::ffff:8.8.8.8"},{"type":"IPv4-Mapped IPv6 (hex)","address":"::ffff:808:808"},{"type":"6to4 Prefix (2002::/16)","address":"2002:808:808::/48"},{"type":"IPv4-Compatible IPv6 (deprecated)","address":"::8.8.8.8"}]},"credits_used":5,"credits_remaining":null}},"documentation_address_203_0_113_42":{"summary":"Documentation address 203.0.113.42","value":{"tool":"ipv4-to-ipv6-converter","tool_version":"1.0.2","outputs":{"result":[{"type":"IPv4-Mapped IPv6 (dotted)","address":"::ffff:203.0.113.42"},{"type":"IPv4-Mapped IPv6 (hex)","address":"::ffff:cb00:712a"},{"type":"6to4 Prefix (2002::/16)","address":"2002:cb00:712a::/48"},{"type":"IPv4-Compatible IPv6 (deprecated)","address":"::203.0.113.42"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"IPv6 Representations","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"address":{"type":"string","description":"Address"}}},"x-iotools-columns":["type","address"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv6-expander":{"post":{"operationId":"run_ipv6_expander","summary":"IPv6 Expander & Compressor","tags":["Converters"],"description":"Expand a shorthand IPv6 address (with '::') into its full 8-group form, and compress any IPv6 address to its RFC 5952 canonical form. Paste either form — 2001:db8::1 or 2001:0db8:0000:0000:0000:0000:0000:0001 — and get both representations at once. Handles CIDR suffixes and embedded IPv4 tails.\n\n[Try IPv6 Expander & Compressor in your browser →](https://iotools.cloud/tool/ipv6-expander/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"IPv6 Address"}},"required":[]},"examples":{"compressed_expanded_2001_db8_1":{"summary":"Compressed → expanded (2001:db8::1)","value":{"address":"2001:db8::1"}},"full_8_group_input_compresses":{"summary":"Full 8-group input (compresses)","value":{"address":"2001:0db8:0000:0000:0000:ff00:0042:8329"}},"loopback_shorthand_1":{"summary":"Loopback shorthand (::1)","value":{"address":"::1"}},"cidr_suffix_preserved_2001_db8_32":{"summary":"CIDR suffix preserved (2001:db8::/32)","value":{"address":"2001:db8::/32"}},"embedded_ipv4_tail_ffff_192_168_1_1":{"summary":"Embedded IPv4 tail (::ffff:192.168.1.1)","value":{"address":"::ffff:192.168.1.1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compressed_expanded_2001_db8_1":{"summary":"Compressed → expanded (2001:db8::1)","value":{"tool":"ipv6-expander","tool_version":"1.0.2","outputs":{"expanded":"2001:0db8:0000:0000:0000:0000:0000:0001","compressed":"2001:db8::1"},"credits_used":5,"credits_remaining":null}},"full_8_group_input_compresses":{"summary":"Full 8-group input (compresses)","value":{"tool":"ipv6-expander","tool_version":"1.0.2","outputs":{"expanded":"2001:0db8:0000:0000:0000:ff00:0042:8329","compressed":"2001:db8::ff00:42:8329"},"credits_used":5,"credits_remaining":null}},"loopback_shorthand_1":{"summary":"Loopback shorthand (::1)","value":{"tool":"ipv6-expander","tool_version":"1.0.2","outputs":{"expanded":"0000:0000:0000:0000:0000:0000:0000:0001","compressed":"::1"},"credits_used":5,"credits_remaining":null}},"cidr_suffix_preserved_2001_db8_32":{"summary":"CIDR suffix preserved (2001:db8::/32)","value":{"tool":"ipv6-expander","tool_version":"1.0.2","outputs":{"expanded":"2001:0db8:0000:0000:0000:0000:0000:0000/32","compressed":"2001:db8::/32"},"credits_used":5,"credits_remaining":null}},"embedded_ipv4_tail_ffff_192_168_1_1":{"summary":"Embedded IPv4 tail (::ffff:192.168.1.1)","value":{"tool":"ipv6-expander","tool_version":"1.0.2","outputs":{"expanded":"0000:0000:0000:0000:0000:ffff:c0a8:0101","compressed":"::ffff:c0a8:101"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"expanded":{"type":"string","description":"Expanded (full 8 groups)"},"compressed":{"type":"string","description":"Compressed (RFC 5952 canonical)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-schema-generator":{"post":{"operationId":"run_json_schema_generator","summary":"JSON Schema Generator","tags":["Converters"],"description":"Infer a JSON Schema (Draft-07) from example JSON data — objects get properties and required keys, arrays get a merged (or anyOf) item schema, and numbers are typed as integer or number based on the sample. Runs entirely in your browser.\n\n[Try JSON Schema Generator in your browser →](https://iotools.cloud/tool/json-schema-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"Example JSON data"},"schemaTitle":{"type":"string","description":"Schema title (optional)"}},"required":[]},"examples":{"flat_object":{"summary":"Flat object","value":{"jsonInput":"{\"name\":\"Ada\",\"age\":30,\"active\":true}","schemaTitle":""}},"nested_object":{"summary":"Nested object","value":{"jsonInput":"{\"user\":{\"name\":\"Ada\",\"address\":{\"city\":\"London\",\"zip\":null}},\"count\":3.5}","schemaTitle":"User profile"}},"array_of_objects_property_required_inference":{"summary":"Array of objects (property + required inference)","value":{"jsonInput":"[{\"id\":1,\"name\":\"Ada\"},{\"id\":2,\"name\":\"Grace\",\"email\":\"grace@example.com\"}]","schemaTitle":""}},"mixed_type_array_anyof_merge":{"summary":"Mixed-type array (anyOf merge)","value":{"jsonInput":"[1, \"two\", true, 3]","schemaTitle":""}},"scalar_top_level_value":{"summary":"Scalar top-level value","value":{"jsonInput":"42","schemaTitle":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flat_object":{"summary":"Flat object","value":{"tool":"json-schema-generator","tool_version":"1.0.2","outputs":{"summary":"Inferred an object schema with 3 properties (3 required).","schema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\"\n    },\n    \"age\": {\n      \"type\": \"integer\"\n    },\n    \"active\": {\n      \"type\": \"boolean\"\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"age\",\n    \"active\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"nested_object":{"summary":"Nested object","value":{"tool":"json-schema-generator","tool_version":"1.0.2","outputs":{"summary":"Inferred an object schema with 2 properties (2 required).","schema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"User profile\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"user\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"name\": {\n          \"type\": \"string\"\n        },\n        \"address\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"city\": {\n              \"type\": \"string\"\n            },\n            \"zip\": {\n              \"type\": \"null\"\n            }\n          },\n          \"required\": [\n            \"city\",\n            \"zip\"\n          ]\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"address\"\n      ]\n    },\n    \"count\": {\n      \"type\": \"number\"\n    }\n  },\n  \"required\": [\n    \"user\",\n    \"count\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"array_of_objects_property_required_inference":{"summary":"Array of objects (property + required inference)","value":{"tool":"json-schema-generator","tool_version":"1.0.2","outputs":{"summary":"Inferred an array schema (2 example items) — items: type \"object\".","schema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"array\",\n  \"items\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"id\": {\n        \"type\": \"integer\"\n      },\n      \"name\": {\n        \"type\": \"string\"\n      },\n      \"email\": {\n        \"type\": \"string\"\n      }\n    },\n    \"required\": [\n      \"id\",\n      \"name\"\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}},"mixed_type_array_anyof_merge":{"summary":"Mixed-type array (anyOf merge)","value":{"tool":"json-schema-generator","tool_version":"1.0.2","outputs":{"summary":"Inferred an array schema (4 example items) — items: a mix of 3 types (anyOf).","schema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"array\",\n  \"items\": {\n    \"anyOf\": [\n      {\n        \"type\": \"integer\"\n      },\n      {\n        \"type\": \"string\"\n      },\n      {\n        \"type\": \"boolean\"\n      }\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}},"scalar_top_level_value":{"summary":"Scalar top-level value","value":{"tool":"json-schema-generator","tool_version":"1.0.2","outputs":{"summary":"Inferred an \"integer\" schema.","schema":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"integer\"\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"schema":{"type":"string","description":"Generated JSON Schema"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-schema-to-zod-schema-converter":{"post":{"operationId":"run_json_schema_to_zod_schema_converter","summary":"JSON Schema to Zod Schema Converter","tags":["Converters"],"description":"Convert a JSON Schema (Draft 7, 2019-09, or 2020-12) into a ready-to-use Zod validation schema in TypeScript. Resolves $refs (including recursive ones), oneOf/allOf/anyOf, nullable fields, format keywords, and required/optional properties, and shows the inferred TypeScript type.\n\n[Try JSON Schema to Zod Schema Converter in your browser →](https://iotools.cloud/tool/json-schema-to-zod-schema-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"schemaText":{"type":"string","description":"JSON Schema"},"schemaName":{"type":"string","description":"Schema name"},"zodVersion":{"enum":["v4","v3"],"description":"Zod version"},"includeImport":{"type":"boolean","description":"Include import statement"},"inferType":{"type":"boolean","description":"Add z.infer type alias"},"includeDescriptions":{"type":"boolean","description":"Add .describe() from descriptions"}},"required":["schemaText"]},"examples":{"user_profile":{"summary":"User profile","value":{"schemaText":"{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": { \"type\": \"string\" },\n    \"email\": { \"type\": \"string\", \"format\": \"email\" },\n    \"age\": { \"type\": \"integer\", \"minimum\": 0 }\n  },\n  \"required\": [\"name\", \"email\"]\n}","schemaName":"schema","zodVersion":"v4","includeImport":"true","inferType":"true","includeDescriptions":"false"}},"recursive_tree_node_defs_z_lazy":{"summary":"Recursive tree node ($defs + z.lazy)","value":{"schemaText":"{\n  \"$defs\": {\n    \"TreeNode\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"value\": { \"type\": \"number\" },\n        \"children\": {\n          \"type\": \"array\",\n          \"items\": { \"$ref\": \"#/$defs/TreeNode\" }\n        }\n      },\n      \"required\": [\"value\"]\n    }\n  },\n  \"$ref\": \"#/$defs/TreeNode\"\n}","schemaName":"schema","zodVersion":"v4","includeImport":"true","inferType":"true","includeDescriptions":"false"}},"discriminated_union_oneof_const":{"summary":"Discriminated union (oneOf + const)","value":{"schemaText":"{\n  \"oneOf\": [\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": { \"const\": \"cat\" },\n        \"lives\": { \"type\": \"integer\" }\n      },\n      \"required\": [\"kind\", \"lives\"]\n    },\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"kind\": { \"const\": \"dog\" },\n        \"barks\": { \"type\": \"boolean\" }\n      },\n      \"required\": [\"kind\", \"barks\"]\n    }\n  ]\n}","schemaName":"schema","zodVersion":"v4","includeImport":"true","inferType":"true","includeDescriptions":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"user_profile":{"summary":"User profile","value":{"tool":"json-schema-to-zod-schema-converter","tool_version":"1.0.2","outputs":{"code":"import { z } from \"zod\";\n\nexport const schema = z.object({\n  name: z.string(),\n  email: z.string().email(),\n  age: z.number().int().min(0).optional()\n});\n\nexport type Schema = z.infer<typeof schema>;\n","type":"type Schema = {\n  name: string;\n  email: string;\n  age?: number;\n};\n"},"credits_used":5,"credits_remaining":null}},"recursive_tree_node_defs_z_lazy":{"summary":"Recursive tree node ($defs + z.lazy)","value":{"tool":"json-schema-to-zod-schema-converter","tool_version":"1.0.2","outputs":{"code":"import { z } from \"zod\";\n\nconst TreeNodeSchema = z.object({\n  value: z.number(),\n  children: z.array(z.lazy(() => TreeNodeSchema)).optional()\n});\n\nexport const schema = TreeNodeSchema;\n\nexport type Schema = z.infer<typeof schema>;\n","type":"type TreeNode = {\n  value: number;\n  children?: TreeNode[];\n};\n\ntype Schema = TreeNode;\n"},"credits_used":5,"credits_remaining":null}},"discriminated_union_oneof_const":{"summary":"Discriminated union (oneOf + const)","value":{"tool":"json-schema-to-zod-schema-converter","tool_version":"1.0.2","outputs":{"code":"import { z } from \"zod\";\n\nexport const schema = z.discriminatedUnion(\"kind\", [\n  z.object({\n    kind: z.literal(\"cat\"),\n    lives: z.number().int()\n  }),\n  z.object({\n    kind: z.literal(\"dog\"),\n    barks: z.boolean()\n  })\n]);\n\nexport type Schema = z.infer<typeof schema>;\n","type":"type Schema = {\n  kind: \"cat\";\n  lives: number;\n} | {\n  kind: \"dog\";\n  barks: boolean;\n};\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"Zod schema"},"type":{"type":"string","description":"Inferred TypeScript type"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-graphql-types-generator":{"post":{"operationId":"run_json_to_graphql_types_generator","summary":"JSON to GraphQL Types Generator","tags":["Converters"],"description":"Turn sample JSON into GraphQL SDL type definitions. Infers String, Int, Float, Boolean and ID scalars, generates a named type for every nested object, wraps arrays in list types, and marks fields non-null (!) unless they are null or missing in the samples. Runs entirely in your browser.\n\n[Try JSON to GraphQL Types Generator in your browser →](https://iotools.cloud/tool/json-to-graphql-types-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON Input"},"typeName":{"type":"string","description":"Root Type Name"},"nullability":{"enum":["strict","nullable"],"description":"Nullability"},"idDetection":{"enum":["auto","off"],"description":"ID detection"},"includeRootQuery":{"type":"boolean","description":"Include a root Query type"}},"required":[]},"examples":{"flat_object_with_an_id_field":{"summary":"Flat object with an id field","value":{"jsonInput":"{\"id\":1,\"name\":\"Alice\",\"active\":true,\"score\":4.5}","typeName":"User"}},"nested_object_scalar_list_and_a_null_field":{"summary":"Nested object, scalar list and a null field","value":{"jsonInput":"{\"id\":10,\"name\":\"Widget\",\"price\":9.99,\"inStock\":true,\"tags\":[\"new\",\"sale\"],\"meta\":null,\"dimensions\":{\"width\":10,\"height\":20}}","typeName":"Product"}},"array_of_objects_missing_field_becomes_nullable":{"summary":"Array of objects — missing field becomes nullable","value":{"jsonInput":"[{\"id\":1,\"name\":\"Ada\",\"email\":\"ada@example.com\"},{\"id\":2,\"name\":\"Grace\"}]","typeName":"User"}},"array_of_objects_generates_a_named_list_type":{"summary":"Array of objects generates a named list type","value":{"jsonInput":"{\"id\":100,\"customer\":\"Bob\",\"items\":[{\"sku\":\"A1\",\"qty\":2},{\"sku\":\"B2\",\"qty\":1}]}","typeName":"Order"}},"all_nullable_mode_suppresses_every":{"summary":"All-nullable mode suppresses every !","value":{"jsonInput":"{\"id\":\"u1\",\"tags\":[\"x\"]}","typeName":"Root","nullability":"nullable","idDetection":"auto","includeRootQuery":"true"}},"id_heuristic_boolean_id_and_field_name_collisions":{"summary":"ID heuristic, boolean id, and field-name collisions","value":{"jsonInput":"{\"_id\":\"abc\",\"userId\":\"u1\",\"isId\":true,\"a-b\":1,\"a b\":\"x\"}","typeName":"Row","nullability":"strict","idDetection":"auto","includeRootQuery":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flat_object_with_an_id_field":{"summary":"Flat object with an id field","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Query {\n  user(id: ID!): User\n  users: [User!]!\n}\n\ntype User {\n  id: ID!\n  name: String!\n  active: Boolean!\n  score: Float!\n}"},"credits_used":5,"credits_remaining":null}},"nested_object_scalar_list_and_a_null_field":{"summary":"Nested object, scalar list and a null field","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Query {\n  product(id: ID!): Product\n  products: [Product!]!\n}\n\ntype Product {\n  id: ID!\n  name: String!\n  price: Float!\n  inStock: Boolean!\n  tags: [String!]!\n  meta: String\n  dimensions: Dimensions!\n}\n\ntype Dimensions {\n  width: Int!\n  height: Int!\n}"},"credits_used":5,"credits_remaining":null}},"array_of_objects_missing_field_becomes_nullable":{"summary":"Array of objects — missing field becomes nullable","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Query {\n  user(id: ID!): User\n  users: [User!]!\n}\n\ntype User {\n  id: ID!\n  name: String!\n  email: String\n}"},"credits_used":5,"credits_remaining":null}},"array_of_objects_generates_a_named_list_type":{"summary":"Array of objects generates a named list type","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Query {\n  order(id: ID!): Order\n  orders: [Order!]!\n}\n\ntype Order {\n  id: ID!\n  customer: String!\n  items: [Items!]!\n}\n\ntype Items {\n  sku: String!\n  qty: Int!\n}"},"credits_used":5,"credits_remaining":null}},"all_nullable_mode_suppresses_every":{"summary":"All-nullable mode suppresses every !","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Query {\n  root(id: ID): Root\n  roots: [Root]\n}\n\ntype Root {\n  id: ID\n  tags: [String]\n}"},"credits_used":5,"credits_remaining":null}},"id_heuristic_boolean_id_and_field_name_collisions":{"summary":"ID heuristic, boolean id, and field-name collisions","value":{"tool":"json-to-graphql-types-generator","tool_version":"1.0.2","outputs":{"output":"type Row {\n  _id: ID!\n  userId: ID!\n  isId: Boolean!\n  a_b: Int!\n  a_b_2: String!\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"GraphQL SDL"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-hcl-converter":{"post":{"operationId":"run_json_to_hcl_converter","summary":"JSON to HCL Converter","tags":["Converters"],"description":"Convert a Terraform JSON configuration (.tf.json) back to native HCL syntax — recognizes Terraform's well-known block types (resource, data, variable, output, module, provider, lifecycle, provisioner, dynamic, …) and unwraps `${...}` interpolation strings back into raw expressions. Runs entirely in your browser.\n\n[Try JSON to HCL Converter in your browser →](https://iotools.cloud/tool/json-to-hcl-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonSource":{"type":"string","description":"JSON input"}},"required":["jsonSource"]},"examples":{"labeled_resource_block_a_nested_lifecycle_block_an_interpolation_and_a_map":{"summary":"Labeled resource block, a nested lifecycle block, an interpolation, and a map","value":{"jsonSource":"{\n  \"resource\": {\n    \"aws_instance\": {\n      \"web\": {\n        \"ami\": \"${data.aws_ami.ubuntu.id}\",\n        \"instance_type\": \"${var.instance_type}\",\n        \"count\": 2,\n        \"lifecycle\": {\n          \"create_before_destroy\": true\n        },\n        \"tags\": {\n          \"Name\": \"web\",\n          \"Env\": \"prod\"\n        }\n      }\n    }\n  },\n  \"variable\": {\n    \"instance_type\": {\n      \"default\": \"t3.micro\"\n    }\n  }\n}"}},"list_and_boolean_null_literals":{"summary":"List and boolean/null literals","value":{"jsonSource":"{\"locals\":{\"azs\":[\"us-east-1a\",\"us-east-1b\"],\"enabled\":true,\"extra\":null}}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"labeled_resource_block_a_nested_lifecycle_block_an_interpolation_and_a_map":{"summary":"Labeled resource block, a nested lifecycle block, an interpolation, and a map","value":{"tool":"json-to-hcl-converter","tool_version":"1.0.2","outputs":{"outputHcl":"resource \"aws_instance\" \"web\" {\n  ami = data.aws_ami.ubuntu.id\n  instance_type = var.instance_type\n  count = 2\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  tags = {\n    Name = \"web\"\n    Env = \"prod\"\n  }\n}\n\nvariable \"instance_type\" {\n  default = \"t3.micro\"\n}\n"},"credits_used":5,"credits_remaining":null}},"list_and_boolean_null_literals":{"summary":"List and boolean/null literals","value":{"tool":"json-to-hcl-converter","tool_version":"1.0.2","outputs":{"outputHcl":"locals {\n  azs = [\"us-east-1a\", \"us-east-1b\"]\n  enabled = true\n  extra = null\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputHcl":{"type":"string","description":"HCL output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-html-table":{"post":{"operationId":"run_json_to_html_table","summary":"JSON to HTML Table","tags":["Converters"],"description":"Convert a JSON array of objects (or a single object) into a clean, ready-to-paste HTML &lt;table>. Headers are the union of all keys, values are HTML-escaped, nested objects flatten or stringify, and you can add a CSS class or minify the output.\n\n[Try JSON to HTML Table in your browser →](https://iotools.cloud/tool/json-to-html-table/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON input"},"nestedHandling":{"enum":["stringify","flatten"],"description":"Nested objects"},"tableClass":{"type":"string","description":"Table CSS class"},"minify":{"type":"boolean","description":"Minify HTML (single line, no indentation)"},"includeNull":{"type":"boolean","description":"Show JSON null as an italic null"}},"required":[]},"examples":{"array_of_objects":{"summary":"Array of objects","value":{"jsonInput":"[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]","nestedHandling":"stringify","tableClass":"","minify":""}},"missing_keys_escaping_and_a_css_class":{"summary":"Missing keys, escaping and a CSS class","value":{"jsonInput":"[{\"name\":\"A & B\",\"note\":\"1 < 2\"},{\"name\":\"C\",\"tags\":[\"x\",\"y\"]}]","nestedHandling":"stringify","tableClass":"data-table","minify":""}},"single_object_flattened_and_minified":{"summary":"Single object, flattened and minified","value":{"jsonInput":"{\"id\":1,\"user\":{\"name\":\"Ada\",\"city\":\"NYC\"}}","nestedHandling":"flatten","tableClass":"","minify":"true"}},"a_json_null_is_not_the_same_as_a_missing_key":{"summary":"A JSON null is not the same as a missing key","value":{"jsonInput":"[{\"a\":null},{\"b\":1}]","nestedHandling":"stringify","tableClass":"","minify":"true","includeNull":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"array_of_objects":{"summary":"Array of objects","value":{"tool":"json-to-html-table","tool_version":"1.0.2","outputs":{"output":"<table>\n  <thead>\n    <tr>\n      <th>name</th>\n      <th>age</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>Alice</td>\n      <td>30</td>\n    </tr>\n    <tr>\n      <td>Bob</td>\n      <td>25</td>\n    </tr>\n  </tbody>\n</table>"},"credits_used":5,"credits_remaining":null}},"missing_keys_escaping_and_a_css_class":{"summary":"Missing keys, escaping and a CSS class","value":{"tool":"json-to-html-table","tool_version":"1.0.2","outputs":{"output":"<table class=\"data-table\">\n  <thead>\n    <tr>\n      <th>name</th>\n      <th>note</th>\n      <th>tags</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>A &amp; B</td>\n      <td>1 &lt; 2</td>\n      <td></td>\n    </tr>\n    <tr>\n      <td>C</td>\n      <td></td>\n      <td>[&quot;x&quot;,&quot;y&quot;]</td>\n    </tr>\n  </tbody>\n</table>"},"credits_used":5,"credits_remaining":null}},"single_object_flattened_and_minified":{"summary":"Single object, flattened and minified","value":{"tool":"json-to-html-table","tool_version":"1.0.2","outputs":{"output":"<table><thead><tr><th>id</th><th>user.name</th><th>user.city</th></tr></thead><tbody><tr><td>1</td><td>Ada</td><td>NYC</td></tr></tbody></table>"},"credits_used":5,"credits_remaining":null}},"a_json_null_is_not_the_same_as_a_missing_key":{"summary":"A JSON null is not the same as a missing key","value":{"tool":"json-to-html-table","tool_version":"1.0.2","outputs":{"output":"<table><thead><tr><th>a</th><th>b</th></tr></thead><tbody><tr><td><em>null</em></td><td></td></tr><tr><td></td><td>1</td></tr></tbody></table>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"HTML source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-php-array-converter":{"post":{"operationId":"run_json_to_php_array_converter","summary":"JSON to PHP Array Converter","tags":["Converters"],"description":"Convert JSON into a ready-to-paste PHP array literal — objects become 'key' => value associative arrays, arrays become list arrays, with short [] or legacy array() syntax, your choice of indentation, and an optional $variable / &lt;?php wrapper. Runs entirely in your browser.\n\n[Try JSON to PHP Array Converter in your browser →](https://iotools.cloud/tool/json-to-php-array-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputJson":{"type":"string","description":"JSON input"},"arrayStyle":{"enum":["short","long"],"description":"Array syntax"},"indentation":{"enum":["2","4","tab"],"description":"Indentation"},"wrapper":{"enum":["none","assignment","php"],"description":"Output wrapper"},"varName":{"type":"string","description":"Variable name"}},"required":[]},"examples":{"flat_object_short_array":{"summary":"Flat object → short array","value":{"inputJson":"{\"name\":\"John\",\"age\":30,\"active\":true}","arrayStyle":"short","indentation":"2","wrapper":"none","varName":"data"}},"nested_data_full_php_block_4_spaces":{"summary":"Nested data → full <?php block (4 spaces)","value":{"inputJson":"{\"id\":1,\"tags\":[\"php\",\"dev\"],\"meta\":{\"active\":false,\"note\":null}}","arrayStyle":"short","indentation":"4","wrapper":"php","varName":"user"}},"escaping_legacy_array_assignment":{"summary":"Escaping + legacy array() + assignment","value":{"inputJson":"{\"note\":\"a'b\\\\c\",\"pi\":3.14,\"nil\":null}","arrayStyle":"long","indentation":"2","wrapper":"assignment","varName":"data"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flat_object_short_array":{"summary":"Flat object → short array","value":{"tool":"json-to-php-array-converter","tool_version":"1.0.2","outputs":{"outputPhp":"[\n  'name' => 'John',\n  'age' => 30,\n  'active' => true,\n]"},"credits_used":5,"credits_remaining":null}},"nested_data_full_php_block_4_spaces":{"summary":"Nested data → full <?php block (4 spaces)","value":{"tool":"json-to-php-array-converter","tool_version":"1.0.2","outputs":{"outputPhp":"<?php\n\n$user = [\n    'id' => 1,\n    'tags' => [\n        'php',\n        'dev',\n    ],\n    'meta' => [\n        'active' => false,\n        'note' => null,\n    ],\n];\n"},"credits_used":5,"credits_remaining":null}},"escaping_legacy_array_assignment":{"summary":"Escaping + legacy array() + assignment","value":{"tool":"json-to-php-array-converter","tool_version":"1.0.2","outputs":{"outputPhp":"$data = array(\n  'note' => 'a\\'b\\\\c',\n  'pi' => 3.14,\n  'nil' => null,\n);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputPhp":{"type":"string","description":"PHP array"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-toml-converter":{"post":{"operationId":"run_json_to_toml_converter","summary":"JSON to TOML Converter","tags":["Converters"],"description":"Convert JSON to TOML. Handles nested objects (TOML tables), arrays of objects (TOML array-of-tables), and omits JSON null values (TOML has no null). Runs entirely in your browser.\n\n[Try JSON to TOML Converter in your browser →](https://iotools.cloud/tool/json-to-toml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonSource":{"type":"string","description":"JSON input"}},"required":["jsonSource"]},"examples":{"nested_config_with_a_null_value":{"summary":"Nested config (with a null value)","value":{"jsonSource":"{\n  \"title\": \"Project Configuration\",\n  \"version\": 1.0,\n  \"settings\": {\n    \"debug\": true,\n    \"timeout\": 30,\n    \"cacheEnabled\": false\n  },\n  \"database\": {\n    \"host\": \"localhost\",\n    \"port\": 5432,\n    \"credentials\": {\n      \"username\": \"admin\",\n      \"password\": null\n    }\n  },\n  \"features\": [\"authentication\", \"notifications\", \"reporting\"]\n}"}},"array_of_objects_array_of_tables":{"summary":"Array of objects (array-of-tables)","value":{"jsonSource":"{\"name\":\"my-package\",\"version\":\"2.1.0\",\"dependencies\":[{\"name\":\"left-pad\",\"version\":\"1.0.0\"},{\"name\":\"right-pad\",\"version\":\"2.0.0\",\"optional\":null}]}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_config_with_a_null_value":{"summary":"Nested config (with a null value)","value":{"tool":"json-to-toml-converter","tool_version":"1.0.2","outputs":{"outputToml":"title = \"Project Configuration\"\nversion = 1\nfeatures = [ \"authentication\", \"notifications\", \"reporting\" ]\n\n[settings]\ndebug = true\ntimeout = 30\ncacheEnabled = false\n\n[database]\nhost = \"localhost\"\nport = 5432\n\n[database.credentials]\nusername = \"admin\""},"credits_used":5,"credits_remaining":null}},"array_of_objects_array_of_tables":{"summary":"Array of objects (array-of-tables)","value":{"tool":"json-to-toml-converter","tool_version":"1.0.2","outputs":{"outputToml":"name = \"my-package\"\nversion = \"2.1.0\"\n\n[[dependencies]]\nname = \"left-pad\"\nversion = \"1.0.0\"\n\n[[dependencies]]\nname = \"right-pad\"\nversion = \"2.0.0\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputToml":{"type":"string","description":"TOML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/toml-to-json-converter":{"post":{"operationId":"run_toml_to_json_converter","summary":"TOML to JSON Converter","tags":["Converters"],"description":"Convert TOML to JSON. Handles TOML tables, arrays, array-of-tables, inline tables, and native TOML dates/datetimes (converted to ISO 8601 strings). Runs entirely in your browser.\n\n[Try TOML to JSON Converter in your browser →](https://iotools.cloud/tool/toml-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tomlSource":{"type":"string","description":"TOML input"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":["tomlSource"]},"examples":{"nested_tables_array":{"summary":"Nested tables & array","value":{"tomlSource":"title = \"Project Configuration\"\nversion = 1.0\nfeatures = [\"authentication\", \"notifications\", \"reporting\"]\n\n[settings]\ndebug = true\ntimeout = 30\ncache_enabled = false\n\n[database]\nhost = \"localhost\"\nport = 5432\n\n[database.credentials]\nusername = \"admin\"\npassword = \"secure123\"\n","indent":"2"}},"nested_table_with_dates_minified":{"summary":"Nested table with dates (minified)","value":{"tomlSource":"name = \"my-project\"\ncreated = 1979-05-27T07:32:00Z\nrelease_date = 2024-01-15\n\n[owner]\nname = \"Tom Preston-Werner\"\ndob = 1979-05-27T07:32:00-08:00\n","indent":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_tables_array":{"summary":"Nested tables & array","value":{"tool":"toml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"title\": \"Project Configuration\",\n  \"version\": 1,\n  \"features\": [\n    \"authentication\",\n    \"notifications\",\n    \"reporting\"\n  ],\n  \"settings\": {\n    \"debug\": true,\n    \"timeout\": 30,\n    \"cache_enabled\": false\n  },\n  \"database\": {\n    \"host\": \"localhost\",\n    \"port\": 5432,\n    \"credentials\": {\n      \"username\": \"admin\",\n      \"password\": \"secure123\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"nested_table_with_dates_minified":{"summary":"Nested table with dates (minified)","value":{"tool":"toml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\"name\":\"my-project\",\"created\":\"1979-05-27T07:32:00.000Z\",\"release_date\":\"2024-01-15\",\"owner\":{\"name\":\"Tom Preston-Werner\",\"dob\":\"1979-05-27T07:32:00.000-08:00\"}}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/toml-to-yaml-converter":{"post":{"operationId":"run_toml_to_yaml_converter","summary":"TOML to YAML Converter","tags":["Converters"],"description":"Convert TOML to YAML. Handles nested tables, arrays of tables, and TOML's typed dates/datetimes (rendered as YAML timestamp scalars). Runs entirely in your browser.\n\n[Try TOML to YAML Converter in your browser →](https://iotools.cloud/tool/toml-to-yaml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tomlSource":{"type":"string","description":"TOML input"}},"required":["tomlSource"]},"examples":{"nested_config_with_an_array":{"summary":"Nested config with an array","value":{"tomlSource":"title = \"Project Configuration\"\nversion = 1.0\nfeatures = [\"authentication\", \"notifications\", \"reporting\"]\n\n[settings]\ndebug = true\ntimeout = 30\ncacheEnabled = false\n\n[database]\nhost = \"localhost\"\nport = 5432\n\n[database.credentials]\nusername = \"admin\"\npassword = \"secure123\"\n"}},"array_of_tables_dependencies":{"summary":"Array of tables (dependencies)","value":{"tomlSource":"name = \"my-package\"\nversion = \"2.1.0\"\n\n[[dependencies]]\nname = \"left-pad\"\nversion = \"1.0.0\"\n\n[[dependencies]]\nname = \"right-pad\"\nversion = \"2.0.0\"\n"}},"dates_and_timestamps":{"summary":"Dates and timestamps","value":{"tomlSource":"title = \"Event Schedule\"\ncreatedAt = 1979-05-27T07:32:00Z\nlocalDateTime = 1979-05-27T07:32:00\nlocalDate = 1979-05-27\nlocalTime = 07:32:00\n"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_config_with_an_array":{"summary":"Nested config with an array","value":{"tool":"toml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"title: Project Configuration\nversion: 1\nfeatures:\n  - authentication\n  - notifications\n  - reporting\nsettings:\n  debug: true\n  timeout: 30\n  cacheEnabled: false\ndatabase:\n  host: localhost\n  port: 5432\n  credentials:\n    username: admin\n    password: secure123"},"credits_used":5,"credits_remaining":null}},"array_of_tables_dependencies":{"summary":"Array of tables (dependencies)","value":{"tool":"toml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"name: my-package\nversion: 2.1.0\ndependencies:\n  - name: left-pad\n    version: 1.0.0\n  - name: right-pad\n    version: 2.0.0"},"credits_used":5,"credits_remaining":null}},"dates_and_timestamps":{"summary":"Dates and timestamps","value":{"tool":"toml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"title: Event Schedule\ncreatedAt: 1979-05-27T07:32:00.000Z\nlocalDateTime: 1979-05-27T07:32:00.000\nlocalDate: 1979-05-27\nlocalTime: 07:32:00.000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputYaml":{"type":"string","description":"YAML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-typescript-converter":{"post":{"operationId":"run_json_to_typescript_converter","summary":"JSON to TypeScript Converter","tags":["Converters"],"description":"Convert a JSON sample into TypeScript interfaces or type aliases. Infers primitive, array, and nested-object types, merges arrays of objects into one interface with optional keys, and lets you name the root type.\n\n[Try JSON to TypeScript Converter in your browser →](https://iotools.cloud/tool/json-to-typescript-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON input"},"rootName":{"type":"string","description":"Root type name"},"exportStyle":{"enum":["interface","type","class"],"description":"Output style"},"nullType":{"enum":["null","undefined"],"description":"Null values become"}},"required":[]},"examples":{"object_with_nested_types_arrays_and_an_empty_array":{"summary":"Object with nested types, arrays, and an empty array","value":{"jsonInput":"{\"id\":1,\"tags\":[\"admin\",\"user\"],\"scores\":[95,87],\"mixed\":[1,\"two\"],\"empty\":[],\"address\":{\"city\":\"NYC\",\"zip\":10001}}","rootName":"Root","exportStyle":"interface","nullType":"null"}},"array_of_objects_with_optional_keys_and_null_type_alias":{"summary":"Array of objects with optional keys and null (type alias)","value":{"jsonInput":"[{\"id\":1,\"score\":9.5,\"active\":true},{\"id\":2,\"active\":false,\"note\":null}]","rootName":"User","exportStyle":"type","nullType":"null"}},"array_of_primitives_type_alias":{"summary":"Array of primitives (type alias)","value":{"jsonInput":"[\"a\",\"b\",\"c\"]","rootName":"Tags","exportStyle":"interface","nullType":"null"}},"class_output_style":{"summary":"Class output style","value":{"jsonInput":"[{\"id\":1,\"email\":\"ada@example.com\"},{\"id\":2}]","rootName":"User","exportStyle":"class","nullType":"null"}},"digit_leading_keys_stay_valid_identifiers":{"summary":"Digit-leading keys stay valid identifiers","value":{"jsonInput":"{\"2fa\":{\"x\":1},\"first-name\":\"Ada\"}","rootName":"Root","exportStyle":"interface","nullType":"null"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"object_with_nested_types_arrays_and_an_empty_array":{"summary":"Object with nested types, arrays, and an empty array","value":{"tool":"json-to-typescript-converter","tool_version":"1.0.2","outputs":{"output":"export interface Root {\n  id: number;\n  tags: string[];\n  scores: number[];\n  mixed: (number | string)[];\n  empty: unknown[];\n  address: Address;\n}\n\nexport interface Address {\n  city: string;\n  zip: number;\n}"},"credits_used":5,"credits_remaining":null}},"array_of_objects_with_optional_keys_and_null_type_alias":{"summary":"Array of objects with optional keys and null (type alias)","value":{"tool":"json-to-typescript-converter","tool_version":"1.0.2","outputs":{"output":"export type User = {\n  id: number;\n  score?: number;\n  active: boolean;\n  note?: null;\n}"},"credits_used":5,"credits_remaining":null}},"array_of_primitives_type_alias":{"summary":"Array of primitives (type alias)","value":{"tool":"json-to-typescript-converter","tool_version":"1.0.2","outputs":{"output":"export type Tags = string[];"},"credits_used":5,"credits_remaining":null}},"class_output_style":{"summary":"Class output style","value":{"tool":"json-to-typescript-converter","tool_version":"1.0.2","outputs":{"output":"export class User {\n  id!: number;\n  email?: string;\n}"},"credits_used":5,"credits_remaining":null}},"digit_leading_keys_stay_valid_identifiers":{"summary":"Digit-leading keys stay valid identifiers","value":{"tool":"json-to-typescript-converter","tool_version":"1.0.2","outputs":{"output":"export interface Root {\n  '2fa': _2fa;\n  'first-name': string;\n}\n\nexport interface _2fa {\n  x: number;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"TypeScript output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-xml":{"post":{"operationId":"run_json_to_xml","summary":"JSON to XML Converter","tags":["Converters"],"description":"Convert JSON into clean XML — object keys become element tags, arrays repeat their key as sibling elements, and every value is XML-escaped. Configure the root and array-item element names, pretty-print or minify, choose how nulls are handled, and toggle the XML declaration. Runs entirely in your browser.\n\n[Try JSON to XML Converter in your browser →](https://iotools.cloud/tool/json-to-xml/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputJson":{"type":"string","description":"JSON input"},"rootElement":{"type":"string","description":"Root element name"},"arrayItemElement":{"type":"string","description":"Array item element name"},"indent":{"enum":["2","4","tab","minified"],"description":"Indentation"},"nullHandling":{"enum":["empty","omit","xsi-nil"],"description":"Null handling"},"xmlDeclaration":{"type":"boolean","description":"Include XML declaration (&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>)"}},"required":[]},"examples":{"object_with_array_pretty_declaration":{"summary":"Object with array (pretty, declaration)","value":{"inputJson":"{\"name\":\"Acme\",\"employees\":[\"Alice\",\"Bob\"],\"active\":true}","rootElement":"root","arrayItemElement":"item","indent":"2","nullHandling":"empty","xmlDeclaration":"true"}},"nested_object_escaping_empty_null":{"summary":"Nested object, escaping, empty null","value":{"inputJson":"{\"user\":{\"name\":\"A & B\",\"bio\":\"x < y\"},\"note\":null}","rootElement":"data","arrayItemElement":"item","indent":"2","nullHandling":"empty","xmlDeclaration":""}},"array_root_minified_sanitized_key":{"summary":"Array root, minified, sanitized key","value":{"inputJson":"[{\"1st\":10},{\"1st\":20}]","rootElement":"root","arrayItemElement":"row","indent":"minified","nullHandling":"empty","xmlDeclaration":"true"}},"xsi_nil_nulls_tab_indent":{"summary":"xsi:nil nulls, tab indent","value":{"inputJson":"{\"a\":1,\"b\":null}","rootElement":"root","arrayItemElement":"item","indent":"tab","nullHandling":"xsi-nil","xmlDeclaration":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"object_with_array_pretty_declaration":{"summary":"Object with array (pretty, declaration)","value":{"tool":"json-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n  <name>Acme</name>\n  <employees>Alice</employees>\n  <employees>Bob</employees>\n  <active>true</active>\n</root>"},"credits_used":5,"credits_remaining":null}},"nested_object_escaping_empty_null":{"summary":"Nested object, escaping, empty null","value":{"tool":"json-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<data>\n  <user>\n    <name>A &amp; B</name>\n    <bio>x &lt; y</bio>\n  </user>\n  <note/>\n</data>"},"credits_used":5,"credits_remaining":null}},"array_root_minified_sanitized_key":{"summary":"Array root, minified, sanitized key","value":{"tool":"json-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><row><_1st>10</_1st></row><row><_1st>20</_1st></row></root>"},"credits_used":5,"credits_remaining":null}},"xsi_nil_nulls_tab_indent":{"summary":"xsi:nil nulls, tab indent","value":{"tool":"json-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\t<a>1</a>\n\t<b xsi:nil=\"true\"/>\n</root>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputXml":{"type":"string","description":"XML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-zod-schema-generator":{"post":{"operationId":"run_json_to_zod_schema_generator","summary":"JSON to Zod Schema Generator","tags":["Converters"],"description":"Turn a JSON sample into a ready-to-use Zod schema. Infers primitives, arrays, unions, and nested objects, detects string formats (email, URL, UUID, date-time), marks missing keys optional and mixed-null keys nullable, and names the root schema.\n\n[Try JSON to Zod Schema Generator in your browser →](https://iotools.cloud/tool/json-to-zod-schema-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON input"},"schemaName":{"type":"string","description":"Schema name"},"strictObjects":{"enum":["strict","passthrough"],"description":"Unknown keys"},"moduleSyntax":{"enum":["esm","cjs"],"description":"Module syntax"},"includeImport":{"type":"boolean","description":"Include import statement"},"inferType":{"type":"boolean","description":"Add z.infer type alias"}},"required":[]},"examples":{"object_with_string_formats_nested_object_and_an_array":{"summary":"Object with string formats, nested object, and an array","value":{"jsonInput":"{\"id\":1,\"name\":\"Ada\",\"email\":\"ada@example.com\",\"active\":true,\"tags\":[\"admin\",\"dev\"],\"profile\":{\"age\":30,\"city\":\"NYC\"}}","schemaName":"schema","strictObjects":"strict","includeImport":"true","inferType":"true"}},"array_of_objects_optional_keys_and_a_nullable_field":{"summary":"Array of objects: optional keys and a nullable field","value":{"jsonInput":"[{\"id\":1,\"name\":\"Ada\",\"score\":9.5},{\"id\":2,\"name\":\"Bob\",\"score\":null,\"active\":true}]","schemaName":"user","strictObjects":"strict","includeImport":"","inferType":"true"}},"mixed_type_array_union_with_passthrough_objects":{"summary":"Mixed-type array (union) with passthrough objects","value":{"jsonInput":"{\"tags\":[1,\"two\",true],\"meta\":{\"a\":1}}","schemaName":"schema","strictObjects":"passthrough","includeImport":"","inferType":""}},"mixed_int_float_array_widens_to_number":{"summary":"Mixed int/float array widens to number","value":{"jsonInput":"[1, 1.5]","schemaName":"nums","strictObjects":"strict","moduleSyntax":"esm","includeImport":"","inferType":""}},"commonjs_output":{"summary":"CommonJS output","value":{"jsonInput":"{\"port\":5432}","schemaName":"config","strictObjects":"strict","moduleSyntax":"cjs","includeImport":"true","inferType":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"object_with_string_formats_nested_object_and_an_array":{"summary":"Object with string formats, nested object, and an array","value":{"tool":"json-to-zod-schema-generator","tool_version":"1.0.2","outputs":{"output":"import { z } from \"zod\";\n\nconst schema = z.object({\n  id: z.number().int(),\n  name: z.string(),\n  email: z.string().email(),\n  active: z.boolean(),\n  tags: z.array(z.string()),\n  profile: z.object({\n    age: z.number().int(),\n    city: z.string(),\n  }),\n});\n\ntype Schema = z.infer<typeof schema>;"},"credits_used":5,"credits_remaining":null}},"array_of_objects_optional_keys_and_a_nullable_field":{"summary":"Array of objects: optional keys and a nullable field","value":{"tool":"json-to-zod-schema-generator","tool_version":"1.0.2","outputs":{"output":"const user = z.array(\n  z.object({\n    id: z.number().int(),\n    name: z.enum([\"Ada\", \"Bob\"]),\n    score: z.number().nullable(),\n    active: z.boolean().optional(),\n  })\n);\n\ntype User = z.infer<typeof user>;"},"credits_used":5,"credits_remaining":null}},"mixed_type_array_union_with_passthrough_objects":{"summary":"Mixed-type array (union) with passthrough objects","value":{"tool":"json-to-zod-schema-generator","tool_version":"1.0.2","outputs":{"output":"const schema = z.object({\n  tags: z.array(z.union([z.number().int(), z.string(), z.boolean()])),\n  meta: z.object({\n    a: z.number().int(),\n  }).passthrough(),\n}).passthrough();"},"credits_used":5,"credits_remaining":null}},"mixed_int_float_array_widens_to_number":{"summary":"Mixed int/float array widens to number","value":{"tool":"json-to-zod-schema-generator","tool_version":"1.0.2","outputs":{"output":"const nums = z.array(z.number());"},"credits_used":5,"credits_remaining":null}},"commonjs_output":{"summary":"CommonJS output","value":{"tool":"json-to-zod-schema-generator","tool_version":"1.0.2","outputs":{"output":"const { z } = require(\"zod\");\n\nconst config = z.object({\n  port: z.number().int(),\n});"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Zod schema"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/julian-date-converter":{"post":{"operationId":"run_julian_date_converter","summary":"Julian Date Converter","tags":["Converters"],"description":"Convert a calendar date/time to Julian Date (JD), Modified Julian Date (MJD), Julian Day Number (JDN) and Unix time — or convert a JD, MJD or Unix timestamp back to a calendar date. All values computed in UTC. Leave the input blank to use the current time.\n\n[Try Julian Date Converter in your browser →](https://iotools.cloud/tool/julian-date-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["to-julian","to-date"],"description":"Conversion"},"dateTime":{"type":"string","description":"Date & time"},"value":{"type":"string","description":"Value"},"unit":{"enum":["jd","mjd","unix-s","unix-ms"],"description":"Interpret as"}},"required":[]},"examples":{"calendar_date_to_julian_date_y2k_noon":{"summary":"Calendar date to Julian Date (Y2K noon)","value":{"direction":"to-julian","dateTime":"2000-01-01 12:00:00"}},"calendar_date_to_julian_date_midnight":{"summary":"Calendar date to Julian Date (midnight)","value":{"direction":"to-julian","dateTime":"2024-01-01 00:00:00"}},"julian_date_to_calendar_date":{"summary":"Julian Date to calendar date","value":{"direction":"to-date","value":"2451545.0","unit":"jd"}},"modified_julian_date_to_calendar_date":{"summary":"Modified Julian Date to calendar date","value":{"direction":"to-date","value":"60310","unit":"mjd"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"calendar_date_to_julian_date_y2k_noon":{"summary":"Calendar date to Julian Date (Y2K noon)","value":{"tool":"julian-date-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Date (UTC)","value":"2000-01-01"},{"property":"Time (UTC)","value":"12:00:00"},{"property":"Day of week (UTC)","value":"Saturday"},{"property":"ISO 8601 (UTC)","value":"2000-01-01T12:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Sat, 01 Jan 2000 12:00:00 GMT"},{"property":"Julian Date (JD)","value":"2451545.000000"},{"property":"Modified Julian Date (MJD)","value":"51544.500000"},{"property":"Julian Day Number (JDN)","value":"2451545"},{"property":"Unix timestamp (seconds)","value":"946728000"},{"property":"Unix timestamp (milliseconds)","value":"946728000000"}]},"credits_used":5,"credits_remaining":null}},"calendar_date_to_julian_date_midnight":{"summary":"Calendar date to Julian Date (midnight)","value":{"tool":"julian-date-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Date (UTC)","value":"2024-01-01"},{"property":"Time (UTC)","value":"00:00:00"},{"property":"Day of week (UTC)","value":"Monday"},{"property":"ISO 8601 (UTC)","value":"2024-01-01T00:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Mon, 01 Jan 2024 00:00:00 GMT"},{"property":"Julian Date (JD)","value":"2460310.500000"},{"property":"Modified Julian Date (MJD)","value":"60310.000000"},{"property":"Julian Day Number (JDN)","value":"2460311"},{"property":"Unix timestamp (seconds)","value":"1704067200"},{"property":"Unix timestamp (milliseconds)","value":"1704067200000"}]},"credits_used":5,"credits_remaining":null}},"julian_date_to_calendar_date":{"summary":"Julian Date to calendar date","value":{"tool":"julian-date-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Date (UTC)","value":"2000-01-01"},{"property":"Time (UTC)","value":"12:00:00"},{"property":"Day of week (UTC)","value":"Saturday"},{"property":"ISO 8601 (UTC)","value":"2000-01-01T12:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Sat, 01 Jan 2000 12:00:00 GMT"},{"property":"Julian Date (JD)","value":"2451545.000000"},{"property":"Modified Julian Date (MJD)","value":"51544.500000"},{"property":"Julian Day Number (JDN)","value":"2451545"},{"property":"Unix timestamp (seconds)","value":"946728000"},{"property":"Unix timestamp (milliseconds)","value":"946728000000"}]},"credits_used":5,"credits_remaining":null}},"modified_julian_date_to_calendar_date":{"summary":"Modified Julian Date to calendar date","value":{"tool":"julian-date-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Date (UTC)","value":"2024-01-01"},{"property":"Time (UTC)","value":"00:00:00"},{"property":"Day of week (UTC)","value":"Monday"},{"property":"ISO 8601 (UTC)","value":"2024-01-01T00:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Mon, 01 Jan 2024 00:00:00 GMT"},{"property":"Julian Date (JD)","value":"2460310.500000"},{"property":"Modified Julian Date (MJD)","value":"60310.000000"},{"property":"Julian Day Number (JDN)","value":"2460311"},{"property":"Unix timestamp (seconds)","value":"1704067200"},{"property":"Unix timestamp (milliseconds)","value":"1704067200000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lab-to-rgb-converter":{"post":{"operationId":"run_lab_to_rgb_converter","summary":"LAB to RGB Converter","tags":["Converters"],"description":"Convert a CIE L*a*b* color to sRGB and a hex code, with a per-channel breakdown, a live color swatch, and an sRGB gamut check. Uses the standard D65 white point.\n\n[Try LAB to RGB Converter in your browser →](https://iotools.cloud/tool/lab-to-rgb-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"labL":{"type":"number","description":"L* (Lightness)","minimum":0,"maximum":100},"labA":{"type":"number","description":"a* (Green - Red)","minimum":-128,"maximum":127},"labB":{"type":"number","description":"b* (Blue - Yellow)","minimum":-128,"maximum":127}},"required":[]},"examples":{"pure_white_l100_a0_b0":{"summary":"Pure white (L100, a0, b0)","value":{"labL":"100","labA":"0","labB":"0"}},"pure_black_l0_a0_b0":{"summary":"Pure black (L0, a0, b0)","value":{"labL":"0","labA":"0","labB":"0"}},"leaf_green_l60_a_40_b50":{"summary":"Leaf green (L60, a-40, b50)","value":{"labL":"60","labA":"-40","labB":"50"}},"vivid_orchid_out_of_gamut_l70_a60_b_60":{"summary":"Vivid orchid, out of gamut (L70, a60, b-60)","value":{"labL":"70","labA":"60","labB":"-60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pure_white_l100_a0_b0":{"summary":"Pure white (L100, a0, b0)","value":{"tool":"lab-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(255, 255, 255)","hex":"#FFFFFF","colorTable":[{"property":"L*","value":"100"},{"property":"a*","value":"0"},{"property":"b*","value":"0"},{"property":"Red","value":"255"},{"property":"Green","value":"255"},{"property":"Blue","value":"255"},{"property":"RGB","value":"rgb(255, 255, 255)"},{"property":"HEX","value":"#FFFFFF"},{"property":"sRGB Gamut","value":"In sRGB gamut"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FFFFFF;color:#111111;font-family:monospace;font-size:15px;font-weight:600\">#FFFFFF</div>"},"credits_used":5,"credits_remaining":null}},"pure_black_l0_a0_b0":{"summary":"Pure black (L0, a0, b0)","value":{"tool":"lab-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(0, 0, 0)","hex":"#000000","colorTable":[{"property":"L*","value":"0"},{"property":"a*","value":"0"},{"property":"b*","value":"0"},{"property":"Red","value":"0"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"RGB","value":"rgb(0, 0, 0)"},{"property":"HEX","value":"#000000"},{"property":"sRGB Gamut","value":"In sRGB gamut"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#000000;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#000000</div>"},"credits_used":5,"credits_remaining":null}},"leaf_green_l60_a_40_b50":{"summary":"Leaf green (L60, a-40, b50)","value":{"tool":"lab-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(96, 161, 48)","hex":"#60A130","colorTable":[{"property":"L*","value":"60"},{"property":"a*","value":"-40"},{"property":"b*","value":"50"},{"property":"Red","value":"96"},{"property":"Green","value":"161"},{"property":"Blue","value":"48"},{"property":"RGB","value":"rgb(96, 161, 48)"},{"property":"HEX","value":"#60A130"},{"property":"sRGB Gamut","value":"In sRGB gamut"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#60A130;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#60A130</div>"},"credits_used":5,"credits_remaining":null}},"vivid_orchid_out_of_gamut_l70_a60_b_60":{"summary":"Vivid orchid, out of gamut (L70, a60, b-60)","value":{"tool":"lab-to-rgb-converter","tool_version":"1.0.2","outputs":{"rgb":"rgb(222, 131, 255)","hex":"#DE83FF","colorTable":[{"property":"L*","value":"70"},{"property":"a*","value":"60"},{"property":"b*","value":"-60"},{"property":"Red","value":"222"},{"property":"Green","value":"131"},{"property":"Blue","value":"255"},{"property":"RGB","value":"rgb(222, 131, 255)"},{"property":"HEX","value":"#DE83FF"},{"property":"sRGB Gamut","value":"Out of gamut (clamped)"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#DE83FF;color:#111111;font-family:monospace;font-size:15px;font-weight:600\">#DE83FF</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"rgb":{"type":"string","description":"RGB"},"hex":{"type":"string","description":"HEX"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"swatchHtml":{"type":"string","description":"Swatch HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-csv-converter":{"post":{"operationId":"run_json_to_csv_converter","summary":"JSON to CSV Converter","tags":["Converters"],"description":"Convert a JSON array of objects into CSV. Nested objects flatten to dot-notation columns, headers are the union of every key, and fields are quoted per RFC 4180 with a comma, semicolon or tab delimiter.\n\n[Try JSON to CSV Converter in your browser →](https://iotools.cloud/tool/json-to-csv-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonSource":{"type":"string","description":"JSON input"},"delimiter":{"enum":[",",";","tab"],"description":"Delimiter"},"includeHeaders":{"type":"boolean","description":"Include header row"},"flatten":{"type":"boolean","description":"Flatten nested objects"}},"required":[]},"examples":{"array_of_objects":{"summary":"Array of objects","value":{"jsonSource":"[{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\"},{\"name\":\"Jane Doe\",\"age\":25,\"city\":\"Los Angeles\"}]","delimiter":",","includeHeaders":"true","flatten":"true"}},"flatten_nested_objects_and_arrays":{"summary":"Flatten nested objects and arrays","value":{"jsonSource":"[{\"id\":1,\"user\":{\"name\":\"Alice\",\"address\":{\"city\":\"Paris\"}},\"roles\":[\"admin\",\"dev\"]},{\"id\":2,\"user\":{\"name\":\"Bob\",\"address\":{\"city\":\"Berlin\"}},\"roles\":[\"dev\"]}]","delimiter":",","includeHeaders":"true","flatten":"true"}},"nested_objects_kept_as_json_semicolon_delimiter":{"summary":"Nested objects kept as JSON, semicolon delimiter","value":{"jsonSource":"[{\"id\":1,\"user\":{\"name\":\"Alice\"},\"tags\":[\"a\",\"b\"]}]","delimiter":";","includeHeaders":"true","flatten":""}},"quoted_fields_no_header_row_tab_delimiter":{"summary":"Quoted fields, no header row, tab delimiter","value":{"jsonSource":"[{\"name\":\"Smith, John\",\"note\":\"She said \\\"hi\\\"\"},{\"name\":\"Doe, Jane\",\"note\":\"Line1\\nLine2\"}]","delimiter":"tab","includeHeaders":"","flatten":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"array_of_objects":{"summary":"Array of objects","value":{"tool":"json-to-csv-converter","tool_version":"1.0.2","outputs":{"csv":"name,age,city\nJohn Doe,30,New York\nJane Doe,25,Los Angeles"},"credits_used":5,"credits_remaining":null}},"flatten_nested_objects_and_arrays":{"summary":"Flatten nested objects and arrays","value":{"tool":"json-to-csv-converter","tool_version":"1.0.2","outputs":{"csv":"id,user.name,user.address.city,roles[0],roles[1]\n1,Alice,Paris,admin,dev\n2,Bob,Berlin,dev,"},"credits_used":5,"credits_remaining":null}},"nested_objects_kept_as_json_semicolon_delimiter":{"summary":"Nested objects kept as JSON, semicolon delimiter","value":{"tool":"json-to-csv-converter","tool_version":"1.0.2","outputs":{"csv":"id;user;tags\n1;\"{\"\"name\"\":\"\"Alice\"\"}\";\"[\"\"a\"\",\"\"b\"\"]\""},"credits_used":5,"credits_remaining":null}},"quoted_fields_no_header_row_tab_delimiter":{"summary":"Quoted fields, no header row, tab delimiter","value":{"tool":"json-to-csv-converter","tool_version":"1.0.2","outputs":{"csv":"Smith, John\t\"She said \"\"hi\"\"\"\nDoe, Jane\t\"Line1\nLine2\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"csv":{"type":"string","description":"CSV output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-to-yaml-converter":{"post":{"operationId":"run_json_to_yaml_converter","summary":"JSON to YAML Converter","tags":["Converters"],"description":"Convert JSON to clean block-style YAML. Handles nested objects, arrays and multi-line strings, tolerates JSON5-style comments and trailing commas, and runs entirely in your browser.\n\n[Try JSON to YAML Converter in your browser →](https://iotools.cloud/tool/json-to-yaml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonSource":{"type":"string","description":"JSON input"}},"required":["jsonSource"]},"examples":{"array_of_objects":{"summary":"Array of objects","value":{"jsonSource":"[\n  {\n    \"name\": \"John Doe\",\n    \"age\": 30,\n    \"city\": \"New York\",\n    \"email\": \"john@example.com\"\n  },\n  {\n    \"name\": \"Jane Doe\",\n    \"age\": 25,\n    \"city\": \"Los Angeles\",\n    \"email\": \"jane@example.com\"\n  }\n]"}},"nested_config_object":{"summary":"Nested config object","value":{"jsonSource":"{\"app\":{\"name\":\"iotools\",\"debug\":false,\"port\":8080},\"hosts\":[\"a.example.com\",\"b.example.com\"],\"empty\":{},\"note\":\"Ratio 3:1\"}"}},"json5_input_comments_trailing_comma_bare_keys":{"summary":"JSON5 input (comments, trailing comma, bare keys)","value":{"jsonSource":"{\n  // service definition\n  name: 'api',\n  replicas: 3,\n  tags: ['web', 'edge',],\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"array_of_objects":{"summary":"Array of objects","value":{"tool":"json-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"- name: John Doe\n  age: 30\n  city: New York\n  email: john@example.com\n- name: Jane Doe\n  age: 25\n  city: Los Angeles\n  email: jane@example.com"},"credits_used":5,"credits_remaining":null}},"nested_config_object":{"summary":"Nested config object","value":{"tool":"json-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"app:\n  name: iotools\n  debug: false\n  port: 8080\nhosts:\n  - a.example.com\n  - b.example.com\nempty: {}\nnote: Ratio 3:1"},"credits_used":5,"credits_remaining":null}},"json5_input_comments_trailing_comma_bare_keys":{"summary":"JSON5 input (comments, trailing comma, bare keys)","value":{"tool":"json-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"name: api\nreplicas: 3\ntags:\n  - web\n  - edge"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputYaml":{"type":"string","description":"YAML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/length-converter":{"post":{"operationId":"run_length_converter","summary":"Length Converter","tags":["Converters"],"description":"Convert length and distance between meters, kilometers, miles, feet, inches, yards, nautical miles, light-years, and 23 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Length Converter in your browser →](https://iotools.cloud/tool/length-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["meter","kilometer","centimeter","millimeter","micrometer","nanometer","picometer","femtometer","decimeter","decameter","hectometer","mile","yard","foot","inch","nautical_mile","light_year","astronomical_unit","parsec","angstrom","fathom","chain","rod","league","furlong","mile_scandinavian","league_nautical","hand","cubit","pica","point","mil"],"description":"Convert from"},"toUnit":{"enum":["all","meter","kilometer","centimeter","millimeter","micrometer","nanometer","picometer","femtometer","decimeter","decameter","hectometer","mile","yard","foot","inch","nautical_mile","light_year","astronomical_unit","parsec","angstrom","fathom","chain","rod","league","furlong","mile_scandinavian","league_nautical","hand","cubit","pica","point","mil"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_mile_to_every_unit":{"summary":"1 mile to every unit","value":{"value":"1","fromUnit":"mile","toUnit":"all","precision":"4"}},"100_centimeters_to_meter":{"summary":"100 centimeters to meter","value":{"value":"100","fromUnit":"centimeter","toUnit":"meter","precision":"2"}},"1_meter_to_every_unit":{"summary":"1 meter to every unit","value":{"value":"1","fromUnit":"meter","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_mile_to_every_unit":{"summary":"1 mile to every unit","value":{"tool":"length-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Meter (m)","value":"1609.344"},{"unit":"Kilometer (km)","value":"1.6093"},{"unit":"Centimeter (cm)","value":"160934.4"},{"unit":"Millimeter (mm)","value":"1609344"},{"unit":"Micrometer (μm)","value":"1609344000"},{"unit":"Nanometer (nm)","value":"1609344000000"},{"unit":"Picometer (pm)","value":"1.6093e+15"},{"unit":"Femtometer (fm)","value":"1.6093e+18"},{"unit":"Decimeter (dm)","value":"16093.44"},{"unit":"Decameter (dam)","value":"160.9344"},{"unit":"Hectometer (hm)","value":"16.0934"},{"unit":"Mile (mi)","value":"1"},{"unit":"Yard (yd)","value":"1760"},{"unit":"Foot (ft)","value":"5280"},{"unit":"Inch (in)","value":"63360"},{"unit":"Nautical Mile (nmi)","value":"0.869"},{"unit":"Light Year (ly)","value":"1.7011e-13"},{"unit":"Astronomical Unit (AU)","value":"0"},{"unit":"Parsec (pc)","value":"5.2155e-14"},{"unit":"Angstrom (Å)","value":"16093440000000"},{"unit":"Fathom (fth)","value":"880"},{"unit":"Chain (ch)","value":"80"},{"unit":"Rod (rd)","value":"320"},{"unit":"League (leag)","value":"0.3333"},{"unit":"Furlong (fur)","value":"8"},{"unit":"Scandinavian Mile (mil)","value":"0.1609"},{"unit":"Nautical League (ln)","value":"0.2897"},{"unit":"Hand (h)","value":"15840"},{"unit":"Cubit (cbt)","value":"3520"},{"unit":"Pica (pi)","value":"380160"},{"unit":"Point (pt)","value":"4561920"},{"unit":"Mil (mil)","value":"63360000"}]},"credits_used":5,"credits_remaining":null}},"100_centimeters_to_meter":{"summary":"100 centimeters to meter","value":{"tool":"length-converter","tool_version":"1.0.2","outputs":{"result":"1 Meter (m)","table":[]},"credits_used":5,"credits_remaining":null}},"1_meter_to_every_unit":{"summary":"1 meter to every unit","value":{"tool":"length-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Meter (m)","value":"1"},{"unit":"Kilometer (km)","value":"0.001"},{"unit":"Centimeter (cm)","value":"100"},{"unit":"Millimeter (mm)","value":"1000"},{"unit":"Micrometer (μm)","value":"1000000"},{"unit":"Nanometer (nm)","value":"1000000000"},{"unit":"Picometer (pm)","value":"1000000000000"},{"unit":"Femtometer (fm)","value":"999999999999999.9"},{"unit":"Decimeter (dm)","value":"10"},{"unit":"Decameter (dam)","value":"0.1"},{"unit":"Hectometer (hm)","value":"0.01"},{"unit":"Mile (mi)","value":"0.000621"},{"unit":"Yard (yd)","value":"1.093613"},{"unit":"Foot (ft)","value":"3.28084"},{"unit":"Inch (in)","value":"39.370079"},{"unit":"Nautical Mile (nmi)","value":"0.00054"},{"unit":"Light Year (ly)","value":"1.057001e-16"},{"unit":"Astronomical Unit (AU)","value":"6.684587e-12"},{"unit":"Parsec (pc)","value":"3.240779e-17"},{"unit":"Angstrom (Å)","value":"10000000000"},{"unit":"Fathom (fth)","value":"0.546807"},{"unit":"Chain (ch)","value":"0.04971"},{"unit":"Rod (rd)","value":"0.198839"},{"unit":"League (leag)","value":"0.000207"},{"unit":"Furlong (fur)","value":"0.004971"},{"unit":"Scandinavian Mile (mil)","value":"0.0001"},{"unit":"Nautical League (ln)","value":"0.00018"},{"unit":"Hand (h)","value":"9.84252"},{"unit":"Cubit (cbt)","value":"2.187227"},{"unit":"Pica (pi)","value":"236.220472"},{"unit":"Point (pt)","value":"2834.645669"},{"unit":"Mil (mil)","value":"39370.07874"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/letter-to-number-converter":{"post":{"operationId":"run_letter_to_number_converter","summary":"Letter to Number Converter","tags":["Converters"],"description":"Convert letters to numbers and back using A1Z26, A0Z25, ASCII, hexadecimal, binary or tap (knock) code — a quick decoder for puzzles, ciphers and escape rooms.\n\n[Try Letter to Number Converter in your browser →](https://iotools.cloud/tool/letter-to-number-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Input text"},"codeType":{"enum":["a1z26","a0z25","ascii","hex_ascii","binary_ascii","tap_code"],"description":"Code type"},"direction":{"enum":["text_to_number","number_to_text"],"description":"Direction"},"separator":{"enum":["space","comma","dash","none"],"description":"Output separator"}},"required":["codeType"]},"examples":{"a1z26_encode":{"summary":"A1Z26 — encode","value":{"text":"Hello World!","codeType":"a1z26","direction":"text_to_number","separator":"space"}},"a1z26_decode":{"summary":"A1Z26 — decode","value":{"text":"8 5 12 12 15","codeType":"a1z26","direction":"number_to_text","separator":"none"}},"ascii_encode":{"summary":"ASCII — encode","value":{"text":"Hi!","codeType":"ascii","direction":"text_to_number","separator":"comma"}},"hex_ascii_encode":{"summary":"Hex ASCII — encode","value":{"text":"Hi","codeType":"hex_ascii","direction":"text_to_number","separator":"space"}},"binary_ascii_decode":{"summary":"Binary ASCII — decode","value":{"text":"0b1001000 0b1101001","codeType":"binary_ascii","direction":"number_to_text","separator":"none"}},"tap_code_encode":{"summary":"Tap code — encode","value":{"text":"HI","codeType":"tap_code","direction":"text_to_number","separator":"space"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a1z26_encode":{"summary":"A1Z26 — encode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"8 5 12 12 15   23 15 18 12 4 !"},"credits_used":5,"credits_remaining":null}},"a1z26_decode":{"summary":"A1Z26 — decode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"HELLO"},"credits_used":5,"credits_remaining":null}},"ascii_encode":{"summary":"ASCII — encode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"72,105,33"},"credits_used":5,"credits_remaining":null}},"hex_ascii_encode":{"summary":"Hex ASCII — encode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"0x48 0x69"},"credits_used":5,"credits_remaining":null}},"binary_ascii_decode":{"summary":"Binary ASCII — decode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"Hi"},"credits_used":5,"credits_remaining":null}},"tap_code_encode":{"summary":"Tap code — encode","value":{"tool":"letter-to-number-converter","tool_version":"1.0.2","outputs":{"output":"23 24"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/leet-speak-converter":{"post":{"operationId":"run_leet_speak_converter","summary":"Leet Speak Converter","tags":["Converters"],"description":"Convert text to leet speak (1337) and decode leet back to plain text. Choose basic (numbers only), medium or extreme substitution levels, with optional randomized character variants and mixed casing. Runs entirely in your browser.\n\n[Try Leet Speak Converter in your browser →](https://iotools.cloud/tool/leet-speak-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"},"leetLevel":{"enum":["basic","medium","extreme"],"description":"Leet Level"},"randomizeVariants":{"type":"boolean","description":"Randomize character variants"},"randomCase":{"type":"boolean","description":"Random uppercase"}},"required":[]},"examples":{"basic_numbers_only":{"summary":"Basic (numbers only)","value":{"inputText":"Hello World","mode":"encode","leetLevel":"basic","randomizeVariants":"","randomCase":""}},"medium_numbers_symbols":{"summary":"Medium (numbers + symbols)","value":{"inputText":"Elite Hacker","mode":"encode","leetLevel":"medium","randomizeVariants":"","randomCase":""}},"leet_to_text_decode":{"summary":"Leet to Text (decode)","value":{"inputText":"H4ck3r","mode":"decode","leetLevel":"basic","randomizeVariants":"","randomCase":""}},"extreme_with_random_variants":{"summary":"Extreme with random variants","value":{"inputText":"Leet Hacker","mode":"encode","leetLevel":"extreme","randomizeVariants":"true","randomCase":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_numbers_only":{"summary":"Basic (numbers only)","value":{"tool":"leet-speak-converter","tool_version":"1.0.2","outputs":{"output":"H3110 W0r1d"},"credits_used":5,"credits_remaining":null}},"medium_numbers_symbols":{"summary":"Medium (numbers + symbols)","value":{"tool":"leet-speak-converter","tool_version":"1.0.2","outputs":{"output":"31173 #4(|<312"},"credits_used":5,"credits_remaining":null}},"leet_to_text_decode":{"summary":"Leet to Text (decode)","value":{"tool":"leet-speak-converter","tool_version":"1.0.2","outputs":{"output":"Hacker"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/list-converter":{"post":{"operationId":"run_list_converter","summary":"List Converter","tags":["Converters"],"description":"Convert a list between formats — newline, comma, semicolon, tab, pipe or space separated, JSON array, HTML/Markdown/numbered lists, or a SQL IN clause. Optionally trim, drop empty lines, remove duplicates and sort.\n\n[Try List Converter in your browser →](https://iotools.cloud/tool/list-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputList":{"type":"string","description":"Input List"},"inputFormat":{"enum":["newline","comma","semicolon","tab","pipe","space"],"description":"Input Format"},"outputFormat":{"enum":["newline","comma","semicolon","tab","pipe","space","json","html-ul","html-ol","markdown","numbered","sql"],"description":"Output Format"},"trimItems":{"type":"boolean","description":"Trim whitespace from each item"},"removeEmpty":{"type":"boolean","description":"Remove empty items"},"removeDuplicates":{"type":"boolean","description":"Remove duplicate items"},"sortItems":{"type":"boolean","description":"Sort items alphabetically"}},"required":[]},"examples":{"lines_to_comma_separated":{"summary":"Lines to comma-separated","value":{"inputList":"apple\nbanana\ncherry","inputFormat":"newline","outputFormat":"comma","trimItems":"true","removeEmpty":"true","removeDuplicates":"","sortItems":""}},"lines_to_json_array":{"summary":"Lines to JSON array","value":{"inputList":"apple\nbanana\ncherry","inputFormat":"newline","outputFormat":"json","trimItems":"true","removeEmpty":"true","removeDuplicates":"","sortItems":""}},"lines_to_numbered_list":{"summary":"Lines to numbered list","value":{"inputList":"apple\nbanana\ncherry","inputFormat":"newline","outputFormat":"numbered","trimItems":"true","removeEmpty":"true","removeDuplicates":"","sortItems":""}},"sql_in_clause_with_quote_escaping":{"summary":"SQL IN clause with quote escaping","value":{"inputList":"O'Brien\nSmith","inputFormat":"newline","outputFormat":"sql","trimItems":"true","removeEmpty":"true","removeDuplicates":"","sortItems":""}},"html_list_with_entity_escaping":{"summary":"HTML list with entity escaping","value":{"inputList":"a & b\n<tag>","inputFormat":"newline","outputFormat":"html-ul","trimItems":"true","removeEmpty":"true","removeDuplicates":"","sortItems":""}},"comma_input_dedupe_and_sort":{"summary":"Comma input, dedupe and sort","value":{"inputList":"banana, apple, banana, cherry","inputFormat":"comma","outputFormat":"newline","trimItems":"true","removeEmpty":"true","removeDuplicates":"true","sortItems":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"lines_to_comma_separated":{"summary":"Lines to comma-separated","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"apple, banana, cherry"},"credits_used":5,"credits_remaining":null}},"lines_to_json_array":{"summary":"Lines to JSON array","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"[\n  \"apple\",\n  \"banana\",\n  \"cherry\"\n]"},"credits_used":5,"credits_remaining":null}},"lines_to_numbered_list":{"summary":"Lines to numbered list","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"1. apple\n2. banana\n3. cherry"},"credits_used":5,"credits_remaining":null}},"sql_in_clause_with_quote_escaping":{"summary":"SQL IN clause with quote escaping","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"('O''Brien', 'Smith')"},"credits_used":5,"credits_remaining":null}},"html_list_with_entity_escaping":{"summary":"HTML list with entity escaping","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"<ul>\n  <li>a &amp; b</li>\n  <li>&lt;tag&gt;</li>\n</ul>"},"credits_used":5,"credits_remaining":null}},"comma_input_dedupe_and_sort":{"summary":"Comma input, dedupe and sort","value":{"tool":"list-converter","tool_version":"1.0.2","outputs":{"outputList":"apple\nbanana\ncherry"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputList":{"type":"string","description":"Converted List"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/luminance-illuminance-converter":{"post":{"operationId":"run_luminance_illuminance_converter","summary":"Luminance & Illuminance Converter","tags":["Converters"],"description":"Convert illuminance between lux, foot-candles, phot, millilux, and nox — or luminance between cd/m² (nits), foot-lamberts, stilb, lambert, and cd/ft². Enter one value, pick its unit, and see every equivalent in that family at once.\n\n[Try Luminance & Illuminance Converter in your browser →](https://iotools.cloud/tool/luminance-illuminance-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"quantity":{"enum":["illuminance","luminance"],"description":"Quantity"},"value":{"type":"number","description":"Amount"},"illuminanceUnit":{"enum":["lux","footcandle","phot","millilux","nox"],"description":"Unit"},"luminanceUnit":{"enum":["cdm2","footlambert","stilb","lambert","cdft2"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_lux_to_every_illuminance_unit_4_decimals":{"summary":"1 lux to every illuminance unit (4 decimals)","value":{"quantity":"illuminance","value":"1","illuminanceUnit":"lux","luminanceUnit":"cdm2","precision":"4"}},"500_lux_office_lighting_in_foot_candles_and_more_2_decimals":{"summary":"500 lux (office lighting) in foot-candles and more (2 decimals)","value":{"quantity":"illuminance","value":"500","illuminanceUnit":"lux","luminanceUnit":"cdm2","precision":"2"}},"300_cd_m_laptop_screen_to_every_luminance_unit_4_decimals":{"summary":"300 cd/m² (laptop screen) to every luminance unit (4 decimals)","value":{"quantity":"luminance","value":"300","illuminanceUnit":"lux","luminanceUnit":"cdm2","precision":"4"}},"100_foot_lamberts_to_cd_m_and_more_6_decimals":{"summary":"100 foot-lamberts to cd/m² and more (6 decimals)","value":{"quantity":"luminance","value":"100","illuminanceUnit":"lux","luminanceUnit":"footlambert","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_lux_to_every_illuminance_unit_4_decimals":{"summary":"1 lux to every illuminance unit (4 decimals)","value":{"tool":"luminance-illuminance-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Lux (lx)","value":"1"},{"unit":"Foot-candle (fc)","value":"0.0929"},{"unit":"Phot (ph)","value":"0.0001"},{"unit":"Millilux (mlx)","value":"1000"},{"unit":"Nox (nx)","value":"1000"}],"reference":[{"scene-source":"Moonless overcast night sky","typical-value":"0.0001 lx"},{"scene-source":"Full moon on a clear night","typical-value":"0.25 lx"},{"scene-source":"Living room (residential)","typical-value":"50 lx"},{"scene-source":"Office / classroom lighting","typical-value":"320 lx"},{"scene-source":"Overcast daylight","typical-value":"1,000 lx"},{"scene-source":"Full daylight (indirect sun)","typical-value":"10,000 lx"},{"scene-source":"Direct sunlight at noon","typical-value":"100,000 lx"}]},"credits_used":5,"credits_remaining":null}},"500_lux_office_lighting_in_foot_candles_and_more_2_decimals":{"summary":"500 lux (office lighting) in foot-candles and more (2 decimals)","value":{"tool":"luminance-illuminance-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Lux (lx)","value":"500"},{"unit":"Foot-candle (fc)","value":"46.45"},{"unit":"Phot (ph)","value":"0.05"},{"unit":"Millilux (mlx)","value":"500000"},{"unit":"Nox (nx)","value":"500000"}],"reference":[{"scene-source":"Moonless overcast night sky","typical-value":"0.0001 lx"},{"scene-source":"Full moon on a clear night","typical-value":"0.25 lx"},{"scene-source":"Living room (residential)","typical-value":"50 lx"},{"scene-source":"Office / classroom lighting","typical-value":"320 lx"},{"scene-source":"Overcast daylight","typical-value":"1,000 lx"},{"scene-source":"Full daylight (indirect sun)","typical-value":"10,000 lx"},{"scene-source":"Direct sunlight at noon","typical-value":"100,000 lx"}]},"credits_used":5,"credits_remaining":null}},"300_cd_m_laptop_screen_to_every_luminance_unit_4_decimals":{"summary":"300 cd/m² (laptop screen) to every luminance unit (4 decimals)","value":{"tool":"luminance-illuminance-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Candela per m² · Nit (cd/m²)","value":"300"},{"unit":"Foot-lambert (fL)","value":"87.5591"},{"unit":"Stilb (sb)","value":"0.03"},{"unit":"Lambert (L)","value":"0.0942"},{"unit":"Candela per ft² (cd/ft²)","value":"27.8709"}],"reference":[{"scene-source":"Starless night sky","typical-value":"0.0001 cd/m²"},{"scene-source":"Typical laptop / monitor screen","typical-value":"300 cd/m²"},{"scene-source":"HDR smartphone (peak brightness)","typical-value":"1,000 cd/m²"},{"scene-source":"Professional HDR mastering display","typical-value":"4,000 cd/m²"},{"scene-source":"Clear blue sky (zenith)","typical-value":"8,000 cd/m²"},{"scene-source":"Bright fluorescent tube surface","typical-value":"10,000 cd/m²"},{"scene-source":"Sun's surface","typical-value":"1.6×10⁹ cd/m²"}]},"credits_used":5,"credits_remaining":null}},"100_foot_lamberts_to_cd_m_and_more_6_decimals":{"summary":"100 foot-lamberts to cd/m² and more (6 decimals)","value":{"tool":"luminance-illuminance-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Candela per m² · Nit (cd/m²)","value":"342.625578"},{"unit":"Foot-lambert (fL)","value":"100"},{"unit":"Stilb (sb)","value":"0.034263"},{"unit":"Lambert (L)","value":"0.107639"},{"unit":"Candela per ft² (cd/ft²)","value":"31.830989"}],"reference":[{"scene-source":"Starless night sky","typical-value":"0.0001 cd/m²"},{"scene-source":"Typical laptop / monitor screen","typical-value":"300 cd/m²"},{"scene-source":"HDR smartphone (peak brightness)","typical-value":"1,000 cd/m²"},{"scene-source":"Professional HDR mastering display","typical-value":"4,000 cd/m²"},{"scene-source":"Clear blue sky (zenith)","typical-value":"8,000 cd/m²"},{"scene-source":"Bright fluorescent tube surface","typical-value":"10,000 cd/m²"},{"scene-source":"Sun's surface","typical-value":"1.6×10⁹ cd/m²"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]},"reference":{"type":"array","description":"Typical real-world values","items":{"type":"object","properties":{"scene-source":{"type":"string","description":"Scene / source"},"typical-value":{"type":"string","description":"Typical value"}}},"x-iotools-columns":["scene-source","typical-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-to-slack-converter":{"post":{"operationId":"run_markdown_to_slack_converter","summary":"Markdown to Slack Converter","tags":["Converters"],"description":"Convert Markdown to Slack mrkdwn and back. Rewrites bold (**text** ↔ *text*), italics, strikethrough, links (&lt;url|text> ↔ [text](url)), headings and bullet lists between the two dialects, leaving inline and fenced code untouched. Runs entirely in your browser.\n\n[Try Markdown to Slack Converter in your browser →](https://iotools.cloud/tool/markdown-to-slack-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdownInput":{"type":"string","description":"Input"},"direction":{"enum":["md-to-slack","slack-to-md"],"description":"Direction"},"headingStyle":{"enum":["bold","plain","keep"],"description":"Heading style"},"bulletChar":{"enum":["•","-","·"],"description":"Bullet character"},"convertLinks":{"type":"boolean","description":"Convert links between [text](url) and &lt;url|text>"},"stripUnsupported":{"type":"boolean","description":"Strip unsupported Markdown (images, HR, tables)"}},"required":[]},"examples":{"markdown_slack":{"summary":"Markdown → Slack","value":{"markdownInput":"# Release Notes\n\nWe shipped **a major update** with *exciting* tweaks and some ~~old~~ new features.\n\n- **Fast**: 40% quicker\n- Read the [runbook](https://example.com/runbook) first\n- Inline `code()` stays put","direction":"md-to-slack","headingStyle":"bold","bulletChar":"•","convertLinks":"true","stripUnsupported":""}},"slack_markdown":{"summary":"Slack → Markdown","value":{"markdownInput":"*Release Notes*\n\nWe shipped *a major update* with _exciting_ tweaks and some ~old~ new features.\n\n• *Fast*: 40% quicker\n• Read the <https://example.com/runbook|runbook> first\n• Inline `code()` stays put","direction":"slack-to-md","headingStyle":"bold","bulletChar":"•","convertLinks":"true","stripUnsupported":""}},"keep_headings_dash_bullets":{"summary":"Keep headings & dash bullets","value":{"markdownInput":"## Setup\n\n- Install\n- Configure","direction":"md-to-slack","headingStyle":"keep","bulletChar":"-","convertLinks":"true","stripUnsupported":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"markdown_slack":{"summary":"Markdown → Slack","value":{"tool":"markdown-to-slack-converter","tool_version":"1.0.2","outputs":{"outputText":"*Release Notes*\n\nWe shipped *a major update* with _exciting_ tweaks and some ~old~ new features.\n\n• *Fast*: 40% quicker\n• Read the <https://example.com/runbook|runbook> first\n• Inline `code()` stays put"},"credits_used":5,"credits_remaining":null}},"slack_markdown":{"summary":"Slack → Markdown","value":{"tool":"markdown-to-slack-converter","tool_version":"1.0.2","outputs":{"outputText":"**Release Notes**\n\nWe shipped **a major update** with *exciting* tweaks and some ~~old~~ new features.\n\n- **Fast**: 40% quicker\n- Read the [runbook](https://example.com/runbook) first\n- Inline `code()` stays put"},"credits_used":5,"credits_remaining":null}},"keep_headings_dash_bullets":{"summary":"Keep headings & dash bullets","value":{"tool":"markdown-to-slack-converter","tool_version":"1.0.2","outputs":{"outputText":"## Setup\n\n- Install\n- Configure"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/military-time-converter":{"post":{"operationId":"run_military_time_converter","summary":"Military Time Converter","tags":["Converters"],"description":"Convert a time between 12-hour, 24-hour and military (numeric) formats, plus the spoken military form (\"Fourteen Thirty Hours\"). The format is auto-detected — paste 2:30 PM, 14:30 or 1430 and get all four back at once. Leave blank to use the current time.\n\n[Try Military Time Converter in your browser →](https://iotools.cloud/tool/military-time-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"time":{"type":"string","description":"Time"}},"required":[]},"examples":{"12_hour_to_military_time":{"summary":"12-hour to military time","value":{"time":"2:30 PM"}},"24_hour_to_military_time_on_the_hour":{"summary":"24-hour to military time (on the hour)","value":{"time":"09:00"}},"military_numeric_to_12_24_hour":{"summary":"Military numeric to 12-/24-hour","value":{"time":"2359"}},"military_numeric_with_seconds":{"summary":"Military numeric with seconds","value":{"time":"093045"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12_hour_to_military_time":{"summary":"12-hour to military time","value":{"tool":"military-time-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected format","value":"12-hour"},{"property":"12-hour","value":"2:30 PM"},{"property":"24-hour","value":"14:30"},{"property":"Military time","value":"1430"},{"property":"Military time (spoken)","value":"Fourteen Thirty Hours"}]},"credits_used":5,"credits_remaining":null}},"24_hour_to_military_time_on_the_hour":{"summary":"24-hour to military time (on the hour)","value":{"tool":"military-time-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected format","value":"24-hour"},{"property":"12-hour","value":"9:00 AM"},{"property":"24-hour","value":"09:00"},{"property":"Military time","value":"0900"},{"property":"Military time (spoken)","value":"Zero Nine Hundred Hours"}]},"credits_used":5,"credits_remaining":null}},"military_numeric_to_12_24_hour":{"summary":"Military numeric to 12-/24-hour","value":{"tool":"military-time-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected format","value":"Military (numeric)"},{"property":"12-hour","value":"11:59 PM"},{"property":"24-hour","value":"23:59"},{"property":"Military time","value":"2359"},{"property":"Military time (spoken)","value":"Twenty-Three Fifty-Nine Hours"}]},"credits_used":5,"credits_remaining":null}},"military_numeric_with_seconds":{"summary":"Military numeric with seconds","value":{"tool":"military-time-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected format","value":"Military (numeric)"},{"property":"12-hour","value":"9:30:45 AM"},{"property":"24-hour","value":"09:30:45"},{"property":"Military time","value":"093045"},{"property":"Military time (spoken)","value":"Zero Nine Thirty Hours"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mjml-to-responsive-email-html-converter":{"post":{"operationId":"run_mjml_to_responsive_email_html_converter","summary":"MJML to Responsive Email HTML Converter","tags":["Converters"],"description":"Compile MJML markup into production-ready, responsive HTML email. Paste an MJML document and get clean HTML with Outlook (MSO) conditionals, inline styles and media queries — choose beautified, minified or raw output and a validation level. Runs entirely in your browser.\n\n[Try MJML to Responsive Email HTML Converter in your browser →](https://iotools.cloud/tool/mjml-to-responsive-email-html-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mjmlInput":{"type":"string","description":"MJML Source"},"outputStyle":{"enum":["beautify","minify","raw"],"description":"Output Style"},"validationLevel":{"enum":["soft","strict","skip"],"description":"Validation"},"keepComments":{"type":"boolean","description":"Keep HTML comments"}},"required":[]},"examples":{"hello_world_beautified":{"summary":"Hello world (beautified)","value":{"mjmlInput":"<mjml><mj-body><mj-section><mj-column><mj-text>Hello world</mj-text></mj-column></mj-section></mj-body></mjml>","outputStyle":"beautify","validationLevel":"soft","keepComments":""}},"hello_world_minified":{"summary":"Hello world (minified)","value":{"mjmlInput":"<mjml><mj-body><mj-section><mj-column><mj-text>Hello world</mj-text></mj-column></mj-section></mj-body></mjml>","outputStyle":"minify","validationLevel":"soft","keepComments":""}},"invalid_mjml_strict_validation_error_no_html":{"summary":"Invalid MJML (strict validation → error, no HTML)","value":{"mjmlInput":"<mjml><mj-body><mj-button>Click</mj-button></mj-body></mjml>","outputStyle":"beautify","validationLevel":"strict","keepComments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello_world_beautified":{"summary":"Hello world (beautified)","value":{"tool":"mjml-to-responsive-email-html-converter","tool_version":"1.0.2","outputs":{"html":"<!doctype html>\n<html lang=\"und\" dir=\"auto\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n\n<head>\n  <title></title>\n  <!--[if !mso]><!-->\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <!--<![endif]-->\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <style type=\"text/css\">\n    #outlook a {\n      padding: 0;\n    }\n\n    body {\n      margin: 0;\n      padding: 0;\n      -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n    }\n\n    table,\n    td {\n      border-collapse: collapse;\n      mso-table-lspace: 0pt;\n      mso-table-rspace: 0pt;\n    }\n\n    img {\n      border: 0;\n      height: auto;\n      line-height: 100%;\n      outline: none;\n      text-decoration: none;\n      -ms-interpolation-mode: bicubic;\n    }\n\n    p {\n      display: block;\n      margin: 13px 0;\n    }\n  </style>\n  <!--[if mso]>\n    <noscript>\n    <xml>\n    <o:OfficeDocumentSettings>\n      <o:AllowPNG/>\n      <o:PixelsPerInch>96</o:PixelsPerInch>\n    </o:OfficeDocumentSettings>\n    </xml>\n    </noscript>\n    <![endif]-->\n  <!--[if lte mso 11]>\n    <style type=\"text/css\">\n      .mj-outlook-group-fix { width:100% !important; }\n    </style>\n    <![endif]-->\n  <!--[if !mso]><!-->\n  <link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\">\n  <style type=\"text/css\">\n    @import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);\n  </style>\n  <!--<![endif]-->\n  <style type=\"text/css\">\n    @media only screen and (min-width:480px) {\n      .mj-column-per-100 {\n        width: 100% !important;\n        max-width: 100%;\n      }\n    }\n  </style>\n  <style media=\"screen and (min-width:480px)\">\n    .moz-text-html .mj-column-per-100 {\n      width: 100% !important;\n      max-width: 100%;\n    }\n  </style>\n</head>\n\n<body style=\"word-spacing:normal;\">\n  <div aria-roledescription=\"email\" style=\"\" role=\"article\" lang=\"und\" dir=\"auto\">\n    <!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]-->\n    <div style=\"margin:0px auto;max-width:600px;\">\n      <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\">\n        <tbody>\n          <tr>\n            <td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\">\n              <!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]-->\n              <div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\">\n                <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\">\n                  <tbody>\n                    <tr>\n                      <td align=\"left\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\">\n                        <div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:left;color:#000000;\">Hello world</div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n              <!--[if mso | IE]></td></tr></table><![endif]-->\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n    <!--[if mso | IE]></td></tr></table><![endif]-->\n  </div>\n</body>\n\n</html>","messages":[]},"credits_used":5,"credits_remaining":null}},"hello_world_minified":{"summary":"Hello world (minified)","value":{"tool":"mjml-to-responsive-email-html-converter","tool_version":"1.0.2","outputs":{"html":"<!doctype html><html lang=\"und\" dir=\"auto\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\"><head><title></title><!--[if !mso]><!--><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><!--<![endif]--><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><style type=\"text/css\">#outlook a { padding:0; }\n      body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }\n      table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }\n      img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }\n      p { display:block;margin:13px 0; }</style><!--[if mso]>\n    <noscript>\n    <xml>\n    <o:OfficeDocumentSettings>\n      <o:AllowPNG/>\n      <o:PixelsPerInch>96</o:PixelsPerInch>\n    </o:OfficeDocumentSettings>\n    </xml>\n    </noscript>\n    <![endif]--><!--[if lte mso 11]>\n    <style type=\"text/css\">\n      .mj-outlook-group-fix { width:100% !important; }\n    </style>\n    <![endif]--><!--[if !mso]><!--><link href=\"https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700\" rel=\"stylesheet\" type=\"text/css\"><style type=\"text/css\">@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,400,500,700);</style><!--<![endif]--><style type=\"text/css\">@media only screen and (min-width:480px) {\n        .mj-column-per-100 { width:100% !important; max-width: 100%; }\n      }</style><style media=\"screen and (min-width:480px)\">.moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }</style></head><body style=\"word-spacing:normal;\"><div aria-roledescription=\"email\" role=\"article\" lang=\"und\" dir=\"auto\"><!--[if mso | IE]><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"\" role=\"presentation\" style=\"width:600px;\" width=\"600\" ><tr><td style=\"line-height:0px;font-size:0px;mso-line-height-rule:exactly;\"><![endif]--><div style=\"margin:0px auto;max-width:600px;\"><table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width:100%;\"><tbody><tr><td style=\"direction:ltr;font-size:0px;padding:20px 0;text-align:center;\"><!--[if mso | IE]><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td class=\"\" style=\"vertical-align:top;width:600px;\" ><![endif]--><div class=\"mj-column-per-100 mj-outlook-group-fix\" style=\"font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"vertical-align:top;\" width=\"100%\"><tbody><tr><td align=\"left\" style=\"font-size:0px;padding:10px 25px;word-break:break-word;\"><div style=\"font-family:Ubuntu, Helvetica, Arial, sans-serif;font-size:13px;line-height:1;text-align:left;color:#000000;\">Hello world</div></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></td></tr></tbody></table></div><!--[if mso | IE]></td></tr></table><![endif]--></div></body></html>","messages":[]},"credits_used":5,"credits_remaining":null}},"invalid_mjml_strict_validation_error_no_html":{"summary":"Invalid MJML (strict validation → error, no HTML)","value":{"tool":"mjml-to-responsive-email-html-converter","tool_version":"1.0.2","outputs":{"html":"","messages":[{"level":"Error","line":"1","element":"mj-button","message":"mj-button cannot be used inside mj-body, only inside: mj-attributes, mj-column, mj-hero"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"html":{"type":"string","description":"Responsive Email HTML"},"messages":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"line":{"type":"string","description":"Line"},"element":{"type":"string","description":"Element"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["level","line","element","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mo-to-po":{"post":{"operationId":"run_mo_to_po","summary":"MO to PO Converter","tags":["Converters"],"description":"Decompile a binary GNU gettext .mo file back into readable .po translation source. Runs entirely in your browser — no upload.\n\n[Try MO to PO Converter in your browser →](https://iotools.cloud/tool/mo-to-po/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"MO file"}},"required":["file"]},"examples":{"two_entry_catalog":{"summary":"Two-entry catalog","value":{"file":"data:application/octet-stream;base64,3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAABwAAAE0AAAAFAAAAVQAAACgAAABbAAAABgAAAIQAAAAEAAAAiwAAAABHb29kYnllAEhlbGxvAENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAoAQWRpw7NzAEhvbGEA"}},"plural_forms_and_msgctxt":{"summary":"Plural forms and msgctxt","value":{"file":"data:application/octet-stream;base64,3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAAEwAAAE0AAAAJAAAAYQAAACgAAABrAAAAFwAAAJQAAAAFAAAArAAAAABPbmUgYXBwbGUAJWQgYXBwbGVzAG1lbnUET3BlbgBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKAFVuYSBtYW56YW5hACVkIG1hbnphbmFzAEFicmlyAA=="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_entry_catalog":{"summary":"Two-entry catalog","value":{"tool":"mo-to-po","tool_version":"1.0.2","outputs":{"po":"msgid \"\"\nmsgstr \"Content-Type: text/plain; charset=UTF-8\\n\"\n\nmsgid \"Goodbye\"\nmsgstr \"Adiós\"\n\nmsgid \"Hello\"\nmsgstr \"Hola\"\n"},"credits_used":5,"credits_remaining":null}},"plural_forms_and_msgctxt":{"summary":"Plural forms and msgctxt","value":{"tool":"mo-to-po","tool_version":"1.0.2","outputs":{"po":"msgid \"\"\nmsgstr \"Content-Type: text/plain; charset=UTF-8\\n\"\n\nmsgid \"One apple\"\nmsgid_plural \"%d apples\"\nmsgstr[0] \"Una manzana\"\nmsgstr[1] \"%d manzanas\"\n\nmsgctxt \"menu\"\nmsgid \"Open\"\nmsgstr \"Abrir\"\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"po":{"type":"string","description":"PO Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/morse-code-translator":{"post":{"operationId":"run_morse_code_translator","summary":"Morse Code Translator","tags":["Converters"],"description":"Translate text to Morse code and Morse code back to text. Supports the International (ITU) Morse alphabet: letters A-Z, digits 0-9, and common punctuation. Words are separated by a slash, letters by a space.\n\n[Try Morse Code Translator in your browser →](https://iotools.cloud/tool/morse-code-translator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"morseMode":{"enum":["text-to-morse","morse-to-text"],"description":"Direction"},"inputText":{"type":"string","description":"Input"}},"required":[]},"examples":{"text_to_morse":{"summary":"Text to Morse","value":{"morseMode":"text-to-morse","inputText":"Hello World!"}},"morse_to_text":{"summary":"Morse to Text","value":{"morseMode":"morse-to-text","inputText":".... . .-.. .-.. --- / .-- --- .-. .-.. -.. -.-.--"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"text_to_morse":{"summary":"Text to Morse","value":{"tool":"morse-code-translator","tool_version":"1.0.2","outputs":{"outputText":".... . .-.. .-.. --- / .-- --- .-. .-.. -.. -.-.--"},"credits_used":5,"credits_remaining":null}},"morse_to_text":{"summary":"Morse to Text","value":{"tool":"morse-code-translator","tool_version":"1.0.2","outputs":{"outputText":"HELLO WORLD!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/msgpack-to-json-converter":{"post":{"operationId":"run_msgpack_to_json_converter","summary":"MessagePack to JSON Converter","tags":["Converters"],"description":"Decode MessagePack binary data (hex or Base64) to readable JSON, or encode JSON to compact MessagePack bytes. Shows the size saving over JSON. Runs entirely in your browser.\n\n[Try MessagePack to JSON Converter in your browser →](https://iotools.cloud/tool/msgpack-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["decode","encode"],"description":"Mode"},"inputFormat":{"enum":["hex","base64"],"description":"Input Format"},"input":{"type":"string","description":"Input"}},"required":[]},"examples":{"encode_nested_object_to_hex":{"summary":"Encode nested object to hex","value":{"mode":"encode","outputFormat":"hex","input":"{\"user\":{\"name\":\"Alice\",\"age\":30},\"tags\":[\"admin\",\"dev\"]}"}},"decode_nested_object_from_hex":{"summary":"Decode nested object from hex","value":{"mode":"decode","inputFormat":"hex","input":"82a47573657282a46e616d65a5416c696365a36167651ea47461677392a561646d696ea3646576"}},"encode_object_to_base64":{"summary":"Encode object to Base64","value":{"mode":"encode","outputFormat":"base64","input":"{\"name\":\"Alice\",\"age\":30}"}},"decode_from_base64":{"summary":"Decode from Base64","value":{"mode":"decode","inputFormat":"base64","input":"gqRuYW1lpUFsaWNlo2FnZR4="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_nested_object_to_hex":{"summary":"Encode nested object to hex","value":{"tool":"msgpack-to-json-converter","tool_version":"1.0.2","outputs":{"output":"82a47573657282a46e616d65a5416c696365a36167651ea47461677392a561646d696ea3646576","stats":[{"metric":"MessagePack size","value":"39 bytes"},{"metric":"JSON size","value":"57 bytes"},{"metric":"MessagePack is smaller by","value":"31.6%"}]},"credits_used":5,"credits_remaining":null}},"decode_nested_object_from_hex":{"summary":"Decode nested object from hex","value":{"tool":"msgpack-to-json-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"user\": {\n    \"name\": \"Alice\",\n    \"age\": 30\n  },\n  \"tags\": [\n    \"admin\",\n    \"dev\"\n  ]\n}","stats":[{"metric":"MessagePack size","value":"39 bytes"},{"metric":"JSON size","value":"94 bytes"},{"metric":"MessagePack is smaller by","value":"58.5%"}]},"credits_used":5,"credits_remaining":null}},"encode_object_to_base64":{"summary":"Encode object to Base64","value":{"tool":"msgpack-to-json-converter","tool_version":"1.0.2","outputs":{"output":"gqRuYW1lpUFsaWNlo2FnZR4=","stats":[{"metric":"MessagePack size","value":"17 bytes"},{"metric":"JSON size","value":"25 bytes"},{"metric":"MessagePack is smaller by","value":"32.0%"}]},"credits_used":5,"credits_remaining":null}},"decode_from_base64":{"summary":"Decode from Base64","value":{"tool":"msgpack-to-json-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"Alice\",\n  \"age\": 30\n}","stats":[{"metric":"MessagePack size","value":"17 bytes"},{"metric":"JSON size","value":"34 bytes"},{"metric":"MessagePack is smaller by","value":"50.0%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputFormat":{"enum":["hex","base64"],"description":"Output Format"},"output":{"type":"string","description":"Result"},"stats":{"type":"array","description":"Size Comparison","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/musical-interval-converter":{"post":{"operationId":"run_musical_interval_converter","summary":"Musical Interval Converter","tags":["Converters"],"description":"Convert between semitones, cents and frequency ratio for any musical interval, and name the interval (Perfect 5th, Major 3rd…). Shows an equal-temperament vs just-intonation comparison and a detune (cents-to-frequency) calculator.\n\n[Try Musical Interval Converter in your browser →](https://iotools.cloud/tool/musical-interval-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputType":{"enum":["semitones","cents","ratio"],"description":"I'm entering"},"value":{"type":"number","description":"Value"},"precision":{"enum":["2","4","6","8"],"description":"Decimal precision"},"baseFreq":{"type":"number","description":"Base frequency (Hz)"},"detuneCents":{"type":"number","description":"Detune (cents)"}},"required":[]},"examples":{"perfect_fifth_7_semitones":{"summary":"Perfect fifth (7 semitones)","value":{"inputType":"semitones","value":"7","precision":"4","baseFreq":"440","detuneCents":"0"}},"octave_from_a_2_1_ratio":{"summary":"Octave from a 2:1 ratio","value":{"inputType":"ratio","value":"2","precision":"4","baseFreq":"440","detuneCents":"0"}},"major_third_from_cents_plus_a_50_detune":{"summary":"Major third from cents, plus a +50¢ detune","value":{"inputType":"cents","value":"400","precision":"2","baseFreq":"440","detuneCents":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"perfect_fifth_7_semitones":{"summary":"Perfect fifth (7 semitones)","value":{"tool":"musical-interval-converter","tool_version":"1.0.2","outputs":{"semitones":"7","cents":"700","ratio":"1.4983","intervalName":"Perfect 5th (P5)","resultFreq":"440","tuningTable":[{"system":"Equal Temperament — Perfect 5th (P5)","cents":"700","ratio":"1.4983"},{"system":"Just Intonation — Perfect 5th (P5)","cents":"701.955","ratio":"3/2 (1.5)"},{"system":"Difference (JI − ET)","cents":"+1.955 ¢","ratio":"1.0011"}],"referenceChart":[{"semitones":"0","cents":"0","ratio-et":"1","interval":"Perfect Unison (P1)"},{"semitones":"1","cents":"100","ratio-et":"1.0595","interval":"Minor 2nd (m2)"},{"semitones":"2","cents":"200","ratio-et":"1.1225","interval":"Major 2nd (M2)"},{"semitones":"3","cents":"300","ratio-et":"1.1892","interval":"Minor 3rd (m3)"},{"semitones":"4","cents":"400","ratio-et":"1.2599","interval":"Major 3rd (M3)"},{"semitones":"5","cents":"500","ratio-et":"1.3348","interval":"Perfect 4th (P4)"},{"semitones":"6","cents":"600","ratio-et":"1.4142","interval":"Tritone (TT)"},{"semitones":"7","cents":"700","ratio-et":"1.4983","interval":"Perfect 5th (P5)"},{"semitones":"8","cents":"800","ratio-et":"1.5874","interval":"Minor 6th (m6)"},{"semitones":"9","cents":"900","ratio-et":"1.6818","interval":"Major 6th (M6)"},{"semitones":"10","cents":"1000","ratio-et":"1.7818","interval":"Minor 7th (m7)"},{"semitones":"11","cents":"1100","ratio-et":"1.8877","interval":"Major 7th (M7)"},{"semitones":"12","cents":"1200","ratio-et":"2","interval":"Perfect Octave (P8)"}]},"credits_used":5,"credits_remaining":null}},"octave_from_a_2_1_ratio":{"summary":"Octave from a 2:1 ratio","value":{"tool":"musical-interval-converter","tool_version":"1.0.2","outputs":{"semitones":"12","cents":"1200","ratio":"2","intervalName":"Perfect Octave (P8)","resultFreq":"440","tuningTable":[{"system":"Equal Temperament — Perfect Octave (P8)","cents":"1200","ratio":"2"},{"system":"Just Intonation — Perfect Octave (P8)","cents":"1200","ratio":"2/1 (2)"},{"system":"Difference (JI − ET)","cents":"+0 ¢","ratio":"1"}],"referenceChart":[{"semitones":"0","cents":"0","ratio-et":"1","interval":"Perfect Unison (P1)"},{"semitones":"1","cents":"100","ratio-et":"1.0595","interval":"Minor 2nd (m2)"},{"semitones":"2","cents":"200","ratio-et":"1.1225","interval":"Major 2nd (M2)"},{"semitones":"3","cents":"300","ratio-et":"1.1892","interval":"Minor 3rd (m3)"},{"semitones":"4","cents":"400","ratio-et":"1.2599","interval":"Major 3rd (M3)"},{"semitones":"5","cents":"500","ratio-et":"1.3348","interval":"Perfect 4th (P4)"},{"semitones":"6","cents":"600","ratio-et":"1.4142","interval":"Tritone (TT)"},{"semitones":"7","cents":"700","ratio-et":"1.4983","interval":"Perfect 5th (P5)"},{"semitones":"8","cents":"800","ratio-et":"1.5874","interval":"Minor 6th (m6)"},{"semitones":"9","cents":"900","ratio-et":"1.6818","interval":"Major 6th (M6)"},{"semitones":"10","cents":"1000","ratio-et":"1.7818","interval":"Minor 7th (m7)"},{"semitones":"11","cents":"1100","ratio-et":"1.8877","interval":"Major 7th (M7)"},{"semitones":"12","cents":"1200","ratio-et":"2","interval":"Perfect Octave (P8)"}]},"credits_used":5,"credits_remaining":null}},"major_third_from_cents_plus_a_50_detune":{"summary":"Major third from cents, plus a +50¢ detune","value":{"tool":"musical-interval-converter","tool_version":"1.0.2","outputs":{"semitones":"4","cents":"400","ratio":"1.26","intervalName":"Major 3rd (M3)","resultFreq":"452.89","tuningTable":[{"system":"Equal Temperament — Major 3rd (M3)","cents":"400","ratio":"1.26"},{"system":"Just Intonation — Major 3rd (M3)","cents":"386.31","ratio":"5/4 (1.25)"},{"system":"Difference (JI − ET)","cents":"−13.69 ¢","ratio":"0.99"}],"referenceChart":[{"semitones":"0","cents":"0","ratio-et":"1","interval":"Perfect Unison (P1)"},{"semitones":"1","cents":"100","ratio-et":"1.06","interval":"Minor 2nd (m2)"},{"semitones":"2","cents":"200","ratio-et":"1.12","interval":"Major 2nd (M2)"},{"semitones":"3","cents":"300","ratio-et":"1.19","interval":"Minor 3rd (m3)"},{"semitones":"4","cents":"400","ratio-et":"1.26","interval":"Major 3rd (M3)"},{"semitones":"5","cents":"500","ratio-et":"1.33","interval":"Perfect 4th (P4)"},{"semitones":"6","cents":"600","ratio-et":"1.41","interval":"Tritone (TT)"},{"semitones":"7","cents":"700","ratio-et":"1.5","interval":"Perfect 5th (P5)"},{"semitones":"8","cents":"800","ratio-et":"1.59","interval":"Minor 6th (m6)"},{"semitones":"9","cents":"900","ratio-et":"1.68","interval":"Major 6th (M6)"},{"semitones":"10","cents":"1000","ratio-et":"1.78","interval":"Minor 7th (m7)"},{"semitones":"11","cents":"1100","ratio-et":"1.89","interval":"Major 7th (M7)"},{"semitones":"12","cents":"1200","ratio-et":"2","interval":"Perfect Octave (P8)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"semitones":{"type":"string","description":"Semitones"},"cents":{"type":"string","description":"Cents"},"ratio":{"type":"string","description":"Frequency ratio"},"intervalName":{"type":"string","description":"Interval name"},"resultFreq":{"type":"string","description":"Detuned frequency (Hz)"},"tuningTable":{"type":"array","items":{"type":"object","properties":{"system":{"type":"string","description":"System"},"cents":{"type":"string","description":"Cents"},"ratio":{"type":"string","description":"Ratio"}}},"x-iotools-columns":["system","cents","ratio"]},"referenceChart":{"type":"array","items":{"type":"object","properties":{"semitones":{"type":"string","description":"Semitones"},"cents":{"type":"string","description":"Cents"},"ratio-et":{"type":"string","description":"Ratio (ET)"},"interval":{"type":"string","description":"Interval"}}},"x-iotools-columns":["semitones","cents","ratio-et","interval"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/musical-note-frequency-generator":{"post":{"operationId":"run_musical_note_frequency_generator","summary":"Musical Note Frequency Generator","tags":["Converters"],"description":"Convert between musical note names (A4, C#3, Bb2...) and their frequency in Hz, using 12-tone equal temperament. Get the MIDI note number, wavelength in air, cents deviation for off-pitch frequencies, and a full reference table for the surrounding octave. Supports any A4 tuning reference (440 Hz standard, 432, 415 Baroque, 444, or custom).\n\n[Try Musical Note Frequency Generator in your browser →](https://iotools.cloud/tool/musical-note-frequency-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["note","freq"],"description":"Convert"},"refHz":{"type":"number","description":"A4 Reference (Hz)","minimum":100,"maximum":1000},"noteName":{"type":"string","description":"Note"},"inputFreq":{"type":"number","description":"Frequency (Hz)","minimum":8,"maximum":20000}},"required":[]},"examples":{"a4_at_standard_440_hz":{"summary":"A4 at standard 440 Hz","value":{"mode":"note","refHz":"440","noteName":"A4","inputFreq":"440"}},"c_3_at_432_hz_tuning":{"summary":"C#3 at 432 Hz tuning","value":{"mode":"note","refHz":"432","noteName":"C#3","inputFreq":"440"}},"450_hz_nearest_note_standard_tuning":{"summary":"450 Hz → nearest note (standard tuning)","value":{"mode":"freq","refHz":"440","noteName":"A4","inputFreq":"450"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a4_at_standard_440_hz":{"summary":"A4 at standard 440 Hz","value":{"tool":"musical-note-frequency-generator","tool_version":"1.0.2","outputs":{"resultNoteName":"A4","resultFrequency":"440.00 Hz","midiNote":"69","wavelength":"77.955 cm","centsOffset":"+0.00 ¢ from A4","octaveTable":[{"note":"C4","frequency":"261.63 Hz","midi":"60","wavelength":"1.3110 m"},{"note":"C#4","frequency":"277.18 Hz","midi":"61","wavelength":"1.2375 m"},{"note":"D4","frequency":"293.66 Hz","midi":"62","wavelength":"1.1680 m"},{"note":"D#4","frequency":"311.13 Hz","midi":"63","wavelength":"1.1024 m"},{"note":"E4","frequency":"329.63 Hz","midi":"64","wavelength":"1.0406 m"},{"note":"F4","frequency":"349.23 Hz","midi":"65","wavelength":"98.217 cm"},{"note":"F#4","frequency":"369.99 Hz","midi":"66","wavelength":"92.704 cm"},{"note":"G4","frequency":"392.00 Hz","midi":"67","wavelength":"87.501 cm"},{"note":"G#4","frequency":"415.30 Hz","midi":"68","wavelength":"82.590 cm"},{"note":"A4","frequency":"440.00 Hz","midi":"69","wavelength":"77.955 cm"},{"note":"A#4","frequency":"466.16 Hz","midi":"70","wavelength":"73.579 cm"},{"note":"B4","frequency":"493.88 Hz","midi":"71","wavelength":"69.450 cm"}]},"credits_used":5,"credits_remaining":null}},"c_3_at_432_hz_tuning":{"summary":"C#3 at 432 Hz tuning","value":{"tool":"musical-note-frequency-generator","tool_version":"1.0.2","outputs":{"resultNoteName":"C#3","resultFrequency":"136.07 Hz","midiNote":"49","wavelength":"2.5207 m","centsOffset":"+0.00 ¢ from C#3","octaveTable":[{"note":"C3","frequency":"128.43 Hz","midi":"48","wavelength":"2.6706 m"},{"note":"C#3","frequency":"136.07 Hz","midi":"49","wavelength":"2.5207 m"},{"note":"D3","frequency":"144.16 Hz","midi":"50","wavelength":"2.3793 m"},{"note":"D#3","frequency":"152.74 Hz","midi":"51","wavelength":"2.2457 m"},{"note":"E3","frequency":"161.82 Hz","midi":"52","wavelength":"2.1197 m"},{"note":"F3","frequency":"171.44 Hz","midi":"53","wavelength":"2.0007 m"},{"note":"F#3","frequency":"181.63 Hz","midi":"54","wavelength":"1.8884 m"},{"note":"G3","frequency":"192.43 Hz","midi":"55","wavelength":"1.7824 m"},{"note":"G#3","frequency":"203.88 Hz","midi":"56","wavelength":"1.6824 m"},{"note":"A3","frequency":"216.00 Hz","midi":"57","wavelength":"1.5880 m"},{"note":"A#3","frequency":"228.84 Hz","midi":"58","wavelength":"1.4988 m"},{"note":"B3","frequency":"242.45 Hz","midi":"59","wavelength":"1.4147 m"}]},"credits_used":5,"credits_remaining":null}},"450_hz_nearest_note_standard_tuning":{"summary":"450 Hz → nearest note (standard tuning)","value":{"tool":"musical-note-frequency-generator","tool_version":"1.0.2","outputs":{"resultNoteName":"A4","resultFrequency":"450.00 Hz","midiNote":"69","wavelength":"76.222 cm","centsOffset":"+38.91 ¢ from A4","octaveTable":[{"note":"C4","frequency":"261.63 Hz","midi":"60","wavelength":"1.3110 m"},{"note":"C#4","frequency":"277.18 Hz","midi":"61","wavelength":"1.2375 m"},{"note":"D4","frequency":"293.66 Hz","midi":"62","wavelength":"1.1680 m"},{"note":"D#4","frequency":"311.13 Hz","midi":"63","wavelength":"1.1024 m"},{"note":"E4","frequency":"329.63 Hz","midi":"64","wavelength":"1.0406 m"},{"note":"F4","frequency":"349.23 Hz","midi":"65","wavelength":"98.217 cm"},{"note":"F#4","frequency":"369.99 Hz","midi":"66","wavelength":"92.704 cm"},{"note":"G4","frequency":"392.00 Hz","midi":"67","wavelength":"87.501 cm"},{"note":"G#4","frequency":"415.30 Hz","midi":"68","wavelength":"82.590 cm"},{"note":"A4","frequency":"440.00 Hz","midi":"69","wavelength":"77.955 cm"},{"note":"A#4","frequency":"466.16 Hz","midi":"70","wavelength":"73.579 cm"},{"note":"B4","frequency":"493.88 Hz","midi":"71","wavelength":"69.450 cm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultNoteName":{"type":"string","description":"Note"},"resultFrequency":{"type":"string","description":"Frequency"},"midiNote":{"type":"string","description":"MIDI Note"},"wavelength":{"type":"string","description":"Wavelength (air, 20°C)"},"centsOffset":{"type":"string","description":"Cents Offset"},"octaveTable":{"type":"array","description":"Octave Reference","items":{"type":"object","properties":{"note":{"type":"string","description":"Note"},"frequency":{"type":"string","description":"Frequency"},"midi":{"type":"string","description":"MIDI"},"wavelength":{"type":"string","description":"Wavelength"}}},"x-iotools-columns":["note","frequency","midi","wavelength"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nato-phonetic-alphabet":{"post":{"operationId":"run_nato_phonetic_alphabet","summary":"NATO Phonetic Alphabet Converter","tags":["Converters"],"description":"Convert text into the NATO (ICAO) phonetic alphabet — each letter becomes its code word (A=Alpha, B=Bravo…) and each digit its number word. Spaces are marked [space] and other characters are bracketed.\n\n[Try NATO Phonetic Alphabet Converter in your browser →](https://iotools.cloud/tool/nato-phonetic-alphabet/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to Convert"}},"required":[]},"examples":{"single_word":{"summary":"Single word","value":{"inputText":"HELLO"}},"two_words_with_a_space":{"summary":"Two words with a space","value":{"inputText":"Hello World"}},"letters_digits_and_punctuation":{"summary":"Letters, digits and punctuation","value":{"inputText":"SOS-911!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_word":{"summary":"Single word","value":{"tool":"nato-phonetic-alphabet","tool_version":"1.0.2","outputs":{"outputPhonetic":"Hotel Echo Lima Lima Oscar"},"credits_used":5,"credits_remaining":null}},"two_words_with_a_space":{"summary":"Two words with a space","value":{"tool":"nato-phonetic-alphabet","tool_version":"1.0.2","outputs":{"outputPhonetic":"Hotel Echo Lima Lima Oscar [space] Whiskey Oscar Romeo Lima Delta"},"credits_used":5,"credits_remaining":null}},"letters_digits_and_punctuation":{"summary":"Letters, digits and punctuation","value":{"tool":"nato-phonetic-alphabet","tool_version":"1.0.2","outputs":{"outputPhonetic":"Sierra Oscar Sierra [-] Niner One One [!]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputPhonetic":{"type":"string","description":"NATO Phonetic Alphabet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/network-speed-unit-converter":{"post":{"operationId":"run_network_speed_unit_converter","summary":"Network Speed Unit Converter","tags":["Converters"],"description":"Convert network and data-transfer speeds between bps, Kbps, Mbps, Gbps, Tbps and their byte-rate equivalents (B/s, KB/s, MB/s, GB/s, TB/s, plus binary KiB/MiB/GiB/TiB per second). Enter one value, pick its unit, and see the equivalent in every unit at once.\n\n[Try Network Speed Unit Converter in your browser →](https://iotools.cloud/tool/network-speed-unit-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["bit_per_second","kilobit_per_second","megabit_per_second","gigabit_per_second","terabit_per_second","byte_per_second","kilobyte_per_second","megabyte_per_second","gigabyte_per_second","terabyte_per_second","kibibyte_per_second","mebibyte_per_second","gibibyte_per_second","tebibyte_per_second"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"100_mbps_to_every_unit_4_decimals":{"summary":"100 Mbps to every unit (4 decimals)","value":{"value":"100","fromUnit":"megabit_per_second","precision":"4"}},"1_gb_s_to_every_unit_2_decimals":{"summary":"1 GB/s to every unit (2 decimals)","value":{"value":"1","fromUnit":"gigabyte_per_second","precision":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_mbps_to_every_unit_4_decimals":{"summary":"100 Mbps to every unit (4 decimals)","value":{"tool":"network-speed-unit-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Bits per Second (bps)","value":"100000000"},{"unit":"Kilobits per Second (Kbps)","value":"100000"},{"unit":"Megabits per Second (Mbps)","value":"100"},{"unit":"Gigabits per Second (Gbps)","value":"0.1"},{"unit":"Terabits per Second (Tbps)","value":"0.0001"},{"unit":"Bytes per Second (B/s)","value":"12500000"},{"unit":"Kilobytes per Second (KB/s)","value":"12500"},{"unit":"Megabytes per Second (MB/s)","value":"12.5"},{"unit":"Gigabytes per Second (GB/s)","value":"0.0125"},{"unit":"Terabytes per Second (TB/s)","value":"0"},{"unit":"Kibibytes per Second (KiB/s)","value":"12207.0313"},{"unit":"Mebibytes per Second (MiB/s)","value":"11.9209"},{"unit":"Gibibytes per Second (GiB/s)","value":"0.0116"},{"unit":"Tebibytes per Second (TiB/s)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"1_gb_s_to_every_unit_2_decimals":{"summary":"1 GB/s to every unit (2 decimals)","value":{"tool":"network-speed-unit-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Bits per Second (bps)","value":"8000000000"},{"unit":"Kilobits per Second (Kbps)","value":"8000000"},{"unit":"Megabits per Second (Mbps)","value":"8000"},{"unit":"Gigabits per Second (Gbps)","value":"8"},{"unit":"Terabits per Second (Tbps)","value":"0.01"},{"unit":"Bytes per Second (B/s)","value":"1000000000"},{"unit":"Kilobytes per Second (KB/s)","value":"1000000"},{"unit":"Megabytes per Second (MB/s)","value":"1000"},{"unit":"Gigabytes per Second (GB/s)","value":"1"},{"unit":"Terabytes per Second (TB/s)","value":"0"},{"unit":"Kibibytes per Second (KiB/s)","value":"976562.5"},{"unit":"Mebibytes per Second (MiB/s)","value":"953.67"},{"unit":"Gibibytes per Second (GiB/s)","value":"0.93"},{"unit":"Tebibytes per Second (TiB/s)","value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/number-notation-converter":{"post":{"operationId":"run_number_notation_converter","summary":"Number Notation Converter","tags":["Converters"],"description":"Convert a number between US, European, Swiss, Indian (lakh/crore), ISO space, scientific, engineering and e-notation formats, plus English and Indian spelled-out word forms. Auto-detects the input's locale format.\n\n[Try Number Notation Converter in your browser →](https://iotools.cloud/tool/number-notation-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputNumber":{"type":"string","description":"Number"},"decimals":{"enum":["auto","0","2","4","6","8"],"description":"Fraction Digits"},"inputLocale":{"enum":["auto","us","eu","ch","in"],"description":"Input Format"}},"required":[]},"examples":{"us_format_auto_detected":{"summary":"US format, auto-detected","value":{"inputNumber":"1234567.89","decimals":"auto","inputLocale":"auto"}},"scientific_input_avogadro_s_number":{"summary":"Scientific input (Avogadro's number)","value":{"inputNumber":"6.022e23","decimals":"auto","inputLocale":"auto"}},"negative_number_fixed_2_decimals":{"summary":"Negative number, fixed 2 decimals","value":{"inputNumber":"-987654.321","decimals":"2","inputLocale":"auto"}},"engineering_notation_carry_renormalization_999999_rounded_to_0_decimals":{"summary":"Engineering-notation carry renormalization (999999 rounded to 0 decimals)","value":{"inputNumber":"999999","decimals":"0","inputLocale":"auto"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"us_format_auto_detected":{"summary":"US format, auto-detected","value":{"tool":"number-notation-converter","tool_version":"1.0.2","outputs":{"usNotation":"1,234,567.89","europeanNotation":"1.234.567,89","swissNotation":"1'234'567.89","indianNotation":"12,34,567.89","spaceNotation":"1 234 567.89","scientificNotation":"1.23456789 × 10⁶","engineeringNotation":"1.23456789 × 10⁶","eNotation":"1.23456789e6","plainDigits":"1234567.89","wordsEnglish":"one million two hundred thirty-four thousand five hundred sixty-seven point eight nine","wordsIndian":"twelve lakh thirty-four thousand five hundred sixty-seven point eight nine"},"credits_used":5,"credits_remaining":null}},"scientific_input_avogadro_s_number":{"summary":"Scientific input (Avogadro's number)","value":{"tool":"number-notation-converter","tool_version":"1.0.2","outputs":{"usNotation":"602,200,000,000,000,000,000,000","europeanNotation":"602.200.000.000.000.000.000.000","swissNotation":"602'200'000'000'000'000'000'000","indianNotation":"6,02,20,00,00,00,00,00,00,00,00,000","spaceNotation":"602 200 000 000 000 000 000 000","scientificNotation":"6.022 × 10²³","engineeringNotation":"602.2 × 10²¹","eNotation":"6.022e23","plainDigits":"602200000000000000000000","wordsEnglish":"six hundred two sextillion two hundred quintillion","wordsIndian":"Number too large for word form."},"credits_used":5,"credits_remaining":null}},"negative_number_fixed_2_decimals":{"summary":"Negative number, fixed 2 decimals","value":{"tool":"number-notation-converter","tool_version":"1.0.2","outputs":{"usNotation":"-987,654.32","europeanNotation":"-987.654,32","swissNotation":"-987'654.32","indianNotation":"-9,87,654.32","spaceNotation":"-987 654.32","scientificNotation":"-9.88 × 10⁵","engineeringNotation":"-987.65 × 10³","eNotation":"-9.88e5","plainDigits":"-987654.32","wordsEnglish":"negative nine hundred eighty-seven thousand six hundred fifty-four point three two","wordsIndian":"negative nine lakh eighty-seven thousand six hundred fifty-four point three two"},"credits_used":5,"credits_remaining":null}},"engineering_notation_carry_renormalization_999999_rounded_to_0_decimals":{"summary":"Engineering-notation carry renormalization (999999 rounded to 0 decimals)","value":{"tool":"number-notation-converter","tool_version":"1.0.2","outputs":{"usNotation":"999,999","europeanNotation":"999.999","swissNotation":"999'999","indianNotation":"9,99,999","spaceNotation":"999 999","scientificNotation":"1 × 10⁶","engineeringNotation":"1 × 10⁶","eNotation":"1e6","plainDigits":"999999","wordsEnglish":"nine hundred ninety-nine thousand nine hundred ninety-nine","wordsIndian":"nine lakh ninety-nine thousand nine hundred ninety-nine"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"usNotation":{"type":"string","description":"US / UK"},"europeanNotation":{"type":"string","description":"European"},"swissNotation":{"type":"string","description":"Swiss"},"indianNotation":{"type":"string","description":"Indian (Lakh/Crore)"},"spaceNotation":{"type":"string","description":"ISO / Space"},"scientificNotation":{"type":"string","description":"Scientific"},"engineeringNotation":{"type":"string","description":"Engineering"},"eNotation":{"type":"string","description":"E-notation"},"plainDigits":{"type":"string","description":"Plain digits"},"wordsEnglish":{"type":"string","description":"Words (English)"},"wordsIndian":{"type":"string","description":"Words (Indian)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/number-to-words":{"post":{"operationId":"run_number_to_words","summary":"Number to Words Converter","tags":["Converters"],"description":"Convert a number into its English word form — cardinal (one hundred one), ordinal (one hundred first), or currency (one hundred dollars and fifty cents). Handles negatives, decimals, and numbers into the decillions without precision loss.\n\n[Try Number to Words Converter in your browser →](https://iotools.cloud/tool/number-to-words/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Number"},"format":{"enum":["cardinal","ordinal","currency"],"description":"Format"},"currency":{"enum":["usd","eur","gbp"],"description":"Currency"},"capitalize":{"type":"boolean","description":"Capitalize first letter"}},"required":[]},"examples":{"zero":{"summary":"Zero","value":{"number":"0","format":"cardinal","currency":"usd","capitalize":"true"}},"negative_number":{"summary":"Negative number","value":{"number":"-1234","format":"cardinal","currency":"usd","capitalize":"true"}},"hundred_thousand_boundary":{"summary":"Hundred/thousand boundary","value":{"number":"1001","format":"cardinal","currency":"usd","capitalize":"true"}},"large_number_trillions":{"summary":"Large number (trillions)","value":{"number":"1234567890123","format":"cardinal","currency":"usd","capitalize":"true"}},"currency_mode":{"summary":"Currency mode","value":{"number":"100.5","format":"currency","currency":"usd","capitalize":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"zero":{"summary":"Zero","value":{"tool":"number-to-words","tool_version":"1.0.2","outputs":{"outputWords":"Zero"},"credits_used":5,"credits_remaining":null}},"negative_number":{"summary":"Negative number","value":{"tool":"number-to-words","tool_version":"1.0.2","outputs":{"outputWords":"Negative one thousand two hundred thirty-four"},"credits_used":5,"credits_remaining":null}},"hundred_thousand_boundary":{"summary":"Hundred/thousand boundary","value":{"tool":"number-to-words","tool_version":"1.0.2","outputs":{"outputWords":"One thousand one"},"credits_used":5,"credits_remaining":null}},"large_number_trillions":{"summary":"Large number (trillions)","value":{"tool":"number-to-words","tool_version":"1.0.2","outputs":{"outputWords":"One trillion two hundred thirty-four billion five hundred sixty-seven million eight hundred ninety thousand one hundred twenty-three"},"credits_used":5,"credits_remaining":null}},"currency_mode":{"summary":"Currency mode","value":{"tool":"number-to-words","tool_version":"1.0.2","outputs":{"outputWords":"One hundred dollars and fifty cents"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputWords":{"type":"string","description":"Number in Words"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/openapi-to-typescript-converter":{"post":{"operationId":"run_openapi_to_typescript_converter","summary":"OpenAPI Schema to TypeScript Types Converter","tags":["Converters"],"description":"Convert an OpenAPI 3.x (or Swagger 2.0) document's component schemas into plain TypeScript interfaces and type aliases. Resolves $refs, turns allOf into intersections and oneOf/anyOf into unions, handles discriminators and nullable fields, and emits a ready-to-download .ts file.\n\n[Try OpenAPI Schema to TypeScript Types Converter in your browser →](https://iotools.cloud/tool/openapi-to-typescript-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"openapiText":{"type":"string","description":"OpenAPI document (YAML or JSON)"},"includeComments":{"type":"boolean","description":"Add JSDoc comments from schema descriptions"}},"required":["openapiText"]},"examples":{"pet_store_object_allof_discriminated_oneof_nullable":{"summary":"Pet store (object, allOf, discriminated oneOf, nullable)","value":{"openapiText":"openapi: 3.0.3\ninfo:\n  title: Pet Store\n  version: \"1.0\"\ncomponents:\n  schemas:\n    Pet:\n      type: object\n      required: [id, name]\n      properties:\n        id:\n          type: integer\n        name:\n          type: string\n        tag:\n          type: string\n          nullable: true\n    NewPet:\n      allOf:\n        - $ref: \"#/components/schemas/Pet\"\n        - type: object\n          properties:\n            createdBy:\n              type: string\n    Cat:\n      type: object\n      required: [kind, lives]\n      properties:\n        kind:\n          type: string\n          enum: [cat]\n        lives:\n          type: integer\n    Dog:\n      type: object\n      required: [kind, barks]\n      properties:\n        kind:\n          type: string\n          enum: [dog]\n        barks:\n          type: boolean\n    Animal:\n      oneOf:\n        - $ref: \"#/components/schemas/Cat\"\n        - $ref: \"#/components/schemas/Dog\"\n      discriminator:\n        propertyName: kind","includeComments":"false"}},"array_of_ref_enum":{"summary":"Array of $ref + enum","value":{"openapiText":"openapi: 3.0.3\ncomponents:\n  schemas:\n    Status:\n      type: string\n      enum: [active, inactive, banned]\n    User:\n      type: object\n      required: [id, status]\n      properties:\n        id:\n          type: string\n        status:\n          $ref: \"#/components/schemas/Status\"\n        tags:\n          type: array\n          items:\n            type: string","includeComments":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pet_store_object_allof_discriminated_oneof_nullable":{"summary":"Pet store (object, allOf, discriminated oneOf, nullable)","value":{"tool":"openapi-to-typescript-converter","tool_version":"1.0.2","outputs":{"code":"export interface Pet {\n  id: number;\n  name: string;\n  tag?: string | null;\n}\n\nexport type NewPet = (Pet) & ({\n  createdBy?: string;\n});\n\nexport interface Cat {\n  kind: \"cat\";\n  lives: number;\n}\n\nexport interface Dog {\n  kind: \"dog\";\n  barks: boolean;\n}\n\nexport type Animal = Cat | Dog;\n"},"credits_used":5,"credits_remaining":null}},"array_of_ref_enum":{"summary":"Array of $ref + enum","value":{"tool":"openapi-to-typescript-converter","tool_version":"1.0.2","outputs":{"code":"export type Status = \"active\" | \"inactive\" | \"banned\";\n\nexport interface User {\n  id: string;\n  status: Status;\n  tags?: string[];\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"TypeScript types"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/openapi-v2-to-v3-converter":{"post":{"operationId":"run_openapi_v2_to_v3_converter","summary":"OpenAPI v2 to v3 Converter","tags":["Converters"],"description":"Convert a Swagger 2.0 (OpenAPI v2) spec into OpenAPI 3.x — host/basePath/schemes become servers, definitions become components.schemas with every $ref rewritten, body/formData parameters become requestBody, and produces/consumes become per-response/per-request content maps. Accepts and emits YAML or JSON, and runs entirely in your browser.\n\n[Try OpenAPI v2 to v3 Converter in your browser →](https://iotools.cloud/tool/openapi-v2-to-v3-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"swaggerInput":{"type":"string","description":"Swagger 2.0 Spec"},"outputFormat":{"enum":["same","yaml","json"],"description":"Output Format"},"patchSpec":{"type":"boolean","description":"Patch missing required fields (e.g. title, version, response descriptions)"}},"required":[]},"examples":{"pet_store_yaml_definitions_body_param_formdata_security":{"summary":"Pet Store (YAML, definitions + body param + formData + security)","value":{"swaggerInput":"swagger: \"2.0\"\ninfo:\n  title: Pet Store API\n  description: A sample Swagger 2.0 spec\n  version: \"1.0.0\"\nhost: api.petstore.example.com\nbasePath: /v1\nschemes:\n  - https\nconsumes:\n  - application/json\nproduces:\n  - application/json\npaths:\n  /pets:\n    get:\n      operationId: listPets\n      summary: List all pets\n      parameters:\n        - name: limit\n          in: query\n          required: false\n          type: integer\n          format: int32\n      responses:\n        \"200\":\n          description: A list of pets\n          schema:\n            type: array\n            items:\n              $ref: \"#/definitions/Pet\"\n    post:\n      operationId: createPet\n      summary: Create a pet\n      consumes:\n        - application/json\n      parameters:\n        - name: body\n          in: body\n          required: true\n          schema:\n            $ref: \"#/definitions/NewPet\"\n      responses:\n        \"201\":\n          description: Pet created\n          schema:\n            $ref: \"#/definitions/Pet\"\n  /pets/{petId}/photo:\n    post:\n      operationId: uploadPetPhoto\n      summary: Upload a photo for a pet\n      consumes:\n        - multipart/form-data\n      parameters:\n        - name: petId\n          in: path\n          required: true\n          type: string\n        - name: photo\n          in: formData\n          required: true\n          type: file\n        - name: caption\n          in: formData\n          required: false\n          type: string\n      responses:\n        \"200\":\n          description: Upload successful\nsecurityDefinitions:\n  apiKeyAuth:\n    type: apiKey\n    in: header\n    name: X-API-Key\n  basicAuth:\n    type: basic\ndefinitions:\n  Pet:\n    type: object\n    required:\n      - id\n      - name\n    properties:\n      id:\n        type: integer\n        format: int64\n      name:\n        type: string\n      tag:\n        type: string\n        x-nullable: true\n  NewPet:\n    type: object\n    required:\n      - name\n    properties:\n      name:\n        type: string\n      tag:\n        type: string","outputFormat":"same","patchSpec":"true"}},"widget_api_json_in_yaml_out_oauth2_security_patch_fills_missing_title":{"summary":"Widget API (JSON in, YAML out, oauth2 security, patch fills missing title)","value":{"swaggerInput":"{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"version\": \"2.1.0\"\n  },\n  \"host\": \"widgets.example.com\",\n  \"schemes\": [\n    \"https\",\n    \"http\"\n  ],\n  \"produces\": [\n    \"application/json\"\n  ],\n  \"paths\": {\n    \"/widgets\": {\n      \"get\": {\n        \"operationId\": \"listWidgets\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"A list of widgets\",\n            \"schema\": {\n              \"type\": \"array\",\n              \"items\": {\n                \"$ref\": \"#/definitions/Widget\"\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"securityDefinitions\": {\n    \"oauth2Client\": {\n      \"type\": \"oauth2\",\n      \"flow\": \"application\",\n      \"tokenUrl\": \"https://widgets.example.com/oauth/token\",\n      \"scopes\": {\n        \"widgets:read\": \"Read widgets\"\n      }\n    }\n  },\n  \"definitions\": {\n    \"Widget\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"id\": {\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"type\": \"string\"\n        }\n      }\n    }\n  }\n}","outputFormat":"yaml","patchSpec":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pet_store_yaml_definitions_body_param_formdata_security":{"summary":"Pet Store (YAML, definitions + body param + formData + security)","value":{"tool":"openapi-v2-to-v3-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Input","value":"Swagger 2.0"},{"metric":"Output","value":"OpenAPI 3.0.3"},{"metric":"Endpoints","value":"3"},{"metric":"Schemas","value":"2"},{"metric":"Errors","value":"0"},{"metric":"Warnings","value":"0"},{"metric":"Notes","value":"0"}],"issues":[],"convertedOutput":"openapi: 3.0.3\ninfo:\n  title: Pet Store API\n  description: A sample Swagger 2.0 spec\n  version: 1.0.0\nservers:\n  - url: https://api.petstore.example.com/v1\npaths:\n  /pets:\n    get:\n      summary: List all pets\n      operationId: listPets\n      parameters:\n        - name: limit\n          in: query\n          required: false\n          schema:\n            type: integer\n            format: int32\n      responses:\n        \"200\":\n          description: A list of pets\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: \"#/components/schemas/Pet\"\n    post:\n      summary: Create a pet\n      operationId: createPet\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: \"#/components/schemas/NewPet\"\n      responses:\n        \"201\":\n          description: Pet created\n          content:\n            application/json:\n              schema:\n                $ref: \"#/components/schemas/Pet\"\n  /pets/{petId}/photo:\n    post:\n      summary: Upload a photo for a pet\n      operationId: uploadPetPhoto\n      parameters:\n        - name: petId\n          in: path\n          required: true\n          schema:\n            type: string\n      requestBody:\n        content:\n          multipart/form-data:\n            schema:\n              type: object\n              properties:\n                photo:\n                  type: string\n                  format: binary\n                caption:\n                  type: string\n              required:\n                - photo\n        required: true\n      responses:\n        \"200\":\n          description: Upload successful\ncomponents:\n  schemas:\n    Pet:\n      type: object\n      required:\n        - id\n        - name\n      properties:\n        id:\n          type: integer\n          format: int64\n        name:\n          type: string\n        tag:\n          type: string\n          nullable: true\n    NewPet:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n        tag:\n          type: string\n  securitySchemes:\n    apiKeyAuth:\n      type: apiKey\n      name: X-API-Key\n      in: header\n    basicAuth:\n      type: http\n      scheme: basic\n"},"credits_used":5,"credits_remaining":null}},"widget_api_json_in_yaml_out_oauth2_security_patch_fills_missing_title":{"summary":"Widget API (JSON in, YAML out, oauth2 security, patch fills missing title)","value":{"tool":"openapi-v2-to-v3-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Input","value":"Swagger 2.0"},{"metric":"Output","value":"OpenAPI 3.0.3"},{"metric":"Endpoints","value":"1"},{"metric":"Schemas","value":"1"},{"metric":"Errors","value":"0"},{"metric":"Warnings","value":"0"},{"metric":"Notes","value":"1"}],"issues":[{"severity":"Info","path":"/info/title","message":"Added placeholder title (was missing)"}],"convertedOutput":"openapi: 3.0.3\ninfo:\n  version: 2.1.0\n  title: Untitled API\nservers:\n  - url: https://widgets.example.com\n  - url: http://widgets.example.com\npaths:\n  /widgets:\n    get:\n      operationId: listWidgets\n      responses:\n        \"200\":\n          description: A list of widgets\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: \"#/components/schemas/Widget\"\ncomponents:\n  schemas:\n    Widget:\n      type: object\n      properties:\n        id:\n          type: integer\n        name:\n          type: string\n  securitySchemes:\n    oauth2Client:\n      type: oauth2\n      flows:\n        clientCredentials:\n          scopes:\n            widgets:read: Read widgets\n          tokenUrl: https://widgets.example.com/oauth/token\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"issues":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"path":{"type":"string","description":"Path"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","path","message"]},"convertedOutput":{"type":"string","description":"OpenAPI 3.0.3 Spec"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/paper-size-converter":{"post":{"operationId":"run_paper_size_converter","summary":"Paper Size Converter","tags":["Converters"],"description":"Look up a standard paper size (ISO 216 A0-A10 or US Letter/Legal/Tabloid) and convert its dimensions to millimeters, centimeters, inches, points, and pixels at a chosen DPI.\n\n[Try Paper Size Converter in your browser →](https://iotools.cloud/tool/paper-size-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"paperSize":{"enum":["a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","letter","legal","tabloid"],"description":"Paper Size"},"orientation":{"enum":["portrait","landscape"],"description":"Orientation"},"dpi":{"enum":["72","96","150","300"],"description":"DPI (for pixel dimensions)"}},"required":[]},"examples":{"a4_portrait_96_dpi":{"summary":"A4, portrait, 96 DPI","value":{"paperSize":"a4","orientation":"portrait","dpi":"96"}},"us_letter_portrait_300_dpi":{"summary":"US Letter, portrait, 300 DPI","value":{"paperSize":"letter","orientation":"portrait","dpi":"300"}},"a4_landscape_72_dpi":{"summary":"A4, landscape, 72 DPI","value":{"paperSize":"a4","orientation":"landscape","dpi":"72"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a4_portrait_96_dpi":{"summary":"A4, portrait, 96 DPI","value":{"tool":"paper-size-converter","tool_version":"1.0.2","outputs":{"resultTable":[{"unit":"Millimeters (mm)","width":"210.0","height":"297.0"},{"unit":"Centimeters (cm)","width":"21.00","height":"29.70"},{"unit":"Inches (in)","width":"8.27","height":"11.69"},{"unit":"Points (pt)","width":"595.3","height":"841.9"},{"unit":"Pixels @ 96 DPI","width":"794","height":"1123"}]},"credits_used":5,"credits_remaining":null}},"us_letter_portrait_300_dpi":{"summary":"US Letter, portrait, 300 DPI","value":{"tool":"paper-size-converter","tool_version":"1.0.2","outputs":{"resultTable":[{"unit":"Millimeters (mm)","width":"215.9","height":"279.4"},{"unit":"Centimeters (cm)","width":"21.59","height":"27.94"},{"unit":"Inches (in)","width":"8.50","height":"11.00"},{"unit":"Points (pt)","width":"612.0","height":"792.0"},{"unit":"Pixels @ 300 DPI","width":"2550","height":"3300"}]},"credits_used":5,"credits_remaining":null}},"a4_landscape_72_dpi":{"summary":"A4, landscape, 72 DPI","value":{"tool":"paper-size-converter","tool_version":"1.0.2","outputs":{"resultTable":[{"unit":"Millimeters (mm)","width":"297.0","height":"210.0"},{"unit":"Centimeters (cm)","width":"29.70","height":"21.00"},{"unit":"Inches (in)","width":"11.69","height":"8.27"},{"unit":"Points (pt)","width":"841.9","height":"595.3"},{"unit":"Pixels @ 72 DPI","width":"842","height":"595"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Dimensions in every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"width":{"type":"string","description":"Width"},"height":{"type":"string","description":"Height"}}},"x-iotools-columns":["unit","width","height"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/pages-to-pdf":{"post":{"operationId":"run_pdf_converter_pages_to_pdf","summary":"Pages to PDF Converter","tags":["Converters"],"description":"Convert an Apple Pages document (.pages) to PDF by extracting its built-in preview — entirely in your browser, nothing is uploaded.\n\n[Try Pages to PDF Converter in your browser →](https://iotools.cloud/tool/pdf-converter/pages-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pages":{"type":"string","contentEncoding":"base64","description":"Pages document"}},"required":["pages"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/csv-to-pdf":{"post":{"operationId":"run_pdf_converter_csv_to_pdf","summary":"CSV to PDF","tags":["Converters"],"description":"Convert a CSV file into a downloadable, paginated PDF table. Paste CSV or upload a file, auto-detect the delimiter, and convert entirely in your browser — nothing is uploaded.\n\n[Try CSV to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/csv-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"csv":{"type":"string","description":"CSV data"},"delimiter":{"enum":["auto",",","\t",";","|"],"description":"Delimiter"},"hasHeader":{"type":"boolean","description":"First row is a header"},"pageSize":{"enum":["a4","letter","legal"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"fontSize":{"type":"number","description":"Font size (pt)","minimum":6,"maximum":14},"zebraStripes":{"type":"boolean","description":"Shade alternating rows"}},"required":["csv"]},"examples":{"simple_table_with_header":{"summary":"Simple table with header","value":{"csv":"Name,Age,City\nAlice,30,New York\nBob,25,Boston\nCarol,41,Seattle","delimiter":"auto","hasHeader":"true","pageSize":"a4","orientation":"auto","fontSize":"9","zebraStripes":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/zip-to-pdf":{"post":{"operationId":"run_pdf_converter_zip_to_pdf","summary":"ZIP to PDF","tags":["Converters"],"description":"Unzip an archive and combine the PNG/JPEG images inside it into a single downloadable PDF. Choose the page order and layout, and convert entirely in your browser — nothing is uploaded.\n\n[Try ZIP to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/zip-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zip":{"type":"string","contentEncoding":"base64","description":"ZIP archive"},"order":{"enum":["name","stored"],"description":"Page order"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["zip"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/html-to-pdf":{"post":{"operationId":"run_pdf_converter_html_to_pdf","summary":"HTML to PDF","tags":["Converters"],"description":"Convert HTML into a downloadable PDF. Paste HTML markup or upload an .html file, pick a page size and font, and convert entirely in your browser: nothing is uploaded, no signup, no conversion limit.\n\n[Try HTML to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/html-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"htmlSource":{"type":"string","description":"HTML"},"pageSize":{"enum":["a4","letter","legal"],"description":"Page size"},"orientation":{"enum":["portrait","landscape"],"description":"Orientation"},"font":{"enum":["helvetica","times"],"description":"Body font"},"fontSize":{"type":"number","description":"Body font size (pt)","minimum":8,"maximum":24},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":100}},"required":["htmlSource"]},"examples":{"project_report_with_headings_a_list_and_a_table":{"summary":"Project report with headings, a list and a table","value":{"htmlSource":"<h1>Project Report</h1>\n<p>A short summary of the project, written directly in <strong>HTML</strong>.</p>\n<h2>Highlights</h2>\n<ul>\n  <li>Fast</li>\n  <li><strong>Reliable</strong></li>\n  <li>Works <em>everywhere</em></li>\n</ul>\n<h2>Status</h2>\n<table>\n  <tr><th>Task</th><th>Status</th></tr>\n  <tr><td>Design</td><td>Done</td></tr>\n  <tr><td>Build</td><td>In progress</td></tr>\n</table>\n<p>See the <a href=\"https://example.com\">full changelog</a> for details.</p>","pageSize":"a4","orientation":"portrait","font":"helvetica","fontSize":"12","margin":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/txt-to-pdf":{"post":{"operationId":"run_pdf_converter_txt_to_pdf","summary":"TXT to PDF","tags":["Converters"],"description":"Convert a plain-text (.txt) file into a downloadable PDF. Paste text or upload a file, choose a page size, font and margins, and convert entirely in your browser — nothing is uploaded.\n\n[Try TXT to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/txt-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"pageSize":{"enum":["a4","letter","legal"],"description":"Page size"},"orientation":{"enum":["portrait","landscape"],"description":"Orientation"},"font":{"enum":["helvetica","times","courier"],"description":"Font"},"fontSize":{"type":"number","description":"Font size (pt)","minimum":8,"maximum":24},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":100},"reflow":{"type":"boolean","description":"Reflow into paragraphs"}},"required":["text"]},"examples":{"short_note":{"summary":"Short note","value":{"text":"Hello, world!\n\nThis plain-text file has just been converted to a PDF.\nEach line break is preserved exactly as typed.","pageSize":"a4","orientation":"portrait","font":"helvetica","fontSize":"12","margin":"40","reflow":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/rtf-to-pdf":{"post":{"operationId":"run_pdf_converter_rtf_to_pdf","summary":"RTF to PDF","tags":["Converters"],"description":"Convert a Rich Text Format (.rtf) file into a downloadable PDF, with bold, italic and underline preserved. Paste RTF markup or upload a file, choose a page size and margins, and convert entirely in your browser — nothing is uploaded.\n\n[Try RTF to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/rtf-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rtf":{"type":"string","description":"RTF markup"},"pageSize":{"enum":["a4","letter","legal"],"description":"Page size"},"orientation":{"enum":["portrait","landscape"],"description":"Orientation"},"font":{"enum":["helvetica","times","courier"],"description":"Font"},"fontSize":{"type":"number","description":"Font size (pt)","minimum":8,"maximum":24},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":100}},"required":["rtf"]},"examples":{"bold_and_italic":{"summary":"Bold and italic","value":{"rtf":"{\\rtf1\\ansi Hello, \\b world\\b0 !\\par This is a \\i converted\\i0  document.\\par}","pageSize":"a4","orientation":"portrait","font":"helvetica","fontSize":"12","margin":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/url-to-pdf":{"post":{"operationId":"run_pdf_converter_url_to_pdf","summary":"URL to PDF","tags":["Converters"],"description":"Fetch any live URL and turn its readable content into a downloadable PDF document — for archiving, offline reading, or sharing a page as a file.\n\n[Try URL to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/url-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/image-to-pdf":{"post":{"operationId":"run_pdf_converter_image_to_pdf","summary":"Image to PDF","tags":["Converters"],"description":"Combine PNG and JPEG images into a single PDF, in the order you choose — drag to reorder, pick a page size, and download. Runs entirely in your browser; your images are never uploaded.\n\n[Try Image to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/image-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"images":{"type":"array","items":{"type":"string","contentEncoding":"base64"},"description":"Images"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["images"]},"examples":{"two_1_1_images_2_page_pdf":{"summary":"Two 1×1 images → 2-page PDF","value":{"images":"[\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\",\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\"]","pageSize":"fit"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/markdown-to-pdf":{"post":{"operationId":"run_pdf_converter_markdown_to_pdf","summary":"Markdown to PDF","tags":["Converters"],"description":"Convert Markdown — headings, lists, tables, code blocks, links and more — into a downloadable PDF. Paste Markdown or upload a .md file, pick a page size and font, and convert entirely in your browser: nothing is uploaded.\n\n[Try Markdown to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/markdown-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown"},"pageSize":{"enum":["a4","letter","legal"],"description":"Page size"},"orientation":{"enum":["portrait","landscape"],"description":"Orientation"},"font":{"enum":["helvetica","times"],"description":"Body font"},"fontSize":{"type":"number","description":"Body font size (pt)","minimum":8,"maximum":24},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":100}},"required":["markdown"]},"examples":{"readme_with_headings_a_list_code_and_a_link":{"summary":"README with headings, a list, code and a link","value":{"markdown":"# Project README\n\nA short description of the project.\n\n## Features\n\n- Fast\n- **Lightweight**\n- Works *everywhere*\n\n## Usage\n\n```bash\nnpm install example\n```\n\n> Replace `example` with your package name.\n\n[Read the docs](https://example.com)","pageSize":"a4","orientation":"portrait","font":"helvetica","fontSize":"12","margin":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/gif-to-pdf":{"post":{"operationId":"run_pdf_converter_gif_to_pdf","summary":"GIF to PDF","tags":["Converters"],"description":"Convert a GIF image into a downloadable PDF — animated GIFs use their first frame by default, or every frame as its own page. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try GIF to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/gif-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF image"},"allFrames":{"type":"boolean","description":"Convert every frame (one page per frame)"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/webp-to-pdf":{"post":{"operationId":"run_pdf_converter_webp_to_pdf","summary":"WEBP to PDF","tags":["Converters"],"description":"Convert a WebP image into a downloadable PDF. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try WEBP to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/webp-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"WebP image"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/svg-to-pdf":{"post":{"operationId":"run_pdf_converter_svg_to_pdf","summary":"SVG to PDF","tags":["Converters"],"description":"Convert an SVG vector image into a downloadable PDF. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try SVG to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/svg-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"SVG image"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-converter/heic-to-pdf":{"post":{"operationId":"run_pdf_converter_heic_to_pdf","summary":"HEIC to PDF","tags":["Converters"],"description":"Convert an iPhone HEIC or HEIF photo into a downloadable PDF. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try HEIC to PDF in your browser →](https://iotools.cloud/tool/pdf-converter/heic-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"HEIC / HEIF image"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/phone-number-parser-and-formatter":{"post":{"operationId":"run_phone_number_parser_and_formatter","summary":"Phone Number Parser & Formatter","tags":["Converters"],"description":"Parse a single phone number and format it as E.164, national, international and RFC 3966 (tel:) forms. Detects the country, calling code and line type (mobile, fixed line, toll free, VoIP...) from a leading + or a chosen default country.\n\n[Try Phone Number Parser & Formatter in your browser →](https://iotools.cloud/tool/phone-number-parser-and-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phoneInput":{"type":"string","description":"Phone Number"},"countryCode":{"enum":["US","GB","CA","AU","DE","FR","IN","JP","CN","BR","MX","IT","ES","NL","KR","RU","ID","TR","SA","ZA","NG","AR","CO","PH","VN","TH","EG","PK","BD","PL","SE","NO","DK","FI","CH","AT","BE","PT","IE","NZ","SG","MY","HK","TW","IL","AE"],"description":"Default Country"}},"required":["phoneInput"]},"examples":{"us_number_national_input":{"summary":"US number, national input","value":{"phoneInput":"(415) 555-2671","countryCode":"US"}},"uk_mobile_with_prefix":{"summary":"UK mobile, with + prefix","value":{"phoneInput":"+44 7400 123456","countryCode":"US"}},"not_a_real_number":{"summary":"Not a real number","value":{"phoneInput":"12345","countryCode":"US"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"us_number_national_input":{"summary":"US number, national input","value":{"tool":"phone-number-parser-and-formatter","tool_version":"1.0.2","outputs":{"resultTable":[{"format":"International (E.164)","value":"+14155552671"},{"format":"National","value":"(415) 555-2671"},{"format":"International","value":"+1 415 555 2671"},{"format":"RFC 3966 (tel: URI)","value":"tel:+14155552671"},{"format":"Country","value":"United States (US)"},{"format":"Country Calling Code","value":"+1"},{"format":"Number Type","value":"Fixed Line or Mobile"},{"format":"Valid Number","value":"Yes"},{"format":"Possible Number","value":"Yes"}]},"credits_used":5,"credits_remaining":null}},"uk_mobile_with_prefix":{"summary":"UK mobile, with + prefix","value":{"tool":"phone-number-parser-and-formatter","tool_version":"1.0.2","outputs":{"resultTable":[{"format":"International (E.164)","value":"+447400123456"},{"format":"National","value":"07400 123456"},{"format":"International","value":"+44 7400 123456"},{"format":"RFC 3966 (tel: URI)","value":"tel:+447400123456"},{"format":"Country","value":"United Kingdom (GB)"},{"format":"Country Calling Code","value":"+44"},{"format":"Number Type","value":"Mobile"},{"format":"Valid Number","value":"Yes"},{"format":"Possible Number","value":"Yes"}]},"credits_used":5,"credits_remaining":null}},"not_a_real_number":{"summary":"Not a real number","value":{"tool":"phone-number-parser-and-formatter","tool_version":"1.0.2","outputs":{"resultTable":[{"format":"International (E.164)","value":"+112345"},{"format":"National","value":"12345"},{"format":"International","value":"+1 12345"},{"format":"RFC 3966 (tel: URI)","value":"tel:+112345"},{"format":"Country","value":"United States (US)"},{"format":"Country Calling Code","value":"+1"},{"format":"Number Type","value":"Unknown"},{"format":"Valid Number","value":"No"},{"format":"Possible Number","value":"No"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Result","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/php-array-to-json":{"post":{"operationId":"run_php_array_to_json","summary":"PHP Array to JSON Converter","tags":["Converters"],"description":"Convert a PHP array literal (array() or [] syntax with => keys, nested arrays, and PHP scalar types) into valid JSON. Choose 2/4-space, tab, or minified output. Runs entirely in your browser.\n\n[Try PHP Array to JSON Converter in your browser →](https://iotools.cloud/tool/php-array-to-json/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputPhp":{"type":"string","description":"PHP Array"},"indentation":{"enum":["2","4","tab","minified"],"description":"Indentation"}},"required":[]},"examples":{"associative_array":{"summary":"Associative array","value":{"inputPhp":"array('name' => 'John', 'age' => 30, 'active' => true)","indentation":"2"}},"nested_array_with_mixed_types":{"summary":"Nested array with mixed types","value":{"inputPhp":"['id' => 1, 'pi' => 3.14, 'note' => null, 'ok' => false, 'tags' => array('php', 'json'), 'meta' => ['nested' => true]]","indentation":"2"}},"indexed_array_minified":{"summary":"Indexed array, minified","value":{"inputPhp":"array(95, 87, 92)","indentation":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"associative_array":{"summary":"Associative array","value":{"tool":"php-array-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"name\": \"John\",\n  \"age\": 30,\n  \"active\": true\n}"},"credits_used":5,"credits_remaining":null}},"nested_array_with_mixed_types":{"summary":"Nested array with mixed types","value":{"tool":"php-array-to-json","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"id\": 1,\n  \"pi\": 3.14,\n  \"note\": null,\n  \"ok\": false,\n  \"tags\": [\n    \"php\",\n    \"json\"\n  ],\n  \"meta\": {\n    \"nested\": true\n  }\n}"},"credits_used":5,"credits_remaining":null}},"indexed_array_minified":{"summary":"Indexed array, minified","value":{"tool":"php-array-to-json","tool_version":"1.0.2","outputs":{"outputJson":"[95,87,92]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/php-deserializer":{"post":{"operationId":"run_php_deserializer","summary":"PHP Deserializer","tags":["Converters"],"description":"Deserialize PHP's serialize() output into readable JSON. Paste a serialized PHP string or upload a file to unserialize arrays, objects, and scalars.\n\n[Try PHP Deserializer in your browser →](https://iotools.cloud/tool/php-deserializer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"serializedPhpData":{"type":"string","description":"Serialized PHP Data"}},"required":[]},"examples":{"array_of_strings":{"summary":"Array of strings","value":{"serializedPhpData":"a:3:{i:0;s:5:\"Apple\";i:1;s:6:\"Banana\";i:2;s:6:\"Cherry\";}"}},"object_with_nested_array":{"summary":"Object with nested array","value":{"serializedPhpData":"O:8:\"stdClass\":2:{s:7:\"checked\";a:1:{s:7:\"iotools\";s:3:\"1.1\";}s:9:\"no_update\";a:0:{}}"}},"scalars":{"summary":"Scalars","value":{"serializedPhpData":"a:3:{i:0;i:42;i:1;b:1;i:2;N;}"}},"empty_input":{"summary":"Empty input","value":{"serializedPhpData":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"array_of_strings":{"summary":"Array of strings","value":{"tool":"php-deserializer","tool_version":"1.0.2","outputs":{"resultJson":"[\n  \"Apple\",\n  \"Banana\",\n  \"Cherry\"\n]"},"credits_used":5,"credits_remaining":null}},"object_with_nested_array":{"summary":"Object with nested array","value":{"tool":"php-deserializer","tool_version":"1.0.2","outputs":{"resultJson":"{\n  \"__className\": \"stdClass\",\n  \"__isObject\": true,\n  \"checked\": {\n    \"iotools\": \"1.1\"\n  },\n  \"no_update\": {}\n}"},"credits_used":5,"credits_remaining":null}},"scalars":{"summary":"Scalars","value":{"tool":"php-deserializer","tool_version":"1.0.2","outputs":{"resultJson":"[\n  42,\n  true,\n  null\n]"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"php-deserializer","tool_version":"1.0.2","outputs":{"resultJson":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultJson":{"type":"string","description":"Result JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pig-latin-translator":{"post":{"operationId":"run_pig_latin_translator","summary":"Pig Latin Translator","tags":["Converters"],"description":"Translate English text into Pig Latin. Consonant-starting words move their leading consonant cluster to the end plus \"ay\"; vowel-starting words add \"way\". Capitalization is preserved and punctuation passes through. Runs entirely in your browser.\n\n[Try Pig Latin Translator in your browser →](https://iotools.cloud/tool/pig-latin-translator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"mixed_vowel_and_consonant_words":{"summary":"Mixed vowel and consonant words","value":{"inputText":"Hello world! The quick brown fox jumps over the lazy dog."}},"vowel_starting_words_and_capitalization":{"summary":"Vowel-starting words and capitalization","value":{"inputText":"An apple a day keeps the doctor away."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_vowel_and_consonant_words":{"summary":"Mixed vowel and consonant words","value":{"tool":"pig-latin-translator","tool_version":"1.0.2","outputs":{"outputText":"Ellohay orldway! Ethay uickqay ownbray oxfay umpsjay overway ethay azylay ogday."},"credits_used":5,"credits_remaining":null}},"vowel_starting_words_and_capitalization":{"summary":"Vowel-starting words and capitalization","value":{"tool":"pig-latin-translator","tool_version":"1.0.2","outputs":{"outputText":"Anway appleway away ayday eepskay ethay octorday awayway."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Pig Latin Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pixel-rem-em-converter":{"post":{"operationId":"run_pixel_rem_em_converter","summary":"Pixel, REM & EM Converter","tags":["Converters"],"description":"Convert between CSS px, rem, and em units given a root font-size (for rem) and a parent font-size (for em) — and see all three side by side to understand how rem and em diverge.\n\n[Try Pixel, REM & EM Converter in your browser →](https://iotools.cloud/tool/pixel-rem-em-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"fromUnit":{"enum":["px","rem","em"],"description":"Unit"},"rootFontSize":{"type":"number","description":"Root font-size (px)","minimum":1},"parentFontSize":{"type":"number","description":"Parent font-size (px)","minimum":1}},"required":[]},"examples":{"24px_at_a_16px_root_font_size":{"summary":"24px at a 16px root font-size","value":{"value":"24","fromUnit":"px","rootFontSize":"16","parentFontSize":"16"}},"1_5rem_with_a_20px_parent_rem_and_em_diverge":{"summary":"1.5rem with a 20px parent (rem and em diverge)","value":{"value":"1.5","fromUnit":"rem","rootFontSize":"16","parentFontSize":"20"}},"2em_with_a_24px_parent_root_stays_16px":{"summary":"2em with a 24px parent (root stays 16px)","value":{"value":"2","fromUnit":"em","rootFontSize":"16","parentFontSize":"24"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"24px_at_a_16px_root_font_size":{"summary":"24px at a 16px root font-size","value":{"tool":"pixel-rem-em-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Pixels (px)","value":"24px"},{"unit":"REM","value":"1.5rem"},{"unit":"EM","value":"1.5em"}]},"credits_used":5,"credits_remaining":null}},"1_5rem_with_a_20px_parent_rem_and_em_diverge":{"summary":"1.5rem with a 20px parent (rem and em diverge)","value":{"tool":"pixel-rem-em-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Pixels (px)","value":"24px"},{"unit":"REM","value":"1.5rem"},{"unit":"EM","value":"1.2em"}]},"credits_used":5,"credits_remaining":null}},"2em_with_a_24px_parent_root_stays_16px":{"summary":"2em with a 24px parent (root stays 16px)","value":{"tool":"pixel-rem-em-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Pixels (px)","value":"48px"},{"unit":"REM","value":"3rem"},{"unit":"EM","value":"2em"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Equivalent values","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/playfair-cipher":{"post":{"operationId":"run_playfair_cipher","summary":"Playfair Cipher","tags":["Converters"],"description":"Encode and decode text using the classic Playfair cipher — a 5x5 keyword grid that substitutes letter pairs (digraphs) instead of single letters. Supports the standard I/J-shared grid or an Omit-Q variant, with a configurable filler letter.\n\n[Try Playfair Cipher in your browser →](https://iotools.cloud/tool/playfair-cipher/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["encode","decode"],"description":"Mode"},"inputText":{"type":"string","description":"Input Text"},"keyword":{"type":"string","description":"Keyword"},"matrixMode":{"enum":["ij","omitq"],"description":"Matrix Variant"},"filler":{"enum":["X","Q","Z"],"description":"Filler Letter"}},"required":["keyword"]},"examples":{"encode_wikipedia_reference_example":{"summary":"Encode — Wikipedia reference example","value":{"mode":"encode","inputText":"Hide the gold in the tree stump","keyword":"playfair example","matrixMode":"ij","filler":"X"}},"decode_wikipedia_reference_example":{"summary":"Decode — Wikipedia reference example","value":{"mode":"decode","inputText":"BMODZBXDNABEKUDMUIXMMOUVIF","keyword":"playfair example","matrixMode":"ij","filler":"X"}},"encode_textbook_keyword_monarchy":{"summary":"Encode — textbook keyword MONARCHY","value":{"mode":"encode","inputText":"INSTRUMENTS","keyword":"MONARCHY","matrixMode":"ij","filler":"X"}},"encode_doubled_letters_balloon":{"summary":"Encode — doubled letters (BALLOON)","value":{"mode":"encode","inputText":"BALLOON","keyword":"MONARCHY","matrixMode":"ij","filler":"X"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_wikipedia_reference_example":{"summary":"Encode — Wikipedia reference example","value":{"tool":"playfair-cipher","tool_version":"1.0.2","outputs":{"output":"BM OD ZB XD NA BE KU DM UI XM MO UV IF"},"credits_used":5,"credits_remaining":null}},"decode_wikipedia_reference_example":{"summary":"Decode — Wikipedia reference example","value":{"tool":"playfair-cipher","tool_version":"1.0.2","outputs":{"output":"HIDETHEGOLDINTHETREXESTUMP"},"credits_used":5,"credits_remaining":null}},"encode_textbook_keyword_monarchy":{"summary":"Encode — textbook keyword MONARCHY","value":{"tool":"playfair-cipher","tool_version":"1.0.2","outputs":{"output":"GA TL MZ CL RQ XA"},"credits_used":5,"credits_remaining":null}},"encode_doubled_letters_balloon":{"summary":"Encode — doubled letters (BALLOON)","value":{"tool":"playfair-cipher","tool_version":"1.0.2","outputs":{"output":"IB SU PM NA"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/plus-code-converter":{"post":{"operationId":"run_plus_code_converter","summary":"Plus Code (Open Location Code) Converter","tags":["Converters"],"description":"Encode latitude and longitude into a Google Plus Code, or decode a Plus Code (full or shortened) back to coordinates with map links.\n\n[Try Plus Code (Open Location Code) Converter in your browser →](https://iotools.cloud/tool/plus-code-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["encode","decode"],"description":"Mode"},"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"},"precision":{"enum":["2","4","6","8","10","11"],"description":"Precision"},"code":{"type":"string","description":"Plus Code"},"refLatitude":{"type":"string","description":"Reference latitude"},"refLongitude":{"type":"string","description":"Reference longitude"}},"required":[]},"examples":{"encode_a_location":{"summary":"Encode a location","value":{"mode":"encode","latitude":"47.365590","longitude":"8.524997","precision":"10"}},"decode_a_full_code":{"summary":"Decode a full code","value":{"mode":"decode","code":"8FVC9G8F+6X"}},"shorten_relative_to_a_nearby_city":{"summary":"Shorten relative to a nearby city","value":{"mode":"encode","latitude":"47.365590","longitude":"8.524997","precision":"10","refLatitude":"47.4","refLongitude":"8.6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_a_location":{"summary":"Encode a location","value":{"tool":"plus-code-converter","tool_version":"1.0.2","outputs":{"resultCode":"8FVC9G8F+6X","resultCoordinates":"47.365562, 8.524938","shortCode":"","googleMapsUrl":"https://www.google.com/maps/search/?api=1&query=47.365562,8.524938","openStreetMapUrl":"https://www.openstreetmap.org/?mlat=47.365562&mlon=8.524938#map=17/47.365562/8.524938","codeDetails":[{"property":"Code","value":"8FVC9G8F+6X"},{"property":"Code length","value":"10 characters"},{"property":"Centre latitude","value":"47.365562"},{"property":"Centre longitude","value":"8.524938"},{"property":"South-west corner","value":"47.365500, 8.524875"},{"property":"North-east corner","value":"47.365625, 8.525000"},{"property":"Area width","value":"9.4 m"},{"property":"Area height","value":"13.9 m"}]},"credits_used":5,"credits_remaining":null}},"decode_a_full_code":{"summary":"Decode a full code","value":{"tool":"plus-code-converter","tool_version":"1.0.2","outputs":{"resultCode":"8FVC9G8F+6X","resultCoordinates":"47.365562, 8.524938","shortCode":"","googleMapsUrl":"https://www.google.com/maps/search/?api=1&query=47.365562,8.524938","openStreetMapUrl":"https://www.openstreetmap.org/?mlat=47.365562&mlon=8.524938#map=17/47.365562/8.524938","codeDetails":[{"property":"Code","value":"8FVC9G8F+6X"},{"property":"Code length","value":"10 characters"},{"property":"Centre latitude","value":"47.365562"},{"property":"Centre longitude","value":"8.524938"},{"property":"South-west corner","value":"47.365500, 8.524875"},{"property":"North-east corner","value":"47.365625, 8.525000"},{"property":"Area width","value":"9.4 m"},{"property":"Area height","value":"13.9 m"}]},"credits_used":5,"credits_remaining":null}},"shorten_relative_to_a_nearby_city":{"summary":"Shorten relative to a nearby city","value":{"tool":"plus-code-converter","tool_version":"1.0.2","outputs":{"resultCode":"8FVC9G8F+6X","resultCoordinates":"47.365562, 8.524938","shortCode":"9G8F+6X","googleMapsUrl":"https://www.google.com/maps/search/?api=1&query=47.365562,8.524938","openStreetMapUrl":"https://www.openstreetmap.org/?mlat=47.365562&mlon=8.524938#map=17/47.365562/8.524938","codeDetails":[{"property":"Code","value":"8FVC9G8F+6X"},{"property":"Code length","value":"10 characters"},{"property":"Centre latitude","value":"47.365562"},{"property":"Centre longitude","value":"8.524938"},{"property":"South-west corner","value":"47.365500, 8.524875"},{"property":"North-east corner","value":"47.365625, 8.525000"},{"property":"Area width","value":"9.4 m"},{"property":"Area height","value":"13.9 m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultCode":{"type":"string","description":"Open Location Code (full)"},"resultCoordinates":{"type":"string","description":"Centre coordinates (latitude, longitude)"},"shortCode":{"type":"string","description":"Shortened code"},"googleMapsUrl":{"type":"string","description":"Google Maps link"},"openStreetMapUrl":{"type":"string","description":"OpenStreetMap link"},"codeDetails":{"type":"array","description":"Code details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/po-to-mo":{"post":{"operationId":"run_po_to_mo","summary":"PO to MO Converter","tags":["Converters"],"description":"Compile a GNU gettext .po translation source file into a binary .mo file, ready for PHP, Python, WordPress, or any gettext-based app. Runs entirely in your browser — no upload.\n\n[Try PO to MO Converter in your browser →](https://iotools.cloud/tool/po-to-mo/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"po":{"type":"string","description":"PO file content"}},"required":["po"]},"examples":{"two_entry_catalog":{"summary":"Two-entry catalog","value":{"po":"#\nmsgid \"\"\nmsgstr \"\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\nmsgid \"Hello\"\nmsgstr \"Hola\"\n\nmsgid \"Goodbye\"\nmsgstr \"Adiós\"\n"}},"plural_forms_msgctxt_and_a_fuzzy_entry_dropped_with_no_blank_line_separator":{"summary":"Plural forms, msgctxt, and a fuzzy entry (dropped) with no blank-line separator","value":{"po":"msgid \"\"\nmsgstr \"\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\nmsgid \"One apple\"\nmsgid_plural \"%d apples\"\nmsgstr[0] \"Una manzana\"\nmsgstr[1] \"%d manzanas\"\n\nmsgctxt \"menu\"\nmsgid \"Open\"\nmsgstr \"Abrir\"\n\n#, fuzzy\nmsgid \"Skip me\"\nmsgstr \"should not appear\"\nmsgid \"Untranslated\"\nmsgstr \"\""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_entry_catalog":{"summary":"Two-entry catalog","value":{"tool":"po-to-mo","tool_version":"1.0.2","outputs":{"mo":"data:application/octet-stream;base64,3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAABwAAAE0AAAAFAAAAVQAAACgAAABbAAAABgAAAIQAAAAEAAAAiwAAAABHb29kYnllAEhlbGxvAENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAoAQWRpw7NzAEhvbGEA"},"credits_used":5,"credits_remaining":null}},"plural_forms_msgctxt_and_a_fuzzy_entry_dropped_with_no_blank_line_separator":{"summary":"Plural forms, msgctxt, and a fuzzy entry (dropped) with no blank-line separator","value":{"tool":"po-to-mo","tool_version":"1.0.2","outputs":{"mo":"data:application/octet-stream;base64,3hIElQAAAAADAAAAHAAAADQAAAAAAAAAAAAAAAAAAABMAAAAEwAAAE0AAAAJAAAAYQAAACgAAABrAAAAFwAAAJQAAAAFAAAArAAAAABPbmUgYXBwbGUAJWQgYXBwbGVzAG1lbnUET3BlbgBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKAFVuYSBtYW56YW5hACVkIG1hbnphbmFzAEFicmlyAA=="},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mo":{"type":"string","contentEncoding":"base64","description":"MO file"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/print-typography-units-converter":{"post":{"operationId":"run_print_typography_units_converter","summary":"Print Typography Units Converter","tags":["Converters"],"description":"Convert between print typography units — points, picas, inches, millimeters, and centimeters — using exact print measurement ratios (1in = 72pt = 6pc = 25.4mm = 2.54cm).\n\n[Try Print Typography Units Converter in your browser →](https://iotools.cloud/tool/print-typography-units-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"fromUnit":{"enum":["pt","pica","inch","mm","cm"],"description":"Unit"}},"required":[]},"examples":{"12pt_a_common_body_text_size":{"summary":"12pt (a common body-text size)","value":{"value":"12","fromUnit":"pt"}},"1_inch":{"summary":"1 inch","value":{"value":"1","fromUnit":"inch"}},"10mm":{"summary":"10mm","value":{"value":"10","fromUnit":"mm"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12pt_a_common_body_text_size":{"summary":"12pt (a common body-text size)","value":{"tool":"print-typography-units-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Points (pt)","value":"12pt"},{"unit":"Picas (pc)","value":"1pc"},{"unit":"Inches (in)","value":"0.1667in"},{"unit":"Millimeters (mm)","value":"4.2333mm"},{"unit":"Centimeters (cm)","value":"0.4233cm"}]},"credits_used":5,"credits_remaining":null}},"1_inch":{"summary":"1 inch","value":{"tool":"print-typography-units-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Points (pt)","value":"72pt"},{"unit":"Picas (pc)","value":"6pc"},{"unit":"Inches (in)","value":"1in"},{"unit":"Millimeters (mm)","value":"25.4mm"},{"unit":"Centimeters (cm)","value":"2.54cm"}]},"credits_used":5,"credits_remaining":null}},"10mm":{"summary":"10mm","value":{"tool":"print-typography-units-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Points (pt)","value":"28.3465pt"},{"unit":"Picas (pc)","value":"2.3622pc"},{"unit":"Inches (in)","value":"0.3937in"},{"unit":"Millimeters (mm)","value":"10mm"},{"unit":"Centimeters (cm)","value":"1cm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Equivalent values","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/protobuf-text-json-converter":{"post":{"operationId":"run_protobuf_text_json_converter","summary":"Protobuf Text ↔ JSON Converter","tags":["Converters"],"description":"Convert Protocol Buffers text format (prototext) to JSON and back. Schema-less structural conversion: nested messages become objects and repeated fields become arrays. Pick a direction and indentation.\n\n[Try Protobuf Text ↔ JSON Converter in your browser →](https://iotools.cloud/tool/protobuf-text-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"convertMode":{"enum":["proto-to-json","json-to-proto"],"description":"Direction"},"indentation":{"enum":["2","4"],"description":"Indentation"}},"required":[]},"examples":{"protobuf_text_json_nested_repeated":{"summary":"Protobuf text → JSON (nested + repeated)","value":{"inputText":"# Person message example\nname: \"John Doe\"\nid: 1234\nactive: true\nscore: 98.5\nrole: ADMIN\naddress {\n  city: \"Springfield\"\n  zip: \"62701\"\n}\nphone {\n  number: \"+1-555-0100\"\n  type: MOBILE\n}\nphone {\n  number: \"+1-555-0200\"\n  type: HOME\n}\ntags: \"developer\"\ntags: \"golang\"","convertMode":"proto-to-json","indentation":"2"}},"json_protobuf_text_nested_array":{"summary":"JSON → Protobuf text (nested + array)","value":{"inputText":"{\n  \"name\": \"Jane Roe\",\n  \"id\": 42,\n  \"active\": false,\n  \"address\": {\n    \"city\": \"Metropolis\",\n    \"zip\": \"10001\"\n  },\n  \"tags\": [\"admin\", \"editor\"]\n}","convertMode":"json-to-proto","indentation":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"protobuf_text_json_nested_repeated":{"summary":"Protobuf text → JSON (nested + repeated)","value":{"tool":"protobuf-text-json-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"John Doe\",\n  \"id\": 1234,\n  \"active\": true,\n  \"score\": 98.5,\n  \"role\": \"ADMIN\",\n  \"address\": {\n    \"city\": \"Springfield\",\n    \"zip\": \"62701\"\n  },\n  \"phone\": [\n    {\n      \"number\": \"+1-555-0100\",\n      \"type\": \"MOBILE\"\n    },\n    {\n      \"number\": \"+1-555-0200\",\n      \"type\": \"HOME\"\n    }\n  ],\n  \"tags\": [\n    \"developer\",\n    \"golang\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"json_protobuf_text_nested_array":{"summary":"JSON → Protobuf text (nested + array)","value":{"tool":"protobuf-text-json-converter","tool_version":"1.0.2","outputs":{"output":"name: \"Jane Roe\"\nid: 42\nactive: false\naddress {\n  city: \"Metropolis\"\n  zip: \"10001\"\n}\ntags: \"admin\"\ntags: \"editor\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/punycode-converter":{"post":{"operationId":"run_punycode_converter","summary":"Punycode Converter","tags":["Converters"],"description":"Convert internationalized domain names (IDN) to and from Punycode ASCII form (xn--) per RFC 3492/RFC 5891. Encode Unicode domains like münchen.de to xn--mnchen-3ya.de, or decode Punycode back to Unicode — ASCII labels pass through unchanged.\n\n[Try Punycode Converter in your browser →](https://iotools.cloud/tool/punycode-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Domain or Text"},"mode":{"enum":["encode","decode"],"description":"Mode"},"fullDomain":{"type":"boolean","description":"Process full domain (split by dots)"}},"required":[]},"examples":{"encode_m_nchen_de":{"summary":"Encode münchen.de","value":{"inputText":"münchen.de","mode":"encode","fullDomain":"true"}},"decode_xn_mnchen_3ya_de":{"summary":"Decode xn--mnchen-3ya.de","value":{"inputText":"xn--mnchen-3ya.de","mode":"decode","fullDomain":"true"}},"multi_label_domain_with_mixed_ascii_unicode":{"summary":"Multi-label domain with mixed ASCII/Unicode","value":{"inputText":"café.example.com","mode":"encode","fullDomain":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_m_nchen_de":{"summary":"Encode münchen.de","value":{"tool":"punycode-converter","tool_version":"1.0.2","outputs":{"output":"xn--mnchen-3ya.de","breakdown":[{"original":"münchen","converted":"xn--mnchen-3ya"},{"original":"de","converted":"de"}]},"credits_used":5,"credits_remaining":null}},"decode_xn_mnchen_3ya_de":{"summary":"Decode xn--mnchen-3ya.de","value":{"tool":"punycode-converter","tool_version":"1.0.2","outputs":{"output":"münchen.de","breakdown":[{"original":"xn--mnchen-3ya","converted":"münchen"},{"original":"de","converted":"de"}]},"credits_used":5,"credits_remaining":null}},"multi_label_domain_with_mixed_ascii_unicode":{"summary":"Multi-label domain with mixed ASCII/Unicode","value":{"tool":"punycode-converter","tool_version":"1.0.2","outputs":{"output":"xn--caf-dma.example.com","breakdown":[{"original":"café","converted":"xn--caf-dma"},{"original":"example","converted":"example"},{"original":"com","converted":"com"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"breakdown":{"type":"array","description":"Per-label breakdown","items":{"type":"object","properties":{"original":{"type":"string","description":"Original"},"converted":{"type":"string","description":"Converted"}}},"x-iotools-columns":["original","converted"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/string-obfuscator":{"post":{"operationId":"run_string_obfuscator","summary":"String Obfuscator","tags":["Converters"],"description":"Mask the middle of a string with asterisks, keeping a configurable number of leading/trailing characters, spaces, and chosen characters visible. Useful for partially hiding emails, card numbers, or IDs in screenshots and docs.\n\n[Try String Obfuscator in your browser →](https://iotools.cloud/tool/string-obfuscator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stringToObfuscate":{"type":"string","description":"String to obfuscate"},"keepFirst":{"type":"number","description":"Keep first","minimum":0,"maximum":50},"keepLast":{"type":"number","description":"Keep last","minimum":0,"maximum":50},"keepSpaces":{"type":"boolean","description":"Keep spaces"},"keepCharacters":{"type":"string","description":"Keep characters"}},"required":["stringToObfuscate"]},"examples":{"email_address_defaults":{"summary":"Email address (defaults)","value":{"stringToObfuscate":"john.doe@example.com","keepFirst":"4","keepLast":"4","keepSpaces":"true","keepCharacters":""}},"credit_card_keep_last_4_only":{"summary":"Credit card (keep last 4 only)","value":{"stringToObfuscate":"4111 2222 3333 4444","keepFirst":"0","keepLast":"4","keepSpaces":"true","keepCharacters":""}},"keep_specific_characters_and":{"summary":"Keep specific characters (@ and .)","value":{"stringToObfuscate":"john.doe@example.com","keepFirst":"2","keepLast":"0","keepSpaces":"false","keepCharacters":"@."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"email_address_defaults":{"summary":"Email address (defaults)","value":{"tool":"string-obfuscator","tool_version":"1.0.2","outputs":{"obfuscatedString":"john************.com"},"credits_used":5,"credits_remaining":null}},"credit_card_keep_last_4_only":{"summary":"Credit card (keep last 4 only)","value":{"tool":"string-obfuscator","tool_version":"1.0.2","outputs":{"obfuscatedString":"**** **** **** 4444"},"credits_used":5,"credits_remaining":null}},"keep_specific_characters_and":{"summary":"Keep specific characters (@ and .)","value":{"tool":"string-obfuscator","tool_version":"1.0.2","outputs":{"obfuscatedString":"jo**.***@*******.***"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"obfuscatedString":{"type":"string","description":"Obfuscated String"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/power-converter":{"post":{"operationId":"run_power_converter","summary":"Power Converter","tags":["Converters"],"description":"Convert power between watts, kilowatts, horsepower, metric horsepower, BTU per hour, and 5 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Power Converter in your browser →](https://iotools.cloud/tool/power-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["watt","milliwatt","kilowatt","megawatt","gigawatt","horsepower","metric_horsepower","kilocalories_per_hour","british_thermal_units_per_hour","foot_pounds_per_second"],"description":"Convert from"},"toUnit":{"enum":["all","watt","milliwatt","kilowatt","megawatt","gigawatt","horsepower","metric_horsepower","kilocalories_per_hour","british_thermal_units_per_hour","foot_pounds_per_second"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_kw_to_every_unit":{"summary":"1 kW to every unit","value":{"value":"1","fromUnit":"kilowatt","toUnit":"all","precision":"4"}},"300_hp_to_kilowatt":{"summary":"300 hp to kilowatt","value":{"value":"300","fromUnit":"horsepower","toUnit":"kilowatt","precision":"2"}},"1000_w_to_every_unit":{"summary":"1000 W to every unit","value":{"value":"1000","fromUnit":"watt","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_kw_to_every_unit":{"summary":"1 kW to every unit","value":{"tool":"power-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Watt (W)","value":"1000"},{"unit":"Milliwatt (mW)","value":"1000000"},{"unit":"Kilowatt (kW)","value":"1"},{"unit":"Megawatt (MW)","value":"0.001"},{"unit":"Gigawatt (GW)","value":"0"},{"unit":"Horsepower (hp)","value":"1.341"},{"unit":"Metric Horsepower (hp(M))","value":"1.3596"},{"unit":"Kilocalories per Hour (kcal/h)","value":"859.8452"},{"unit":"British Thermal Units per Hour (BTU/h)","value":"3412.1416"},{"unit":"Foot-pounds per Second (ft·lbf/s)","value":"737.5621"}]},"credits_used":5,"credits_remaining":null}},"300_hp_to_kilowatt":{"summary":"300 hp to kilowatt","value":{"tool":"power-converter","tool_version":"1.0.2","outputs":{"result":"223.71 Kilowatt (kW)","table":[]},"credits_used":5,"credits_remaining":null}},"1000_w_to_every_unit":{"summary":"1000 W to every unit","value":{"tool":"power-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Watt (W)","value":"1000"},{"unit":"Milliwatt (mW)","value":"1000000"},{"unit":"Kilowatt (kW)","value":"1"},{"unit":"Megawatt (MW)","value":"0.001"},{"unit":"Gigawatt (GW)","value":"0.000001"},{"unit":"Horsepower (hp)","value":"1.341022"},{"unit":"Metric Horsepower (hp(M))","value":"1.359622"},{"unit":"Kilocalories per Hour (kcal/h)","value":"859.845228"},{"unit":"British Thermal Units per Hour (BTU/h)","value":"3412.141633"},{"unit":"Foot-pounds per Second (ft·lbf/s)","value":"737.562149"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pressure-converter":{"post":{"operationId":"run_pressure_converter","summary":"Pressure Converter","tags":["Converters"],"description":"Convert pressure between pascals, bar, atmospheres, PSI, torr/mmHg, inches of mercury, and 6 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Pressure Converter in your browser →](https://iotools.cloud/tool/pressure-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["pascal","kilopascal","megapascal","bar","millibar","atmosphere","tech_atmosphere","psi","ksi","torr","inhg","cmh2o"],"description":"Convert from"},"toUnit":{"enum":["all","pascal","kilopascal","megapascal","bar","millibar","atmosphere","tech_atmosphere","psi","ksi","torr","inhg","cmh2o"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_atm_to_every_unit":{"summary":"1 atm to every unit","value":{"value":"1","fromUnit":"atmosphere","toUnit":"all","precision":"4"}},"32_psi_to_atmosphere":{"summary":"32 psi to atmosphere","value":{"value":"32","fromUnit":"psi","toUnit":"atmosphere","precision":"2"}},"1_bar_to_every_unit":{"summary":"1 bar to every unit","value":{"value":"1","fromUnit":"bar","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_atm_to_every_unit":{"summary":"1 atm to every unit","value":{"tool":"pressure-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Pascal (Pa)","value":"101325"},{"unit":"Kilopascal (kPa)","value":"101.325"},{"unit":"Megapascal (MPa)","value":"0.1013"},{"unit":"Bar (bar)","value":"1.0132"},{"unit":"Millibar (mbar)","value":"1013.25"},{"unit":"Atmosphere (atm)","value":"1"},{"unit":"Technical Atmosphere (at)","value":"1.0332"},{"unit":"Pounds per Square Inch (psi)","value":"14.6959"},{"unit":"Kilopounds per Square Inch (ksi)","value":"0.0147"},{"unit":"Torr / mmHg","value":"760.0021"},{"unit":"Inches of Mercury (inHg)","value":"29.9213"},{"unit":"Centimeters of Water (cmH₂O)","value":"1033.2275"}]},"credits_used":5,"credits_remaining":null}},"32_psi_to_atmosphere":{"summary":"32 psi to atmosphere","value":{"tool":"pressure-converter","tool_version":"1.0.2","outputs":{"result":"2.18 Atmosphere (atm)","table":[]},"credits_used":5,"credits_remaining":null}},"1_bar_to_every_unit":{"summary":"1 bar to every unit","value":{"tool":"pressure-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Pascal (Pa)","value":"100000"},{"unit":"Kilopascal (kPa)","value":"100"},{"unit":"Megapascal (MPa)","value":"0.1"},{"unit":"Bar (bar)","value":"1"},{"unit":"Millibar (mbar)","value":"1000"},{"unit":"Atmosphere (atm)","value":"0.986923"},{"unit":"Technical Atmosphere (at)","value":"1.019716"},{"unit":"Pounds per Square Inch (psi)","value":"14.503774"},{"unit":"Kilopounds per Square Inch (ksi)","value":"0.014504"},{"unit":"Torr / mmHg","value":"750.063755"},{"unit":"Inches of Mercury (inHg)","value":"29.52998"},{"unit":"Centimeters of Water (cmH₂O)","value":"1019.716213"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-to-html":{"post":{"operationId":"run_markdown_to_html","summary":"Markdown to HTML Converter","tags":["Converters"],"description":"Convert Markdown (CommonMark / GitHub-Flavored) to clean HTML — headings, lists, tables, code blocks, links and more. Preview it live and copy the source.\n\n[Try Markdown to HTML Converter in your browser →](https://iotools.cloud/tool/markdown-to-html/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown"},"gfm":{"type":"boolean","description":"GitHub-Flavored Markdown (tables, ~~strikethrough~~, autolinks)"},"breaks":{"type":"boolean","description":"Convert single line breaks to &lt;br> (GitHub comment style)"}},"required":[]},"examples":{"headings_emphasis_list_and_a_link":{"summary":"Headings, emphasis, list and a link","value":{"markdown":"# Hello World\n\nThis is **bold** and this is *italic*.\n\n- One\n- Two\n\n[A link](https://iotools.cloud/)","gfm":"true","breaks":""}},"gfm_table":{"summary":"GFM table","value":{"markdown":"| A | B |\n| - | - |\n| 1 | 2 |","gfm":"true","breaks":""}},"fenced_code_block":{"summary":"Fenced code block","value":{"markdown":"```js\nconst x = 1;\n```","gfm":"true","breaks":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"headings_emphasis_list_and_a_link":{"summary":"Headings, emphasis, list and a link","value":{"tool":"markdown-to-html","tool_version":"1.0.2","outputs":{"html":"<h1>Hello World</h1>\n<p>This is <strong>bold</strong> and this is <em>italic</em>.</p>\n<ul>\n<li>One</li>\n<li>Two</li>\n</ul>\n<p><a href=\"https://iotools.cloud/\">A link</a></p>"},"credits_used":5,"credits_remaining":null}},"gfm_table":{"summary":"GFM table","value":{"tool":"markdown-to-html","tool_version":"1.0.2","outputs":{"html":"<table>\n<thead>\n<tr>\n<th>A</th>\n<th>B</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>1</td>\n<td>2</td>\n</tr>\n</tbody></table>"},"credits_used":5,"credits_remaining":null}},"fenced_code_block":{"summary":"Fenced code block","value":{"tool":"markdown-to-html","tool_version":"1.0.2","outputs":{"html":"<pre><code class=\"language-js\">const x = 1;\n</code></pre>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"html":{"type":"string","description":"HTML source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-to-asciidoc":{"post":{"operationId":"run_markdown_to_asciidoc","summary":"Markdown to AsciiDoc Converter","tags":["Converters"],"description":"Convert Markdown (CommonMark / GitHub-Flavored) to AsciiDoc — headings, bold/italic, fenced code blocks with language labels, tables, links, images, blockquotes, nested lists and task lists.\n\n[Try Markdown to AsciiDoc Converter in your browser →](https://iotools.cloud/tool/markdown-to-asciidoc/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown"},"gfm":{"type":"boolean","description":"GitHub-Flavored Markdown (tables, ~~strikethrough~~, task lists)"},"breaks":{"type":"boolean","description":"Convert single line breaks to AsciiDoc hard breaks"}},"required":[]},"examples":{"headings_emphasis_list_and_a_link":{"summary":"Headings, emphasis, list and a link","value":{"markdown":"# Hello World\n\nThis is **bold** and this is *italic*.\n\n- One\n- Two\n\n[A link](https://iotools.cloud/)","gfm":"true","breaks":""}},"gfm_table":{"summary":"GFM table","value":{"markdown":"| A | B |\n| - | - |\n| 1 | 2 |","gfm":"true","breaks":""}},"fenced_code_block_with_language":{"summary":"Fenced code block with language","value":{"markdown":"```js\nconst x = 1;\n```","gfm":"true","breaks":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"headings_emphasis_list_and_a_link":{"summary":"Headings, emphasis, list and a link","value":{"tool":"markdown-to-asciidoc","tool_version":"1.0.2","outputs":{"adoc":"= Hello World\n\nThis is *bold* and this is _italic_.\n\n* One\n* Two\n\nlink:https://iotools.cloud/[A link]"},"credits_used":5,"credits_remaining":null}},"gfm_table":{"summary":"GFM table","value":{"tool":"markdown-to-asciidoc","tool_version":"1.0.2","outputs":{"adoc":"[cols=\"2*\"]\n|===\n| A | B\n\n| 1 | 2\n|==="},"credits_used":5,"credits_remaining":null}},"fenced_code_block_with_language":{"summary":"Fenced code block with language","value":{"tool":"markdown-to-asciidoc","tool_version":"1.0.2","outputs":{"adoc":"[source,js]\n----\nconst x = 1;\n----"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"adoc":{"type":"string","description":"AsciiDoc source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/speed-converter":{"post":{"operationId":"run_speed_converter","summary":"Speed Converter","tags":["Converters"],"description":"Convert speed between meters per second, kilometers per hour, miles per hour, knots, feet per second, and 7 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Speed Converter in your browser →](https://iotools.cloud/tool/speed-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["meter_per_second","kilometer_per_hour","mile_per_hour","foot_per_second","knot","kilometer_per_minute","centimeter_per_second","millimeter_per_second","mile_per_minute","inch_per_second","micrometer_per_second","nanometer_per_second"],"description":"Convert from"},"toUnit":{"enum":["all","meter_per_second","kilometer_per_hour","mile_per_hour","foot_per_second","knot","kilometer_per_minute","centimeter_per_second","millimeter_per_second","mile_per_minute","inch_per_second","micrometer_per_second","nanometer_per_second"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_km_h_to_every_unit":{"summary":"1 km/h to every unit","value":{"value":"1","fromUnit":"kilometer_per_hour","toUnit":"all","precision":"4"}},"60_mph_to_km_h":{"summary":"60 mph to km/h","value":{"value":"60","fromUnit":"mile_per_hour","toUnit":"kilometer_per_hour","precision":"2"}},"1_knot_to_every_unit":{"summary":"1 knot to every unit","value":{"value":"1","fromUnit":"knot","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_km_h_to_every_unit":{"summary":"1 km/h to every unit","value":{"tool":"speed-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Meter per Second (m/s)","value":"0.2778"},{"unit":"Kilometer per Hour (km/h)","value":"1"},{"unit":"Mile per Hour (mph)","value":"0.6214"},{"unit":"Foot per Second (ft/s)","value":"0.9113"},{"unit":"Knot (kn)","value":"0.54"},{"unit":"Kilometer per Minute (km/min)","value":"0.0167"},{"unit":"Centimeter per Second (cm/s)","value":"27.7778"},{"unit":"Millimeter per Second (mm/s)","value":"277.7778"},{"unit":"Mile per Minute (mi/min)","value":"0.0104"},{"unit":"Inch per Second (in/s)","value":"10.9361"},{"unit":"Micrometer per Second (µm/s)","value":"277777.7778"},{"unit":"Nanometer per Second (nm/s)","value":"277777777.7778"}]},"credits_used":5,"credits_remaining":null}},"60_mph_to_km_h":{"summary":"60 mph to km/h","value":{"tool":"speed-converter","tool_version":"1.0.2","outputs":{"result":"96.56 Kilometer per Hour (km/h)","table":[]},"credits_used":5,"credits_remaining":null}},"1_knot_to_every_unit":{"summary":"1 knot to every unit","value":{"tool":"speed-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Meter per Second (m/s)","value":"0.514444"},{"unit":"Kilometer per Hour (km/h)","value":"1.852"},{"unit":"Mile per Hour (mph)","value":"1.150779"},{"unit":"Foot per Second (ft/s)","value":"1.68781"},{"unit":"Knot (kn)","value":"1"},{"unit":"Kilometer per Minute (km/min)","value":"0.030867"},{"unit":"Centimeter per Second (cm/s)","value":"51.444444"},{"unit":"Millimeter per Second (mm/s)","value":"514.444444"},{"unit":"Mile per Minute (mi/min)","value":"0.01918"},{"unit":"Inch per Second (in/s)","value":"20.253718"},{"unit":"Micrometer per Second (µm/s)","value":"514444.444444"},{"unit":"Nanometer per Second (nm/s)","value":"514444444.444444"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-to-hex":{"post":{"operationId":"run_text_to_hex","summary":"Text to Hex Converter","tags":["Converters"],"description":"Convert text to its hexadecimal byte representation (UTF-8), with your choice of separator and upper- or lower-case output.\n\n[Try Text to Hex Converter in your browser →](https://iotools.cloud/tool/text-to-hex/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"delimiter":{"enum":["space","none","comma","dash","0x","\\x"],"description":"Byte separator"},"hexCase":{"enum":["uppercase","lowercase"],"description":"Letter case"}},"required":[]},"examples":{"text_to_hex_space_separated_uppercase":{"summary":"Text to hex (space-separated, uppercase)","value":{"inputText":"Hello World!","delimiter":"space","hexCase":"uppercase"}},"continuous_lowercase":{"summary":"Continuous, lowercase","value":{"inputText":"Hi","delimiter":"none","hexCase":"lowercase"}},"0x_prefixed_bytes":{"summary":"0x-prefixed bytes","value":{"inputText":"Hi","delimiter":"0x","hexCase":"uppercase"}},"dash_separated":{"summary":"Dash-separated","value":{"inputText":"Hi","delimiter":"dash","hexCase":"uppercase"}},"multi_byte_utf_8_accented_characters":{"summary":"Multi-byte UTF-8 (accented characters)","value":{"inputText":"café","delimiter":"space","hexCase":"uppercase"}},"emoji_4_byte_utf_8":{"summary":"Emoji (4-byte UTF-8)","value":{"inputText":"😀","delimiter":"space","hexCase":"uppercase"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"text_to_hex_space_separated_uppercase":{"summary":"Text to hex (space-separated, uppercase)","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"48 65 6C 6C 6F 20 57 6F 72 6C 64 21"},"credits_used":5,"credits_remaining":null}},"continuous_lowercase":{"summary":"Continuous, lowercase","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"4869"},"credits_used":5,"credits_remaining":null}},"0x_prefixed_bytes":{"summary":"0x-prefixed bytes","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"0x48 0x69"},"credits_used":5,"credits_remaining":null}},"dash_separated":{"summary":"Dash-separated","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"48-69"},"credits_used":5,"credits_remaining":null}},"multi_byte_utf_8_accented_characters":{"summary":"Multi-byte UTF-8 (accented characters)","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"63 61 66 C3 A9"},"credits_used":5,"credits_remaining":null}},"emoji_4_byte_utf_8":{"summary":"Emoji (4-byte UTF-8)","value":{"tool":"text-to-hex","tool_version":"1.0.2","outputs":{"output":"F0 9F 98 80"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Hexadecimal"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/regex-converter":{"post":{"operationId":"run_regex_converter","summary":"Regex Converter","tags":["Converters"],"description":"Convert a regular expression's syntax between PCRE (PHP), JavaScript, Python re, Go regexp (RE2), Java, and Ruby — named groups, backreferences, lookbehind, atomic groups, possessive quantifiers, inline flags and more — plus convert the flags string between each flavor's notation. Flags per pair, notes explain every change or incompatibility.\n\n[Try Regex Converter in your browser →](https://iotools.cloud/tool/regex-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"regexPattern":{"type":"string","description":"Regex Pattern"},"flags":{"type":"string","description":"Flags"},"sourceFlavor":{"enum":["pcre","javascript","python","go","java","ruby"],"description":"Source Flavor"},"targetFlavor":{"enum":["pcre","javascript","python","go","java","ruby"],"description":"Target Flavor"}},"required":[]},"examples":{"pcre_to_javascript_named_group_backreference":{"summary":"PCRE to JavaScript (named group + backreference)","value":{"regexPattern":"(?P<name>\\w+)\\s+(?P=name)","flags":"i","sourceFlavor":"pcre","targetFlavor":"javascript"}},"javascript_to_pcre_named_group_unsupported_g_flag_dropped":{"summary":"JavaScript to PCRE (named group, unsupported g flag dropped)","value":{"regexPattern":"(?<year>\\d{4})-(?<month>\\d{2})","flags":"gi","sourceFlavor":"javascript","targetFlavor":"pcre"}},"pcre_to_go_re2_supports_a_z_so_they_pass_through_unchanged":{"summary":"PCRE to Go (RE2 supports \\A/\\z, so they pass through unchanged)","value":{"regexPattern":"\\A(?P<word>\\w+)\\z","flags":"i","sourceFlavor":"pcre","targetFlavor":"go"}},"ruby_to_pcre_ruby_s_m_is_dotall_converts_to_pcre_s_s":{"summary":"Ruby to PCRE (Ruby's /m is dotall, converts to PCRE's /s)","value":{"regexPattern":"(?<greeting>Hi)","flags":"m","sourceFlavor":"ruby","targetFlavor":"pcre"}},"pcre_to_javascript_r_h_v_expanded_no_native_equivalents":{"summary":"PCRE to JavaScript (\\R, \\h, \\v expanded — no native equivalents)","value":{"regexPattern":"line1\\Rline2\\h\\v","flags":"","sourceFlavor":"pcre","targetFlavor":"javascript"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pcre_to_javascript_named_group_backreference":{"summary":"PCRE to JavaScript (named group + backreference)","value":{"tool":"regex-converter","tool_version":"1.0.2","outputs":{"convertedRegex":"(?<name>\\w+)\\s+\\k<name>","convertedFlags":"i","conversionNotes":[{"status":"Success","note":"Named group syntax changed: (?P<name>) → (?<name>)"},{"status":"Success","note":"Named backreference syntax changed: (?P=name) → \\k<name>"}]},"credits_used":5,"credits_remaining":null}},"javascript_to_pcre_named_group_unsupported_g_flag_dropped":{"summary":"JavaScript to PCRE (named group, unsupported g flag dropped)","value":{"tool":"regex-converter","tool_version":"1.0.2","outputs":{"convertedRegex":"(?P<year>\\d{4})-(?P<month>\\d{2})","convertedFlags":"i","conversionNotes":[{"status":"Success","note":"Named group syntax changed: (?<name>) → (?P<name>)"},{"status":"Warning","note":"Flag \"g\" (global) is not supported in PCRE (PHP)"}]},"credits_used":5,"credits_remaining":null}},"pcre_to_go_re2_supports_a_z_so_they_pass_through_unchanged":{"summary":"PCRE to Go (RE2 supports \\A/\\z, so they pass through unchanged)","value":{"tool":"regex-converter","tool_version":"1.0.2","outputs":{"convertedRegex":"\\A(?P<word>\\w+)\\z","convertedFlags":"i","conversionNotes":[{"status":"Success","note":"Clean conversion — no incompatible features detected"}]},"credits_used":5,"credits_remaining":null}},"ruby_to_pcre_ruby_s_m_is_dotall_converts_to_pcre_s_s":{"summary":"Ruby to PCRE (Ruby's /m is dotall, converts to PCRE's /s)","value":{"tool":"regex-converter","tool_version":"1.0.2","outputs":{"convertedRegex":"(?P<greeting>Hi)","convertedFlags":"s","conversionNotes":[{"status":"Success","note":"Named group syntax changed: (?<name>) → (?P<name>)"}]},"credits_used":5,"credits_remaining":null}},"pcre_to_javascript_r_h_v_expanded_no_native_equivalents":{"summary":"PCRE to JavaScript (\\R, \\h, \\v expanded — no native equivalents)","value":{"tool":"regex-converter","tool_version":"1.0.2","outputs":{"convertedRegex":"line1(?:\\r\\n|\\n|\\r)line2[\\t ][\\n\\r\\f]","convertedFlags":"","conversionNotes":[{"status":"Warning","note":"\\R (line break) expanded to (?:\\r\\n|\\n|\\r) — not natively supported in JavaScript"},{"status":"Warning","note":"\\h (horizontal whitespace) expanded to [\\t ] — not natively supported in JavaScript"},{"status":"Warning","note":"\\v (vertical whitespace) expanded to [\\n\\r\\f] — not natively supported in JavaScript"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"convertedRegex":{"type":"string","description":"Converted Regex"},"convertedFlags":{"type":"string","description":"Converted Flags"},"conversionNotes":{"type":"array","description":"Conversion Notes","items":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"note":{"type":"string","description":"Note"}}},"x-iotools-columns":["status","note"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rgb-to-cmyk":{"post":{"operationId":"run_rgb_to_cmyk","summary":"RGB to CMYK Converter","tags":["Converters"],"description":"Convert an sRGB color (Red, Green, Blue 0-255) to CMYK print percentages (Cyan, Magenta, Yellow, Key/Black 0-100%), with a hex code, a per-channel breakdown and a live color swatch.\n\n[Try RGB to CMYK Converter in your browser →](https://iotools.cloud/tool/rgb-to-cmyk/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rgbR":{"type":"number","description":"R (Red)","minimum":0,"maximum":255},"rgbG":{"type":"number","description":"G (Green)","minimum":0,"maximum":255},"rgbB":{"type":"number","description":"B (Blue)","minimum":0,"maximum":255}},"required":[]},"examples":{"vivid_orange_255_102_0":{"summary":"Vivid orange (255, 102, 0)","value":{"rgbR":"255","rgbG":"102","rgbB":"0"}},"royal_blue_51_102_204":{"summary":"Royal blue (51, 102, 204)","value":{"rgbR":"51","rgbG":"102","rgbB":"204"}},"pure_white_255_255_255":{"summary":"Pure white (255, 255, 255)","value":{"rgbR":"255","rgbG":"255","rgbB":"255"}},"pure_black_0_0_0":{"summary":"Pure black (0, 0, 0)","value":{"rgbR":"0","rgbG":"0","rgbB":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"vivid_orange_255_102_0":{"summary":"Vivid orange (255, 102, 0)","value":{"tool":"rgb-to-cmyk","tool_version":"1.0.2","outputs":{"cmyk":"cmyk(0%, 60%, 100%, 0%)","hex":"#FF6600","colorTable":[{"property":"Red","value":"255"},{"property":"Green","value":"102"},{"property":"Blue","value":"0"},{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"60%"},{"property":"Yellow","value":"100%"},{"property":"Key (Black)","value":"0%"},{"property":"RGB","value":"rgb(255, 102, 0)"},{"property":"CMYK","value":"cmyk(0%, 60%, 100%, 0%)"},{"property":"HEX","value":"#FF6600"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FF6600;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#FF6600</div>"},"credits_used":5,"credits_remaining":null}},"royal_blue_51_102_204":{"summary":"Royal blue (51, 102, 204)","value":{"tool":"rgb-to-cmyk","tool_version":"1.0.2","outputs":{"cmyk":"cmyk(75%, 50%, 0%, 20%)","hex":"#3366CC","colorTable":[{"property":"Red","value":"51"},{"property":"Green","value":"102"},{"property":"Blue","value":"204"},{"property":"Cyan","value":"75%"},{"property":"Magenta","value":"50%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"20%"},{"property":"RGB","value":"rgb(51, 102, 204)"},{"property":"CMYK","value":"cmyk(75%, 50%, 0%, 20%)"},{"property":"HEX","value":"#3366CC"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#3366CC;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#3366CC</div>"},"credits_used":5,"credits_remaining":null}},"pure_white_255_255_255":{"summary":"Pure white (255, 255, 255)","value":{"tool":"rgb-to-cmyk","tool_version":"1.0.2","outputs":{"cmyk":"cmyk(0%, 0%, 0%, 0%)","hex":"#FFFFFF","colorTable":[{"property":"Red","value":"255"},{"property":"Green","value":"255"},{"property":"Blue","value":"255"},{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"0%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"0%"},{"property":"RGB","value":"rgb(255, 255, 255)"},{"property":"CMYK","value":"cmyk(0%, 0%, 0%, 0%)"},{"property":"HEX","value":"#FFFFFF"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#FFFFFF;color:#111111;font-family:monospace;font-size:15px;font-weight:600\">#FFFFFF</div>"},"credits_used":5,"credits_remaining":null}},"pure_black_0_0_0":{"summary":"Pure black (0, 0, 0)","value":{"tool":"rgb-to-cmyk","tool_version":"1.0.2","outputs":{"cmyk":"cmyk(0%, 0%, 0%, 100%)","hex":"#000000","colorTable":[{"property":"Red","value":"0"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"Cyan","value":"0%"},{"property":"Magenta","value":"0%"},{"property":"Yellow","value":"0%"},{"property":"Key (Black)","value":"100%"},{"property":"RGB","value":"rgb(0, 0, 0)"},{"property":"CMYK","value":"cmyk(0%, 0%, 0%, 100%)"},{"property":"HEX","value":"#000000"}],"swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#000000;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#000000</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cmyk":{"type":"string","description":"CMYK"},"hex":{"type":"string","description":"HEX"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"swatchHtml":{"type":"string","description":"Swatch HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rot13":{"post":{"operationId":"run_rot13","summary":"ROT13 Encoder / Decoder","tags":["Converters"],"description":"Encode or decode text with ROT13, the fixed-shift-13 Caesar cipher. ROT13 is its own inverse, so the same action encodes and decodes; non-letters pass through unchanged.\n\n[Try ROT13 Encoder / Decoder in your browser →](https://iotools.cloud/tool/rot13/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"encode_a_message":{"summary":"Encode a message","value":{"inputText":"Hello World! This is a secret message."}},"self_inverse_decode":{"summary":"Self-inverse (decode)","value":{"inputText":"Uryyb Jbeyq!"}},"digits_and_symbols_pass_through":{"summary":"Digits and symbols pass through","value":{"inputText":"ROT13 rocks @ 100%!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_a_message":{"summary":"Encode a message","value":{"tool":"rot13","tool_version":"1.0.2","outputs":{"outputText":"Uryyb Jbeyq! Guvf vf n frperg zrffntr."},"credits_used":5,"credits_remaining":null}},"self_inverse_decode":{"summary":"Self-inverse (decode)","value":{"tool":"rot13","tool_version":"1.0.2","outputs":{"outputText":"Hello World!"},"credits_used":5,"credits_remaining":null}},"digits_and_symbols_pass_through":{"summary":"Digits and symbols pass through","value":{"tool":"rot13","tool_version":"1.0.2","outputs":{"outputText":"EBG13 ebpxf @ 100%!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"ROT13 Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/scientific-notation-converter":{"post":{"operationId":"run_scientific_notation_converter","summary":"Scientific Notation Converter","tags":["Converters"],"description":"Convert numbers between standard decimal, scientific (a × 10ⁿ), engineering and e-notation. Works both ways — paste any of these forms and get all four back. Handles very large and very small numbers exactly.\n\n[Try Scientific Notation Converter in your browser →](https://iotools.cloud/tool/scientific-notation-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputNumber":{"type":"string","description":"Number"},"sigFigs":{"enum":["auto","1","2","3","4","5","6","7","8","9","10","12","15"],"description":"Significant Figures"}},"required":[]},"examples":{"standard_number_exponent_not_a_multiple_of_3":{"summary":"Standard number (exponent not a multiple of 3)","value":{"inputNumber":"12345","sigFigs":"auto"}},"very_large_number_from_e_notation_avogadro":{"summary":"Very large number (from e-notation, Avogadro)","value":{"inputNumber":"6.022e23","sigFigs":"auto"}},"very_small_fraction_engineering_exponent_differs":{"summary":"Very small fraction (engineering exponent differs)","value":{"inputNumber":"0.0000123","sigFigs":"auto"}},"zero":{"summary":"Zero","value":{"inputNumber":"0","sigFigs":"auto"}},"negative_from_scientific_input_rounded_to_3_sig_figs":{"summary":"Negative, from scientific input, rounded to 3 sig figs","value":{"inputNumber":"-4.5678 × 10^4","sigFigs":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_number_exponent_not_a_multiple_of_3":{"summary":"Standard number (exponent not a multiple of 3)","value":{"tool":"scientific-notation-converter","tool_version":"1.0.2","outputs":{"standard":"12,345","scientific":"1.2345 × 10⁴","engineering":"12.345 × 10³","eNotation":"1.2345e4"},"credits_used":5,"credits_remaining":null}},"very_large_number_from_e_notation_avogadro":{"summary":"Very large number (from e-notation, Avogadro)","value":{"tool":"scientific-notation-converter","tool_version":"1.0.2","outputs":{"standard":"602,200,000,000,000,000,000,000","scientific":"6.022 × 10²³","engineering":"602.2 × 10²¹","eNotation":"6.022e23"},"credits_used":5,"credits_remaining":null}},"very_small_fraction_engineering_exponent_differs":{"summary":"Very small fraction (engineering exponent differs)","value":{"tool":"scientific-notation-converter","tool_version":"1.0.2","outputs":{"standard":"0.0000123","scientific":"1.23 × 10⁻⁵","engineering":"12.3 × 10⁻⁶","eNotation":"1.23e-5"},"credits_used":5,"credits_remaining":null}},"zero":{"summary":"Zero","value":{"tool":"scientific-notation-converter","tool_version":"1.0.2","outputs":{"standard":"0","scientific":"0","engineering":"0","eNotation":"0"},"credits_used":5,"credits_remaining":null}},"negative_from_scientific_input_rounded_to_3_sig_figs":{"summary":"Negative, from scientific input, rounded to 3 sig figs","value":{"tool":"scientific-notation-converter","tool_version":"1.0.2","outputs":{"standard":"-45,700","scientific":"-4.57 × 10⁴","engineering":"-45.7 × 10³","eNotation":"-4.57e4"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"standard":{"type":"string","description":"Standard notation"},"scientific":{"type":"string","description":"Scientific notation"},"engineering":{"type":"string","description":"Engineering notation"},"eNotation":{"type":"string","description":"E-notation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rgba-to-hex-converter":{"post":{"operationId":"run_rgba_to_hex_converter","summary":"RGBA to HEX Converter","tags":["Converters"],"description":"Convert a CSS rgba()/rgb() color to a HEX code — 6-digit when opaque, 8-digit (#RRGGBBAA) when it has transparency — with a full breakdown of red, green, blue, alpha and HSLA.\n\n[Try RGBA to HEX Converter in your browser →](https://iotools.cloud/tool/rgba-to-hex-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rgba":{"type":"string","description":"RGBA Color"},"alphaOverride":{"type":"number","description":"Alpha Override","minimum":0,"maximum":1}},"required":["rgba"]},"examples":{"opaque_rgba":{"summary":"Opaque rgba()","value":{"rgba":"rgba(255, 0, 0, 1)","alphaOverride":""}},"translucent_rgba":{"summary":"Translucent rgba()","value":{"rgba":"rgba(67, 255, 100, 0.15)","alphaOverride":""}},"rgb_without_alpha":{"summary":"rgb() without alpha","value":{"rgba":"rgb(51, 102, 153)","alphaOverride":""}},"modern_slash_syntax":{"summary":"Modern slash syntax","value":{"rgba":"rgb(0 170 255 / 50%)","alphaOverride":""}},"alpha_override_on_an_opaque_color":{"summary":"Alpha override on an opaque color","value":{"rgba":"rgb(51, 102, 153)","alphaOverride":"0.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"opaque_rgba":{"summary":"Opaque rgba()","value":{"tool":"rgba-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#FF0000","colorTable":[{"property":"Red","value":"255"},{"property":"Green","value":"0"},{"property":"Blue","value":"0"},{"property":"Alpha","value":"1"},{"property":"RGB","value":"rgb(255, 0, 0)"},{"property":"RGBA","value":"rgba(255, 0, 0, 1)"},{"property":"HSLA","value":"hsla(0, 100%, 50%, 1)"},{"property":"Hex","value":"#FF0000"}]},"credits_used":5,"credits_remaining":null}},"translucent_rgba":{"summary":"Translucent rgba()","value":{"tool":"rgba-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#43FF6426","colorTable":[{"property":"Red","value":"67"},{"property":"Green","value":"255"},{"property":"Blue","value":"100"},{"property":"Alpha","value":"0.15"},{"property":"RGB","value":"rgb(67, 255, 100)"},{"property":"RGBA","value":"rgba(67, 255, 100, 0.15)"},{"property":"HSLA","value":"hsla(131, 100%, 63%, 0.15)"},{"property":"Hex","value":"#43FF6426"}]},"credits_used":5,"credits_remaining":null}},"rgb_without_alpha":{"summary":"rgb() without alpha","value":{"tool":"rgba-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#336699","colorTable":[{"property":"Red","value":"51"},{"property":"Green","value":"102"},{"property":"Blue","value":"153"},{"property":"Alpha","value":"1"},{"property":"RGB","value":"rgb(51, 102, 153)"},{"property":"RGBA","value":"rgba(51, 102, 153, 1)"},{"property":"HSLA","value":"hsla(210, 50%, 40%, 1)"},{"property":"Hex","value":"#336699"}]},"credits_used":5,"credits_remaining":null}},"modern_slash_syntax":{"summary":"Modern slash syntax","value":{"tool":"rgba-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#00AAFF80","colorTable":[{"property":"Red","value":"0"},{"property":"Green","value":"170"},{"property":"Blue","value":"255"},{"property":"Alpha","value":"0.5"},{"property":"RGB","value":"rgb(0, 170, 255)"},{"property":"RGBA","value":"rgba(0, 170, 255, 0.5)"},{"property":"HSLA","value":"hsla(200, 100%, 50%, 0.5)"},{"property":"Hex","value":"#00AAFF80"}]},"credits_used":5,"credits_remaining":null}},"alpha_override_on_an_opaque_color":{"summary":"Alpha override on an opaque color","value":{"tool":"rgba-to-hex-converter","tool_version":"1.0.2","outputs":{"hex":"#33669980","colorTable":[{"property":"Red","value":"51"},{"property":"Green","value":"102"},{"property":"Blue","value":"153"},{"property":"Alpha","value":"0.5"},{"property":"RGB","value":"rgb(51, 102, 153)"},{"property":"RGBA","value":"rgba(51, 102, 153, 0.5)"},{"property":"HSLA","value":"hsla(210, 50%, 40%, 0.5)"},{"property":"Hex","value":"#33669980"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hex":{"type":"string","description":"HEX"},"colorTable":{"type":"array","description":"Color Values","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/roman-numeral-converter":{"post":{"operationId":"run_roman_numeral_converter","summary":"Roman Numeral Converter","tags":["Converters"],"description":"Convert a number (1–3999) to Roman numerals, or a Roman numeral back to a number. Shows the result plus a breakdown of how the numeral decomposes.\n\n[Try Roman Numeral Converter in your browser →](https://iotools.cloud/tool/roman-numeral-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["to-roman","to-number"],"description":"Direction"},"number":{"type":"number","description":"Number","minimum":1,"maximum":3999},"roman":{"type":"string","description":"Roman numeral"}},"required":[]},"examples":{"1234_roman":{"summary":"1234 → Roman","value":{"mode":"to-roman","number":"1234"}},"1994_roman_subtractive":{"summary":"1994 → Roman (subtractive)","value":{"mode":"to-roman","number":"1994"}},"mcmxciv_number":{"summary":"MCMXCIV → number","value":{"mode":"to-number","roman":"MCMXCIV"}},"mmmcmxcix_number_largest":{"summary":"MMMCMXCIX → number (largest)","value":{"mode":"to-number","roman":"MMMCMXCIX"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1234_roman":{"summary":"1234 → Roman","value":{"tool":"roman-numeral-converter","tool_version":"1.0.2","outputs":{"result":"MCCXXXIV","breakdown":"M (1000) + CC (200) + XXX (30) + IV (4) = 1234"},"credits_used":5,"credits_remaining":null}},"1994_roman_subtractive":{"summary":"1994 → Roman (subtractive)","value":{"tool":"roman-numeral-converter","tool_version":"1.0.2","outputs":{"result":"MCMXCIV","breakdown":"M (1000) + CM (900) + XC (90) + IV (4) = 1994"},"credits_used":5,"credits_remaining":null}},"mcmxciv_number":{"summary":"MCMXCIV → number","value":{"tool":"roman-numeral-converter","tool_version":"1.0.2","outputs":{"result":"1994","breakdown":"M (1000) + CM (900) + XC (90) + IV (4) = 1994"},"credits_used":5,"credits_remaining":null}},"mmmcmxcix_number_largest":{"summary":"MMMCMXCIX → number (largest)","value":{"tool":"roman-numeral-converter","tool_version":"1.0.2","outputs":{"result":"3999","breakdown":"M (1000) + M (1000) + M (1000) + CM (900) + XC (90) + IX (9) = 3999"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"breakdown":{"type":"string","description":"Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sql-escape":{"post":{"operationId":"run_sql_escape","summary":"SQL Escape","tags":["Converters"],"description":"Escape or unescape a string for safe inclusion in a SQL string literal — doubles single quotes for standard/ANSI SQL, PostgreSQL, SQL Server and SQLite, or applies MySQL's traditional backslash-escaping (backslashes, quotes, newlines, NUL, Ctrl-Z) for MySQL. Also builds a ready-to-paste quoted snippet. For ad-hoc/manual SQL only — always use parameterized queries (prepared statements) in application code instead of string concatenation.\n\n[Try SQL Escape in your browser →](https://iotools.cloud/tool/sql-escape/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"dialect":{"enum":["ansi","mysql","postgresql","sqlserver","sqlite"],"description":"SQL Dialect"},"mode":{"enum":["escape","unescape"],"description":"Mode"}},"required":[]},"examples":{"escape_an_apostrophe_ansi_generic_sql":{"summary":"Escape an apostrophe (ANSI / generic SQL)","value":{"inputText":"O'Reilly & Associates","dialect":"ansi","mode":"escape"}},"escape_quotes_newline_and_a_backslash_mysql":{"summary":"Escape quotes, newline and a backslash (MySQL)","value":{"inputText":"O'Reilly \"quoted\"\nBack\\slash","dialect":"mysql","mode":"escape"}},"unescape_a_mysql_escaped_string_back_to_plain_text":{"summary":"Unescape a MySQL-escaped string back to plain text","value":{"inputText":"O\\'Reilly \\\"quoted\\\"\\nBack\\\\slash","dialect":"mysql","mode":"unescape"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"escape_an_apostrophe_ansi_generic_sql":{"summary":"Escape an apostrophe (ANSI / generic SQL)","value":{"tool":"sql-escape","tool_version":"1.0.2","outputs":{"outputText":"O''Reilly & Associates","snippet":"'O''Reilly & Associates'"},"credits_used":5,"credits_remaining":null}},"escape_quotes_newline_and_a_backslash_mysql":{"summary":"Escape quotes, newline and a backslash (MySQL)","value":{"tool":"sql-escape","tool_version":"1.0.2","outputs":{"outputText":"O\\'Reilly \\\"quoted\\\"\\nBack\\\\slash","snippet":"'O\\'Reilly \\\"quoted\\\"\\nBack\\\\slash'"},"credits_used":5,"credits_remaining":null}},"unescape_a_mysql_escaped_string_back_to_plain_text":{"summary":"Unescape a MySQL-escaped string back to plain text","value":{"tool":"sql-escape","tool_version":"1.0.2","outputs":{"outputText":"O'Reilly \"quoted\"\nBack\\slash","snippet":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Escaped Result"},"snippet":{"type":"string","description":"SQL Snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-to-base64-encode":{"post":{"operationId":"run_svg_to_base64_encode","summary":"SVG to Base64 Encode","tags":["Converters"],"description":"Encode SVG markup to Base64 and get the ready-to-use data URI, HTML &lt;img> tag and CSS background-image rule — so you can inline an icon without a separate HTTP request.\n\n[Try SVG to Base64 Encode in your browser →](https://iotools.cloud/tool/svg-to-base64-encode/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string","description":"SVG markup"}},"required":[]},"examples":{"red_square":{"summary":"Red square","value":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><rect x=\"10\" y=\"10\" width=\"80\" height=\"80\" fill=\"red\" /></svg>"}},"svg_with_utf_8_text":{"summary":"SVG with UTF-8 text","value":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"40\"><text x=\"0\" y=\"30\">Café ☕</text></svg>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"red_square":{"summary":"Red square","value":{"tool":"svg-to-base64-encode","tool_version":"1.0.2","outputs":{"base64":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIiAvPjwvc3ZnPg==","dataUri":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIiAvPjwvc3ZnPg==","htmlImage":"<img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIiAvPjwvc3ZnPg==\" alt=\"SVG Image\" />","cssBackground":"background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCB4PSIxMCIgeT0iMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSI4MCIgZmlsbD0icmVkIiAvPjwvc3ZnPg==');"},"credits_used":5,"credits_remaining":null}},"svg_with_utf_8_text":{"summary":"SVG with UTF-8 text","value":{"tool":"svg-to-base64-encode","tool_version":"1.0.2","outputs":{"base64":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iNDAiPjx0ZXh0IHg9IjAiIHk9IjMwIj5DYWbDqSDimJU8L3RleHQ+PC9zdmc+","dataUri":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iNDAiPjx0ZXh0IHg9IjAiIHk9IjMwIj5DYWbDqSDimJU8L3RleHQ+PC9zdmc+","htmlImage":"<img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iNDAiPjx0ZXh0IHg9IjAiIHk9IjMwIj5DYWbDqSDimJU8L3RleHQ+PC9zdmc+\" alt=\"SVG Image\" />","cssBackground":"background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iNDAiPjx0ZXh0IHg9IjAiIHk9IjMwIj5DYWbDqSDimJU8L3RleHQ+PC9zdmc+');"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"base64":{"type":"string","description":"Base64 string"},"dataUri":{"type":"string","description":"Data URI"},"htmlImage":{"type":"string","description":"HTML image"},"cssBackground":{"type":"string","description":"CSS background"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/temperature-converter":{"post":{"operationId":"run_temperature_converter","summary":"Temperature Converter","tags":["Converters"],"description":"Convert a temperature between Celsius, Fahrenheit, Kelvin, Rankine, Delisle, Newton, Réaumur, Rømer and Planck. Enter one value and pick its scale, then either see the equivalent on every scale at once or pick a single target scale.\n\n[Try Temperature Converter in your browser →](https://iotools.cloud/tool/temperature-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Temperature"},"fromUnit":{"enum":["C","F","K","R","De","N","Re","Ro","P"],"description":"Convert from"},"toUnit":{"enum":["all","C","F","K","R","De","N","Re","Ro","P"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"100_c_to_every_scale":{"summary":"100 °C to every scale","value":{"value":"100","fromUnit":"C","toUnit":"all","precision":"2"}},"98_6_f_to_celsius":{"summary":"98.6 °F to Celsius","value":{"value":"98.6","fromUnit":"F","toUnit":"C","precision":"2"}},"0_k_to_every_scale_absolute_zero":{"summary":"0 K to every scale (absolute zero)","value":{"value":"0","fromUnit":"K","toUnit":"all","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_c_to_every_scale":{"summary":"100 °C to every scale","value":{"tool":"temperature-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Celsius (°C)","value":"100"},{"unit":"Fahrenheit (°F)","value":"212"},{"unit":"Kelvin (K)","value":"373.15"},{"unit":"Rankine (°R)","value":"671.67"},{"unit":"Delisle (°De)","value":"0"},{"unit":"Newton (°N)","value":"33"},{"unit":"Réaumur (°Ré)","value":"80"},{"unit":"Rømer (°Rø)","value":"60"},{"unit":"Planck (Tp)","value":"2.63e-30"}]},"credits_used":5,"credits_remaining":null}},"98_6_f_to_celsius":{"summary":"98.6 °F to Celsius","value":{"tool":"temperature-converter","tool_version":"1.0.2","outputs":{"result":"37 Celsius (°C)","table":[]},"credits_used":5,"credits_remaining":null}},"0_k_to_every_scale_absolute_zero":{"summary":"0 K to every scale (absolute zero)","value":{"tool":"temperature-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Celsius (°C)","value":"-273.15"},{"unit":"Fahrenheit (°F)","value":"-459.67"},{"unit":"Kelvin (K)","value":"0"},{"unit":"Rankine (°R)","value":"0"},{"unit":"Delisle (°De)","value":"559.725"},{"unit":"Newton (°N)","value":"-90.1395"},{"unit":"Réaumur (°Ré)","value":"-218.52"},{"unit":"Rømer (°Rø)","value":"-135.9038"},{"unit":"Planck (Tp)","value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-to-base64-encode":{"post":{"operationId":"run_text_to_base64_encode","summary":"Text to Base64 Encode","tags":["Converters"],"description":"Encode text to a Base64 string. Handles any UTF-8 content — URLs, CSS, HTML, XML, JavaScript, accented characters and emoji — and runs entirely in your browser.\n\n[Try Text to Base64 Encode in your browser →](https://iotools.cloud/tool/text-to-base64-encode/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to encode"}},"required":[]},"examples":{"plain_text":{"summary":"Plain text","value":{"inputText":"Hello World!"}},"multiple_lines":{"summary":"Multiple lines","value":{"inputText":"Hello World! This is a test.\nThis is another test.\nThis is a third test."}},"unicode_emoji_utf_8":{"summary":"Unicode & emoji (UTF-8)","value":{"inputText":"Café — naïve résumé 🚀"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"plain_text":{"summary":"Plain text","value":{"tool":"text-to-base64-encode","tool_version":"1.0.2","outputs":{"base64Output":"SGVsbG8gV29ybGQh"},"credits_used":5,"credits_remaining":null}},"multiple_lines":{"summary":"Multiple lines","value":{"tool":"text-to-base64-encode","tool_version":"1.0.2","outputs":{"base64Output":"SGVsbG8gV29ybGQhIFRoaXMgaXMgYSB0ZXN0LgpUaGlzIGlzIGFub3RoZXIgdGVzdC4KVGhpcyBpcyBhIHRoaXJkIHRlc3Qu"},"credits_used":5,"credits_remaining":null}},"unicode_emoji_utf_8":{"summary":"Unicode & emoji (UTF-8)","value":{"tool":"text-to-base64-encode","tool_version":"1.0.2","outputs":{"base64Output":"Q2Fmw6kg4oCUIG5hw692ZSByw6lzdW3DqSDwn5qA"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"base64Output":{"type":"string","description":"Base64 output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-to-handwriting-converter":{"post":{"operationId":"run_text_to_handwriting_converter","summary":"Text to Handwriting Converter","tags":["Converters"],"description":"Convert typed text into realistic handwriting on ruled, grid or blank paper — pick the ink colour, size and messiness, then download the result as an SVG image.\n\n[Try Text to Handwriting Converter in your browser →](https://iotools.cloud/tool/text-to-handwriting-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Your text"},"paperStyle":{"enum":["ruled","college","blank","grid","dotted"],"description":"Paper style"},"font":{"enum":["casual","cursive","neat","marker"],"description":"Handwriting style"},"inkColor":{"type":"string","description":"Ink colour"},"fontSize":{"type":"number","description":"Font size (px)","minimum":12,"maximum":48},"jitter":{"type":"number","description":"Messiness","minimum":0,"maximum":10},"embedFont":{"type":"boolean","description":"Embed the handwriting font in the file"}},"required":["paperStyle","font","inkColor","fontSize"]},"examples":{"note_on_ruled_paper":{"summary":"Note on ruled paper","value":{"text":"Dear Sam,\nSee you at the lake on Saturday.","paperStyle":"ruled","font":"casual","inkColor":"#1a1a8c","fontSize":"24","jitter":"4","embedFont":"true"}},"cursive_on_college_ruled_paper":{"summary":"Cursive on college-ruled paper","value":{"text":"Thanks for a wonderful evening — the cake was the best part.","paperStyle":"college","font":"cursive","inkColor":"#123f7a","fontSize":"28","jitter":"3","embedFont":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/timezone-converter":{"post":{"operationId":"run_timezone_converter","summary":"Timezone Converter","tags":["Converters"],"description":"Convert a date and time between timezone abbreviations like EST, PST, GMT, IST, JST and more. Leave the date/time blank to convert the current moment.\n\n[Try Timezone Converter in your browser →](https://iotools.cloud/tool/timezone-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sourceDate":{"type":"string","description":"Date"},"sourceTime":{"type":"string","description":"Time"},"fromZone":{"enum":["NUT","SST","CKT","HAST","TAHT","MART","MIT","AKST","GAMT","GIT","HADT","AKDT","PST","MST","PDT","CST","EAST","GALT","MDT","CDT","COT","EASST","ECT","EST","PET","AST","BOT","CLT","COST","EDT","FKT","GYT","PYT","VET","NST","NT","ADT","ART","BRT","CLST","FKST","GFT","PMST","PYST","ROTT","SRT","UYT","WGT","NDT","FNT","PMDT","UYST","WGST","CVT","EGT","EGST","GMT","SLST","UTC","WET","BST","CET","WAT","WEST","CAT","CEST","EET","SAST","WAST","EAT","EEST","FET","IDT","MSK","SYOT","TRT","IRST","AZT","GET","GST","MUT","RET","SAMT","SCT","VOLT","IRDT","HMT","MAWT","MVT","ORAT","PKT","TFT","TJT","TMT","UZT","YEKT","IST","NPT","BDT","BIOT","BTT","IOT","KGT","OMST","VOST","CCT","MMT","CXT","DAVT","HOVT","ICT","KRAT","THA","WIB","AWST","CHOT","CIT","CT","HKT","HOVST","IRKT","MYT","PHT","SGT","ULAT","WITA","AWDT","CHOST","EIT","JST","KST","PWT","TLT","ULAST","WIT","YAKT","ACST","AEST","CHST","CHUT","DDUT","PGT","VLAT","ACDT","LHST","AEDT","KOST","LHDT","MAGT","MIST","NCT","NFT","PONT","SAKT","SBT","SRET","VUT","BIT","FJT","GILT","MHT","NZST","PETT","TVT","WAKT","WFT","CHAST","CIST","NZDT","PHOT","TKT","TOT","WST","CHADT","LINT"],"description":"Convert from"},"toZone":{"enum":["NUT","SST","CKT","HAST","TAHT","MART","MIT","AKST","GAMT","GIT","HADT","AKDT","PST","MST","PDT","CST","EAST","GALT","MDT","CDT","COT","EASST","ECT","EST","PET","AST","BOT","CLT","COST","EDT","FKT","GYT","PYT","VET","NST","NT","ADT","ART","BRT","CLST","FKST","GFT","PMST","PYST","ROTT","SRT","UYT","WGT","NDT","FNT","PMDT","UYST","WGST","CVT","EGT","EGST","GMT","SLST","UTC","WET","BST","CET","WAT","WEST","CAT","CEST","EET","SAST","WAST","EAT","EEST","FET","IDT","MSK","SYOT","TRT","IRST","AZT","GET","GST","MUT","RET","SAMT","SCT","VOLT","IRDT","HMT","MAWT","MVT","ORAT","PKT","TFT","TJT","TMT","UZT","YEKT","IST","NPT","BDT","BIOT","BTT","IOT","KGT","OMST","VOST","CCT","MMT","CXT","DAVT","HOVT","ICT","KRAT","THA","WIB","AWST","CHOT","CIT","CT","HKT","HOVST","IRKT","MYT","PHT","SGT","ULAT","WITA","AWDT","CHOST","EIT","JST","KST","PWT","TLT","ULAST","WIT","YAKT","ACST","AEST","CHST","CHUT","DDUT","PGT","VLAT","ACDT","LHST","AEDT","KOST","LHDT","MAGT","MIST","NCT","NFT","PONT","SAKT","SBT","SRET","VUT","BIT","FJT","GILT","MHT","NZST","PETT","TVT","WAKT","WFT","CHAST","CIST","NZDT","PHOT","TKT","TOT","WST","CHADT","LINT"],"description":"Convert to"}},"required":[]},"examples":{"est_to_pst":{"summary":"EST to PST","value":{"fromZone":"EST","toZone":"PST","sourceDate":"2026-06-15","sourceTime":"15:00"}},"ist_to_jst_crossing_midnight":{"summary":"IST to JST, crossing midnight","value":{"fromZone":"IST","toZone":"JST","sourceDate":"2026-01-10","sourceTime":"22:00"}},"current_time_utc_to_jst":{"summary":"Current time (UTC to JST)","value":{"fromZone":"UTC","toZone":"JST","sourceDate":"","sourceTime":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"est_to_pst":{"summary":"EST to PST","value":{"tool":"timezone-converter","tool_version":"1.0.2","outputs":{"sourceDateTime":"Monday, June 15, 2026, 3:00 PM EST","convertedDateTime":"Monday, June 15, 2026, 12:00 PM PST","difference":"PST is 3 hours behind EST."},"credits_used":5,"credits_remaining":null}},"ist_to_jst_crossing_midnight":{"summary":"IST to JST, crossing midnight","value":{"tool":"timezone-converter","tool_version":"1.0.2","outputs":{"sourceDateTime":"Saturday, January 10, 2026, 10:00 PM IST","convertedDateTime":"Sunday, January 11, 2026, 1:30 AM JST","difference":"JST is 3 hours 30 minutes ahead of IST."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sourceDateTime":{"type":"string","description":"Source time"},"convertedDateTime":{"type":"string","description":"Converted time"},"difference":{"type":"string","description":"Time difference"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/torque-converter":{"post":{"operationId":"run_torque_converter","summary":"Torque Converter","tags":["Converters"],"description":"Convert torque between newton-meters, pound-force feet, kilogram-force meters, ounce-force inches, and 6 other units at once. Enter one value, pick its unit, and see the equivalent in every unit.\n\n[Try Torque Converter in your browser →](https://iotools.cloud/tool/torque-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["nm","knm","ncm","dyncm","kgfm","kgfcm","lbfft","lbfin","ozfft","ozfin"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_n_m_to_every_unit_4_decimals":{"summary":"1 N·m to every unit (4 decimals)","value":{"value":"1","fromUnit":"nm","precision":"4"}},"100_lbf_ft_to_every_unit_2_decimals":{"summary":"100 lbf·ft to every unit (2 decimals)","value":{"value":"100","fromUnit":"lbfft","precision":"2"}},"1_kgf_m_to_every_unit_6_decimals":{"summary":"1 kgf·m to every unit (6 decimals)","value":{"value":"1","fromUnit":"kgfm","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_n_m_to_every_unit_4_decimals":{"summary":"1 N·m to every unit (4 decimals)","value":{"tool":"torque-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton-meter (N·m)","value":"1"},{"unit":"Kilonewton-meter (kN·m)","value":"0.001"},{"unit":"Newton-centimeter (N·cm)","value":"100"},{"unit":"Dyne-centimeter (dyn·cm)","value":"10000000"},{"unit":"Kilogram-force meter (kgf·m)","value":"0.102"},{"unit":"Kilogram-force centimeter (kgf·cm)","value":"10.1972"},{"unit":"Pound-force foot (lbf·ft)","value":"0.7376"},{"unit":"Pound-force inch (lbf·in)","value":"8.8507"},{"unit":"Ounce-force foot (ozf·ft)","value":"11.801"},{"unit":"Ounce-force inch (ozf·in)","value":"141.6119"}]},"credits_used":5,"credits_remaining":null}},"100_lbf_ft_to_every_unit_2_decimals":{"summary":"100 lbf·ft to every unit (2 decimals)","value":{"tool":"torque-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton-meter (N·m)","value":"135.58"},{"unit":"Kilonewton-meter (kN·m)","value":"0.14"},{"unit":"Newton-centimeter (N·cm)","value":"13558.18"},{"unit":"Dyne-centimeter (dyn·cm)","value":"1355817948.33"},{"unit":"Kilogram-force meter (kgf·m)","value":"13.83"},{"unit":"Kilogram-force centimeter (kgf·cm)","value":"1382.55"},{"unit":"Pound-force foot (lbf·ft)","value":"100"},{"unit":"Pound-force inch (lbf·in)","value":"1200"},{"unit":"Ounce-force foot (ozf·ft)","value":"1600"},{"unit":"Ounce-force inch (ozf·in)","value":"19200"}]},"credits_used":5,"credits_remaining":null}},"1_kgf_m_to_every_unit_6_decimals":{"summary":"1 kgf·m to every unit (6 decimals)","value":{"tool":"torque-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Newton-meter (N·m)","value":"9.80665"},{"unit":"Kilonewton-meter (kN·m)","value":"0.009807"},{"unit":"Newton-centimeter (N·cm)","value":"980.665"},{"unit":"Dyne-centimeter (dyn·cm)","value":"98066500"},{"unit":"Kilogram-force meter (kgf·m)","value":"1"},{"unit":"Kilogram-force centimeter (kgf·cm)","value":"100"},{"unit":"Pound-force foot (lbf·ft)","value":"7.233014"},{"unit":"Pound-force inch (lbf·in)","value":"86.796166"},{"unit":"Ounce-force foot (ozf·ft)","value":"115.728222"},{"unit":"Ounce-force inch (ozf·in)","value":"1388.738659"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unicode-text-normalizer":{"post":{"operationId":"run_unicode_text_normalizer","summary":"Unicode Text Normalizer","tags":["Converters"],"description":"Compare pasted text across all four Unicode normalization forms (NFC, NFD, NFKC, NFKD) — see the code points and UTF-8 byte length of each, and which form the input already matches. Catches the composed-vs-decomposed bugs that break string/database key comparisons.\n\n[Try Unicode Text Normalizer in your browser →](https://iotools.cloud/tool/unicode-text-normalizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"}},"required":[]},"examples":{"decomposed_accent_caf":{"summary":"Decomposed accent (Café)","value":{"inputText":"Café"}},"ligature_compatibility_characters":{"summary":"Ligature (compatibility characters)","value":{"inputText":"ﬁle"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decomposed_accent_caf":{"summary":"Decomposed accent (Café)","value":{"tool":"unicode-text-normalizer","tool_version":"1.0.2","outputs":{"detectedForm":"NFD, NFKD","comparisonTable":[{"form":"NFC","normalized-text":"Café","code-points":"U+0043 U+0061 U+0066 U+00E9","utf-8-bytes":"5","same-as-input":"No"},{"form":"NFD","normalized-text":"Café","code-points":"U+0043 U+0061 U+0066 U+0065 U+0301","utf-8-bytes":"6","same-as-input":"Yes"},{"form":"NFKC","normalized-text":"Café","code-points":"U+0043 U+0061 U+0066 U+00E9","utf-8-bytes":"5","same-as-input":"No"},{"form":"NFKD","normalized-text":"Café","code-points":"U+0043 U+0061 U+0066 U+0065 U+0301","utf-8-bytes":"6","same-as-input":"Yes"}]},"credits_used":5,"credits_remaining":null}},"ligature_compatibility_characters":{"summary":"Ligature (compatibility characters)","value":{"tool":"unicode-text-normalizer","tool_version":"1.0.2","outputs":{"detectedForm":"NFC, NFD","comparisonTable":[{"form":"NFC","normalized-text":"ﬁle","code-points":"U+FB01 U+006C U+0065","utf-8-bytes":"5","same-as-input":"Yes"},{"form":"NFD","normalized-text":"ﬁle","code-points":"U+FB01 U+006C U+0065","utf-8-bytes":"5","same-as-input":"Yes"},{"form":"NFKC","normalized-text":"file","code-points":"U+0066 U+0069 U+006C U+0065","utf-8-bytes":"4","same-as-input":"No"},{"form":"NFKD","normalized-text":"file","code-points":"U+0066 U+0069 U+006C U+0065","utf-8-bytes":"4","same-as-input":"No"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"detectedForm":{"type":"string","description":"Input Already Matches"},"comparisonTable":{"type":"array","description":"Normalization Forms Compared","items":{"type":"object","properties":{"form":{"type":"string","description":"Form"},"normalized-text":{"type":"string","description":"Normalized Text"},"code-points":{"type":"string","description":"Code Points"},"utf-8-bytes":{"type":"string","description":"UTF-8 Bytes"},"same-as-input":{"type":"string","description":"Same as Input?"}}},"x-iotools-columns":["form","normalized-text","code-points","utf-8-bytes","same-as-input"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unicode-to-html-entities":{"post":{"operationId":"run_unicode_to_html_entities","summary":"Unicode to HTML Entities Converter","tags":["Converters"],"description":"Convert Unicode text to HTML entities and back. Encode to named (&copy;), decimal (&#169;) or hexadecimal (&#xa9;) entities, encode all characters or only special/non-ASCII ones, and decode any entity type back to plain text — with a per-character reference table.\n\n[Try Unicode to HTML Entities Converter in your browser →](https://iotools.cloud/tool/unicode-to-html-entities/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"},"format":{"enum":["named","decimal","hex"],"description":"Entity Format"},"encodeAll":{"type":"boolean","description":"Encode all characters (not just special / non-ASCII)"}},"required":[]},"examples":{"encode_special_characters_named":{"summary":"Encode special characters (named)","value":{"inputText":"Café ©","mode":"encode","format":"named","encodeAll":""}},"encode_as_decimal_entities":{"summary":"Encode as decimal entities","value":{"inputText":"→ ∞","mode":"encode","format":"decimal","encodeAll":""}},"encode_all_characters_hex":{"summary":"Encode all characters (hex)","value":{"inputText":"A©","mode":"encode","format":"hex","encodeAll":"true"}},"decode_entities_to_text":{"summary":"Decode entities to text","value":{"inputText":"Caf&eacute; &copy; &#8364;100","mode":"decode"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_special_characters_named":{"summary":"Encode special characters (named)","value":{"tool":"unicode-to-html-entities","tool_version":"1.0.2","outputs":{"output":"Caf&eacute; &copy;","charInfo":[{"char":"é","code-point":"U+00E9","named":"&eacute;","decimal":"&#233;","hex":"&#xe9;"},{"char":"©","code-point":"U+00A9","named":"&copy;","decimal":"&#169;","hex":"&#xa9;"}]},"credits_used":5,"credits_remaining":null}},"encode_as_decimal_entities":{"summary":"Encode as decimal entities","value":{"tool":"unicode-to-html-entities","tool_version":"1.0.2","outputs":{"output":"&#8594; &#8734;","charInfo":[{"char":"→","code-point":"U+2192","named":"&rarr;","decimal":"&#8594;","hex":"&#x2192;"},{"char":"∞","code-point":"U+221E","named":"&infin;","decimal":"&#8734;","hex":"&#x221e;"}]},"credits_used":5,"credits_remaining":null}},"encode_all_characters_hex":{"summary":"Encode all characters (hex)","value":{"tool":"unicode-to-html-entities","tool_version":"1.0.2","outputs":{"output":"&#x41;&#xa9;","charInfo":[{"char":"A","code-point":"U+0041","named":"—","decimal":"&#65;","hex":"&#x41;"},{"char":"©","code-point":"U+00A9","named":"&copy;","decimal":"&#169;","hex":"&#xa9;"}]},"credits_used":5,"credits_remaining":null}},"decode_entities_to_text":{"summary":"Decode entities to text","value":{"tool":"unicode-to-html-entities","tool_version":"1.0.2","outputs":{"output":"Café © €100","charInfo":[{"char":"é","code-point":"U+00E9","named":"&eacute;","decimal":"&#233;","hex":"&#xe9;"},{"char":"©","code-point":"U+00A9","named":"&copy;","decimal":"&#169;","hex":"&#xa9;"},{"char":"€","code-point":"U+20AC","named":"&euro;","decimal":"&#8364;","hex":"&#x20ac;"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"charInfo":{"type":"array","description":"Character Reference","items":{"type":"object","properties":{"char":{"type":"string","description":"Char"},"code-point":{"type":"string","description":"Code Point"},"named":{"type":"string","description":"Named"},"decimal":{"type":"string","description":"Decimal"},"hex":{"type":"string","description":"Hex"}}},"x-iotools-columns":["char","code-point","named","decimal","hex"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/universal-decoder":{"post":{"operationId":"run_universal_decoder","summary":"Universal Decoder","tags":["Converters"],"description":"Decode text using URL, Base64, JWT, Hex, Unicode, Binary, ROT13, or HTML entity encoding — pick a scheme from one dropdown instead of using a separate tool for each.\n\n[Try Universal Decoder in your browser →](https://iotools.cloud/tool/universal-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"scheme":{"enum":["url","base64","jwt","hex","unicode","binary","rot13","html-entity"],"description":"Scheme"}},"required":[]},"examples":{"base64":{"summary":"Base64","value":{"inputText":"SGVsbG8sIFdvcmxkIQ==","scheme":"base64"}},"url":{"summary":"URL","value":{"inputText":"hello%20world%3Fa%3D1","scheme":"url"}},"hex":{"summary":"Hex","value":{"inputText":"48 65 6C 6C 6F","scheme":"hex"}},"binary":{"summary":"Binary","value":{"inputText":"01001000 01101001","scheme":"binary"}},"rot13":{"summary":"ROT13","value":{"inputText":"Uryyb, Jbeyq!","scheme":"rot13"}},"unicode":{"summary":"Unicode","value":{"inputText":"\\u0048\\u0069","scheme":"unicode"}},"html_entity":{"summary":"HTML entity","value":{"inputText":"Tom &amp; Jerry &#8212; a &lt;show&gt;","scheme":"html-entity"}},"jwt_jwt_io_reference_token":{"summary":"JWT (jwt.io reference token)","value":{"inputText":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","scheme":"jwt"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"base64":{"summary":"Base64","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Hello, World!"},"credits_used":5,"credits_remaining":null}},"url":{"summary":"URL","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"hello world?a=1"},"credits_used":5,"credits_remaining":null}},"hex":{"summary":"Hex","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Hello"},"credits_used":5,"credits_remaining":null}},"binary":{"summary":"Binary","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Hi"},"credits_used":5,"credits_remaining":null}},"rot13":{"summary":"ROT13","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Hello, World!"},"credits_used":5,"credits_remaining":null}},"unicode":{"summary":"Unicode","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Hi"},"credits_used":5,"credits_remaining":null}},"html_entity":{"summary":"HTML entity","value":{"tool":"universal-decoder","tool_version":"1.0.2","outputs":{"output":"Tom & Jerry — a <show>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Decoded output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/universal-encoder":{"post":{"operationId":"run_universal_encoder","summary":"Universal Encoder","tags":["Converters"],"description":"Encode text using URL, Base64, JWT, Hex, Unicode, Binary, ROT13, or HTML entity encoding — pick a scheme from one dropdown instead of using a separate tool for each.\n\n[Try Universal Encoder in your browser →](https://iotools.cloud/tool/universal-encoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input"},"scheme":{"enum":["url","base64","jwt","hex","unicode","binary","rot13","html-entity"],"description":"Scheme"},"hexDelimiter":{"enum":["space","none"],"description":"Hex separator"},"hexCase":{"enum":["uppercase","lowercase"],"description":"Hex case"},"jwtAlgorithm":{"enum":["HS256","HS384","HS512"],"description":"JWT algorithm"},"jwtSecret":{"type":"string","description":"JWT secret"}},"required":[]},"examples":{"base64":{"summary":"Base64","value":{"inputText":"Hello, World!","scheme":"base64"}},"url":{"summary":"URL","value":{"inputText":"hello world?a=1","scheme":"url"}},"hex":{"summary":"Hex","value":{"inputText":"Hi","scheme":"hex","hexDelimiter":"space","hexCase":"uppercase"}},"binary":{"summary":"Binary","value":{"inputText":"Hi","scheme":"binary"}},"rot13":{"summary":"ROT13","value":{"inputText":"Hello, World!","scheme":"rot13"}},"unicode":{"summary":"Unicode","value":{"inputText":"Hi","scheme":"unicode"}},"html_entity":{"summary":"HTML entity","value":{"inputText":"Tom & Jerry — a <show>","scheme":"html-entity"}},"jwt_hs256":{"summary":"JWT (HS256)","value":{"inputText":"{\"sub\":\"1234567890\",\"name\":\"John Doe\",\"iat\":1516239022}","scheme":"jwt","jwtAlgorithm":"HS256","jwtSecret":"your-256-bit-secret"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"base64":{"summary":"Base64","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"SGVsbG8sIFdvcmxkIQ=="},"credits_used":5,"credits_remaining":null}},"url":{"summary":"URL","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"hello%20world%3Fa%3D1"},"credits_used":5,"credits_remaining":null}},"hex":{"summary":"Hex","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"48 69"},"credits_used":5,"credits_remaining":null}},"binary":{"summary":"Binary","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"01001000 01101001"},"credits_used":5,"credits_remaining":null}},"rot13":{"summary":"ROT13","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"Uryyb, Jbeyq!"},"credits_used":5,"credits_remaining":null}},"unicode":{"summary":"Unicode","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"\\u0048\\u0069"},"credits_used":5,"credits_remaining":null}},"html_entity":{"summary":"HTML entity","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"Tom &amp; Jerry &#8212; a &lt;show&gt;"},"credits_used":5,"credits_remaining":null}},"jwt_hs256":{"summary":"JWT (HS256)","value":{"tool":"universal-encoder","tool_version":"1.0.2","outputs":{"output":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Encoded output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unix-timestamp-converter":{"post":{"operationId":"run_unix_timestamp_converter","summary":"Unix Timestamp Converter","tags":["Converters"],"description":"Convert a Unix epoch timestamp (seconds or milliseconds, auto-detected) into a human-readable UTC date, ISO 8601, RFC 7231 and a named timezone — and convert a date/time back into a Unix timestamp. Leave the input blank to read the current time.\n\n[Try Unix Timestamp Converter in your browser →](https://iotools.cloud/tool/unix-timestamp-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["to-date","to-timestamp"],"description":"Conversion"},"timestamp":{"type":"string","description":"Unix timestamp"},"unit":{"enum":["auto","seconds","milliseconds"],"description":"Interpret as"},"timezone":{"enum":["UTC","America/Los_Angeles","America/Denver","America/Chicago","America/New_York","America/Sao_Paulo","Europe/London","Europe/Paris","Europe/Berlin","Asia/Dubai","Asia/Kolkata","Asia/Singapore","Asia/Shanghai","Asia/Tokyo","Australia/Sydney","Pacific/Auckland"],"description":"Show time in"},"dateTime":{"type":"string","description":"Date & time"}},"required":[]},"examples":{"seconds_timestamp_to_date_tokyo":{"summary":"Seconds timestamp to date (Tokyo)","value":{"direction":"to-date","timestamp":"1704067200","unit":"auto","timezone":"Asia/Tokyo"}},"millisecond_timestamp_to_date_utc":{"summary":"Millisecond timestamp to date (UTC)","value":{"direction":"to-date","timestamp":"1700000000000","unit":"auto","timezone":"UTC"}},"date_time_to_timestamp":{"summary":"Date-time to timestamp","value":{"direction":"to-timestamp","dateTime":"2021-06-15T13:45:30"}},"date_only_to_timestamp":{"summary":"Date only to timestamp","value":{"direction":"to-timestamp","dateTime":"2024-01-01"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"seconds_timestamp_to_date_tokyo":{"summary":"Seconds timestamp to date (Tokyo)","value":{"tool":"unix-timestamp-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected unit","value":"Seconds"},{"property":"ISO 8601 (UTC)","value":"2024-01-01T00:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Mon, 01 Jan 2024 00:00:00 GMT"},{"property":"Date (UTC)","value":"2024-01-01"},{"property":"Time (UTC)","value":"00:00:00"},{"property":"Day of week (UTC)","value":"Monday"},{"property":"In Asia/Tokyo","value":"Mon, 2024-01-01 09:00:00"},{"property":"Unix timestamp (seconds)","value":"1704067200"},{"property":"Unix timestamp (milliseconds)","value":"1704067200000"}]},"credits_used":5,"credits_remaining":null}},"millisecond_timestamp_to_date_utc":{"summary":"Millisecond timestamp to date (UTC)","value":{"tool":"unix-timestamp-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Detected unit","value":"Milliseconds"},{"property":"ISO 8601 (UTC)","value":"2023-11-14T22:13:20.000Z"},{"property":"UTC (RFC 7231)","value":"Tue, 14 Nov 2023 22:13:20 GMT"},{"property":"Date (UTC)","value":"2023-11-14"},{"property":"Time (UTC)","value":"22:13:20"},{"property":"Day of week (UTC)","value":"Tuesday"},{"property":"In UTC","value":"Tue, 2023-11-14 22:13:20"},{"property":"Unix timestamp (seconds)","value":"1700000000"},{"property":"Unix timestamp (milliseconds)","value":"1700000000000"}]},"credits_used":5,"credits_remaining":null}},"date_time_to_timestamp":{"summary":"Date-time to timestamp","value":{"tool":"unix-timestamp-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Unix timestamp (seconds)","value":"1623764730"},{"property":"Unix timestamp (milliseconds)","value":"1623764730000"},{"property":"ISO 8601 (UTC)","value":"2021-06-15T13:45:30.000Z"},{"property":"UTC (RFC 7231)","value":"Tue, 15 Jun 2021 13:45:30 GMT"},{"property":"Day of week (UTC)","value":"Tuesday"}]},"credits_used":5,"credits_remaining":null}},"date_only_to_timestamp":{"summary":"Date only to timestamp","value":{"tool":"unix-timestamp-converter","tool_version":"1.0.2","outputs":{"result":[{"property":"Unix timestamp (seconds)","value":"1704067200"},{"property":"Unix timestamp (milliseconds)","value":"1704067200000"},{"property":"ISO 8601 (UTC)","value":"2024-01-01T00:00:00.000Z"},{"property":"UTC (RFC 7231)","value":"Mon, 01 Jan 2024 00:00:00 GMT"},{"property":"Day of week (UTC)","value":"Monday"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unit-converter":{"post":{"operationId":"run_unit_converter","summary":"Unit Converter","tags":["Converters"],"description":"Convert between units of length, mass/weight, temperature, volume, area, speed, data storage, and pressure. Pick a category, choose the units, and get an instant result — or switch on 'Show all units' to see every unit in that category at once.\n\n[Try Unit Converter in your browser →](https://iotools.cloud/tool/unit-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"enum":["length","mass","temperature","volume","area","speed","data","pressure"],"description":"Category"},"value":{"type":"number","description":"Amount"},"lengthFrom":{"enum":["meter","kilometer","centimeter","millimeter","micrometer","nanometer","picometer","femtometer","decimeter","decameter","hectometer","mile","yard","foot","inch","nautical_mile","light_year","astronomical_unit","parsec","angstrom","fathom","chain","rod","league","furlong","mile_scandinavian","league_nautical","hand","cubit","pica","point","mil"],"description":"Convert from"},"lengthTo":{"enum":["meter","kilometer","centimeter","millimeter","micrometer","nanometer","picometer","femtometer","decimeter","decameter","hectometer","mile","yard","foot","inch","nautical_mile","light_year","astronomical_unit","parsec","angstrom","fathom","chain","rod","league","furlong","mile_scandinavian","league_nautical","hand","cubit","pica","point","mil"],"description":"Convert to"},"massFrom":{"enum":["kilogram","gram","milligram","microgram","tonne","pound","ounce","stone","ton","metric_ton","carat","atomic_mass_unit","long_ton","short_hundredweight","long_hundredweight","pennyweight","grain"],"description":"Convert from"},"massTo":{"enum":["kilogram","gram","milligram","microgram","tonne","pound","ounce","stone","ton","metric_ton","carat","atomic_mass_unit","long_ton","short_hundredweight","long_hundredweight","pennyweight","grain"],"description":"Convert to"},"temperatureFrom":{"enum":["C","F","K","R","De","N","Re","Ro","P"],"description":"Convert from"},"temperatureTo":{"enum":["C","F","K","R","De","N","Re","Ro","P"],"description":"Convert to"},"volumeFrom":{"enum":["milliliter","liter","cubic_centimeter","cubic_meter","us_teaspoon","us_tablespoon","us_fluid_ounce","us_cup","us_pint","us_quart","us_gallon","imp_fluid_ounce","imp_pint","imp_gallon","cubic_inch","cubic_foot"],"description":"Convert from"},"volumeTo":{"enum":["milliliter","liter","cubic_centimeter","cubic_meter","us_teaspoon","us_tablespoon","us_fluid_ounce","us_cup","us_pint","us_quart","us_gallon","imp_fluid_ounce","imp_pint","imp_gallon","cubic_inch","cubic_foot"],"description":"Convert to"},"areaFrom":{"enum":["square_meter","square_kilometer","square_centimeter","square_millimeter","square_decimeter","square_dekameter","square_hectometer","hectare","acre","square_foot","square_yard","square_mile","square_inch","square_micrometer","square_nanometer"],"description":"Convert from"},"areaTo":{"enum":["square_meter","square_kilometer","square_centimeter","square_millimeter","square_decimeter","square_dekameter","square_hectometer","hectare","acre","square_foot","square_yard","square_mile","square_inch","square_micrometer","square_nanometer"],"description":"Convert to"},"speedFrom":{"enum":["meter_per_second","kilometer_per_hour","mile_per_hour","foot_per_second","knot","kilometer_per_minute","centimeter_per_second","millimeter_per_second","mile_per_minute","inch_per_second","micrometer_per_second","nanometer_per_second"],"description":"Convert from"},"speedTo":{"enum":["meter_per_second","kilometer_per_hour","mile_per_hour","foot_per_second","knot","kilometer_per_minute","centimeter_per_second","millimeter_per_second","mile_per_minute","inch_per_second","micrometer_per_second","nanometer_per_second"],"description":"Convert to"},"dataFrom":{"enum":["bit","nibble","byte","kb","mb","gb","tb","pb","eb","kib","mib","gib","tib","pib","eib"],"description":"Convert from"},"dataTo":{"enum":["bit","nibble","byte","kb","mb","gb","tb","pb","eb","kib","mib","gib","tib","pib","eib"],"description":"Convert to"},"pressureFrom":{"enum":["pascal","kilopascal","megapascal","bar","millibar","atmosphere","tech_atmosphere","psi","ksi","torr","inhg","cmh2o"],"description":"Convert from"},"pressureTo":{"enum":["pascal","kilopascal","megapascal","bar","millibar","atmosphere","tech_atmosphere","psi","ksi","torr","inhg","cmh2o"],"description":"Convert to"},"showAll":{"type":"boolean","description":"Show all units"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_meter_to_feet_length":{"summary":"1 meter to feet (Length)","value":{"category":"length","value":"1","lengthFrom":"meter","lengthTo":"foot","precision":"4"}},"150_lb_to_kilograms_mass_weight":{"summary":"150 lb to kilograms (Mass / Weight)","value":{"category":"mass","value":"150","massFrom":"pound","massTo":"kilogram","precision":"2"}},"100_c_to_fahrenheit_temperature":{"summary":"100 °C to Fahrenheit (Temperature)","value":{"category":"temperature","value":"100","temperatureFrom":"C","temperatureTo":"F","precision":"2"}},"5_us_gallons_to_liters_volume":{"summary":"5 US gallons to liters (Volume)","value":{"category":"volume","value":"5","volumeFrom":"us_gallon","volumeTo":"liter","precision":"2"}},"1_acre_to_square_meters_area":{"summary":"1 acre to square meters (Area)","value":{"category":"area","value":"1","areaFrom":"acre","areaTo":"square_meter","precision":"2"}},"60_mph_to_km_h_speed":{"summary":"60 mph to km/h (Speed)","value":{"category":"speed","value":"60","speedFrom":"mile_per_hour","speedTo":"kilometer_per_hour","precision":"2"}},"1_gb_to_gib_data_storage":{"summary":"1 GB to GiB (Data Storage)","value":{"category":"data","value":"1","dataFrom":"gb","dataTo":"gib","precision":"4"}},"1_atm_to_psi_pressure":{"summary":"1 atm to PSI (Pressure)","value":{"category":"pressure","value":"1","pressureFrom":"atmosphere","pressureTo":"psi","precision":"2"}},"1_meter_to_every_length_unit":{"summary":"1 meter to every length unit","value":{"category":"length","value":"1","lengthFrom":"meter","showAll":"true","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_meter_to_feet_length":{"summary":"1 meter to feet (Length)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"3.2808 Foot (ft)","table":[]},"credits_used":5,"credits_remaining":null}},"150_lb_to_kilograms_mass_weight":{"summary":"150 lb to kilograms (Mass / Weight)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"68.04 Kilogram (kg)","table":[]},"credits_used":5,"credits_remaining":null}},"100_c_to_fahrenheit_temperature":{"summary":"100 °C to Fahrenheit (Temperature)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"212 Fahrenheit (°F)","table":[]},"credits_used":5,"credits_remaining":null}},"5_us_gallons_to_liters_volume":{"summary":"5 US gallons to liters (Volume)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"18.93 Liter (L)","table":[]},"credits_used":5,"credits_remaining":null}},"1_acre_to_square_meters_area":{"summary":"1 acre to square meters (Area)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"4046.86 Square Meter (m²)","table":[]},"credits_used":5,"credits_remaining":null}},"60_mph_to_km_h_speed":{"summary":"60 mph to km/h (Speed)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"96.56 Kilometer per Hour (km/h)","table":[]},"credits_used":5,"credits_remaining":null}},"1_gb_to_gib_data_storage":{"summary":"1 GB to GiB (Data Storage)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"0.9313 Gibibyte (GiB)","table":[]},"credits_used":5,"credits_remaining":null}},"1_atm_to_psi_pressure":{"summary":"1 atm to PSI (Pressure)","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"14.7 Pounds per Square Inch (psi)","table":[]},"credits_used":5,"credits_remaining":null}},"1_meter_to_every_length_unit":{"summary":"1 meter to every length unit","value":{"tool":"unit-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Meter (m)","value":"1"},{"unit":"Kilometer (km)","value":"0.001"},{"unit":"Centimeter (cm)","value":"100"},{"unit":"Millimeter (mm)","value":"1000"},{"unit":"Micrometer (μm)","value":"1000000"},{"unit":"Nanometer (nm)","value":"1000000000"},{"unit":"Picometer (pm)","value":"1000000000000"},{"unit":"Femtometer (fm)","value":"999999999999999.9"},{"unit":"Decimeter (dm)","value":"10"},{"unit":"Decameter (dam)","value":"0.1"},{"unit":"Hectometer (hm)","value":"0.01"},{"unit":"Mile (mi)","value":"0.0006"},{"unit":"Yard (yd)","value":"1.0936"},{"unit":"Foot (ft)","value":"3.2808"},{"unit":"Inch (in)","value":"39.3701"},{"unit":"Nautical Mile (nmi)","value":"0.0005"},{"unit":"Light Year (ly)","value":"1.0570e-16"},{"unit":"Astronomical Unit (AU)","value":"6.6846e-12"},{"unit":"Parsec (pc)","value":"3.2408e-17"},{"unit":"Angstrom (Å)","value":"10000000000"},{"unit":"Fathom (fth)","value":"0.5468"},{"unit":"Chain (ch)","value":"0.0497"},{"unit":"Rod (rd)","value":"0.1988"},{"unit":"League (leag)","value":"0.0002"},{"unit":"Furlong (fur)","value":"0.005"},{"unit":"Scandinavian Mile (mil)","value":"0.0001"},{"unit":"Nautical League (ln)","value":"0.0002"},{"unit":"Hand (h)","value":"9.8425"},{"unit":"Cubit (cbt)","value":"2.1872"},{"unit":"Pica (pi)","value":"236.2205"},{"unit":"Point (pt)","value":"2834.6457"},{"unit":"Mil (mil)","value":"39370.0787"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/upside-down-text":{"post":{"operationId":"run_upside_down_text","summary":"Upside Down Text Generator","tags":["Converters"],"description":"Flip text upside down into ˙ǝpoɔᴉun-style rotated characters you can paste anywhere. Each letter, digit and symbol becomes its 180°-rotated look-alike and the string is reversed so it reads correctly when flipped. Runs entirely in your browser.\n\n[Try Upside Down Text Generator in your browser →](https://iotools.cloud/tool/upside-down-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"flip_a_word":{"summary":"Flip a word","value":{"inputText":"hello"}},"flip_a_sentence":{"summary":"Flip a sentence","value":{"inputText":"Hello, World!"}},"letters_and_numbers":{"summary":"Letters and numbers","value":{"inputText":"Flip me 123!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flip_a_word":{"summary":"Flip a word","value":{"tool":"upside-down-text","tool_version":"1.0.2","outputs":{"output":"oןןǝɥ"},"credits_used":5,"credits_remaining":null}},"flip_a_sentence":{"summary":"Flip a sentence","value":{"tool":"upside-down-text","tool_version":"1.0.2","outputs":{"output":"¡pןɹoM 'oןןǝH"},"credits_used":5,"credits_remaining":null}},"letters_and_numbers":{"summary":"Letters and numbers","value":{"tool":"upside-down-text","tool_version":"1.0.2","outputs":{"output":"¡ƐᄅƖ ǝɯ dᴉןℲ"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Upside Down Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-encoder-decoder":{"post":{"operationId":"run_url_encoder_decoder","summary":"URL Encoder / Decoder","tags":["Converters"],"description":"Encode text into a URL-safe percent-encoded string, or decode a percent-encoded URL back to plain text. Supports component (encodeURIComponent), full-URI (encodeURI), and form-urlencoded (+ for space) schemes.\n\n[Try URL Encoder / Decoder in your browser →](https://iotools.cloud/tool/url-encoder-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["encode","decode"],"description":"Mode"},"scheme":{"enum":["component","uri","form"],"description":"Encoding Scheme"}},"required":[]},"examples":{"encode_a_query_string_component":{"summary":"Encode a query string (component)","value":{"inputText":"hello world?a=1&b=2","mode":"encode","scheme":"component"}},"decode_a_query_string_component":{"summary":"Decode a query string (component)","value":{"inputText":"hello%20world%3Fa%3D1%26b%3D2","mode":"decode","scheme":"component"}},"encode_a_full_url_keeps":{"summary":"Encode a full URL (keeps : / ? & =)","value":{"inputText":"https://example.com/path?name=John Doe&age=30","mode":"encode","scheme":"uri"}},"encode_for_a_form_for_space":{"summary":"Encode for a form (+ for space)","value":{"inputText":"hello world & friends","mode":"encode","scheme":"form"}},"decode_a_malformed_sequence_graceful_error":{"summary":"Decode a malformed sequence (graceful error)","value":{"inputText":"100%25 %ZZ","mode":"decode","scheme":"component"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_a_query_string_component":{"summary":"Encode a query string (component)","value":{"tool":"url-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"hello%20world%3Fa%3D1%26b%3D2"},"credits_used":5,"credits_remaining":null}},"decode_a_query_string_component":{"summary":"Decode a query string (component)","value":{"tool":"url-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"hello world?a=1&b=2"},"credits_used":5,"credits_remaining":null}},"encode_a_full_url_keeps":{"summary":"Encode a full URL (keeps : / ? & =)","value":{"tool":"url-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"https://example.com/path?name=John%20Doe&age=30"},"credits_used":5,"credits_remaining":null}},"encode_for_a_form_for_space":{"summary":"Encode for a form (+ for space)","value":{"tool":"url-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"hello+world+%26+friends"},"credits_used":5,"credits_remaining":null}},"decode_a_malformed_sequence_graceful_error":{"summary":"Decode a malformed sequence (graceful error)","value":{"tool":"url-encoder-decoder","tool_version":"1.0.2","outputs":{"output":"Error: input is not a valid percent-encoded string (malformed % sequence)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-html":{"post":{"operationId":"run_url_to_html","summary":"URL to HTML","tags":["Converters"],"description":"Fetch any live URL and get back its raw HTML source — for web scraping, archiving, and development. Server-side fetch, so it works even when the page blocks CORS.\n\n[Try URL to HTML in your browser →](https://iotools.cloud/tool/url-to-html/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"html":{"type":"string","description":"HTML source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-image":{"post":{"operationId":"run_url_to_image","summary":"URL to Image","tags":["Converters"],"description":"Take a screenshot of any live URL and download it as an image. Choose desktop, tablet, or mobile width for a responsive preview.\n\n[Try URL to Image in your browser →](https://iotools.cloud/tool/url-to-image/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"width":{"enum":["1280","768","375"],"description":"Screen width"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com","width":"1280"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-json":{"post":{"operationId":"run_url_to_json","summary":"URL to JSON","tags":["Converters"],"description":"Fetch any live URL and get back a structured JSON snapshot of the page — title, description, canonical URL, heading hierarchy, links and word count — for API testing, data extraction, and web scraping.\n\n[Try URL to JSON in your browser →](https://iotools.cloud/tool/url-to-json/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"json":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-markdown":{"post":{"operationId":"run_url_to_markdown","summary":"URL to Markdown","tags":["Converters"],"description":"Fetch any live URL and convert its webpage into clean, formatted Markdown — headings, links, lists, tables, and code blocks all carry over. Server-side fetch, so it works even when the page blocks CORS.\n\n[Try URL to Markdown in your browser →](https://iotools.cloud/tool/url-to-markdown/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"language":{"enum":["en","","fr","de","es","pt","it","ja","zh","ru"],"description":"Language"},"headingStyle":{"enum":["atx","setext"],"description":"Heading style"},"codeBlockStyle":{"enum":["fenced","indented"],"description":"Code block style"},"bulletMarker":{"enum":["-","*","+"],"description":"Bullet list marker"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-text":{"post":{"operationId":"run_url_to_text","summary":"URL to Text","tags":["Converters"],"description":"Fetch any live URL and get back clean, readable text — navigation, headers, footers, and scripts stripped out — for research, accessibility, and content analysis.\n\n[Try URL to Text in your browser →](https://iotools.cloud/tool/url-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"text":{"type":"string","description":"Clean text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-xml":{"post":{"operationId":"run_url_to_xml","summary":"URL to XML","tags":["Converters"],"description":"Fetch any live URL and get back a structured XML snapshot of the page — title, description, canonical URL, heading hierarchy, links and word count — for web services, data exchange, and system integration.\n\n[Try URL to XML in your browser →](https://iotools.cloud/tool/url-to-xml/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"xml":{"type":"string","description":"XML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vcf-vcard-to-json-converter":{"post":{"operationId":"run_vcf_vcard_to_json_converter","summary":"VCF (vCard) to JSON Converter","tags":["Converters"],"description":"Parse .vcf vCard files (versions 3.0 and 4.0) into structured JSON — split names and addresses into fields, parse dates to ISO 8601, group contact methods by type, and handle multiple vCards in one file.\n\n[Try VCF (vCard) to JSON Converter in your browser →](https://iotools.cloud/tool/vcf-vcard-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"vcfSource":{"type":"string","description":"vCard Source"},"prettyPrint":{"type":"boolean","description":"Pretty-print JSON output"},"flatArray":{"type":"boolean","description":"Output flat array of contacts (skip wrapper object)"},"structuredN":{"type":"boolean","description":"Split N (Name) into family/given/additional/prefix/suffix"},"structuredAdr":{"type":"boolean","description":"Split ADR (Address) into pobox/extended/street/locality/region/postalCode/country"},"parseDates":{"type":"boolean","description":"Parse BDAY/ANNIVERSARY/REV into ISO 8601"},"groupByType":{"type":"boolean","description":"Group EMAIL/TEL/ADR/URL by TYPE parameter"},"includePhoto":{"type":"boolean","description":"Include PHOTO/LOGO base64 data (large output)"},"includeRaw":{"type":"boolean","description":"Include raw property values alongside parsed values"}},"required":[]},"examples":{"two_contacts_default_options":{"summary":"Two contacts (default options)","value":{"vcfSource":"BEGIN:VCARD\nVERSION:3.0\nFN:Jane Q. Doe\nN:Doe;Jane;Quincy;Dr.;PhD\nNICKNAME:Janie\nORG:Example Corp;Engineering\nTITLE:Principal Engineer\nEMAIL;TYPE=WORK,PREF:jane@example.com\nEMAIL;TYPE=HOME:jane.doe@home.example\nTEL;TYPE=CELL,VOICE:+1-415-555-0142\nTEL;TYPE=WORK,VOICE:+1-415-555-0199\nADR;TYPE=WORK:;;500 Market St;San Francisco;CA;94105;USA\nURL:https://example.com/jane\nBDAY:1986-04-12\nNOTE:Met at the 2024 conference\\, follow up in Q3.\nEND:VCARD\nBEGIN:VCARD\nVERSION:4.0\nFN:Alex Smith\nN:Smith;Alex;;;\nEMAIL:alex@example.com\nTEL;VALUE=uri;TYPE=\"voice,cell\":tel:+1-415-555-0188\nEND:VCARD","prettyPrint":"true","flatArray":"true","structuredN":"true","structuredAdr":"true","parseDates":"true","groupByType":"","includePhoto":"","includeRaw":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_contacts_default_options":{"summary":"Two contacts (default options)","value":{"tool":"vcf-vcard-to-json-converter","tool_version":"1.0.2","outputs":{"jsonOutput":"[\n  {\n    \"VERSION\": \"3.0\",\n    \"FN\": \"Jane Q. Doe\",\n    \"N\": {\n      \"family\": \"Doe\",\n      \"given\": \"Jane\",\n      \"additional\": \"Quincy\",\n      \"prefix\": \"Dr.\",\n      \"suffix\": \"PhD\"\n    },\n    \"NICKNAME\": [\n      \"Janie\"\n    ],\n    \"ORG\": [\n      \"Example Corp\",\n      \"Engineering\"\n    ],\n    \"TITLE\": \"Principal Engineer\",\n    \"EMAIL\": [\n      {\n        \"value\": \"jane@example.com\",\n        \"params\": {\n          \"TYPE\": [\n            \"WORK\",\n            \"PREF\"\n          ]\n        }\n      },\n      {\n        \"value\": \"jane.doe@home.example\",\n        \"params\": {\n          \"TYPE\": \"HOME\"\n        }\n      }\n    ],\n    \"TEL\": [\n      {\n        \"value\": \"+1-415-555-0142\",\n        \"params\": {\n          \"TYPE\": [\n            \"CELL\",\n            \"VOICE\"\n          ]\n        }\n      },\n      {\n        \"value\": \"+1-415-555-0199\",\n        \"params\": {\n          \"TYPE\": [\n            \"WORK\",\n            \"VOICE\"\n          ]\n        }\n      }\n    ],\n    \"ADR\": {\n      \"value\": {\n        \"street\": \"500 Market St\",\n        \"locality\": \"San Francisco\",\n        \"region\": \"CA\",\n        \"postalCode\": \"94105\",\n        \"country\": \"USA\"\n      },\n      \"params\": {\n        \"TYPE\": \"WORK\"\n      }\n    },\n    \"URL\": \"https://example.com/jane\",\n    \"BDAY\": \"1986-04-12\",\n    \"NOTE\": \"Met at the 2024 conference, follow up in Q3.\"\n  },\n  {\n    \"VERSION\": \"4.0\",\n    \"FN\": \"Alex Smith\",\n    \"N\": {\n      \"family\": \"Smith\",\n      \"given\": \"Alex\"\n    },\n    \"EMAIL\": \"alex@example.com\",\n    \"TEL\": {\n      \"value\": \"+1-415-555-0188\",\n      \"params\": {\n        \"VALUE\": \"uri\",\n        \"TYPE\": \"voice,cell\"\n      }\n    }\n  }\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jsonOutput":{"type":"string","description":"JSON Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vigenere-cipher":{"post":{"operationId":"run_vigenere_cipher","summary":"Vigenère Cipher","tags":["Converters"],"description":"Encode and decode text with the Vigenère cipher — a keyword-driven polyalphabetic cipher. Supports the classic repeating-key mode and the text auto-key variant; non-letters pass through and letter case is preserved.\n\n[Try Vigenère Cipher in your browser →](https://iotools.cloud/tool/vigenere-cipher/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"key":{"type":"string","description":"Keyword"},"mode":{"enum":["encode","decode"],"description":"Mode"},"autoKey":{"type":"boolean","description":"Auto-key (extend the key with the plaintext)"}},"required":[]},"examples":{"encode_with_keyword":{"summary":"Encode with keyword","value":{"inputText":"Attack at dawn!","key":"LEMON","mode":"encode","autoKey":""}},"decode_with_keyword":{"summary":"Decode with keyword","value":{"inputText":"Lxfopv ef rnhr!","key":"LEMON","mode":"decode","autoKey":""}},"encode_auto_key":{"summary":"Encode (auto-key)","value":{"inputText":"Attack at dawn!","key":"LEMON","mode":"encode","autoKey":"true"}},"decode_auto_key":{"summary":"Decode (auto-key)","value":{"inputText":"Lxfopk tm dcgn!","key":"LEMON","mode":"decode","autoKey":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"encode_with_keyword":{"summary":"Encode with keyword","value":{"tool":"vigenere-cipher","tool_version":"1.0.2","outputs":{"output":"Lxfopv ef rnhr!","frequency":[{"letter":"F","count":"2","frequency":"16.7%"},{"letter":"R","count":"2","frequency":"16.7%"},{"letter":"E","count":"1","frequency":"8.3%"},{"letter":"H","count":"1","frequency":"8.3%"},{"letter":"L","count":"1","frequency":"8.3%"},{"letter":"N","count":"1","frequency":"8.3%"},{"letter":"O","count":"1","frequency":"8.3%"},{"letter":"P","count":"1","frequency":"8.3%"},{"letter":"V","count":"1","frequency":"8.3%"},{"letter":"X","count":"1","frequency":"8.3%"}]},"credits_used":5,"credits_remaining":null}},"decode_with_keyword":{"summary":"Decode with keyword","value":{"tool":"vigenere-cipher","tool_version":"1.0.2","outputs":{"output":"Attack at dawn!","frequency":[{"letter":"A","count":"4","frequency":"33.3%"},{"letter":"T","count":"3","frequency":"25.0%"},{"letter":"C","count":"1","frequency":"8.3%"},{"letter":"D","count":"1","frequency":"8.3%"},{"letter":"K","count":"1","frequency":"8.3%"},{"letter":"N","count":"1","frequency":"8.3%"},{"letter":"W","count":"1","frequency":"8.3%"}]},"credits_used":5,"credits_remaining":null}},"encode_auto_key":{"summary":"Encode (auto-key)","value":{"tool":"vigenere-cipher","tool_version":"1.0.2","outputs":{"output":"Lxfopk tm dcgn!","frequency":[{"letter":"C","count":"1","frequency":"8.3%"},{"letter":"D","count":"1","frequency":"8.3%"},{"letter":"F","count":"1","frequency":"8.3%"},{"letter":"G","count":"1","frequency":"8.3%"},{"letter":"K","count":"1","frequency":"8.3%"},{"letter":"L","count":"1","frequency":"8.3%"},{"letter":"M","count":"1","frequency":"8.3%"},{"letter":"N","count":"1","frequency":"8.3%"},{"letter":"O","count":"1","frequency":"8.3%"},{"letter":"P","count":"1","frequency":"8.3%"},{"letter":"T","count":"1","frequency":"8.3%"},{"letter":"X","count":"1","frequency":"8.3%"}]},"credits_used":5,"credits_remaining":null}},"decode_auto_key":{"summary":"Decode (auto-key)","value":{"tool":"vigenere-cipher","tool_version":"1.0.2","outputs":{"output":"Attack at dawn!","frequency":[{"letter":"A","count":"4","frequency":"33.3%"},{"letter":"T","count":"3","frequency":"25.0%"},{"letter":"C","count":"1","frequency":"8.3%"},{"letter":"D","count":"1","frequency":"8.3%"},{"letter":"K","count":"1","frequency":"8.3%"},{"letter":"N","count":"1","frequency":"8.3%"},{"letter":"W","count":"1","frequency":"8.3%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"frequency":{"type":"array","items":{"type":"object","properties":{"letter":{"type":"string","description":"Letter"},"count":{"type":"string","description":"Count"},"frequency":{"type":"string","description":"Frequency"}}},"x-iotools-columns":["letter","count","frequency"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/voltage-converter":{"post":{"operationId":"run_voltage_converter","summary":"Voltage Converter","tags":["Converters"],"description":"Convert voltage between volts, millivolts, microvolts, kilovolts, megavolts, gigavolts, statvolts, and abvolts at once. Enter one value, pick its unit, and see the equivalent in all 10 units.\n\n[Try Voltage Converter in your browser →](https://iotools.cloud/tool/voltage-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["volt","millivolt","microvolt","nanovolt","picovolt","kilovolt","megavolt","gigavolt","statvolt","abvolt"],"description":"Unit"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_volt_to_every_unit_4_decimals":{"summary":"1 volt to every unit (4 decimals)","value":{"value":"1","fromUnit":"volt","precision":"4"}},"230_kilovolts_to_every_unit_2_decimals":{"summary":"230 kilovolts to every unit (2 decimals)","value":{"value":"230","fromUnit":"kilovolt","precision":"2"}},"1_statvolt_to_every_unit_6_decimals":{"summary":"1 statvolt to every unit (6 decimals)","value":{"value":"1","fromUnit":"statvolt","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_volt_to_every_unit_4_decimals":{"summary":"1 volt to every unit (4 decimals)","value":{"tool":"voltage-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Volt (V)","value":"1"},{"unit":"Millivolt (mV)","value":"1000"},{"unit":"Microvolt (µV)","value":"1000000"},{"unit":"Nanovolt (nV)","value":"1000000000"},{"unit":"Picovolt (pV)","value":"1000000000000"},{"unit":"Kilovolt (kV)","value":"0.001"},{"unit":"Megavolt (MV)","value":"0"},{"unit":"Gigavolt (GV)","value":"0"},{"unit":"Statvolt (statV)","value":"0.0033"},{"unit":"Abvolt (abV)","value":"100000000"}]},"credits_used":5,"credits_remaining":null}},"230_kilovolts_to_every_unit_2_decimals":{"summary":"230 kilovolts to every unit (2 decimals)","value":{"tool":"voltage-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Volt (V)","value":"230000"},{"unit":"Millivolt (mV)","value":"230000000"},{"unit":"Microvolt (µV)","value":"230000000000"},{"unit":"Nanovolt (nV)","value":"230000000000000"},{"unit":"Picovolt (pV)","value":"2.30e+17"},{"unit":"Kilovolt (kV)","value":"230"},{"unit":"Megavolt (MV)","value":"0.23"},{"unit":"Gigavolt (GV)","value":"0"},{"unit":"Statvolt (statV)","value":"767.2"},{"unit":"Abvolt (abV)","value":"23000000000000"}]},"credits_used":5,"credits_remaining":null}},"1_statvolt_to_every_unit_6_decimals":{"summary":"1 statvolt to every unit (6 decimals)","value":{"tool":"voltage-converter","tool_version":"1.0.2","outputs":{"table":[{"unit":"Volt (V)","value":"299.792458"},{"unit":"Millivolt (mV)","value":"299792.458"},{"unit":"Microvolt (µV)","value":"299792458"},{"unit":"Nanovolt (nV)","value":"299792458000"},{"unit":"Picovolt (pV)","value":"299792458000000"},{"unit":"Kilovolt (kV)","value":"0.299792"},{"unit":"Megavolt (MV)","value":"0.0003"},{"unit":"Gigavolt (GV)","value":"0"},{"unit":"Statvolt (statV)","value":"1"},{"unit":"Abvolt (abV)","value":"29979245800"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wbmp-to-png":{"post":{"operationId":"run_wbmp_to_png","summary":"WBMP to PNG Converter","tags":["Converters"],"description":"Convert a legacy WAP Wireless Bitmap (.wbmp) file into a standard PNG image. Runs entirely in your browser — no upload.\n\n[Try WBMP to PNG Converter in your browser →](https://iotools.cloud/tool/wbmp-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"WBMP file"}},"required":["file"]},"examples":{"4_4_checkerboard":{"summary":"4×4 checkerboard","value":{"file":"data:application/octet-stream;base64,AAAEBKBQoFA="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4_4_checkerboard":{"summary":"4×4 checkerboard","value":{"tool":"wbmp-to-png","tool_version":"1.0.2","outputs":{"png":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAEAQAAAACBiqPTAAAADklEQVR4nGNYwBDAAMQACCgB4VwknUAAAAAASUVORK5CYII="},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"png":{"type":"string","contentEncoding":"base64","description":"PNG file"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-to-json-converter":{"post":{"operationId":"run_xml_to_json_converter","summary":"XML to JSON Converter","tags":["Converters"],"description":"Convert XML to JSON. Element names become object keys, attributes get a configurable prefix (@, _, or none), text content gets a configurable key name, and repeated sibling elements become a JSON array automatically — with an option to force every element into an array so the shape never depends on how many times it repeats. Runs entirely in your browser.\n\n[Try XML to JSON Converter in your browser →](https://iotools.cloud/tool/xml-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlSource":{"type":"string","description":"XML input"},"attributePrefix":{"enum":["@","_",""],"description":"Attribute prefix"},"textKey":{"enum":["#text","_text","text"],"description":"Text content key"},"trimText":{"type":"boolean","description":"Trim whitespace in text content"},"forceArrays":{"type":"boolean","description":"Always represent child elements as arrays"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":["xmlSource"]},"examples":{"nested_elements_attributes_repeated_siblings_array":{"summary":"Nested elements, attributes, repeated siblings → array","value":{"xmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<company>\n  <name>Acme Corp</name>\n  <founded>1995</founded>\n  <employees>\n    <employee id=\"1\" remote=\"true\">\n      <name>Alice Johnson</name>\n      <role>Engineer</role>\n    </employee>\n    <employee id=\"2\" remote=\"false\">\n      <name>Bob Smith</name>\n      <role>Designer</role>\n    </employee>\n  </employees>\n  <departments>\n    <department>Engineering</department>\n    <department>Design</department>\n  </departments>\n  <headquarters/>\n</company>","attributePrefix":"@","textKey":"#text","trimText":"true","forceArrays":"","indent":"2"}},"attribute_mixed_text_content_custom_prefix_and_text_key_minified":{"summary":"Attribute + mixed text content, custom prefix and text key, minified","value":{"xmlSource":"<product sku=\"A100\">\n  <title>Widget</title>\n  <price currency=\"USD\">19.99</price>\n</product>","attributePrefix":"_","textKey":"_text","trimText":"true","forceArrays":"","indent":"minified"}},"force_single_occurrence_element_into_an_array_4_space_indent":{"summary":"Force single-occurrence element into an array (4-space indent)","value":{"xmlSource":"<catalog>\n  <book>Only One Book</book>\n</catalog>","attributePrefix":"@","textKey":"#text","trimText":"true","forceArrays":"true","indent":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_elements_attributes_repeated_siblings_array":{"summary":"Nested elements, attributes, repeated siblings → array","value":{"tool":"xml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"company\": {\n    \"name\": \"Acme Corp\",\n    \"founded\": \"1995\",\n    \"employees\": {\n      \"employee\": [\n        {\n          \"@id\": \"1\",\n          \"@remote\": \"true\",\n          \"name\": \"Alice Johnson\",\n          \"role\": \"Engineer\"\n        },\n        {\n          \"@id\": \"2\",\n          \"@remote\": \"false\",\n          \"name\": \"Bob Smith\",\n          \"role\": \"Designer\"\n        }\n      ]\n    },\n    \"departments\": {\n      \"department\": [\n        \"Engineering\",\n        \"Design\"\n      ]\n    },\n    \"headquarters\": \"\"\n  }\n}"},"credits_used":5,"credits_remaining":null}},"attribute_mixed_text_content_custom_prefix_and_text_key_minified":{"summary":"Attribute + mixed text content, custom prefix and text key, minified","value":{"tool":"xml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\"product\":{\"_sku\":\"A100\",\"title\":\"Widget\",\"price\":{\"_currency\":\"USD\",\"_text\":\"19.99\"}}}"},"credits_used":5,"credits_remaining":null}},"force_single_occurrence_element_into_an_array_4_space_indent":{"summary":"Force single-occurrence element into an array (4-space indent)","value":{"tool":"xml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n    \"catalog\": {\n        \"book\": [\n            \"Only One Book\"\n        ]\n    }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/volume-converter":{"post":{"operationId":"run_volume_converter","summary":"Volume Converter","tags":["Converters"],"description":"Convert volume between liters, milliliters, cubic meters, US and Imperial cups/pints/quarts/gallons, and 6 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Volume Converter in your browser →](https://iotools.cloud/tool/volume-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["milliliter","liter","cubic_centimeter","cubic_meter","us_teaspoon","us_tablespoon","us_fluid_ounce","us_cup","us_pint","us_quart","us_gallon","imp_fluid_ounce","imp_pint","imp_gallon","cubic_inch","cubic_foot"],"description":"Convert from"},"toUnit":{"enum":["all","milliliter","liter","cubic_centimeter","cubic_meter","us_teaspoon","us_tablespoon","us_fluid_ounce","us_cup","us_pint","us_quart","us_gallon","imp_fluid_ounce","imp_pint","imp_gallon","cubic_inch","cubic_foot"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_liter_to_every_unit":{"summary":"1 liter to every unit","value":{"value":"1","fromUnit":"liter","toUnit":"all","precision":"4"}},"5_us_gallons_to_liter":{"summary":"5 US gallons to liter","value":{"value":"5","fromUnit":"us_gallon","toUnit":"liter","precision":"2"}},"1_cubic_meter_to_every_unit":{"summary":"1 cubic meter to every unit","value":{"value":"1","fromUnit":"cubic_meter","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_liter_to_every_unit":{"summary":"1 liter to every unit","value":{"tool":"volume-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Milliliter (mL)","value":"1000"},{"unit":"Liter (L)","value":"1"},{"unit":"Cubic Centimeter (cm³)","value":"1000"},{"unit":"Cubic Meter (m³)","value":"0.001"},{"unit":"US Teaspoon (US tsp)","value":"202.8842"},{"unit":"US Tablespoon (US tbsp)","value":"67.6279"},{"unit":"US Fluid Ounce (US fl oz)","value":"33.8141"},{"unit":"US Cup (US cup)","value":"4.2268"},{"unit":"US Pint (US pt)","value":"2.1134"},{"unit":"US Quart (US qt)","value":"1.0567"},{"unit":"US Gallon (US gal)","value":"0.2642"},{"unit":"Imperial Fluid Ounce (Imp fl oz)","value":"35.195"},{"unit":"Imperial Pint (Imp pt)","value":"1.7598"},{"unit":"Imperial Gallon (Imp gal)","value":"0.22"},{"unit":"Cubic Inch (in³)","value":"61.0237"},{"unit":"Cubic Foot (ft³)","value":"0.0353"}]},"credits_used":5,"credits_remaining":null}},"5_us_gallons_to_liter":{"summary":"5 US gallons to liter","value":{"tool":"volume-converter","tool_version":"1.0.2","outputs":{"result":"18.93 Liter (L)","table":[]},"credits_used":5,"credits_remaining":null}},"1_cubic_meter_to_every_unit":{"summary":"1 cubic meter to every unit","value":{"tool":"volume-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Milliliter (mL)","value":"1000000"},{"unit":"Liter (L)","value":"1000"},{"unit":"Cubic Centimeter (cm³)","value":"1000000"},{"unit":"Cubic Meter (m³)","value":"1"},{"unit":"US Teaspoon (US tsp)","value":"202884.201813"},{"unit":"US Tablespoon (US tbsp)","value":"67627.884329"},{"unit":"US Fluid Ounce (US fl oz)","value":"33814.056503"},{"unit":"US Cup (US cup)","value":"4226.757063"},{"unit":"US Pint (US pt)","value":"2113.378531"},{"unit":"US Quart (US qt)","value":"1056.688149"},{"unit":"US Gallon (US gal)","value":"264.172177"},{"unit":"Imperial Fluid Ounce (Imp fl oz)","value":"35195.033277"},{"unit":"Imperial Pint (Imp pt)","value":"1759.754761"},{"unit":"Imperial Gallon (Imp gal)","value":"219.969248"},{"unit":"Cubic Inch (in³)","value":"61023.744095"},{"unit":"Cubic Foot (ft³)","value":"35.314667"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/weight-converter":{"post":{"operationId":"run_weight_converter","summary":"Weight Converter","tags":["Converters"],"description":"Convert weight and mass between kilograms, grams, pounds, ounces, stone, tonnes, carats, and 10 other units. Enter one value and pick its unit, then either see the equivalent in every unit at once or pick a single target unit.\n\n[Try Weight Converter in your browser →](https://iotools.cloud/tool/weight-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Amount"},"fromUnit":{"enum":["kilogram","gram","milligram","microgram","tonne","pound","ounce","stone","ton","metric_ton","carat","atomic_mass_unit","long_ton","short_hundredweight","long_hundredweight","pennyweight","grain"],"description":"Convert from"},"toUnit":{"enum":["all","kilogram","gram","milligram","microgram","tonne","pound","ounce","stone","ton","metric_ton","carat","atomic_mass_unit","long_ton","short_hundredweight","long_hundredweight","pennyweight","grain"],"description":"Convert to"},"precision":{"enum":["0","2","4","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"1_kg_to_every_unit":{"summary":"1 kg to every unit","value":{"value":"1","fromUnit":"kilogram","toUnit":"all","precision":"4"}},"150_pounds_to_kilogram":{"summary":"150 pounds to kilogram","value":{"value":"150","fromUnit":"pound","toUnit":"kilogram","precision":"2"}},"1_tonne_to_every_unit":{"summary":"1 tonne to every unit","value":{"value":"1","fromUnit":"tonne","toUnit":"all","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_kg_to_every_unit":{"summary":"1 kg to every unit","value":{"tool":"weight-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Kilogram (kg)","value":"1"},{"unit":"Gram (g)","value":"1000"},{"unit":"Milligram (mg)","value":"1000000"},{"unit":"Microgram (μg)","value":"1000000000"},{"unit":"Tonne (t)","value":"0.001"},{"unit":"Pound (lb)","value":"2.2046"},{"unit":"Ounce (oz)","value":"35.274"},{"unit":"Stone (st)","value":"0.1575"},{"unit":"Ton, US short (ton)","value":"0.0011"},{"unit":"Metric Ton (MT)","value":"0.001"},{"unit":"Carat (ct)","value":"5000"},{"unit":"Atomic Mass Unit (u)","value":"6.0221e+26"},{"unit":"Long Ton, UK (long ton)","value":"0.001"},{"unit":"Short Hundredweight, US (sh cwt)","value":"0.022"},{"unit":"Long Hundredweight, UK (long cwt)","value":"0.0197"},{"unit":"Pennyweight (dwt)","value":"643.0149"},{"unit":"Grain (gr)","value":"15432.3584"}]},"credits_used":5,"credits_remaining":null}},"150_pounds_to_kilogram":{"summary":"150 pounds to kilogram","value":{"tool":"weight-converter","tool_version":"1.0.2","outputs":{"result":"68.04 Kilogram (kg)","table":[]},"credits_used":5,"credits_remaining":null}},"1_tonne_to_every_unit":{"summary":"1 tonne to every unit","value":{"tool":"weight-converter","tool_version":"1.0.2","outputs":{"result":"","table":[{"unit":"Kilogram (kg)","value":"1000"},{"unit":"Gram (g)","value":"1000000"},{"unit":"Milligram (mg)","value":"1000000000"},{"unit":"Microgram (μg)","value":"999999999999.9999"},{"unit":"Tonne (t)","value":"1"},{"unit":"Pound (lb)","value":"2204.622622"},{"unit":"Ounce (oz)","value":"35273.961981"},{"unit":"Stone (st)","value":"157.473044"},{"unit":"Ton, US short (ton)","value":"1.102311"},{"unit":"Metric Ton (MT)","value":"1"},{"unit":"Carat (ct)","value":"5000000"},{"unit":"Atomic Mass Unit (u)","value":"6.022141e+29"},{"unit":"Long Ton, UK (long ton)","value":"0.984207"},{"unit":"Short Hundredweight, US (sh cwt)","value":"22.046226"},{"unit":"Long Hundredweight, UK (long cwt)","value":"19.684131"},{"unit":"Pennyweight (dwt)","value":"643014.931373"},{"unit":"Grain (gr)","value":"15432358.352941"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"table":{"type":"array","description":"Converted to every unit","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-to-json-converter":{"post":{"operationId":"run_yaml_to_json_converter","summary":"YAML to JSON Converter","tags":["Converters"],"description":"Convert YAML to formatted JSON. Understands nested mappings, sequences, quoted scalars, block scalars and flow collections, and reports the line number when the YAML is invalid. Runs entirely in your browser.\n\n[Try YAML to JSON Converter in your browser →](https://iotools.cloud/tool/yaml-to-json-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"yamlSource":{"type":"string","description":"YAML input"}},"required":["yamlSource"]},"examples":{"nested_mapping_with_a_sequence":{"summary":"Nested mapping with a sequence","value":{"yamlSource":"name: John Doe\nemail: john@example.com\nage: 30\ncity: New York\nskills:\n  - yaml\n  - json\naddress:\n  street: 123 Main St\n  zip: \"10001\""}},"sequence_of_mappings_flow_collection_comments":{"summary":"Sequence of mappings, flow collection & comments","value":{"yamlSource":"# users\nusers:\n  - name: Jane\n    admin: true\n  - name: Bob\n    admin: false\nports: [80, 443]\nlimits: {cpu: 2, memory: 512}\nmotd: null"}},"block_scalar_and_typed_values":{"summary":"Block scalar and typed values","value":{"yamlSource":"version: 1.2\nenabled: true\nretries: 0\nscript: |-\n  echo one\n  echo two\nnote: 'A: quoted value'"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_mapping_with_a_sequence":{"summary":"Nested mapping with a sequence","value":{"tool":"yaml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"name\": \"John Doe\",\n  \"email\": \"john@example.com\",\n  \"age\": 30,\n  \"city\": \"New York\",\n  \"skills\": [\n    \"yaml\",\n    \"json\"\n  ],\n  \"address\": {\n    \"street\": \"123 Main St\",\n    \"zip\": \"10001\"\n  }\n}"},"credits_used":5,"credits_remaining":null}},"sequence_of_mappings_flow_collection_comments":{"summary":"Sequence of mappings, flow collection & comments","value":{"tool":"yaml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"users\": [\n    {\n      \"name\": \"Jane\",\n      \"admin\": true\n    },\n    {\n      \"name\": \"Bob\",\n      \"admin\": false\n    }\n  ],\n  \"ports\": [\n    80,\n    443\n  ],\n  \"limits\": {\n    \"cpu\": 2,\n    \"memory\": 512\n  },\n  \"motd\": null\n}"},"credits_used":5,"credits_remaining":null}},"block_scalar_and_typed_values":{"summary":"Block scalar and typed values","value":{"tool":"yaml-to-json-converter","tool_version":"1.0.2","outputs":{"outputJson":"{\n  \"version\": 1.2,\n  \"enabled\": true,\n  \"retries\": 0,\n  \"script\": \"echo one\\necho two\",\n  \"note\": \"A: quoted value\"\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-to-toml-converter":{"post":{"operationId":"run_yaml_to_toml_converter","summary":"YAML to TOML Converter","tags":["Converters"],"description":"Convert YAML documents to TOML — parses YAML and re-emits it as TOML 1.0, wrapping root-level arrays in an items table since TOML requires a table at the root.\n\n[Try YAML to TOML Converter in your browser →](https://iotools.cloud/tool/yaml-to-toml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"yamlSource":{"type":"string","description":"YAML input"}},"required":[]},"examples":{"nested_config":{"summary":"Nested config","value":{"yamlSource":"title: Project Configuration\nversion: 1.0\nsettings:\n  debug: true\n  timeout: 30\n  cache_enabled: false\ndatabase:\n  host: localhost\n  port: 5432\n  credentials:\n    username: admin\n    password: secure123\nfeatures:\n  - authentication\n  - notifications\n  - reporting"}},"root_level_array_wrapped":{"summary":"Root-level array (wrapped)","value":{"yamlSource":"- alpha\n- beta\n- gamma"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_config":{"summary":"Nested config","value":{"tool":"yaml-to-toml-converter","tool_version":"1.0.2","outputs":{"outputToml":"title = \"Project Configuration\"\nversion = 1\nfeatures = [ \"authentication\", \"notifications\", \"reporting\" ]\n\n[settings]\ndebug = true\ntimeout = 30\ncache_enabled = false\n\n[database]\nhost = \"localhost\"\nport = 5432\n\n[database.credentials]\nusername = \"admin\"\npassword = \"secure123\"\n"},"credits_used":5,"credits_remaining":null}},"root_level_array_wrapped":{"summary":"Root-level array (wrapped)","value":{"tool":"yaml-to-toml-converter","tool_version":"1.0.2","outputs":{"outputToml":"# Note: Arrays at the root level are not supported in TOML.\n# The YAML array has been wrapped in an \"items\" object.\n\nitems = [ \"alpha\", \"beta\", \"gamma\" ]\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputToml":{"type":"string","description":"Output TOML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-to-xml":{"post":{"operationId":"run_yaml_to_xml","summary":"YAML to XML Converter","tags":["Converters"],"description":"Convert YAML documents to XML with configurable root element name, array handling (repeated elements or indexed), null handling, CDATA wrapping and indentation.\n\n[Try YAML to XML Converter in your browser →](https://iotools.cloud/tool/yaml-to-xml/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"yamlSource":{"type":"string","description":"YAML Input"},"rootElement":{"type":"string","description":"Root element name"},"arrayHandling":{"enum":["repeated","indexed"],"description":"Array handling"},"indent":{"enum":["2","4","tab"],"description":"Indent"},"xmlDeclaration":{"type":"boolean","description":"Include XML declaration"},"nullHandling":{"enum":["empty","omit","xsi-nil"],"description":"Null handling"},"cdataStrings":{"type":"boolean","description":"Wrap string values in CDATA"},"prettyPrint":{"type":"boolean","description":"Pretty print"}},"required":[]},"examples":{"nested_config_repeated_array_elements":{"summary":"Nested config, repeated array elements","value":{"yamlSource":"title: Project Configuration\nversion: 1.0\nsettings:\n  debug: true\n  timeout: 30\ndatabase:\n  host: localhost\n  port: 5432\nfeatures:\n  - authentication\n  - notifications\n  - reporting","rootElement":"root","arrayHandling":"repeated","indent":"2","xmlDeclaration":"true","nullHandling":"empty","cdataStrings":"","prettyPrint":"true"}},"indexed_arrays_no_declaration":{"summary":"Indexed arrays, no declaration","value":{"yamlSource":"tags:\n  - a\n  - b\n  - c","rootElement":"root","arrayHandling":"indexed","indent":"2","xmlDeclaration":"","nullHandling":"empty","cdataStrings":"","prettyPrint":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_config_repeated_array_elements":{"summary":"Nested config, repeated array elements","value":{"tool":"yaml-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<root>\n  <title>Project Configuration</title>\n  <version>1</version>\n  <settings>\n    <debug>true</debug>\n    <timeout>30</timeout>\n  </settings>\n  <database>\n    <host>localhost</host>\n    <port>5432</port>\n  </database>\n  <features>\n    <feature>authentication</feature>\n    <feature>notifications</feature>\n    <feature>reporting</feature>\n  </features>\n</root>","summary":[{"metric":"Elements","value":"13"},{"metric":"Max Depth","value":"3"},{"metric":"Size","value":"403 B"}]},"credits_used":5,"credits_remaining":null}},"indexed_arrays_no_declaration":{"summary":"Indexed arrays, no declaration","value":{"tool":"yaml-to-xml","tool_version":"1.0.2","outputs":{"outputXml":"<root>\n  <tags>\n    <tag_0>a</tag_0>\n    <tag_1>b</tag_1>\n    <tag_2>c</tag_2>\n  </tags>\n</root>","summary":[{"metric":"Elements","value":"5"},{"metric":"Max Depth","value":"3"},{"metric":"Size","value":"96 B"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputXml":{"type":"string","description":"XML Output"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/youtube-to-text":{"post":{"operationId":"run_youtube_to_text","summary":"YouTube to Text","tags":["Converters"],"description":"Turn any YouTube video into text — paste the link and get the full transcript as clean prose, timestamped lines, or a downloadable SRT/VTT subtitle file.\n\n[Try YouTube to Text in your browser →](https://iotools.cloud/tool/youtube-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"videoUrl":{"type":"string","description":"YouTube video URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"enum":["","ab","aa","af","ak","sq","am","ar","hy","as","ay","az","bn","ba","eu","be","bho","bs","br","bg","my","ca","ceb","zh-Hans","zh-Hant","co","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fil","fi","fr","gaa","gl","lg","ka","de","el","gn","gu","ht","ha","haw","iw","hi","hmn","hu","is","ig","id","iu","ga","it","ja","jv","kl","kn","kk","kha","km","rw","ko","kri","ku","ky","lo","la","lv","ln","lt","lua","luo","lb","mk","mg","ms","ml","mt","gv","mi","mr","mn","mfe","ne","new","nso","no","ny","oc","or","om","os","pam","ps","fa","pl","pt","pt-PT","pa","qu","ro","rn","ru","sm","sg","sa","gd","sr","crs","sn","sd","si","sk","sl","so","st","es","su","sw","ss","sv","tg","ta","tt","te","th","bo","ti","to","ts","tn","tum","tr","tk","uk","ur","ug","uz","ve","vi","war","cy","fy","wo","xh","yi","yo","zu"],"description":"Caption language"},"translateTo":{"enum":["","ab","aa","af","ak","sq","am","ar","hy","as","ay","az","bn","ba","eu","be","bho","bs","br","bg","my","ca","ceb","zh-Hans","zh-Hant","co","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fil","fi","fr","gaa","gl","lg","ka","de","el","gn","gu","ht","ha","haw","iw","hi","hmn","hu","is","ig","id","iu","ga","it","ja","jv","kl","kn","kk","kha","km","rw","ko","kri","ku","ky","lo","la","lv","ln","lt","lua","luo","lb","mk","mg","ms","ml","mt","gv","mi","mr","mn","mfe","ne","new","nso","no","ny","oc","or","om","os","pam","ps","fa","pl","pt","pt-PT","pa","qu","ro","rn","ru","sm","sg","sa","gd","sr","crs","sn","sd","si","sk","sl","so","st","es","su","sw","ss","sv","tg","ta","tt","te","th","bo","ti","to","ts","tn","tum","tr","tk","uk","ur","ug","uz","ve","vi","war","cy","fy","wo","xh","yi","yo","zu"],"description":"Translate to"}},"required":["videoUrl"]},"examples":{"3blue1brown_neural_networks":{"summary":"3Blue1Brown — neural networks","value":{"videoUrl":"https://www.youtube.com/watch?v=aircAruvnKk","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"video":{"type":"string","description":"Video"},"videoTitle":{"type":"string","description":"Video title"},"description":{"type":"string","description":"Video description"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vimeo-to-text":{"post":{"operationId":"run_vimeo_to_text","summary":"Vimeo to Text","tags":["Converters"],"description":"Turn a Vimeo video into text — paste the link and get its caption track as clean prose, timestamped lines, or a downloadable SRT/VTT file.\n\n[Try Vimeo to Text in your browser →](https://iotools.cloud/tool/vimeo-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"videoUrl":{"type":"string","description":"Vimeo video URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"type":"string","description":"Caption language code"}},"required":["videoUrl"]},"examples":{"vimeo_how_to_add_captions_to_your_video":{"summary":"Vimeo — How to add captions to your video","value":{"videoUrl":"https://vimeo.com/980152407","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"video":{"type":"string","description":"Video"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/spotify-to-text":{"post":{"operationId":"run_spotify_to_text","summary":"Spotify to Text","tags":["Converters"],"description":"Turn a Spotify podcast episode into text — paste the episode link, we find its matching YouTube video and hand you the transcript as clean prose, timestamped lines, or a downloadable SRT/VTT file.\n\n[Try Spotify to Text in your browser →](https://iotools.cloud/tool/spotify-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"episodeUrl":{"type":"string","description":"Spotify episode URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"enum":["","ab","aa","af","ak","sq","am","ar","hy","as","ay","az","bn","ba","eu","be","bho","bs","br","bg","my","ca","ceb","zh-Hans","zh-Hant","co","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fil","fi","fr","gaa","gl","lg","ka","de","el","gn","gu","ht","ha","haw","iw","hi","hmn","hu","is","ig","id","iu","ga","it","ja","jv","kl","kn","kk","kha","km","rw","ko","kri","ku","ky","lo","la","lv","ln","lt","lua","luo","lb","mk","mg","ms","ml","mt","gv","mi","mr","mn","mfe","ne","new","nso","no","ny","oc","or","om","os","pam","ps","fa","pl","pt","pt-PT","pa","qu","ro","rn","ru","sm","sg","sa","gd","sr","crs","sn","sd","si","sk","sl","so","st","es","su","sw","ss","sv","tg","ta","tt","te","th","bo","ti","to","ts","tn","tum","tr","tk","uk","ur","ug","uz","ve","vi","war","cy","fy","wo","xh","yi","yo","zu"],"description":"Caption language"},"translateTo":{"enum":["","ab","aa","af","ak","sq","am","ar","hy","as","ay","az","bn","ba","eu","be","bho","bs","br","bg","my","ca","ceb","zh-Hans","zh-Hant","co","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fil","fi","fr","gaa","gl","lg","ka","de","el","gn","gu","ht","ha","haw","iw","hi","hmn","hu","is","ig","id","iu","ga","it","ja","jv","kl","kn","kk","kha","km","rw","ko","kri","ku","ky","lo","la","lv","ln","lt","lua","luo","lb","mk","mg","ms","ml","mt","gv","mi","mr","mn","mfe","ne","new","nso","no","ny","oc","or","om","os","pam","ps","fa","pl","pt","pt-PT","pa","qu","ro","rn","ru","sm","sg","sa","gd","sr","crs","sn","sd","si","sk","sl","so","st","es","su","sw","ss","sv","tg","ta","tt","te","th","bo","ti","to","ts","tn","tum","tr","tk","uk","ur","ug","uz","ve","vi","war","cy","fy","wo","xh","yi","yo","zu"],"description":"Translate to"}},"required":["episodeUrl"]},"examples":{"sandeep_swadia_if_you_only_read_one_book_this_year_make_it_this":{"summary":"Sandeep Swadia — If You Only Read One Book This Year, Make It This","value":{"episodeUrl":"https://open.spotify.com/episode/1xpxc0JNCkC1u5BaukfVb0","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"episode":{"type":"string","description":"Spotify episode"},"episodeTitle":{"type":"string","description":"Episode title"},"video":{"type":"string","description":"Matched YouTube video"},"videoTitle":{"type":"string","description":"Matched video title"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tiktok-to-text":{"post":{"operationId":"run_tiktok_to_text","summary":"TikTok to Text","tags":["Converters"],"description":"Turn a TikTok video into text — paste the link and get its caption track as clean prose, timestamped lines, or a downloadable SRT/VTT file.\n\n[Try TikTok to Text in your browser →](https://iotools.cloud/tool/tiktok-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"videoUrl":{"type":"string","description":"TikTok video URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"type":"string","description":"Caption language code"}},"required":["videoUrl"]},"examples":{"bbc_news_auto_generated_captions":{"summary":"BBC News — auto-generated captions","value":{"videoUrl":"https://www.tiktok.com/@bbcnews/video/7687634075749829910","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"video":{"type":"string","description":"Video"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/x-to-text":{"post":{"operationId":"run_x_to_text","summary":"X (Twitter) Video to Text","tags":["Converters"],"description":"Turn the video in an X (Twitter) post into text — paste the post link and get its captions as clean prose, timestamped lines, or a downloadable SRT/VTT file.\n\n[Try X (Twitter) Video to Text in your browser →](https://iotools.cloud/tool/x-to-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postUrl":{"type":"string","description":"X (Twitter) post URL"},"format":{"enum":["paragraphs","plain","timestamps","srt","vtt","json"],"description":"Output format"},"language":{"type":"string","description":"Caption language code"}},"required":["postUrl"]},"examples":{"a_long_talk_with_auto_generated_captions":{"summary":"A long talk with auto-generated captions","value":{"postUrl":"https://x.com/poteto/status/2102050467505430555","format":"paragraphs"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"post":{"type":"string","description":"Post"},"transcript":{"type":"string","description":"Transcript"},"details":{"type":"object","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-to-unicode-converter":{"post":{"operationId":"run_text_to_unicode_converter","summary":"Text to Unicode Converter","tags":["Converters"],"description":"Convert text into Unicode code points (U+XXXX) and escape notation — JavaScript-style \\uXXXX escapes, HTML numeric character entities (&#NNN;), and CSS \\XXXX escapes — all at once, entirely in your browser.\n\n[Try Text to Unicode Converter in your browser →](https://iotools.cloud/tool/text-to-unicode-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"}},"required":[]},"examples":{"hello_world":{"summary":"Hello, World!","value":{"text":"Hello, World!"}},"empty_input":{"summary":"Empty input","value":{"text":""}},"astral_character_emoji":{"summary":"Astral character (emoji)","value":{"text":"😀"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello_world":{"summary":"Hello, World!","value":{"tool":"text-to-unicode-converter","tool_version":"1.0.2","outputs":{"unicodeCodePoints":"U+0048 U+0065 U+006C U+006C U+006F U+002C U+0020 U+0057 U+006F U+0072 U+006C U+0064 U+0021","unicodeEscaped":"\\u0048\\u0065\\u006c\\u006c\\u006f\\u002c\\u0020\\u0057\\u006f\\u0072\\u006c\\u0064\\u0021","htmlEntities":"&#72;&#101;&#108;&#108;&#111;&#44;&#32;&#87;&#111;&#114;&#108;&#100;&#33;","cssUnicode":"\\0048 \\0065 \\006c \\006c \\006f \\002c \\0020 \\0057 \\006f \\0072 \\006c \\0064 \\0021"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"text-to-unicode-converter","tool_version":"1.0.2","outputs":{"unicodeCodePoints":"","unicodeEscaped":"","htmlEntities":"","cssUnicode":""},"credits_used":5,"credits_remaining":null}},"astral_character_emoji":{"summary":"Astral character (emoji)","value":{"tool":"text-to-unicode-converter","tool_version":"1.0.2","outputs":{"unicodeCodePoints":"U+1F600","unicodeEscaped":"\\ud83d\\ude00","htmlEntities":"&#128512;","cssUnicode":"\\1f600"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"unicodeCodePoints":{"type":"string","description":"Unicode Code Points (U+XXXX)"},"unicodeEscaped":{"type":"string","description":"JS / JSON Escaped (\\uXXXX)"},"htmlEntities":{"type":"string","description":"HTML Entities (&#NNN;)"},"cssUnicode":{"type":"string","description":"CSS Escaped (\\XXXX)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tab-to-space-converter":{"post":{"operationId":"run_tab_to_space_converter","summary":"Tab to Space Converter","tags":["Converters"],"description":"Replace every tab character in your text with a fixed number of spaces. Runs entirely in your browser.\n\n[Try Tab to Space Converter in your browser →](https://iotools.cloud/tool/tab-to-space-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Enter your text here"},"tabSize":{"type":"number","description":"Tab Size","minimum":1,"maximum":8}},"required":[]},"examples":{"function_body_with_tabs":{"summary":"Function body with tabs","value":{"originalText":"function example() {\n\tconst x = 1;\n\treturn x;\n}","tabSize":"4"}},"tab_size_2":{"summary":"Tab size 2","value":{"originalText":"a\tb","tabSize":"2"}},"empty_input":{"summary":"Empty input","value":{"originalText":"","tabSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"function_body_with_tabs":{"summary":"Function body with tabs","value":{"tool":"tab-to-space-converter","tool_version":"1.0.2","outputs":{"updatedText":"function example() {\n    const x = 1;\n    return x;\n}"},"credits_used":5,"credits_remaining":null}},"tab_size_2":{"summary":"Tab size 2","value":{"tool":"tab-to-space-converter","tool_version":"1.0.2","outputs":{"updatedText":"a  b"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"tab-to-space-converter","tool_version":"1.0.2","outputs":{"updatedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"updatedText":{"type":"string","description":"Converted Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/space-to-tab-converter":{"post":{"operationId":"run_space_to_tab_converter","summary":"Space to Tab Converter","tags":["Converters"],"description":"Replace every run of a fixed number of spaces in your text with a tab character. Runs entirely in your browser.\n\n[Try Space to Tab Converter in your browser →](https://iotools.cloud/tool/space-to-tab-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Enter your text here"},"tabSize":{"type":"number","description":"Tab Size","minimum":1,"maximum":8}},"required":[]},"examples":{"function_body_with_4_space_indentation":{"summary":"Function body with 4-space indentation","value":{"originalText":"function example() {\n    const x = 1;\n    return x;\n}","tabSize":"4"}},"tab_size_2":{"summary":"Tab size 2","value":{"originalText":"a  b","tabSize":"2"}},"empty_input":{"summary":"Empty input","value":{"originalText":"","tabSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"function_body_with_4_space_indentation":{"summary":"Function body with 4-space indentation","value":{"tool":"space-to-tab-converter","tool_version":"1.0.2","outputs":{"updatedText":"function example() {\n\tconst x = 1;\n\treturn x;\n}"},"credits_used":5,"credits_remaining":null}},"tab_size_2":{"summary":"Tab size 2","value":{"tool":"space-to-tab-converter","tool_version":"1.0.2","outputs":{"updatedText":"a\tb"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"space-to-tab-converter","tool_version":"1.0.2","outputs":{"updatedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"updatedText":{"type":"string","description":"Converted Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sort-list":{"post":{"operationId":"run_sort_list","summary":"Sort List","tags":["Converters"],"description":"Sort the lines of a list alphabetically or numerically, with optional case-sensitivity, leading-number detection, and reverse order. Runs entirely in your browser.\n\n[Try Sort List in your browser →](https://iotools.cloud/tool/sort-list/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalList":{"type":"string","description":"Original List"},"reverseOrder":{"type":"boolean","description":"Reverse Order"},"caseSensitive":{"type":"boolean","description":"Case-sensitive"},"detectNumbers":{"type":"boolean","description":"Detect numbers"}},"required":[]},"examples":{"alphabetical_case_insensitive":{"summary":"Alphabetical (case-insensitive)","value":{"originalList":"banana\nApple\ncherry","reverseOrder":"","caseSensitive":"","detectNumbers":""}},"case_sensitive_uppercase_sorts_before_lowercase":{"summary":"Case-sensitive (uppercase sorts before lowercase)","value":{"originalList":"banana\nApple\ncherry","reverseOrder":"","caseSensitive":"true","detectNumbers":""}},"detect_leading_numbers_sort_numerically":{"summary":"Detect leading numbers, sort numerically","value":{"originalList":"10\n2\n1","reverseOrder":"","caseSensitive":"","detectNumbers":"true"}},"reverse_alphabetical":{"summary":"Reverse alphabetical","value":{"originalList":"banana\napple\ncherry","reverseOrder":"true","caseSensitive":"","detectNumbers":""}},"empty_input":{"summary":"Empty input","value":{"originalList":"","reverseOrder":"","caseSensitive":"","detectNumbers":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"alphabetical_case_insensitive":{"summary":"Alphabetical (case-insensitive)","value":{"tool":"sort-list","tool_version":"1.0.2","outputs":{"sortedList":"Apple\nbanana\ncherry"},"credits_used":5,"credits_remaining":null}},"case_sensitive_uppercase_sorts_before_lowercase":{"summary":"Case-sensitive (uppercase sorts before lowercase)","value":{"tool":"sort-list","tool_version":"1.0.2","outputs":{"sortedList":"Apple\nbanana\ncherry"},"credits_used":5,"credits_remaining":null}},"detect_leading_numbers_sort_numerically":{"summary":"Detect leading numbers, sort numerically","value":{"tool":"sort-list","tool_version":"1.0.2","outputs":{"sortedList":"1\n2\n10"},"credits_used":5,"credits_remaining":null}},"reverse_alphabetical":{"summary":"Reverse alphabetical","value":{"tool":"sort-list","tool_version":"1.0.2","outputs":{"sortedList":"cherry\nbanana\napple"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"sort-list","tool_version":"1.0.2","outputs":{"sortedList":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sortedList":{"type":"string","description":"Sorted List"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/reverse-list":{"post":{"operationId":"run_reverse_list","summary":"Reverse List","tags":["Converters"],"description":"Reverse the order of items in a list — one per line, comma-separated, or space-separated. Empty entries are dropped. Runs entirely in your browser.\n\n[Try Reverse List in your browser →](https://iotools.cloud/tool/reverse-list/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalList":{"type":"string","description":"Original List"},"separator":{"enum":["\n",","," "],"description":"Separator"}},"required":[]},"examples":{"newline_separated":{"summary":"Newline-separated","value":{"originalList":"Monday\nTuesday\nWednesday","separator":"\n"}},"comma_separated_drops_empty_entries":{"summary":"Comma-separated, drops empty entries","value":{"originalList":"a,b,,c","separator":","}},"space_separated":{"summary":"Space-separated","value":{"originalList":"one two three","separator":" "}},"empty_input":{"summary":"Empty input","value":{"originalList":"","separator":"\n"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"newline_separated":{"summary":"Newline-separated","value":{"tool":"reverse-list","tool_version":"1.0.2","outputs":{"reversedList":"Wednesday\nTuesday\nMonday"},"credits_used":5,"credits_remaining":null}},"comma_separated_drops_empty_entries":{"summary":"Comma-separated, drops empty entries","value":{"tool":"reverse-list","tool_version":"1.0.2","outputs":{"reversedList":"c,b,a"},"credits_used":5,"credits_remaining":null}},"space_separated":{"summary":"Space-separated","value":{"tool":"reverse-list","tool_version":"1.0.2","outputs":{"reversedList":"three two one"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"reverse-list","tool_version":"1.0.2","outputs":{"reversedList":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"reversedList":{"type":"string","description":"Reversed List"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-to-ascii-binary":{"post":{"operationId":"run_text_to_ascii_binary","summary":"Text to ASCII Binary","tags":["Converters"],"description":"Convert plain text to its binary representation — one zero-padded 8-bit group per byte, space-separated. UTF-8 aware, so non-ASCII characters convert to clean byte groups.\n\n[Try Text to ASCII Binary in your browser →](https://iotools.cloud/tool/text-to-ascii-binary/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to convert"}},"required":[]},"examples":{"hello_world":{"summary":"Hello World","value":{"inputText":"Hello World"}},"accented_text_utf_8":{"summary":"Accented text (UTF-8)","value":{"inputText":"café"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello_world":{"summary":"Hello World","value":{"tool":"text-to-ascii-binary","tool_version":"1.0.2","outputs":{"binaryOutput":"01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100"},"credits_used":5,"credits_remaining":null}},"accented_text_utf_8":{"summary":"Accented text (UTF-8)","value":{"tool":"text-to-ascii-binary","tool_version":"1.0.2","outputs":{"binaryOutput":"01100011 01100001 01100110 11000011 10101001"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"binaryOutput":{"type":"string","description":"Binary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/shoe-clothing-size-converter":{"post":{"operationId":"run_shoe_clothing_size_converter","summary":"Shoe & Clothing Size Converter","tags":["Converters"],"description":"Convert shoe and clothing sizes across US, UK, EU, JP, CN and letter systems. Pick a category (men's/women's/kids' shoes, tops, pants or bras), enter the size you know, and see every regional equivalent instantly.\n\n[Try Shoe & Clothing Size Converter in your browser →](https://iotools.cloud/tool/shoe-clothing-size-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"enum":["shoes_men","shoes_women","shoes_kids","tops_men","tops_women","pants_men","pants_women","bras_band","bras_cup"],"description":"Category"},"system":{"enum":["us","uk","eu","jp","cn","letter"],"description":"Sizing System"},"size":{"type":"string","description":"Your Size"}},"required":[]},"examples":{"us_men_s_shoe_size_10":{"summary":"US Men's shoe size 10","value":{"category":"shoes_men","system":"us","size":"10"}},"uk_women_s_shoe_size_5_5":{"summary":"UK Women's shoe size 5.5","value":{"category":"shoes_women","system":"uk","size":"5.5"}},"men_s_top_size_m_letter":{"summary":"Men's top size M (letter)","value":{"category":"tops_men","system":"letter","size":"M"}},"us_bra_cup_dd":{"summary":"US bra cup DD","value":{"category":"bras_cup","system":"us","size":"DD"}},"system_not_available_for_category":{"summary":"System not available for category","value":{"category":"tops_men","system":"jp","size":"16"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"us_men_s_shoe_size_10":{"summary":"US Men's shoe size 10","value":{"tool":"shoe-clothing-size-converter","tool_version":"1.0.2","outputs":{"result":[{"region-system":"US","size":"10"},{"region-system":"UK","size":"9.5"},{"region-system":"EU","size":"43"},{"region-system":"JP / CM","size":"28"},{"region-system":"CN","size":"43"}],"note":"JP / CM is the foot length in centimeters. CN (Mondopoint) closely tracks EU for adult sizes."},"credits_used":5,"credits_remaining":null}},"uk_women_s_shoe_size_5_5":{"summary":"UK Women's shoe size 5.5","value":{"tool":"shoe-clothing-size-converter","tool_version":"1.0.2","outputs":{"result":[{"region-system":"US","size":"8"},{"region-system":"UK","size":"5.5"},{"region-system":"EU","size":"38"},{"region-system":"JP / CM","size":"25"},{"region-system":"CN","size":"38"}],"note":"JP / CM is the foot length in centimeters. US women's sizes are typically 1.5 larger than US men's for the same foot length."},"credits_used":5,"credits_remaining":null}},"men_s_top_size_m_letter":{"summary":"Men's top size M (letter)","value":{"tool":"shoe-clothing-size-converter","tool_version":"1.0.2","outputs":{"result":[{"region-system":"Letter","size":"M"},{"region-system":"US (neck)","size":"16"},{"region-system":"EU","size":"50"},{"region-system":"UK (chest)","size":"40"},{"region-system":"Chest (in)","size":"40"},{"region-system":"Chest (cm)","size":"102"}],"note":"US men's top sizes use neck circumference in inches; UK uses chest in inches. Letter sizes (XS–5XL) map to chest ranges."},"credits_used":5,"credits_remaining":null}},"us_bra_cup_dd":{"summary":"US bra cup DD","value":{"tool":"shoe-clothing-size-converter","tool_version":"1.0.2","outputs":{"result":[{"region-system":"US","size":"DD"},{"region-system":"UK","size":"DD"},{"region-system":"EU","size":"E"},{"region-system":"Bust − Band (in)","size":"5"}],"note":"Cup size is the difference between bust and band measurements (in inches). US cups diverge from UK at DD / E — a US DD equals a UK DD but US DDD equals UK E."},"credits_used":5,"credits_remaining":null}},"system_not_available_for_category":{"summary":"System not available for category","value":{"tool":"shoe-clothing-size-converter","tool_version":"1.0.2","outputs":{"result":[],"note":"JP / CM isn't available for Men's Tops. Pick one of: US, EU, UK, Letter."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","items":{"type":"object","properties":{"region-system":{"type":"string","description":"Region / System"},"size":{"type":"string","description":"Size"}}},"x-iotools-columns":["region-system","size"]},"note":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/small-caps-generator":{"post":{"operationId":"run_small_caps_generator","summary":"Small Caps Generator","tags":["Converters"],"description":"Convert text into small caps (ꜱᴍᴀʟʟ ᴄᴀᴘꜱ) using Unicode look-alike characters you can copy and paste into social media bios, posts and usernames. Every letter maps to its small-capital glyph; digits, spaces and punctuation pass through unchanged. Runs entirely in your browser.\n\n[Try Small Caps Generator in your browser →](https://iotools.cloud/tool/small-caps-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"Text"}},"required":[]},"examples":{"pangram":{"summary":"Pangram","value":{"input":"The quick brown fox jumps over the lazy dog."}},"mixed_case_and_punctuation":{"summary":"Mixed case and punctuation","value":{"input":"Hello, World!"}},"letters_and_numbers":{"summary":"Letters and numbers","value":{"input":"small caps 123"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pangram":{"summary":"Pangram","value":{"tool":"small-caps-generator","tool_version":"1.0.2","outputs":{"output":"ᴛʜᴇ ꞯᴜɪᴄᴋ ʙʀᴏᴡɴ ꜰᴏx ᴊᴜᴍᴘꜱ ᴏᴠᴇʀ ᴛʜᴇ ʟᴀᴢʏ ᴅᴏɢ."},"credits_used":5,"credits_remaining":null}},"mixed_case_and_punctuation":{"summary":"Mixed case and punctuation","value":{"tool":"small-caps-generator","tool_version":"1.0.2","outputs":{"output":"ʜᴇʟʟᴏ, ᴡᴏʀʟᴅ!"},"credits_used":5,"credits_remaining":null}},"letters_and_numbers":{"summary":"Letters and numbers","value":{"tool":"small-caps-generator","tool_version":"1.0.2","outputs":{"output":"ꜱᴍᴀʟʟ ᴄᴀᴘꜱ 123"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Small Caps Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sql-parameterizer":{"post":{"operationId":"run_sql_parameterizer","summary":"SQL Parameterizer","tags":["Converters"],"description":"Convert a SQL query with hardcoded values into a parameterized statement with bind placeholders ($1/$2, ?, or :p1/:p2) plus the extracted values as a JSON array. A deterministic tokenizer skips comments, identifiers, and keywords so only real string and numeric literals are replaced.\n\n[Try SQL Parameterizer in your browser →](https://iotools.cloud/tool/sql-parameterizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputSql":{"type":"string","description":"SQL With Hardcoded Values"},"placeholderStyle":{"enum":["dollar","question","named"],"description":"Placeholder Style"},"paramStrings":{"type":"boolean","description":"Parameterize string literals"},"paramNumbers":{"type":"boolean","description":"Parameterize numeric literals"}},"required":[]},"examples":{"postgresql_1_2_strings_and_numbers":{"summary":"PostgreSQL ($1, $2) — strings and numbers","value":{"inputSql":"SELECT id, name FROM users\nWHERE name = 'O''Brien'\n  AND age >= 21\n  AND balance < 1000.50\n  AND active = 1\nORDER BY created_at DESC;","placeholderStyle":"dollar","paramStrings":"true","paramNumbers":"true"}},"mysql_sqlite_placeholders":{"summary":"MySQL / SQLite (?) placeholders","value":{"inputSql":"SELECT * FROM users WHERE name = 'Alice' AND age > 30;","placeholderStyle":"question","paramStrings":"true","paramNumbers":"true"}},"oracle_named_p1_p2_placeholders":{"summary":"Oracle / named (:p1, :p2) placeholders","value":{"inputSql":"SELECT * FROM users WHERE name = 'Alice' AND age > 30;","placeholderStyle":"named","paramStrings":"true","paramNumbers":"true"}},"strings_only_leave_numbers_inline":{"summary":"Strings only (leave numbers inline)","value":{"inputSql":"SELECT * FROM t WHERE a = 'x' AND b = 5;","placeholderStyle":"dollar","paramStrings":"true","paramNumbers":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"postgresql_1_2_strings_and_numbers":{"summary":"PostgreSQL ($1, $2) — strings and numbers","value":{"tool":"sql-parameterizer","tool_version":"1.0.2","outputs":{"outputSql":"SELECT id, name FROM users\nWHERE name = $1\n  AND age >= $2\n  AND balance < $3\n  AND active = $4\nORDER BY created_at DESC;","outputValues":"[\n  \"O'Brien\",\n  21,\n  1000.5,\n  1\n]"},"credits_used":5,"credits_remaining":null}},"mysql_sqlite_placeholders":{"summary":"MySQL / SQLite (?) placeholders","value":{"tool":"sql-parameterizer","tool_version":"1.0.2","outputs":{"outputSql":"SELECT * FROM users WHERE name = ? AND age > ?;","outputValues":"[\n  \"Alice\",\n  30\n]"},"credits_used":5,"credits_remaining":null}},"oracle_named_p1_p2_placeholders":{"summary":"Oracle / named (:p1, :p2) placeholders","value":{"tool":"sql-parameterizer","tool_version":"1.0.2","outputs":{"outputSql":"SELECT * FROM users WHERE name = :p1 AND age > :p2;","outputValues":"[\n  \"Alice\",\n  30\n]"},"credits_used":5,"credits_remaining":null}},"strings_only_leave_numbers_inline":{"summary":"Strings only (leave numbers inline)","value":{"tool":"sql-parameterizer","tool_version":"1.0.2","outputs":{"outputSql":"SELECT * FROM t WHERE a = $1 AND b = 5;","outputValues":"[\n  \"x\"\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputSql":{"type":"string","description":"Parameterized SQL"},"outputValues":{"type":"string","description":"Extracted Values (JSON array)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-stroke-to-fill-converter":{"post":{"operationId":"run_svg_stroke_to_fill_converter","summary":"SVG Stroke to Fill Converter","tags":["Converters"],"description":"Convert every stroked outline in an SVG into a filled path that renders identically — including dashes, round/miter joins and caps. Keeps colors, gradients, opacity, transforms and the viewBox, and runs entirely in your browser.\n\n[Try SVG Stroke to Fill Converter in your browser →](https://iotools.cloud/tool/svg-stroke-to-fill-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"svg":{"type":"string","description":"SVG Code"},"quality":{"enum":["coarse","balanced","fine"],"description":"Curve quality"},"precision":{"type":"number","description":"Decimal places","minimum":0,"maximum":4},"format":{"enum":["pretty","minified"],"description":"Output"}},"required":["svg"]},"examples":{"circle_checkmark":{"summary":"Circle + checkmark","value":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 120 120\" width=\"120\" height=\"120\">\n  <circle cx=\"60\" cy=\"60\" r=\"40\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"8\" />\n  <path d=\"M40 60 L55 75 L82 46\" fill=\"none\" stroke=\"#16a34a\" stroke-width=\"10\"\n        stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n</svg>","quality":"coarse","precision":"1","format":"minified"}},"dashed_rounded_rectangle":{"summary":"Dashed rounded rectangle","value":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 60\" width=\"100\" height=\"60\"><rect x=\"6\" y=\"6\" width=\"88\" height=\"48\" rx=\"10\" fill=\"none\" stroke=\"#e11d48\" stroke-width=\"4\" stroke-dasharray=\"10 6\"/></svg>","quality":"coarse","precision":"1","format":"minified"}},"stroke_inherited_from_a_group":{"summary":"Stroke inherited from a group","value":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 40\" width=\"80\" height=\"40\"><g stroke=\"#0f766e\" stroke-width=\"6\" stroke-linecap=\"square\" fill=\"none\"><line x1=\"10\" y1=\"20\" x2=\"70\" y2=\"20\"/></g></svg>","quality":"coarse","precision":"1","format":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"circle_checkmark":{"summary":"Circle + checkmark","value":{"tool":"svg-stroke-to-fill-converter","tool_version":"1.0.2","outputs":{"output":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 120 120\" width=\"120\" height=\"120\"><path fill=\"#2563eb\" d=\"M96 59.7L95.6 65.7L103.5 66.3L104 60.3ZM95.7 65.1L94.3 70.9L102.1 72.7L103.5 66.9ZM94.5 70.3L92.3 75.9L99.8 78.8L101.9 73.3ZM92.6 75.4L89.6 80.5L96.5 84.5L99.5 79.4ZM89.9 80L86.2 84.7L92.4 89.7L96.2 85ZM86.6 84.3L82.2 88.3L87.7 94.2L92 90.1ZM82.7 88L77.7 91.3L82.3 97.9L87.2 94.6ZM78.3 91L72.9 93.6L76.3 100.8L81.7 98.2ZM73.4 93.4L67.7 95.2L70.1 102.8L75.8 101.1ZM68.3 95L62.4 95.9L63.6 103.8L69.5 103ZM63 95.9L57 95.9L57 103.9L63 103.9ZM57.6 95.9L51.7 95L50.5 103L56.4 103.8ZM52.3 95.2L46.6 93.4L44.2 101.1L49.9 102.8ZM47.1 93.6L41.7 91L38.3 98.2L43.7 100.8ZM42.3 91.3L37.3 88L32.8 94.6L37.7 97.9ZM37.8 88.3L33.4 84.3L28 90.1L32.3 94.2ZM33.8 84.7L30.1 80L23.8 85L27.6 89.7ZM30.4 80.5L27.4 75.4L20.5 79.4L23.5 84.5ZM27.7 75.9L25.5 70.3L18.1 73.3L20.2 78.8ZM25.7 70.9L24.3 65.1L16.5 66.9L17.9 72.7ZM24.4 65.7L24 59.7L16 60.3L16.5 66.3ZM24 60.3L24.4 54.3L16.5 53.7L16 59.7ZM24.3 54.9L25.7 49.1L17.9 47.3L16.5 53.1ZM25.5 49.7L27.7 44.1L20.2 41.2L18.1 46.7ZM27.4 44.6L30.4 39.5L23.5 35.5L20.5 40.6ZM30.1 40L33.8 35.3L27.6 30.3L23.8 35ZM33.4 35.7L37.8 31.7L32.3 25.8L28 29.9ZM37.3 32L42.3 28.7L37.7 22.1L32.8 25.4ZM41.7 29L47.1 26.4L43.7 19.2L38.3 21.8ZM46.6 26.6L52.3 24.8L49.9 17.2L44.2 18.9ZM51.7 25L57.6 24.1L56.4 16.2L50.5 17ZM57 24.1L63 24.1L63 16.1L57 16.1ZM62.4 24.1L68.3 25L69.5 17L63.6 16.2ZM67.7 24.8L73.4 26.6L75.8 18.9L70.1 17.2ZM72.9 26.4L78.3 29L81.7 21.8L76.3 19.2ZM77.7 28.7L82.7 32L87.2 25.4L82.3 22.1ZM82.2 31.7L86.6 35.7L92 29.9L87.7 25.8ZM86.2 35.3L89.9 40L96.2 35L92.4 30.3ZM89.6 39.5L92.6 44.6L99.5 40.6L96.5 35.5ZM92.3 44.1L94.5 49.7L101.9 46.7L99.8 41.2ZM94.3 49.1L95.7 54.9L103.5 53.1L102.1 47.3ZM95.6 54.3L96 60.3L104 59.7L103.5 53.7ZM104 60.3L104 60L104 59.7L100 60ZM103.5 66.9L103.5 66.6L103.5 66.3L99.6 66ZM101.9 73.3L102.1 73L102.1 72.7L98.2 71.8ZM99.5 79.4L99.7 79.1L99.8 78.8L96 77.4ZM96.2 85L96.4 84.8L96.5 84.5L93 82.5ZM92 90.1L92.3 89.9L92.4 89.7L89.3 87.2ZM87.2 94.6L87.4 94.4L87.7 94.2L84.9 91.3ZM81.7 98.2L82 98.1L82.3 97.9L80 94.6ZM75.8 101.1L76.1 101L76.3 100.8L74.6 97.2ZM69.5 103L69.8 102.9L70.1 102.8L68.9 99ZM63 103.9L63.3 103.9L63.6 103.8L63 99.9ZM56.4 103.8L56.7 103.9L57 103.9L57 99.9ZM49.9 102.8L50.2 102.9L50.5 103L51.1 99ZM43.7 100.8L43.9 101L44.2 101.1L45.4 97.2ZM37.7 97.9L38 98.1L38.3 98.2L40 94.6ZM32.3 94.2L32.6 94.4L32.8 94.6L35.1 91.3ZM27.6 89.7L27.7 89.9L28 90.1L30.7 87.2ZM23.5 84.5L23.6 84.8L23.8 85L27 82.5ZM20.2 78.8L20.3 79.1L20.5 79.4L24 77.4ZM17.9 72.7L17.9 73L18.1 73.3L21.8 71.8ZM16.5 66.3L16.5 66.6L16.5 66.9L20.4 66ZM16 59.7L16 60L16 60.3L20 60ZM16.5 53.1L16.5 53.4L16.5 53.7L20.4 54ZM18.1 46.7L17.9 47L17.9 47.3L21.8 48.2ZM20.5 40.6L20.3 40.9L20.2 41.2L24 42.6ZM23.8 35L23.6 35.2L23.5 35.5L27 37.5ZM28 29.9L27.7 30.1L27.6 30.3L30.7 32.8ZM32.8 25.4L32.6 25.6L32.3 25.8L35.1 28.7ZM38.3 21.8L38 21.9L37.7 22.1L40 25.4ZM44.2 18.9L43.9 19L43.7 19.2L45.4 22.8ZM50.5 17L50.2 17.1L49.9 17.2L51.1 21ZM57 16.1L56.7 16.1L56.4 16.2L57 20.1ZM63.6 16.2L63.3 16.1L63 16.1L63 20.1ZM70.1 17.2L69.8 17.1L69.5 17L68.9 21ZM76.3 19.2L76.1 19L75.8 18.9L74.6 22.8ZM82.3 22.1L82 21.9L81.7 21.8L80 25.4ZM87.7 25.8L87.4 25.6L87.2 25.4L84.9 28.7ZM92.4 30.3L92.3 30.1L92 29.9L89.3 32.8ZM96.5 35.5L96.4 35.2L96.2 35L93 37.5ZM99.8 41.2L99.7 40.9L99.5 40.6L96 42.6ZM102.1 47.3L102.1 47L101.9 46.7L98.2 48.2ZM103.5 53.7L103.5 53.4L103.5 53.1L99.6 54Z\" fill-rule=\"nonzero\"/><path fill=\"#16a34a\" d=\"M36.5 63.5L51.5 78.5L58.5 71.5L43.5 56.5ZM58.7 78.4L85.7 49.4L78.3 42.6L51.3 71.6ZM59.8 73.7L59.3 72.5L58.5 71.5L57.5 70.7L56.3 70.2L55 70L53.7 70.2L52.5 70.7L51.5 71.5L50.7 72.5L50.2 73.7L50 75L50.2 76.3L50.7 77.5L51.5 78.5L52.5 79.3L53.7 79.8L55 80L56.3 79.8L57.5 79.3L58.5 78.5L59.3 77.5L59.8 76.3L60 75ZM44.8 58.7L44.3 57.5L43.5 56.5L42.5 55.7L41.3 55.2L40 55L38.7 55.2L37.5 55.7L36.5 56.5L35.7 57.5L35.2 58.7L35 60L35.2 61.3L35.7 62.5L36.5 63.5L37.5 64.3L38.7 64.8L40 65L41.3 64.8L42.5 64.3L43.5 63.5L44.3 62.5L44.8 61.3L45 60ZM86.8 44.7L86.3 43.5L85.5 42.5L84.5 41.7L83.3 41.2L82 41L80.7 41.2L79.5 41.7L78.5 42.5L77.7 43.5L77.2 44.7L77 46L77.2 47.3L77.7 48.5L78.5 49.5L79.5 50.3L80.7 50.8L82 51L83.3 50.8L84.5 50.3L85.5 49.5L86.3 48.5L86.8 47.3L87 46Z\" fill-rule=\"nonzero\"/></svg>","summary":[{"metric":"Strokes converted","value":"2"},{"metric":"Elements skipped","value":"0"},{"metric":"Original size","value":"314 B"},{"metric":"Converted size","value":"4.13 KB"}]},"credits_used":5,"credits_remaining":null}},"dashed_rounded_rectangle":{"summary":"Dashed rounded rectangle","value":{"tool":"svg-stroke-to-fill-converter","tool_version":"1.0.2","outputs":{"output":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 60\" width=\"100\" height=\"60\"><path fill=\"#e11d48\" d=\"M16 8L26 8L26 4L16 4ZM32 8L42 8L42 4L32 4ZM48 8L58 8L58 4L48 4ZM64 8L74 8L74 4L64 4ZM80 8L84 8L84 4L80 4ZM83.5 7.9L88.5 9.3L89.5 5.4L84.5 4.1ZM87.6 8.8L88.2 9.3L91 6.5L90.4 5.9ZM84.5 4.1L84.3 4L84 4L84 6ZM90.4 5.9L90 5.5L89.5 5.4L89 7.3ZM91.2 13.1L92.1 16.5L95.9 15.5L95 12.1ZM92 16L92 22.5L96 22.5L96 16ZM96 16L96 15.7L95.9 15.5L94 16ZM92 28.5L92 38.5L96 38.5L96 28.5ZM91.9 43.9L90.7 48.5L94.6 49.5L95.8 45ZM91.2 47.6L87.6 51.2L90.4 54.1L94.1 50.4ZM88.5 50.7L88.4 50.8L89.4 54.6L89.5 54.6ZM94.1 50.4L94.5 50L94.6 49.5L92.7 49ZM89.5 54.6L90 54.5L90.4 54.1L89 52.7ZM83.1 52L73.1 52L73.1 56L83.1 56ZM67.1 52L57.1 52L57.1 56L67.1 56ZM51.1 52L41.1 52L41.1 56L51.1 56ZM35.1 52L25.1 52L25.1 56L35.1 56ZM19.1 52L16 52L16 56L19.1 56ZM16.5 52.1L11.5 50.7L10.5 54.6L15.5 55.9ZM12.4 51.2L11.2 50L8.3 52.8L9.6 54.1ZM15.5 55.9L15.7 56L16 56L16 54ZM9.6 54.1L10 54.5L10.5 54.6L11 52.7ZM8.6 46L7.9 43.5L4.1 44.5L4.7 47ZM8 44L8 36.6L4 36.6L4 44ZM4 44L4 44.3L4.1 44.5L6 44ZM8 30.6L8 20.6L4 20.6L4 30.6ZM8.3 15.2L9.3 11.5L5.4 10.5L4.4 14.1ZM8.8 12.4L12.4 8.8L9.6 5.9L5.9 9.6ZM11.5 9.3L12.5 9L11.5 5.1L10.5 5.4ZM5.9 9.6L5.5 10L5.4 10.5L7.3 11ZM10.5 5.4L10 5.5L9.6 5.9L11 7.3Z\" fill-rule=\"nonzero\"/></svg>","summary":[{"metric":"Strokes converted","value":"1"},{"metric":"Elements skipped","value":"0"},{"metric":"Original size","value":"211 B"},{"metric":"Converted size","value":"1.26 KB"}]},"credits_used":5,"credits_remaining":null}},"stroke_inherited_from_a_group":{"summary":"Stroke inherited from a group","value":{"tool":"svg-stroke-to-fill-converter","tool_version":"1.0.2","outputs":{"output":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 80 40\" width=\"80\" height=\"40\"><g fill=\"none\"><path d=\"M10 23L70 23L70 17L10 17ZM10 17L7 17L7 23L10 23ZM70 23L73 23L73 17L70 17Z\" fill=\"#0f766e\" fill-rule=\"nonzero\"/></g></svg>","summary":[{"metric":"Strokes converted","value":"1"},{"metric":"Elements skipped","value":"0"},{"metric":"Original size","value":"205 B"},{"metric":"Converted size","value":"228 B"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Filled SVG"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-to-css-shape-converter":{"post":{"operationId":"run_svg_to_css_shape_converter","summary":"SVG to CSS Shape Converter","tags":["Converters"],"description":"Convert an SVG &lt;path> into a CSS clip-path: path('...') declaration you can drop straight onto a div, image, or button — plus a live preview and the sizing notes needed to make the shape line up.\n\n[Try SVG to CSS Shape Converter in your browser →](https://iotools.cloud/tool/svg-to-css-shape-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"svgInput":{"type":"string","description":"SVG path or snippet"},"fillColor":{"type":"string","description":"Preview fill"},"showOutline":{"type":"boolean","description":"Show the element's full box outline"}},"required":["svgInput"]},"examples":{"full_svg_snippet_with_viewbox":{"summary":"Full SVG snippet with viewBox","value":{"svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M12 2L22 20H2Z\"/></svg>","fillColor":"#6366f1","showOutline":"true"}},"bare_path_tag_no_viewbox":{"summary":"Bare <path> tag, no viewBox","value":{"svgInput":"<path d=\"M10 10 L90 10 L90 90 L10 90 Z\" fill=\"#000\"/>","fillColor":"#22d3ee","showOutline":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_svg_snippet_with_viewbox":{"summary":"Full SVG snippet with viewBox","value":{"tool":"svg-to-css-shape-converter","tool_version":"1.0.2","outputs":{"cssCode":"/* clip-path: path() reads these coordinates as raw units from the element's own\n   top-left corner, not percentages — give this element the SAME width/height as\n   the source SVG's viewBox (or set width and let aspect-ratio derive the height\n   at that same scale) so the shape lines up. Need it bigger? Wrap it and use\n   `transform: scale()` rather than changing width/height. */\n.shape {\n  width: 24px;\n  height: 24px;\n  clip-path: path('M12 2L22 20H2Z');\n  -webkit-clip-path: path('M12 2L22 20H2Z');\n}","previewHtml":"<div style=\"position:relative;width:240px;height:240px;\"><div style=\"position:absolute;inset:0;border:1px dashed rgba(100,116,139,.6);box-sizing:border-box;\"></div><div style=\"position:absolute;top:0;left:0;width:24px;height:24px;transform:scale(10);transform-origin:top left;background:#6366f1;clip-path:path('M12 2L22 20H2Z');-webkit-clip-path:path('M12 2L22 20H2Z');\"></div></div>"},"credits_used":5,"credits_remaining":null}},"bare_path_tag_no_viewbox":{"summary":"Bare <path> tag, no viewBox","value":{"tool":"svg-to-css-shape-converter","tool_version":"1.0.2","outputs":{"cssCode":"/* clip-path: path() reads these coordinates as raw units from the element's own\n   top-left corner, not percentages — give this element the SAME width/height as\n   the source SVG's viewBox (or set width and let aspect-ratio derive the height\n   at that same scale) so the shape lines up. Need it bigger? Wrap it and use\n   `transform: scale()` rather than changing width/height. */\n/* No viewBox found — defaulted to a 100 x 100 box below. Replace width/height with your SVG's real viewBox size if it's different. */\n.shape {\n  width: 100px;\n  height: 100px;\n  clip-path: path('M10 10 L90 10 L90 90 L10 90 Z');\n  -webkit-clip-path: path('M10 10 L90 10 L90 90 L10 90 Z');\n}","previewHtml":"<div style=\"position:relative;width:240px;height:240px;\"><div style=\"position:absolute;top:0;left:0;width:100px;height:100px;transform:scale(2.4);transform-origin:top left;background:#22d3ee;clip-path:path('M10 10 L90 10 L90 90 L10 90 Z');-webkit-clip-path:path('M10 10 L90 10 L90 90 L10 90 Z');\"></div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML Snippet (preview)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-to-jsx-converter":{"post":{"operationId":"run_svg_to_jsx_converter","summary":"SVG to JSX Converter","tags":["Converters"],"description":"Convert raw SVG markup into a ready-to-use React component. Renames attributes to their JSX form (class → className, stroke-width → strokeWidth, xlink:href → xlinkHref), turns inline style strings into style objects, and wraps everything in a component with optional TypeScript, forwardRef, size props, and prop spreading.\n\n[Try SVG to JSX Converter in your browser →](https://iotools.cloud/tool/svg-to-jsx-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"svgInput":{"type":"string","description":"SVG Markup"},"componentName":{"type":"string","description":"Component Name"},"useTypeScript":{"type":"boolean","description":"TypeScript (add typed SVGProps)"},"useForwardRef":{"type":"boolean","description":"Wrap in React.forwardRef"},"stripSize":{"type":"boolean","description":"Replace width/height with props (scalable icon)"},"expandProps":{"type":"boolean","description":"Spread extra props onto the root &lt;svg>"}},"required":[]},"examples":{"icon_with_attributes_inline_style_self_closing_element":{"summary":"Icon with attributes, inline style, self-closing element","value":{"componentName":"MyIcon","svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" class=\"icon\">\n  <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" style=\"fill: red; stroke-width: 1px\" />\n</svg>","stripSize":"true","expandProps":"true"}},"typescript_forwardref_xlink_href_and_a_comment":{"summary":"TypeScript + forwardRef, xlink:href and a comment","value":{"componentName":"logo","svgInput":"<svg viewBox=\"0 0 32 32\">\n  <!-- brand mark -->\n  <use xlink:href=\"#a\" fill-rule=\"evenodd\" />\n</svg>","useTypeScript":"true","useForwardRef":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"icon_with_attributes_inline_style_self_closing_element":{"summary":"Icon with attributes, inline style, self-closing element","value":{"tool":"svg-to-jsx-converter","tool_version":"1.0.2","outputs":{"codeOutput":"import * as React from 'react';\n\nconst MyIcon = ({ width = 24, height = 24, ...props }) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    viewBox=\"0 0 24 24\"\n    fill=\"none\"\n    stroke=\"currentColor\"\n    strokeWidth=\"2\"\n    className=\"icon\"\n    width={width}\n    height={height}\n    {...props}\n  >\n    <rect\n      x=\"3\"\n      y=\"3\"\n      width=\"18\"\n      height=\"18\"\n      rx=\"2\"\n      style={{fill: 'red', strokeWidth: '1px'}}\n     />\n  </svg>\n);\n\nexport default MyIcon;\n"},"credits_used":5,"credits_remaining":null}},"typescript_forwardref_xlink_href_and_a_comment":{"summary":"TypeScript + forwardRef, xlink:href and a comment","value":{"tool":"svg-to-jsx-converter","tool_version":"1.0.2","outputs":{"codeOutput":"import * as React from 'react';\n\nconst Logo = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(\n  (_props: React.SVGProps<SVGSVGElement>, ref) => (\n    <svg\n      viewBox=\"0 0 32 32\"\n      ref={ref}\n    >\n      {/* brand mark */}\n      <use xlinkHref=\"#a\" fillRule=\"evenodd\" />\n    </svg>\n  ),\n);\n\nLogo.displayName = 'Logo';\n\nexport default Logo;\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"codeOutput":{"type":"string","description":"React Component"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svgz-to-svg":{"post":{"operationId":"run_svgz_to_svg","summary":"SVGZ to SVG Converter","tags":["Converters"],"description":"Decompress a gzipped .svgz file back into plain, readable .svg markup — entirely in your browser, nothing uploaded.\n\n[Try SVGZ to SVG Converter in your browser →](https://iotools.cloud/tool/svgz-to-svg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"SVGZ file"}},"required":["file"]},"examples":{"decompress_a_sample_svgz_circle":{"summary":"Decompress a sample .svgz circle","value":{"file":"data:application/gzip;base64,H4sIAAAAAAAAAyXMSw7DIAxF0a1YbwGx+5tUmEG3QilFIk0FEaa7j5oMrs7sutYTjbl8muK9rt87s5lNdpmWmvgsItx6AvUc7bEMhZDQSfbgXcg1lEhhKG4CCr/DqrgK6JVLUdT4BHv3//gNKKkvCG8AAAA="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decompress_a_sample_svgz_circle":{"summary":"Decompress a sample .svgz circle","value":{"tool":"svgz-to-svg","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"red\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/table-to-markdown-converter":{"post":{"operationId":"run_table_to_markdown_converter","summary":"Table to Markdown Converter","tags":["Converters"],"description":"Convert an HTML table, CSV, or TSV into a GitHub-Flavored Markdown table. Pick the first row as the header, choose column alignment, and toggle padded or compact output. Pipe characters in cells are escaped automatically.\n\n[Try Table to Markdown Converter in your browser →](https://iotools.cloud/tool/table-to-markdown-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["html","csv","tsv"],"description":"Input Format"},"inputTable":{"type":"string","description":"Table Input"},"firstRowHeader":{"type":"boolean","description":"First Row as Header"},"alignment":{"enum":["left","center","right"],"description":"Column Alignment"},"compactMode":{"type":"boolean","description":"Compact Mode (No Column Padding)"}},"required":[]},"examples":{"csv_compact":{"summary":"CSV, compact","value":{"inputMode":"csv","inputTable":"Name,Role\nAlice,Admin\nBob,Editor","firstRowHeader":"true","alignment":"left","compactMode":"true"}},"tsv_padded_pipe_escaped":{"summary":"TSV, padded, pipe escaped","value":{"inputMode":"tsv","inputTable":"Symbol\tMeaning\na | b\tpipe char\nx\ty","firstRowHeader":"true","alignment":"left","compactMode":""}},"html_table_centered":{"summary":"HTML table, centered","value":{"inputMode":"html","inputTable":"<table><tr><th>A</th><th>B</th></tr><tr><td>1</td><td>2</td></tr></table>","firstRowHeader":"true","alignment":"center","compactMode":"true"}},"no_header_ragged_rows":{"summary":"No header, ragged rows","value":{"inputMode":"csv","inputTable":"a,b,c\nd,e","firstRowHeader":"","alignment":"left","compactMode":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"csv_compact":{"summary":"CSV, compact","value":{"tool":"table-to-markdown-converter","tool_version":"1.0.2","outputs":{"markdownOutput":"| Name | Role |\n| --- | --- |\n| Alice | Admin |\n| Bob | Editor |"},"credits_used":5,"credits_remaining":null}},"tsv_padded_pipe_escaped":{"summary":"TSV, padded, pipe escaped","value":{"tool":"table-to-markdown-converter","tool_version":"1.0.2","outputs":{"markdownOutput":"| Symbol | Meaning   |\n| ------ | --------- |\n| a \\| b | pipe char |\n| x      | y         |"},"credits_used":5,"credits_remaining":null}},"html_table_centered":{"summary":"HTML table, centered","value":{"tool":"table-to-markdown-converter","tool_version":"1.0.2","outputs":{"markdownOutput":"| A | B |\n| :-: | :-: |\n| 1 | 2 |"},"credits_used":5,"credits_remaining":null}},"no_header_ragged_rows":{"summary":"No header, ragged rows","value":{"tool":"table-to-markdown-converter","tool_version":"1.0.2","outputs":{"markdownOutput":"| Column 1 | Column 2 | Column 3 |\n| --- | --- | --- |\n| a | b | c |\n| d | e |  |"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"markdownOutput":{"type":"string","description":"Markdown Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tailwind-classes-to-css":{"post":{"operationId":"run_tailwind_classes_to_css","summary":"Tailwind Classes to CSS","tags":["Converters"],"description":"Convert a list of Tailwind CSS utility classes into the equivalent plain CSS rules. Supports layout, spacing, sizing, color, typography, borders, shadows, transforms, and state/responsive variants (hover, md, dark, etc.).\n\n[Try Tailwind Classes to CSS in your browser →](https://iotools.cloud/tool/tailwind-classes-to-css/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tailwindInput":{"type":"string","description":"Tailwind Classes"},"selector":{"type":"string","description":"CSS Selector"}},"required":["tailwindInput"]},"examples":{"layout_spacing_color_typography":{"summary":"Layout, spacing, color & typography","value":{"tailwindInput":"flex items-center justify-between p-4 text-lg font-bold text-blue-500","selector":".element"}},"responsive_state_variants":{"summary":"Responsive & state variants","value":{"tailwindInput":"p-6 bg-blue-500 hover:bg-blue-600 md:flex-col","selector":".card"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"layout_spacing_color_typography":{"summary":"Layout, spacing, color & typography","value":{"tool":"tailwind-classes-to-css","tool_version":"1.0.2","outputs":{"cssOutput":".element {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem;\n  font-size: 1.125rem;\n  line-height: 1.75rem;\n  font-weight: 700;\n  color: #3b82f6;\n}"},"credits_used":5,"credits_remaining":null}},"responsive_state_variants":{"summary":"Responsive & state variants","value":{"tool":"tailwind-classes-to-css","tool_version":"1.0.2","outputs":{"cssOutput":".card {\n  padding: 1.5rem;\n  background-color: #3b82f6;\n}\n\n.card:hover {\n  background-color: #2563eb;\n}\n\n@media (min-width: 768px) {\n  .card {\n    flex-direction: column;\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssOutput":{"type":"string","description":"Plain CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tailwind-v3-to-v4-config-migrator":{"post":{"operationId":"run_tailwind_v3_to_v4_config_migrator","summary":"Tailwind CSS v3 Config to v4 Migrator","tags":["Converters"],"description":"Paste a tailwind.config.js file and get the equivalent Tailwind v4 @theme CSS block, plus a checklist of renamed utilities and manual steps the automated conversion can't cover.\n\n[Try Tailwind CSS v3 Config to v4 Migrator in your browser →](https://iotools.cloud/tool/tailwind-v3-to-v4-config-migrator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"config":{"type":"string","description":"tailwind.config.js"}},"required":["config"]},"examples":{"extended_theme_with_colors_spacing_fonts":{"summary":"Extended theme with colors, spacing, fonts","value":{"config":"/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\"./src/**/*.{html,js}\"],\n  darkMode: \"class\",\n  theme: {\n    extend: {\n      colors: {\n        primary: {\n          DEFAULT: \"#3490dc\",\n          600: \"#2779bd\",\n        },\n      },\n      spacing: {\n        128: \"32rem\",\n      },\n      fontFamily: {\n        sans: [\"Inter\", \"sans-serif\"],\n      },\n      borderRadius: {\n        xl: \"1rem\",\n      },\n    },\n  },\n  plugins: [require(\"@tailwindcss/forms\")],\n};"}},"top_level_theme_override_replaces_defaults":{"summary":"Top-level theme override (replaces defaults)","value":{"config":"module.exports = {\n  theme: {\n    colors: {\n      brand: \"#ff6600\",\n    },\n  },\n};"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extended_theme_with_colors_spacing_fonts":{"summary":"Extended theme with colors, spacing, fonts","value":{"tool":"tailwind-v3-to-v4-config-migrator","tool_version":"1.0.2","outputs":{"theme":"@theme {\n  --color-primary-600: #2779bd;\n  --color-primary: #3490dc;\n\n  --spacing-128: 32rem;\n\n  --font-sans: Inter, sans-serif;\n\n  --radius-xl: 1rem;\n}","notes":"## Manual migration steps\n\n- `darkMode` → add to your CSS: `@custom-variant dark (&:where(.dark, .dark *));`.\n- `plugins` array had 1 entry (`require(\"@tailwindcss/forms\")`) — official Tailwind plugins become `@plugin \"package-name\";` in CSS; custom plugin functions need hand-rewriting as CSS `@utility`/`@variant` rules.\n- `content`/`purge` glob paths are no longer needed for the CLI/PostCSS/Vite plugins — v4 auto-detects template files. Add `@source \"...\";` only for paths outside the project root or explicitly ignored ones.\n- Any `theme(colors.red.500)` calls inside your own CSS become `var(--color-red-500)`.\n- Default border and ring colors changed from `gray-200`/`blue-500` to `currentColor` — add explicit colors to any style that relied on the old default.\n\n## Utilities renamed in v4\n\n- `shadow-sm` → `shadow-xs`\n- `shadow` → `shadow-sm`\n- `drop-shadow-sm` → `drop-shadow-xs`\n- `drop-shadow` → `drop-shadow-sm`\n- `blur-sm` → `blur-xs`\n- `blur` → `blur-sm`\n- `rounded-sm` → `rounded-xs`\n- `rounded` → `rounded-sm`\n- `outline-none` → `outline-hidden`\n- `ring (3px default)` → `ring-3 (default ring is now 1px)`\n- `flex-shrink-*` → `shrink-*`\n- `flex-grow-*` → `grow-*`\n- `bg-opacity-*, text-opacity-*, border-opacity-*` → `opacity modifier, e.g. bg-black/50`\n- `overflow-clip` → `text-clip (utility scope narrowed)`"},"credits_used":5,"credits_remaining":null}},"top_level_theme_override_replaces_defaults":{"summary":"Top-level theme override (replaces defaults)","value":{"tool":"tailwind-v3-to-v4-config-migrator","tool_version":"1.0.2","outputs":{"theme":"@theme {\n  /* theme.colors replaced Tailwind's defaults in v3.\n     v4 @theme always extends the defaults, so reset the namespace first: */\n  --color-*: initial;\n  --color-brand: #ff6600;\n}","notes":"## Manual migration steps\n\n- `content`/`purge` glob paths are no longer needed for the CLI/PostCSS/Vite plugins — v4 auto-detects template files. Add `@source \"...\";` only for paths outside the project root or explicitly ignored ones.\n- Any `theme(colors.red.500)` calls inside your own CSS become `var(--color-red-500)`.\n- Default border and ring colors changed from `gray-200`/`blue-500` to `currentColor` — add explicit colors to any style that relied on the old default.\n\n## Utilities renamed in v4\n\n- `shadow-sm` → `shadow-xs`\n- `shadow` → `shadow-sm`\n- `drop-shadow-sm` → `drop-shadow-xs`\n- `drop-shadow` → `drop-shadow-sm`\n- `blur-sm` → `blur-xs`\n- `blur` → `blur-sm`\n- `rounded-sm` → `rounded-xs`\n- `rounded` → `rounded-sm`\n- `outline-none` → `outline-hidden`\n- `ring (3px default)` → `ring-3 (default ring is now 1px)`\n- `flex-shrink-*` → `shrink-*`\n- `flex-grow-*` → `grow-*`\n- `bg-opacity-*, text-opacity-*, border-opacity-*` → `opacity modifier, e.g. bg-black/50`\n- `overflow-clip` → `text-clip (utility scope narrowed)`"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"theme":{"type":"string","description":"Tailwind v4 @theme CSS"},"notes":{"type":"string","description":"Migration Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/textile-yarn-converter":{"post":{"operationId":"run_textile_yarn_converter","summary":"Textile Yarn Converter","tags":["Converters"],"description":"Convert knitting needle and crochet hook sizes between US, UK/Canada, metric (mm) and Japanese systems, and look up Craft Yarn Council yarn-weight categories with their recommended gauge, needle and hook sizes.\n\n[Try Textile Yarn Converter in your browser →](https://iotools.cloud/tool/textile-yarn-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"enum":["knitting-needle","crochet-hook","yarn-weight"],"description":"What to convert"},"value":{"type":"string","description":"Size"},"needleSystem":{"enum":["metric","us","uk","japanese"],"description":"System"},"crochetSystem":{"enum":["metric","us-letter","uk","japanese"],"description":"System"},"yarnLookup":{"enum":["0","1","2","3","4","5","6","7"],"description":"Yarn weight"}},"required":[]},"examples":{"knitting_needle_4_5_mm_all_systems":{"summary":"Knitting needle 4.5 mm → all systems","value":{"category":"knitting-needle","value":"4.5","needleSystem":"metric"}},"knitting_needle_us_8_metric":{"summary":"Knitting needle US 8 → metric","value":{"category":"knitting-needle","value":"8","needleSystem":"us"}},"crochet_hook_us_h_8_metric":{"summary":"Crochet hook US H-8 → metric","value":{"category":"crochet-hook","value":"H-8","crochetSystem":"us-letter"}},"yarn_weight_4_worsted":{"summary":"Yarn weight #4 (Worsted)","value":{"category":"yarn-weight","yarnLookup":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"knitting_needle_4_5_mm_all_systems":{"summary":"Knitting needle 4.5 mm → all systems","value":{"tool":"textile-yarn-converter","tool_version":"1.0.2","outputs":{"result":"4.5 mm · US 7 · UK/CA 7 · JP 8","equivalents":[{"property":"Metric (mm)","value":"4.5 mm"},{"property":"US","value":"7"},{"property":"UK / Canada","value":"7"},{"property":"Japanese","value":"8"}]},"credits_used":5,"credits_remaining":null}},"knitting_needle_us_8_metric":{"summary":"Knitting needle US 8 → metric","value":{"tool":"textile-yarn-converter","tool_version":"1.0.2","outputs":{"result":"5 mm · US 8 · UK/CA 6 · JP —","equivalents":[{"property":"Metric (mm)","value":"5 mm"},{"property":"US","value":"8"},{"property":"UK / Canada","value":"6"},{"property":"Japanese","value":"—"}]},"credits_used":5,"credits_remaining":null}},"crochet_hook_us_h_8_metric":{"summary":"Crochet hook US H-8 → metric","value":{"tool":"textile-yarn-converter","tool_version":"1.0.2","outputs":{"result":"5 mm · US H-8 · UK/CA 6","equivalents":[{"property":"Metric (mm)","value":"5 mm"},{"property":"US (letter)","value":"H-8"},{"property":"UK / Canada","value":"6"}]},"credits_used":5,"credits_remaining":null}},"yarn_weight_4_worsted":{"summary":"Yarn weight #4 (Worsted)","value":{"tool":"textile-yarn-converter","tool_version":"1.0.2","outputs":{"result":"4 — Medium (Worsted, Aran, Afghan)","equivalents":[{"property":"Category","value":"4 — Medium"},{"property":"Also known as","value":"Worsted, Aran, Afghan"},{"property":"Wraps per inch (WPI)","value":"9"},{"property":"Knit gauge (sts / 4 in)","value":"16–20"},{"property":"Crochet gauge (sts / 4 in)","value":"11–14"},{"property":"Recommended needle (mm)","value":"4.5–5.5"},{"property":"Recommended hook (mm)","value":"5.5–6.5"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"equivalents":{"type":"array","description":"Equivalents","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tsv-to-json":{"post":{"operationId":"run_tsv_to_json","summary":"TSV to JSON Converter","tags":["Converters"],"description":"Convert tab-separated values to JSON. Parses quoted fields with embedded tabs and newlines, optionally treats the first row as headers, and infers numbers, booleans and null. Outputs an array of objects or array of arrays, pretty or minified. Runs entirely in your browser.\n\n[Try TSV to JSON Converter in your browser →](https://iotools.cloud/tool/tsv-to-json/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tsvSource":{"type":"string","description":"TSV input"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"typeInference":{"type":"boolean","description":"Type inference (numbers, booleans, null)"},"outputFormat":{"enum":["objects","arrays"],"description":"Output format"},"emptyValues":{"enum":["null","empty","exclude"],"description":"Empty values as"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":[]},"examples":{"objects_with_type_inference_numbers_booleans_null":{"summary":"Objects with type inference (numbers, booleans, null)","value":{"tsvSource":"name\tage\tcity\tactive\nAlice\t30\tNew York\ttrue\nBob\t25\tLos Angeles\tfalse\n\"Smith, John\"\t35\tSan Francisco\ttrue\nJane\t\tChicago\tnull","firstRowHeaders":"true","typeInference":"true","outputFormat":"objects","emptyValues":"null","indent":"2"}},"no_headers_array_of_arrays":{"summary":"No headers — array of arrays","value":{"tsvSource":"a\tb\tc\n1\t2\t3","firstRowHeaders":"","typeInference":"true","outputFormat":"objects","emptyValues":"null","indent":"2"}},"type_inference_off_everything_stays_a_string_minified":{"summary":"Type inference off — everything stays a string, minified","value":{"tsvSource":"name\tage\nAlice\t30\nBob\t25","firstRowHeaders":"true","typeInference":"","outputFormat":"objects","emptyValues":"null","indent":"minified"}},"exclude_empty_keys":{"summary":"Exclude empty keys","value":{"tsvSource":"name\tage\tcity\nAlice\t\tNew York\nBob\t25\t","firstRowHeaders":"true","typeInference":"true","outputFormat":"objects","emptyValues":"exclude","indent":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"objects_with_type_inference_numbers_booleans_null":{"summary":"Objects with type inference (numbers, booleans, null)","value":{"tool":"tsv-to-json","tool_version":"1.0.2","outputs":{"outputJson":"[\n  {\n    \"name\": \"Alice\",\n    \"age\": 30,\n    \"city\": \"New York\",\n    \"active\": true\n  },\n  {\n    \"name\": \"Bob\",\n    \"age\": 25,\n    \"city\": \"Los Angeles\",\n    \"active\": false\n  },\n  {\n    \"name\": \"Smith, John\",\n    \"age\": 35,\n    \"city\": \"San Francisco\",\n    \"active\": true\n  },\n  {\n    \"name\": \"Jane\",\n    \"age\": null,\n    \"city\": \"Chicago\",\n    \"active\": null\n  }\n]"},"credits_used":5,"credits_remaining":null}},"no_headers_array_of_arrays":{"summary":"No headers — array of arrays","value":{"tool":"tsv-to-json","tool_version":"1.0.2","outputs":{"outputJson":"[\n  [\n    \"a\",\n    \"b\",\n    \"c\"\n  ],\n  [\n    1,\n    2,\n    3\n  ]\n]"},"credits_used":5,"credits_remaining":null}},"type_inference_off_everything_stays_a_string_minified":{"summary":"Type inference off — everything stays a string, minified","value":{"tool":"tsv-to-json","tool_version":"1.0.2","outputs":{"outputJson":"[{\"name\":\"Alice\",\"age\":\"30\"},{\"name\":\"Bob\",\"age\":\"25\"}]"},"credits_used":5,"credits_remaining":null}},"exclude_empty_keys":{"summary":"Exclude empty keys","value":{"tool":"tsv-to-json","tool_version":"1.0.2","outputs":{"outputJson":"[{\"name\":\"Alice\",\"city\":\"New York\"},{\"name\":\"Bob\",\"age\":25}]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputJson":{"type":"string","description":"JSON output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/typescript-type-stripper":{"post":{"operationId":"run_typescript_type_stripper","summary":"TypeScript Type Stripper","tags":["Converters"],"description":"Strip TypeScript type annotations from source code and get back plain JavaScript — either keeping modern syntax intact, or downlevel-transpiled to ES2020/ES2017/ES5. Uses the real TypeScript compiler (transpileModule), entirely in your browser.\n\n[Try TypeScript Type Stripper in your browser →](https://iotools.cloud/tool/typescript-type-stripper/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tsInput":{"type":"string","description":"TypeScript source code"},"target":{"enum":["strip","es2020","es2017","es5"],"description":"Output target"},"jsxMode":{"enum":["preserve","react","none"],"description":"JSX handling"},"preserveJsdoc":{"type":"boolean","description":"Preserve JSDoc comments"},"removeComments":{"type":"boolean","description":"Remove all comments"}},"required":[]},"examples":{"strip_types_only_preserve_jsdoc":{"summary":"Strip types only, preserve JSDoc","value":{"tsInput":"interface Point {\n  x: number;\n  y: number;\n}\n\n/**\n * Compute the Euclidean distance between two points.\n */\nfunction distance(a: Point, b: Point): number {\n  // simple distance formula\n  const dx = a.x - b.x;\n  const dy = a.y - b.y;\n  return Math.sqrt(dx * dx + dy * dy);\n}\n\nconst origin: Point = { x: 0, y: 0 };\nconsole.log(distance(origin, { x: 3, y: 4 }));\n","target":"strip","jsxMode":"none","preserveJsdoc":"true","removeComments":""}},"transpile_to_es5_remove_all_comments":{"summary":"Transpile to ES5, remove all comments","value":{"tsInput":"const greet = (name: string): string => {\n  return `Hello, ${name}!`;\n};\n\nclass Animal {\n  constructor(public name: string) {}\n  speak(): string {\n    return `${this.name} makes a noise.`;\n  }\n}\n\nconsole.log(greet('World'));\n","target":"es5","jsxMode":"none","preserveJsdoc":"true","removeComments":"true"}},"jsx_converted_to_react_createelement":{"summary":"JSX converted to React.createElement","value":{"tsInput":"interface Props {\n  name: string;\n}\n\nfunction Greeting({ name }: Props) {\n  return <div className=\"greet\">Hello, {name}!</div>;\n}\n","target":"es2020","jsxMode":"react","preserveJsdoc":"true","removeComments":""}},"syntax_error_surfaces_diagnostics_instead_of_output":{"summary":"Syntax error surfaces diagnostics instead of output","value":{"tsInput":"function broken(a: number { return a; }","target":"strip","jsxMode":"none","preserveJsdoc":"true","removeComments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"strip_types_only_preserve_jsdoc":{"summary":"Strip types only, preserve JSDoc","value":{"tool":"typescript-type-stripper","tool_version":"1.0.2","outputs":{"jsOutput":"/**\n * Compute the Euclidean distance between two points.\n */\nfunction distance(a, b) {\n    // simple distance formula\n    const dx = a.x - b.x;\n    const dy = a.y - b.y;\n    return Math.sqrt(dx * dx + dy * dy);\n}\nconst origin = { x: 0, y: 0 };\nconsole.log(distance(origin, { x: 3, y: 4 }));\n","summary":[{"metric":"Status","value":"Stripped successfully"},{"metric":"Target","value":"ESNext (types stripped only)"},{"metric":"Input size","value":"360 bytes"},{"metric":"Output size","value":"292 bytes"},{"metric":"Size change","value":"19% smaller"}],"diagnostics":[]},"credits_used":5,"credits_remaining":null}},"transpile_to_es5_remove_all_comments":{"summary":"Transpile to ES5, remove all comments","value":{"tool":"typescript-type-stripper","tool_version":"1.0.2","outputs":{"jsOutput":"var greet = function (name) {\n    return \"Hello, \".concat(name, \"!\");\n};\nvar Animal = (function () {\n    function Animal(name) {\n        this.name = name;\n    }\n    Animal.prototype.speak = function () {\n        return \"\".concat(this.name, \" makes a noise.\");\n    };\n    return Animal;\n}());\nconsole.log(greet('World'));\n","summary":[{"metric":"Status","value":"Stripped successfully"},{"metric":"Target","value":"ES5"},{"metric":"Input size","value":"224 bytes"},{"metric":"Output size","value":"321 bytes"},{"metric":"Size change","value":"43% larger"}],"diagnostics":[]},"credits_used":5,"credits_remaining":null}},"jsx_converted_to_react_createelement":{"summary":"JSX converted to React.createElement","value":{"tool":"typescript-type-stripper","tool_version":"1.0.2","outputs":{"jsOutput":"function Greeting({ name }) {\n    return React.createElement(\"div\", { className: \"greet\" },\n        \"Hello, \",\n        name,\n        \"!\");\n}\n","summary":[{"metric":"Status","value":"Stripped successfully"},{"metric":"Target","value":"ES2020"},{"metric":"Input size","value":"129 bytes"},{"metric":"Output size","value":"141 bytes"},{"metric":"Size change","value":"9% larger"}],"diagnostics":[]},"credits_used":5,"credits_remaining":null}},"syntax_error_surfaces_diagnostics_instead_of_output":{"summary":"Syntax error surfaces diagnostics instead of output","value":{"tool":"typescript-type-stripper","tool_version":"1.0.2","outputs":{"jsOutput":"","summary":[{"metric":"Status","value":"4 parser issues found — see Diagnostics below."},{"metric":"Target","value":"ESNext (types stripped only)"}],"diagnostics":[{"line":"1","message":"',' expected."},{"line":"1","message":"':' expected."},{"line":"1","message":"',' expected."},{"line":"1","message":"')' expected."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jsOutput":{"type":"string","description":"Plain JavaScript output"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"diagnostics":{"type":"array","description":"Diagnostics","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unified-color-space-converter":{"post":{"operationId":"run_unified_color_space_converter","summary":"Unified Color Space Converter","tags":["Converters"],"description":"Paste one color in any format — HEX, RGB, HSL, HSV/HSB, CMYK, LAB, LCH, XYZ, Oklab, or a CSS name — and instantly see its equivalent in every other color space, with a live swatch and the nearest named color.\n\n[Try Unified Color Space Converter in your browser →](https://iotools.cloud/tool/unified-color-space-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colorInput":{"type":"string","description":"Color Value"}},"required":[]},"examples":{"pure_red_ff0000":{"summary":"Pure red (#FF0000)","value":{"colorInput":"#FF0000"}},"cornflower_blue_named":{"summary":"Cornflower blue (named)","value":{"colorInput":"cornflowerblue"}},"from_rgb_triple":{"summary":"From RGB triple","value":{"colorInput":"rgb(70, 74, 255)"}},"from_hsl":{"summary":"From HSL","value":{"colorInput":"hsl(238, 100%, 64%)"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pure_red_ff0000":{"summary":"Pure red (#FF0000)","value":{"tool":"unified-color-space-converter","tool_version":"1.0.2","outputs":{"detected":"HEX","hex":"#ff0000","rgb":"rgb(255, 0, 0)","hsl":"hsl(0, 100%, 50%)","hsv":"hsv(0, 100%, 100%)","cmyk":"cmyk(0%, 100%, 100%, 0%)","lab":"lab(53.24 80.09 67.2)","lch":"lch(53.24 104.55 40)","xyz":"xyz(41.25 21.27 1.93)","oklab":"oklab(0.628 0.2249 0.1258)","named":"red (ΔE 0)","swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#ff0000;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#ff0000</div>"},"credits_used":5,"credits_remaining":null}},"cornflower_blue_named":{"summary":"Cornflower blue (named)","value":{"tool":"unified-color-space-converter","tool_version":"1.0.2","outputs":{"detected":"Named","hex":"#6495ed","rgb":"rgb(100, 149, 237)","hsl":"hsl(218.5, 79.2%, 66.1%)","hsv":"hsv(218.5, 57.8%, 92.9%)","cmyk":"cmyk(57.8%, 37.1%, 0%, 7.1%)","lab":"lab(61.93 9.33 -49.3)","lch":"lch(61.93 50.17 280.72)","xyz":"xyz(31.28 30.32 84.31)","oklab":"oklab(0.6746 -0.0213 -0.1397)","named":"cornflowerblue (ΔE 0)","swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#6495ed;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#6495ed</div>"},"credits_used":5,"credits_remaining":null}},"from_rgb_triple":{"summary":"From RGB triple","value":{"tool":"unified-color-space-converter","tool_version":"1.0.2","outputs":{"detected":"RGB","hex":"#464aff","rgb":"rgb(70, 74, 255)","hsl":"hsl(238.7, 100%, 63.7%)","hsv":"hsv(238.7, 72.5%, 100%)","cmyk":"cmyk(72.5%, 71%, 0%, 0%)","lab":"lab(43.39 55.69 -89.37)","lch":"lch(43.39 105.3 301.93)","xyz":"xyz(23.02 13.42 95.97)","oklab":"oklab(0.5354 0.0114 -0.2586)","named":"blueviolet (ΔE 20.37)","swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#464aff;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#464aff</div>"},"credits_used":5,"credits_remaining":null}},"from_hsl":{"summary":"From HSL","value":{"tool":"unified-color-space-converter","tool_version":"1.0.2","outputs":{"detected":"HSL","hex":"#474eff","rgb":"rgb(71, 78, 255)","hsl":"hsl(237.7, 100%, 63.9%)","hsv":"hsv(237.7, 72.2%, 100%)","cmyk":"cmyk(72.2%, 69.4%, 0%, 0%)","lab":"lab(44.24 53.56 -87.95)","lch":"lch(44.24 102.98 301.34)","xyz":"xyz(23.37 14.01 96.06)","oklab":"oklab(0.5416 0.0105 -0.2545)","named":"blueviolet (ΔE 21.05)","swatchHtml":"<div style=\"display:flex;align-items:center;justify-content:center;height:120px;border-radius:8px;background:#474eff;color:#ffffff;font-family:monospace;font-size:15px;font-weight:600\">#474eff</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"detected":{"type":"string","description":"Detected Format"},"hex":{"type":"string","description":"HEX"},"rgb":{"type":"string","description":"RGB"},"hsl":{"type":"string","description":"HSL"},"hsv":{"type":"string","description":"HSV / HSB"},"cmyk":{"type":"string","description":"CMYK"},"lab":{"type":"string","description":"CIE LAB"},"lch":{"type":"string","description":"LCH"},"xyz":{"type":"string","description":"CIE XYZ (D65)"},"oklab":{"type":"string","description":"Oklab"},"named":{"type":"string","description":"Nearest CSS Name"},"swatchHtml":{"type":"string","description":"Swatch HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-to-csv-converter":{"post":{"operationId":"run_xml_to_csv_converter","summary":"XML to CSV Converter","tags":["Converters"],"description":"Convert XML with repeating elements into CSV. The repeating row element is auto-detected (or set it yourself), attributes become columns with a configurable prefix, repeated child tags join into one cell, and the header row is the union of every column seen. Runs entirely in your browser.\n\n[Try XML to CSV Converter in your browser →](https://iotools.cloud/tool/xml-to-csv-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlSource":{"type":"string","description":"XML input"},"rowElement":{"type":"string","description":"Row element"},"delimiter":{"enum":[",",";","tab","|"],"description":"Delimiter"},"lineEnding":{"enum":["lf","crlf"],"description":"Line ending"},"includeHeaders":{"type":"boolean","description":"Include header row"},"includeAttributes":{"type":"boolean","description":"Include XML attributes as columns"},"attributePrefix":{"type":"string","description":"Attribute prefix"},"trimText":{"type":"boolean","description":"Trim whitespace in values"}},"required":["xmlSource"]},"examples":{"auto_detected_rows_attributes_as_columns":{"summary":"Auto-detected rows, attributes as columns","value":{"xmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<orders>\n  <order id=\"1001\" status=\"shipped\">\n    <customer>Alice Johnson</customer>\n    <total>129.50</total>\n    <country>US</country>\n    <placed_at>2026-03-12T09:14:00Z</placed_at>\n  </order>\n  <order id=\"1002\" status=\"processing\">\n    <customer>Bob Smith</customer>\n    <total>42.00</total>\n    <country>CA</country>\n    <placed_at>2026-03-12T11:42:00Z</placed_at>\n  </order>\n  <order id=\"1003\" status=\"shipped\">\n    <customer>Carol Lee, &amp; Co.</customer>\n    <total>873.10</total>\n    <country>UK</country>\n    <placed_at>2026-03-13T08:05:00Z</placed_at>\n  </order>\n</orders>","rowElement":"","delimiter":",","lineEnding":"lf","includeHeaders":"true","includeAttributes":"true","attributePrefix":"@","trimText":"true"}},"repeated_child_tags_join_with_nested_element_flattens_to_its_text":{"summary":"Repeated child tags join with \" | \", nested element flattens to its text","value":{"xmlSource":"<library>\n  <book>\n    <title>The Hobbit</title>\n    <author>J.R.R. Tolkien</author>\n    <genre>Fantasy</genre>\n    <genre>Fiction</genre>\n    <meta><rating>5</rating></meta>\n  </book>\n  <book>\n    <title>Dune</title>\n    <author>Frank Herbert</author>\n    <genre>Sci-Fi</genre>\n    <meta><rating>4</rating></meta>\n  </book>\n</library>","rowElement":"","delimiter":",","lineEnding":"lf","includeHeaders":"true","includeAttributes":"true","attributePrefix":"@","trimText":"true"}},"explicit_row_element_one_level_deeper_attributes_off_semicolon_no_header":{"summary":"Explicit row element (one level deeper), attributes off, semicolon, no header","value":{"xmlSource":"<data>\n  <items>\n    <item sku=\"A1\"><name>Widget Deluxe</name><price>19.99</price></item>\n    <item sku=\"A2\"><name>Gadget</name><price>9.50</price></item>\n  </items>\n</data>","rowElement":"item","delimiter":";","lineEnding":"lf","includeHeaders":"","includeAttributes":"","attributePrefix":"@","trimText":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"auto_detected_rows_attributes_as_columns":{"summary":"Auto-detected rows, attributes as columns","value":{"tool":"xml-to-csv-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Row element","value":"order (auto-detected)"},{"metric":"Rows","value":"3"},{"metric":"Columns","value":"6"}],"outputCsv":"@id,@status,customer,total,country,placed_at\n1001,shipped,Alice Johnson,129.50,US,2026-03-12T09:14:00Z\n1002,processing,Bob Smith,42.00,CA,2026-03-12T11:42:00Z\n1003,shipped,\"Carol Lee, & Co.\",873.10,UK,2026-03-13T08:05:00Z"},"credits_used":5,"credits_remaining":null}},"repeated_child_tags_join_with_nested_element_flattens_to_its_text":{"summary":"Repeated child tags join with \" | \", nested element flattens to its text","value":{"tool":"xml-to-csv-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Row element","value":"book (auto-detected)"},{"metric":"Rows","value":"2"},{"metric":"Columns","value":"4"}],"outputCsv":"title,author,genre,meta\nThe Hobbit,J.R.R. Tolkien,Fantasy | Fiction,5\nDune,Frank Herbert,Sci-Fi,4"},"credits_used":5,"credits_remaining":null}},"explicit_row_element_one_level_deeper_attributes_off_semicolon_no_header":{"summary":"Explicit row element (one level deeper), attributes off, semicolon, no header","value":{"tool":"xml-to-csv-converter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Row element","value":"item"},{"metric":"Rows","value":"2"},{"metric":"Columns","value":"2"}],"outputCsv":"Widget Deluxe;19.99\nGadget;9.50"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"outputCsv":{"type":"string","description":"CSV output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-to-yaml-converter":{"post":{"operationId":"run_xml_to_yaml_converter","summary":"XML to YAML Converter","tags":["Converters"],"description":"Convert XML to YAML. Element names become map keys, attributes get a configurable prefix (or can be dropped entirely), text content gets a configurable key name, and repeated sibling elements become a YAML sequence automatically — with an option to force every element into a sequence so the shape never depends on how many times it repeats. Runs entirely in your browser.\n\n[Try XML to YAML Converter in your browser →](https://iotools.cloud/tool/xml-to-yaml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlSource":{"type":"string","description":"XML input"},"includeAttributes":{"type":"boolean","description":"Preserve XML attributes"},"attributePrefix":{"enum":["@","_",""],"description":"Attribute prefix"},"textKey":{"enum":["#text","_text","text"],"description":"Text content key"},"stripNamespaces":{"type":"boolean","description":"Strip namespace prefixes"},"trimText":{"type":"boolean","description":"Trim whitespace in text content"},"forceArrays":{"type":"boolean","description":"Always represent child elements as arrays"},"indent":{"enum":["2","4"],"description":"Indent"}},"required":["xmlSource"]},"examples":{"nested_elements_attributes_repeated_siblings_sequence":{"summary":"Nested elements, attributes, repeated siblings → sequence","value":{"xmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<company>\n  <name>Acme Corp</name>\n  <founded>1995</founded>\n  <active>true</active>\n  <website>https://acme.example.com</website>\n  <employees>\n    <employee id=\"1\" remote=\"true\">\n      <name>Alice Johnson</name>\n      <role>Engineer</role>\n    </employee>\n    <employee id=\"2\" remote=\"false\">\n      <name>Bob Smith</name>\n      <role>Designer</role>\n    </employee>\n  </employees>\n  <departments>\n    <department>Engineering</department>\n    <department>Design</department>\n    <department>Marketing</department>\n  </departments>\n  <metadata lastUpdated=\"2026-03-16\" version=\"2.1\">\n    <tags>\n      <tag>tech</tag>\n      <tag>startup</tag>\n    </tags>\n  </metadata>\n  <headquarters/>\n</company>","includeAttributes":"true","attributePrefix":"@","textKey":"#text","stripNamespaces":"","trimText":"true","forceArrays":"","indent":"2"}},"strip_namespaces_custom_prefix_text_key_force_every_element_into_a_sequence":{"summary":"Strip namespaces, custom prefix/text key, force every element into a sequence","value":{"xmlSource":"<ns:catalog><ns:book ns:id=\"1\">Learning XML</ns:book><ns:book ns:id=\"2\">Advanced YAML</ns:book></ns:catalog>","includeAttributes":"true","attributePrefix":"_","textKey":"_text","stripNamespaces":"true","trimText":"true","forceArrays":"true","indent":"2"}},"drop_attributes_entirely_4_space_indent":{"summary":"Drop attributes entirely, 4-space indent","value":{"xmlSource":"<product sku=\"A100\"><title>Widget</title><price currency=\"USD\">19.99</price></product>","includeAttributes":"","attributePrefix":"@","textKey":"#text","stripNamespaces":"","trimText":"true","forceArrays":"","indent":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_elements_attributes_repeated_siblings_sequence":{"summary":"Nested elements, attributes, repeated siblings → sequence","value":{"tool":"xml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"company:\n  name: Acme Corp\n  founded: \"1995\"\n  active: \"true\"\n  website: https://acme.example.com\n  employees:\n    employee:\n      - \"@id\": \"1\"\n        \"@remote\": \"true\"\n        name: Alice Johnson\n        role: Engineer\n      - \"@id\": \"2\"\n        \"@remote\": \"false\"\n        name: Bob Smith\n        role: Designer\n  departments:\n    department:\n      - Engineering\n      - Design\n      - Marketing\n  metadata:\n    \"@lastUpdated\": 2026-03-16\n    \"@version\": \"2.1\"\n    tags:\n      tag:\n        - tech\n        - startup\n  headquarters: \"\""},"credits_used":5,"credits_remaining":null}},"strip_namespaces_custom_prefix_text_key_force_every_element_into_a_sequence":{"summary":"Strip namespaces, custom prefix/text key, force every element into a sequence","value":{"tool":"xml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"catalog:\n  book:\n    - _id: \"1\"\n      _text: Learning XML\n    - _id: \"2\"\n      _text: Advanced YAML"},"credits_used":5,"credits_remaining":null}},"drop_attributes_entirely_4_space_indent":{"summary":"Drop attributes entirely, 4-space indent","value":{"tool":"xml-to-yaml-converter","tool_version":"1.0.2","outputs":{"outputYaml":"product:\n    title: Widget\n    price: \"19.99\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputYaml":{"type":"string","description":"YAML output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tiff-to-pdf":{"post":{"operationId":"run_tiff_to_pdf","summary":"TIFF to PDF","tags":["Converters"],"description":"Convert a TIFF image into a downloadable PDF — multi-page TIFFs use their first page. Pick a page size and convert; the file is processed on our own servers and never handed to a third party.\n\n[Try TIFF to PDF in your browser →](https://iotools.cloud/tool/tiff-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"TIFF image"},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/source-map-decoder":{"post":{"operationId":"run_source_map_decoder","summary":"JavaScript Source Map Decoder","tags":["Converters"],"description":"Decode a .map file's Base64 VLQ mappings to find the original source, line and column behind a minified position, browse the full generated-to-original mappings table, or unmap an entire minified stack trace back to your source.\n\n[Try JavaScript Source Map Decoder in your browser →](https://iotools.cloud/tool/source-map-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["position","table","stacktrace"],"description":"Mode"},"sourceMapText":{"type":"string","description":"Source map JSON"},"minifiedLine":{"type":"number","description":"Minified line","minimum":1},"minifiedColumn":{"type":"number","description":"Minified column","minimum":1},"contextLines":{"type":"number","description":"Context lines","minimum":0,"maximum":10},"stackTrace":{"type":"string","description":"Minified stack trace"}},"required":["sourceMapText"]},"examples":{"look_up_a_position":{"summary":"Look up a position","value":{"mode":"position","sourceMapText":"{\"version\":3,\"sources\":[\"src.js\"],\"sourcesContent\":[\"function add(a, b) {\\n  return a + b;\\n}\\n\\nfunction multiply(a, b) {\\n  return a * b;\\n}\\n\\nconsole.log(add(2, 3));\\nconsole.log(multiply(4, 5));\\n\"],\"mappings\":\"AAAA,SAAS,IAAIA,EAAGC,EAAG,CACjB,OAAOD,EAAIC,CACb,CAEA,SAAS,SAASD,EAAGC,EAAG,CACtB,OAAOD,EAAIC,CACb,CAEA,QAAQ,IAAI,IAAI,EAAG,CAAC,CAAC,EACrB,QAAQ,IAAI,SAAS,EAAG,CAAC,CAAC\",\"names\":[\"a\",\"b\"]}","minifiedLine":"1","minifiedColumn":"21","contextLines":"1"}},"full_mappings_table":{"summary":"Full mappings table","value":{"mode":"table","sourceMapText":"{\"version\":3,\"sources\":[\"src.js\"],\"sourcesContent\":[\"function add(a, b) {\\n  return a + b;\\n}\\n\\nfunction multiply(a, b) {\\n  return a * b;\\n}\\n\\nconsole.log(add(2, 3));\\nconsole.log(multiply(4, 5));\\n\"],\"mappings\":\"AAAA,SAAS,IAAIA,EAAGC,EAAG,CACjB,OAAOD,EAAIC,CACb,CAEA,SAAS,SAASD,EAAGC,EAAG,CACtB,OAAOD,EAAIC,CACb,CAEA,QAAQ,IAAI,IAAI,EAAG,CAAC,CAAC,EACrB,QAAQ,IAAI,SAAS,EAAG,CAAC,CAAC\",\"names\":[\"a\",\"b\"]}"}},"unmap_a_stack_trace":{"summary":"Unmap a stack trace","value":{"mode":"stacktrace","sourceMapText":"{\"version\":3,\"sources\":[\"src.js\"],\"sourcesContent\":[\"function add(a, b) {\\n  return a + b;\\n}\\n\\nfunction multiply(a, b) {\\n  return a * b;\\n}\\n\\nconsole.log(add(2, 3));\\nconsole.log(multiply(4, 5));\\n\"],\"mappings\":\"AAAA,SAAS,IAAIA,EAAGC,EAAG,CACjB,OAAOD,EAAIC,CACb,CAEA,SAAS,SAASD,EAAGC,EAAG,CACtB,OAAOD,EAAIC,CACb,CAEA,QAAQ,IAAI,IAAI,EAAG,CAAC,CAAC,EACrB,QAAQ,IAAI,SAAS,EAAG,CAAC,CAAC\",\"names\":[\"a\",\"b\"]}","stackTrace":"TypeError: oops\n    at multiply (out.min.js:1:60)\n    at out.min.js:1:90"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"look_up_a_position":{"summary":"Look up a position","value":{"tool":"source-map-decoder","tool_version":"1.0.2","outputs":{"originalPosition":"Original file: src.js\nOriginal position: line 2, column 3\nOriginal name: (none)\n\nContext:\n  1 | function add(a, b) {\n> 2 |   return a + b;\n  3 | }"},"credits_used":5,"credits_remaining":null}},"full_mappings_table":{"summary":"Full mappings table","value":{"tool":"source-map-decoder","tool_version":"1.0.2","outputs":{"tableSummary":"32 mappings found.","mappingsTable":[{"generated":"1:1","original-file":"src.js","line":"1","column":"1","name":"—"},{"generated":"1:10","original-file":"src.js","line":"1","column":"10","name":"—"},{"generated":"1:14","original-file":"src.js","line":"1","column":"14","name":"a"},{"generated":"1:16","original-file":"src.js","line":"1","column":"17","name":"b"},{"generated":"1:18","original-file":"src.js","line":"1","column":"20","name":"—"},{"generated":"1:19","original-file":"src.js","line":"2","column":"3","name":"—"},{"generated":"1:26","original-file":"src.js","line":"2","column":"10","name":"a"},{"generated":"1:28","original-file":"src.js","line":"2","column":"14","name":"b"},{"generated":"1:29","original-file":"src.js","line":"3","column":"1","name":"—"},{"generated":"1:30","original-file":"src.js","line":"5","column":"1","name":"—"},{"generated":"1:39","original-file":"src.js","line":"5","column":"10","name":"—"},{"generated":"1:48","original-file":"src.js","line":"5","column":"19","name":"a"},{"generated":"1:50","original-file":"src.js","line":"5","column":"22","name":"b"},{"generated":"1:52","original-file":"src.js","line":"5","column":"25","name":"—"},{"generated":"1:53","original-file":"src.js","line":"6","column":"3","name":"—"},{"generated":"1:60","original-file":"src.js","line":"6","column":"10","name":"a"},{"generated":"1:62","original-file":"src.js","line":"6","column":"14","name":"b"},{"generated":"1:63","original-file":"src.js","line":"7","column":"1","name":"—"},{"generated":"1:64","original-file":"src.js","line":"9","column":"1","name":"—"},{"generated":"1:72","original-file":"src.js","line":"9","column":"9","name":"—"},{"generated":"1:76","original-file":"src.js","line":"9","column":"13","name":"—"},{"generated":"1:80","original-file":"src.js","line":"9","column":"17","name":"—"},{"generated":"1:82","original-file":"src.js","line":"9","column":"20","name":"—"},{"generated":"1:83","original-file":"src.js","line":"9","column":"21","name":"—"},{"generated":"1:84","original-file":"src.js","line":"9","column":"22","name":"—"},{"generated":"1:86","original-file":"src.js","line":"10","column":"1","name":"—"},{"generated":"1:94","original-file":"src.js","line":"10","column":"9","name":"—"},{"generated":"1:98","original-file":"src.js","line":"10","column":"13","name":"—"},{"generated":"1:107","original-file":"src.js","line":"10","column":"22","name":"—"},{"generated":"1:109","original-file":"src.js","line":"10","column":"25","name":"—"},{"generated":"1:110","original-file":"src.js","line":"10","column":"26","name":"—"},{"generated":"1:111","original-file":"src.js","line":"10","column":"27","name":"—"}]},"credits_used":5,"credits_remaining":null}},"unmap_a_stack_trace":{"summary":"Unmap a stack trace","value":{"tool":"source-map-decoder","tool_version":"1.0.2","outputs":{"unmappedStack":"TypeError: oops\n    at multiply (src.js:6:10)\n    at src.js:10:1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"originalPosition":{"type":"string","description":"Original position"},"tableSummary":{"type":"string","description":"Summary"},"mappingsTable":{"type":"array","description":"Mappings","items":{"type":"object","properties":{"generated":{"type":"string","description":"Generated"},"original-file":{"type":"string","description":"Original file"},"line":{"type":"string","description":"Line"},"column":{"type":"string","description":"Column"},"name":{"type":"string","description":"Name"}}},"x-iotools-columns":["generated","original-file","line","column","name"]},"unmappedStack":{"type":"string","description":"Original stack trace"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/psd-to-png":{"post":{"operationId":"run_psd_to_png","summary":"PSD to PNG","tags":["Converters"],"description":"Convert an Adobe Photoshop PSD file to a flattened PNG image. Upload a .psd, and its composited layers are converted to a PNG you can download — entirely in your browser, no upload to a server required.\n\n[Try PSD to PNG in your browser →](https://iotools.cloud/tool/psd-to-png/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PSD file"}},"required":["file"]},"examples":{"sample_psd":{"summary":"Sample PSD","value":{"file":"data:image/vnd.adobe.photoshop;base64,OEJQUwABAAAAAAAAAAMAAAAYAAAAGAAIAAMAAAAAAAAAHjhCSU0EAgAAAAAABAAAAAA4QklNBDAAAAAAAAIBAQAABIwAAASEAAIAAAAAAAAAAAAAABgAAAAYAAMAAAAAAGIAAQAAAGIAAgAAAGI4QklNbm9ybf8ACAAAAAA4AAAAAAAAAAAKQmFja2dyb3VuZAA4QklNbHVuaQAAABgAAAAKAEIAYQBjAGsAZwByAG8AdQBuAGQAAAAAAAAAAAAAABgAAAAYAAT//wAAAKIAAAAAAKIAAQAAAKIAAgAAAKI4QklNbm9ybf8ACAAAAAAsAAAAAAAAAAAGQ2lyY2xlADhCSU1sdW5pAAAAEAAAAAYAQwBpAHIAYwBsAGUAAQACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAuny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8gABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemNAAEAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAALpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SIAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5yPkA+gD3yPoA+wD1yPsA/ADzyPwA/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/ADzyPwA+wD1yPsA+gD3yPoA+QD5yPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5KPkA+gD3KPoA+wD1KPsA/ADzKPwA/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/ADzKPwA+wD1KPsA+gD3KPoA+QD5KPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5ePkA+gD3ePoA+wD1ePsA/ADzePwA/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/ADzePwA+wD1ePsA+gD3ePoA+QD5ePkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD53PkA+gD33PoA+wD13PsA/ADz3PwA/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/ADz3PwA+wD13PsA+gD33PoA+QD53PkA6QDpAOkA6QAAAAAAAAAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAuny6fLp8uny+fL5VPny+vL3VPry+/L1VPvy/PLzVPzy/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/PLzVPzy+/L1VPvy+vL3VPry+fL5VPny6fLp8uny6fLpjemN6Y3pjfmN+X35jfqN9336jfuN9X37jfyN8338jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jfyN8338jfuN9X37jfqN9336jfmN+X35jemN6Y3pjemN6SLpIuki6SL5Ivm0+SL6Ive0+iL7IvW0+yL8IvO0/CL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL8IvO0/CL7IvW0+yL6Ive0+iL5Ivm0+SLpIuki6SLpIg=="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_psd":{"summary":"Sample PSD","value":{"tool":"psd-to-png","tool_version":"1.0.2","outputs":{"png":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAUUlEQVR4nGP41Kv0n5aYYdQCii0Iqd2CF1NkASHDibEEpwXEGk7IEqwWkGo4PkswLCDXcFyWjFowasFQtIDmGY0uRQVdCjtiLSGkf+ArnFELAEpY0KyiXGqVAAAAAElFTkSuQmCC","summary":[{"property":"Dimensions","value":"24 × 24px"},{"property":"Output size","value":"138 B"},{"property":"Status","value":"Converted"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"png":{"type":"string","description":"PNG (data URL)"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/psd-to-jpg":{"post":{"operationId":"run_psd_to_jpg","summary":"PSD to JPG","tags":["Converters"],"description":"Convert an Adobe Photoshop PSD file to a flattened JPG image. Upload a .psd, pick a quality and background color, and its composited layers are converted to a JPG you can download — entirely in your browser, no upload to a server required.\n\n[Try PSD to JPG in your browser →](https://iotools.cloud/tool/psd-to-jpg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PSD file"},"background":{"type":"string","description":"Background"},"quality":{"type":"number","description":"Quality","minimum":1,"maximum":100}},"required":["file"]},"examples":{"sample_psd":{"summary":"Sample PSD","value":{"file":"data:image/vnd.adobe.photoshop;base64,OEJQUwABAAAAAAAAAAMAAAAYAAAAGAAIAAMAAAAAAAAAHjhCSU0EAgAAAAAABAAAAAA4QklNBDAAAAAAAAIBAQAABIwAAASEAAIAAAAAAAAAAAAAABgAAAAYAAMAAAAAAGIAAQAAAGIAAgAAAGI4QklNbm9ybf8ACAAAAAA4AAAAAAAAAAAKQmFja2dyb3VuZAA4QklNbHVuaQAAABgAAAAKAEIAYQBjAGsAZwByAG8AdQBuAGQAAAAAAAAAAAAAABgAAAAYAAT//wAAAKIAAAAAAKIAAQAAAKIAAgAAAKI4QklNbm9ybf8ACAAAAAAsAAAAAAAAAAAGQ2lyY2xlADhCSU1sdW5pAAAAEAAAAAYAQwBpAHIAYwBsAGUAAQACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAuny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8gABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemNAAEAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAALpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SIAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5yPkA+gD3yPoA+wD1yPsA/ADzyPwA/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/ADzyPwA+wD1yPsA+gD3yPoA+QD5yPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5KPkA+gD3KPoA+wD1KPsA/ADzKPwA/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/ADzKPwA+wD1KPsA+gD3KPoA+QD5KPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5ePkA+gD3ePoA+wD1ePsA/ADzePwA/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/ADzePwA+wD1ePsA+gD3ePoA+QD5ePkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD53PkA+gD33PoA+wD13PsA/ADz3PwA/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/ADz3PwA+wD13PsA+gD33PoA+QD53PkA6QDpAOkA6QAAAAAAAAAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAuny6fLp8uny+fL5VPny+vL3VPry+/L1VPvy/PLzVPzy/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/PLzVPzy+/L1VPvy+vL3VPry+fL5VPny6fLp8uny6fLpjemN6Y3pjfmN+X35jfqN9336jfuN9X37jfyN8338jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jfyN8338jfuN9X37jfqN9336jfmN+X35jemN6Y3pjemN6SLpIuki6SL5Ivm0+SL6Ive0+iL7IvW0+yL8IvO0/CL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL8IvO0/CL7IvW0+yL6Ive0+iL5Ivm0+SLpIuki6SLpIg==","background":"#ffffff","quality":"90"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_psd":{"summary":"Sample PSD","value":{"tool":"psd-to-jpg","tool_version":"1.0.2","outputs":{"jpg":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRQBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIABgAGAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APSdS1KDSbR7i4fai8ADqx7ADua/lzJ8nxme4yOCwUbye76RXWUn0S+9uySbaT/ojM8zw2UYaWLxcrRX3t9El1b/AOC7JNnJ/wDCyP8AqHf+R/8A7Gv3L/iEH/Uf/wCU/wD7ofkn/ETP+oP/AMqf/aHWabqUGrWiXFu+5G4IPVT3BHY1+G5xk+MyLGSwWNjaS2fSS6Si+qf3p3TSaaX63lmZ4bN8NHF4SV4v70+qa6Nf8FXTTOT+JH/MO/7af+y1+5eEH/Mf/wBw/wD3IfkniZ/zB/8AcT/2w4qv6MPw87X4b/8AMR/7Z/8As1fzn4v/APMB/wBxP/cZ+4eGf/MZ/wBw/wD286zUtNg1a0e3uE3I3II6qexB7Gvw3J84xmRYyONwUrSW66SXWMl1T+9OzTTSa/W8zyzDZvhpYTFxvF/en0afRr/gO6bRyf8Awrf/AKiP/kD/AOyr9y/4i/8A9QH/AJU/+5n5J/xDP/qM/wDKf/251mm6bBpNolvbptReST1Y9yT3NfhucZxjM9xksbjZXk9l0iukYrol97d22223+t5ZlmGyjDRwmEjaK+9vq2+rf/AVkkj/AP/Z","summary":[{"property":"Dimensions","value":"24 × 24px"},{"property":"Quality","value":"90"},{"property":"Output size","value":"1.03 KB"},{"property":"Status","value":"Converted"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jpg":{"type":"string","description":"JPG (data URL)"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/psd-to-pdf":{"post":{"operationId":"run_psd_to_pdf","summary":"PSD to PDF","tags":["Converters"],"description":"Convert an Adobe Photoshop PSD file into a downloadable PDF. Upload a .psd, pick a page size and background color, and its composited layers are converted to a PDF you can download — entirely in your browser, no upload to a server required.\n\n[Try PSD to PDF in your browser →](https://iotools.cloud/tool/psd-to-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PSD file"},"background":{"type":"string","description":"Background"},"quality":{"type":"number","description":"Quality","minimum":1,"maximum":100},"pageSize":{"enum":["fit","a4","letter"],"description":"Page size"},"orientation":{"enum":["auto","portrait","landscape"],"description":"Orientation"},"margin":{"type":"number","description":"Margin (pt)","minimum":0,"maximum":120}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pdf":{"type":"string","contentEncoding":"base64","description":"PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/psd-to-svg":{"post":{"operationId":"run_psd_to_svg","summary":"PSD to SVG","tags":["Converters"],"description":"Convert an Adobe Photoshop PSD file to a scalable SVG. Upload a .psd, and its flattened composite is traced into vector paths you can download — entirely in your browser, no upload to a server required.\n\n[Try PSD to SVG in your browser →](https://iotools.cloud/tool/psd-to-svg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PSD file"},"style":{"enum":["default","detailed","smoothed","sharp","posterized2","grayscale"],"description":"Tracing style"},"colors":{"type":"number","description":"Colors","minimum":2,"maximum":64}},"required":["file"]},"examples":{"sample_psd":{"summary":"Sample PSD","value":{"file":"data:image/vnd.adobe.photoshop;base64,OEJQUwABAAAAAAAAAAMAAAAYAAAAGAAIAAMAAAAAAAAAHjhCSU0EAgAAAAAABAAAAAA4QklNBDAAAAAAAAIBAQAABIwAAASEAAIAAAAAAAAAAAAAABgAAAAYAAMAAAAAAGIAAQAAAGIAAgAAAGI4QklNbm9ybf8ACAAAAAA4AAAAAAAAAAAKQmFja2dyb3VuZAA4QklNbHVuaQAAABgAAAAKAEIAYQBjAGsAZwByAG8AdQBuAGQAAAAAAAAAAAAAABgAAAAYAAT//wAAAKIAAAAAAKIAAQAAAKIAAgAAAKI4QklNbm9ybf8ACAAAAAAsAAAAAAAAAAAGQ2lyY2xlADhCSU1sdW5pAAAAEAAAAAYAQwBpAHIAYwBsAGUAAQACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAuny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8uny6fLp8gABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemNAAEAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAALpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SLpIuki6SIAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5yPkA+gD3yPoA+wD1yPsA/ADzyPwA/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/QDxyP0A/ADzyPwA+wD1yPsA+gD3yPoA+QD5yPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5KPkA+gD3KPoA+wD1KPsA/ADzKPwA/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/QDxKP0A/ADzKPwA+wD1KPsA+gD3KPoA+QD5KPkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD5ePkA+gD3ePoA+wD1ePsA/ADzePwA/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/QDxeP0A/ADzePwA+wD1ePsA+gD3ePoA+QD5ePkA6QDpAOkA6QAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAukA6QDpAOkA+QD53PkA+gD33PoA+wD13PsA/ADz3PwA/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/QDx3P0A/ADz3PwA+wD13PsA+gD33PoA+QD53PkA6QDpAOkA6QAAAAAAAAAAAQACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAgACAAIAAgACAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAAgACAAIAAuny6fLp8uny+fL5VPny+vL3VPry+/L1VPvy/PLzVPzy/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/fLxVP3y/PLzVPzy+/L1VPvy+vL3VPry+fL5VPny6fLp8uny6fLpjemN6Y3pjfmN+X35jfqN9336jfuN9X37jfyN8338jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jf2N8X39jfyN8338jfuN9X37jfqN9336jfmN+X35jemN6Y3pjemN6SLpIuki6SL5Ivm0+SL6Ive0+iL7IvW0+yL8IvO0/CL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL9IvG0/SL8IvO0/CL7IvW0+yL6Ive0+iL5Ivm0+SLpIuki6SLpIg==","style":"default","colors":"16"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_psd":{"summary":"Sample PSD","value":{"tool":"psd-to-svg","tool_version":"1.0.2","outputs":{"svg":"<svg width=\"24\" height=\"24\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" desc=\"Created with imagetracer.js version 1.2.6\" ><path fill=\"rgb(242,141,34)\" stroke=\"rgb(242,141,34)\" stroke-width=\"1\" opacity=\"1\" d=\"M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 9 4 Q 2 6 4 16 Q 6 22 16 20 Q 22 18 20 9 Q 18 2 9 4 Z \" /><path fill=\"rgb(84,125,180)\" stroke=\"rgb(84,125,180)\" stroke-width=\"1\" opacity=\"1\" d=\"M 8.5 4 Q 18.3 2.3 20 8.5 Q 21.8 18.3 15.5 20 Q 5.8 21.8 4 15.5 Q 2.3 5.8 8.5 4 Z \" /></svg>","summary":[{"property":"Dimensions","value":"24 × 24px"},{"property":"Traced at","value":"24 × 24px"},{"property":"Tracing style","value":"Default"},{"property":"Colors","value":"16"},{"property":"Status","value":"Converted"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG code"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/polar-to-cartesian-converter":{"post":{"operationId":"run_polar_to_cartesian_converter","summary":"Polar to Cartesian Converter","tags":["Converters"],"description":"Convert polar coordinates (r, θ) to Cartesian x and y coordinates, in degrees or radians, with a step-by-step derivation and the resulting quadrant.\n\n[Try Polar to Cartesian Converter in your browser →](https://iotools.cloud/tool/polar-to-cartesian-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"radius":{"type":"number","description":"r (radius)"},"angle":{"type":"number","description":"θ (angle)"},"angleUnit":{"enum":["degrees","radians"],"description":"Angle Unit"},"precision":{"enum":["0","1","2","3","4","6","8","10"],"description":"Decimal Precision"}},"required":["radius","angle"]},"examples":{"r_5_45_default":{"summary":"r = 5, θ = 45° (default)","value":{"radius":"5","angle":"45","angleUnit":"degrees","precision":"4"}},"r_10_2_rad_radians_quadrant_boundary":{"summary":"r = 10, θ = π/2 rad (radians, quadrant boundary)","value":{"radius":"10","angle":"1.5707963267948966","angleUnit":"radians","precision":"2"}},"negative_radius_negative_angle":{"summary":"Negative radius, negative angle","value":{"radius":"-4","angle":"-30","angleUnit":"degrees","precision":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"r_5_45_default":{"summary":"r = 5, θ = 45° (default)","value":{"tool":"polar-to-cartesian-converter","tool_version":"1.0.2","outputs":{"x":"3.5355","y":"3.5355","result":[{"property":"x","value":"3.5355"},{"property":"y","value":"3.5355"},{"property":"Point (x, y)","value":"(3.5355, 3.5355)"},{"property":"r (radius)","value":"5"},{"property":"θ (degrees)","value":"45°"},{"property":"θ (radians)","value":"0.7854 rad"},{"property":"θ normalized (0-360°)","value":"45°"},{"property":"Quadrant","value":"I"}],"steps":"r = 5, θ = 45°\nx = r · cos(θ) = 5 × cos(45°) = 3.5355\ny = r · sin(θ) = 5 × sin(45°) = 3.5355\n(x, y) = (3.5355, 3.5355) — Quadrant I"},"credits_used":5,"credits_remaining":null}},"r_10_2_rad_radians_quadrant_boundary":{"summary":"r = 10, θ = π/2 rad (radians, quadrant boundary)","value":{"tool":"polar-to-cartesian-converter","tool_version":"1.0.2","outputs":{"x":"0","y":"10","result":[{"property":"x","value":"0"},{"property":"y","value":"10"},{"property":"Point (x, y)","value":"(0, 10)"},{"property":"r (radius)","value":"10"},{"property":"θ (degrees)","value":"90°"},{"property":"θ (radians)","value":"1.57 rad"},{"property":"θ normalized (0-360°)","value":"90°"},{"property":"Quadrant","value":"On +y axis"}],"steps":"r = 10, θ = 1.57 rad\nx = r · cos(θ) = 10 × cos(1.57 rad) = 0\ny = r · sin(θ) = 10 × sin(1.57 rad) = 10\n(x, y) = (0, 10) — Quadrant On +y axis"},"credits_used":5,"credits_remaining":null}},"negative_radius_negative_angle":{"summary":"Negative radius, negative angle","value":{"tool":"polar-to-cartesian-converter","tool_version":"1.0.2","outputs":{"x":"-3.464","y":"2","result":[{"property":"x","value":"-3.464"},{"property":"y","value":"2"},{"property":"Point (x, y)","value":"(-3.464, 2)"},{"property":"r (radius)","value":"-4"},{"property":"θ (degrees)","value":"-30°"},{"property":"θ (radians)","value":"-0.524 rad"},{"property":"θ normalized (0-360°)","value":"330°"},{"property":"Quadrant","value":"II"}],"steps":"r = -4, θ = -30°\nx = r · cos(θ) = -4 × cos(-30°) = -3.464\ny = r · sin(θ) = -4 × sin(-30°) = 2\n(x, y) = (-3.464, 2) — Quadrant II"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"x":{"type":"string","description":"x"},"y":{"type":"string","description":"y"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/opml-converter":{"post":{"operationId":"run_opml_converter","summary":"OPML Converter","tags":["Converters"],"description":"Convert an OPML file (RSS/Atom/podcast subscription export) to nested JSON, a flat JSON feed list, a Markdown bullet list, or a plain text feed list — with folder categories preserved. Runs entirely in your browser.\n\n[Try OPML Converter in your browser →](https://iotools.cloud/tool/opml-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"opmlSource":{"type":"string","description":"OPML input"},"outputFormat":{"enum":["json-nested","json-flat","markdown","text"],"description":"Output format"},"indent":{"enum":["2","4","tab","minified"],"description":"Indent"}},"required":["opmlSource"]},"examples":{"nested_folders_nested_json":{"summary":"Nested folders → nested JSON","value":{"opmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<opml version=\"2.0\">\n  <head>\n    <title>My Feeds</title>\n  </head>\n  <body>\n    <outline text=\"News\" title=\"News\">\n      <outline text=\"BBC News\" title=\"BBC News\" type=\"rss\" xmlUrl=\"https://feeds.bbci.co.uk/news/rss.xml\" htmlUrl=\"https://www.bbc.co.uk/news\"/>\n      <outline text=\"The Verge\" title=\"The Verge\" type=\"rss\" xmlUrl=\"https://www.theverge.com/rss/index.xml\" htmlUrl=\"https://www.theverge.com\"/>\n    </outline>\n    <outline text=\"Podcasts\" title=\"Podcasts\">\n      <outline text=\"Reply All\" title=\"Reply All\" type=\"rss\" xmlUrl=\"https://feeds.megaphone.fm/replyall\" htmlUrl=\"https://gimletmedia.com/shows/reply-all\"/>\n    </outline>\n    <outline text=\"Tech Blog\" title=\"Tech Blog\" type=\"rss\" xmlUrl=\"https://example.com/feed.xml\" htmlUrl=\"https://example.com\"/>\n  </body>\n</opml>","outputFormat":"json-nested","indent":"2"}},"flat_json_with_category_breadcrumbs":{"summary":"Flat JSON with category breadcrumbs","value":{"opmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<opml version=\"2.0\">\n  <head>\n    <title>My Feeds</title>\n  </head>\n  <body>\n    <outline text=\"News\" title=\"News\">\n      <outline text=\"BBC News\" title=\"BBC News\" type=\"rss\" xmlUrl=\"https://feeds.bbci.co.uk/news/rss.xml\" htmlUrl=\"https://www.bbc.co.uk/news\"/>\n      <outline text=\"The Verge\" title=\"The Verge\" type=\"rss\" xmlUrl=\"https://www.theverge.com/rss/index.xml\" htmlUrl=\"https://www.theverge.com\"/>\n    </outline>\n    <outline text=\"Podcasts\" title=\"Podcasts\">\n      <outline text=\"Reply All\" title=\"Reply All\" type=\"rss\" xmlUrl=\"https://feeds.megaphone.fm/replyall\" htmlUrl=\"https://gimletmedia.com/shows/reply-all\"/>\n    </outline>\n    <outline text=\"Tech Blog\" title=\"Tech Blog\" type=\"rss\" xmlUrl=\"https://example.com/feed.xml\" htmlUrl=\"https://example.com\"/>\n  </body>\n</opml>","outputFormat":"json-flat","indent":"2"}},"markdown_bullet_list":{"summary":"Markdown bullet list","value":{"opmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<opml version=\"2.0\">\n  <head>\n    <title>My Feeds</title>\n  </head>\n  <body>\n    <outline text=\"News\" title=\"News\">\n      <outline text=\"BBC News\" title=\"BBC News\" type=\"rss\" xmlUrl=\"https://feeds.bbci.co.uk/news/rss.xml\" htmlUrl=\"https://www.bbc.co.uk/news\"/>\n      <outline text=\"The Verge\" title=\"The Verge\" type=\"rss\" xmlUrl=\"https://www.theverge.com/rss/index.xml\" htmlUrl=\"https://www.theverge.com\"/>\n    </outline>\n    <outline text=\"Podcasts\" title=\"Podcasts\">\n      <outline text=\"Reply All\" title=\"Reply All\" type=\"rss\" xmlUrl=\"https://feeds.megaphone.fm/replyall\" htmlUrl=\"https://gimletmedia.com/shows/reply-all\"/>\n    </outline>\n    <outline text=\"Tech Blog\" title=\"Tech Blog\" type=\"rss\" xmlUrl=\"https://example.com/feed.xml\" htmlUrl=\"https://example.com\"/>\n  </body>\n</opml>","outputFormat":"markdown","indent":"2"}},"plain_text_feed_list":{"summary":"Plain text feed list","value":{"opmlSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<opml version=\"2.0\">\n  <head>\n    <title>My Feeds</title>\n  </head>\n  <body>\n    <outline text=\"News\" title=\"News\">\n      <outline text=\"BBC News\" title=\"BBC News\" type=\"rss\" xmlUrl=\"https://feeds.bbci.co.uk/news/rss.xml\" htmlUrl=\"https://www.bbc.co.uk/news\"/>\n      <outline text=\"The Verge\" title=\"The Verge\" type=\"rss\" xmlUrl=\"https://www.theverge.com/rss/index.xml\" htmlUrl=\"https://www.theverge.com\"/>\n    </outline>\n    <outline text=\"Podcasts\" title=\"Podcasts\">\n      <outline text=\"Reply All\" title=\"Reply All\" type=\"rss\" xmlUrl=\"https://feeds.megaphone.fm/replyall\" htmlUrl=\"https://gimletmedia.com/shows/reply-all\"/>\n    </outline>\n    <outline text=\"Tech Blog\" title=\"Tech Blog\" type=\"rss\" xmlUrl=\"https://example.com/feed.xml\" htmlUrl=\"https://example.com\"/>\n  </body>\n</opml>","outputFormat":"text","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_folders_nested_json":{"summary":"Nested folders → nested JSON","value":{"tool":"opml-converter","tool_version":"1.0.2","outputs":{"output":"{\n  \"title\": \"My Feeds\",\n  \"outlines\": [\n    {\n      \"title\": \"News\",\n      \"type\": \"\",\n      \"xmlUrl\": \"\",\n      \"htmlUrl\": \"\",\n      \"description\": \"\",\n      \"children\": [\n        {\n          \"title\": \"BBC News\",\n          \"type\": \"rss\",\n          \"xmlUrl\": \"https://feeds.bbci.co.uk/news/rss.xml\",\n          \"htmlUrl\": \"https://www.bbc.co.uk/news\",\n          \"description\": \"\"\n        },\n        {\n          \"title\": \"The Verge\",\n          \"type\": \"rss\",\n          \"xmlUrl\": \"https://www.theverge.com/rss/index.xml\",\n          \"htmlUrl\": \"https://www.theverge.com\",\n          \"description\": \"\"\n        }\n      ]\n    },\n    {\n      \"title\": \"Podcasts\",\n      \"type\": \"\",\n      \"xmlUrl\": \"\",\n      \"htmlUrl\": \"\",\n      \"description\": \"\",\n      \"children\": [\n        {\n          \"title\": \"Reply All\",\n          \"type\": \"rss\",\n          \"xmlUrl\": \"https://feeds.megaphone.fm/replyall\",\n          \"htmlUrl\": \"https://gimletmedia.com/shows/reply-all\",\n          \"description\": \"\"\n        }\n      ]\n    },\n    {\n      \"title\": \"Tech Blog\",\n      \"type\": \"rss\",\n      \"xmlUrl\": \"https://example.com/feed.xml\",\n      \"htmlUrl\": \"https://example.com\",\n      \"description\": \"\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"flat_json_with_category_breadcrumbs":{"summary":"Flat JSON with category breadcrumbs","value":{"tool":"opml-converter","tool_version":"1.0.2","outputs":{"output":"[\n  {\n    \"title\": \"BBC News\",\n    \"type\": \"rss\",\n    \"xmlUrl\": \"https://feeds.bbci.co.uk/news/rss.xml\",\n    \"htmlUrl\": \"https://www.bbc.co.uk/news\",\n    \"description\": \"\",\n    \"category\": \"News\"\n  },\n  {\n    \"title\": \"The Verge\",\n    \"type\": \"rss\",\n    \"xmlUrl\": \"https://www.theverge.com/rss/index.xml\",\n    \"htmlUrl\": \"https://www.theverge.com\",\n    \"description\": \"\",\n    \"category\": \"News\"\n  },\n  {\n    \"title\": \"Reply All\",\n    \"type\": \"rss\",\n    \"xmlUrl\": \"https://feeds.megaphone.fm/replyall\",\n    \"htmlUrl\": \"https://gimletmedia.com/shows/reply-all\",\n    \"description\": \"\",\n    \"category\": \"Podcasts\"\n  },\n  {\n    \"title\": \"Tech Blog\",\n    \"type\": \"rss\",\n    \"xmlUrl\": \"https://example.com/feed.xml\",\n    \"htmlUrl\": \"https://example.com\",\n    \"description\": \"\",\n    \"category\": \"\"\n  }\n]"},"credits_used":5,"credits_remaining":null}},"markdown_bullet_list":{"summary":"Markdown bullet list","value":{"tool":"opml-converter","tool_version":"1.0.2","outputs":{"output":"- **News**\n  - [BBC News](https://feeds.bbci.co.uk/news/rss.xml)\n  - [The Verge](https://www.theverge.com/rss/index.xml)\n- **Podcasts**\n  - [Reply All](https://feeds.megaphone.fm/replyall)\n- [Tech Blog](https://example.com/feed.xml)"},"credits_used":5,"credits_remaining":null}},"plain_text_feed_list":{"summary":"Plain text feed list","value":{"tool":"opml-converter","tool_version":"1.0.2","outputs":{"output":"[News] BBC News — https://feeds.bbci.co.uk/news/rss.xml\n[News] The Verge — https://www.theverge.com/rss/index.xml\n[Podcasts] Reply All — https://feeds.megaphone.fm/replyall\nTech Blog — https://example.com/feed.xml"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Converted output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cartesian-to-polar-converter":{"post":{"operationId":"run_cartesian_to_polar_converter","summary":"Cartesian to Polar Converter","tags":["Converters"],"description":"Convert Cartesian x and y coordinates to polar coordinates (r, θ), in degrees or radians, with a step-by-step derivation and the resulting quadrant.\n\n[Try Cartesian to Polar Converter in your browser →](https://iotools.cloud/tool/cartesian-to-polar-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"angleUnit":{"enum":["degrees","radians"],"description":"θ Output Unit"},"precision":{"enum":["0","1","2","3","4","6","8","10"],"description":"Decimal Precision"}},"required":["x","y"]},"examples":{"x_3_5355_y_3_5355_default":{"summary":"x = 3.5355, y = 3.5355 (default)","value":{"x":"3.5355","y":"3.5355","angleUnit":"degrees","precision":"4"}},"x_0_y_10_radians_on_y_axis":{"summary":"x = 0, y = 10 (radians, on +y axis)","value":{"x":"0","y":"10","angleUnit":"radians","precision":"2"}},"negative_x_positive_y":{"summary":"Negative x, positive y","value":{"x":"-3.464","y":"2","angleUnit":"degrees","precision":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_3_5355_y_3_5355_default":{"summary":"x = 3.5355, y = 3.5355 (default)","value":{"tool":"cartesian-to-polar-converter","tool_version":"1.0.2","outputs":{"r":"5","theta":"45","result":[{"property":"r (radius)","value":"5"},{"property":"θ","value":"45°"},{"property":"Point (r, θ)","value":"(5, 45°)"},{"property":"x","value":"3.5355"},{"property":"y","value":"3.5355"},{"property":"θ (degrees, principal)","value":"45°"},{"property":"θ (radians, principal)","value":"0.7854 rad"},{"property":"θ normalized (0-360°)","value":"45°"},{"property":"Quadrant","value":"I"}],"steps":"x = 3.5355, y = 3.5355\nr = √(x² + y²) = √(3.5355² + 3.5355²) = 5\nθ = atan2(y, x) = atan2(3.5355, 3.5355) = 45°\n(r, θ) = (5, 45°) — Quadrant I"},"credits_used":5,"credits_remaining":null}},"x_0_y_10_radians_on_y_axis":{"summary":"x = 0, y = 10 (radians, on +y axis)","value":{"tool":"cartesian-to-polar-converter","tool_version":"1.0.2","outputs":{"r":"10","theta":"1.57","result":[{"property":"r (radius)","value":"10"},{"property":"θ","value":"1.57 rad"},{"property":"Point (r, θ)","value":"(10, 1.57 rad)"},{"property":"x","value":"0"},{"property":"y","value":"10"},{"property":"θ (degrees, principal)","value":"90°"},{"property":"θ (radians, principal)","value":"1.57 rad"},{"property":"θ normalized (0-360°)","value":"90°"},{"property":"Quadrant","value":"On +y axis"}],"steps":"x = 0, y = 10\nr = √(x² + y²) = √(0² + 10²) = 10\nθ = atan2(y, x) = atan2(10, 0) = 1.57 rad\n(r, θ) = (10, 1.57 rad) — Quadrant On +y axis"},"credits_used":5,"credits_remaining":null}},"negative_x_positive_y":{"summary":"Negative x, positive y","value":{"tool":"cartesian-to-polar-converter","tool_version":"1.0.2","outputs":{"r":"4","theta":"149.999","result":[{"property":"r (radius)","value":"4"},{"property":"θ","value":"149.999°"},{"property":"Point (r, θ)","value":"(4, 149.999°)"},{"property":"x","value":"-3.464"},{"property":"y","value":"2"},{"property":"θ (degrees, principal)","value":"149.999°"},{"property":"θ (radians, principal)","value":"2.618 rad"},{"property":"θ normalized (0-360°)","value":"149.999°"},{"property":"Quadrant","value":"II"}],"steps":"x = -3.464, y = 2\nr = √(x² + y²) = √(-3.464² + 2²) = 4\nθ = atan2(y, x) = atan2(2, -3.464) = 149.999°\n(r, θ) = (4, 149.999°) — Quadrant II"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"r":{"type":"string","description":"r (radius)"},"theta":{"type":"string","description":"θ (angle)"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/access-log-formatter":{"post":{"operationId":"run_access_log_formatter","summary":"Access Log Formatter","tags":["Formatters"],"description":"Parse Apache/Nginx access log lines (Common Log Format or Combined Log Format) into a structured, filterable table — extract the IP, timestamp, method, path, status, bytes, referrer and user-agent from raw log text.\n\n[Try Access Log Formatter in your browser →](https://iotools.cloud/tool/access-log-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rawLog":{"type":"string","description":"Raw Access Log"},"logFormat":{"enum":["auto","clf","eclf"],"description":"Log Format"},"statusFilter":{"enum":["all","1xx","2xx","3xx","4xx","5xx"],"description":"Status Filter"}},"required":[]},"examples":{"combined_log_auto_detect":{"summary":"Combined log, auto-detect","value":{"rawLog":"192.168.1.10 - - [10/Oct/2024:13:55:36 -0700] \"GET /index.html HTTP/1.1\" 200 2326 \"https://www.google.com/\" \"Mozilla/5.0 (Windows NT 10.0; Win64) Chrome/120\"\n203.0.113.5 - - [10/Oct/2024:13:55:42 -0700] \"POST /api/login HTTP/1.1\" 401 512 \"-\" \"curl/7.81.0\"\nnot a valid log line at all","logFormat":"auto","statusFilter":"all"}},"common_log_format_filtered_to_4xx":{"summary":"Common Log Format, filtered to 4xx","value":{"rawLog":"127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 200 2326\n10.0.0.7 - - [10/Oct/2024:13:56:01 -0700] \"GET /missing.html HTTP/1.1\" 404 0","logFormat":"clf","statusFilter":"4xx"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"combined_log_auto_detect":{"summary":"Combined log, auto-detect","value":{"tool":"access-log-formatter","tool_version":"1.0.2","outputs":{"summary":"Parsed 2 of 3 lines. Showing 2 (all status codes). 1 line could not be parsed.","logTable":[{"ip":"192.168.1.10","date-time":"10/Oct/2024:13:55:36 -0700","method":"GET","path":"/index.html","protocol":"HTTP/1.1","status":"200","bytes":"2326","referrer":"https://www.google.com/","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64) Chrome/120"},{"ip":"203.0.113.5","date-time":"10/Oct/2024:13:55:42 -0700","method":"POST","path":"/api/login","protocol":"HTTP/1.1","status":"401","bytes":"512","referrer":"","user-agent":"curl/7.81.0"}]},"credits_used":5,"credits_remaining":null}},"common_log_format_filtered_to_4xx":{"summary":"Common Log Format, filtered to 4xx","value":{"tool":"access-log-formatter","tool_version":"1.0.2","outputs":{"summary":"Parsed 2 of 2 lines. Showing 1 (4xx).","logTable":[{"ip":"10.0.0.7","date-time":"10/Oct/2024:13:56:01 -0700","method":"GET","path":"/missing.html","protocol":"HTTP/1.1","status":"404","bytes":"0","referrer":"","user-agent":""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Parse Summary"},"logTable":{"type":"array","description":"Parsed Log Entries","items":{"type":"object","properties":{"ip":{"type":"string","description":"IP"},"date-time":{"type":"string","description":"Date/Time"},"method":{"type":"string","description":"Method"},"path":{"type":"string","description":"Path"},"protocol":{"type":"string","description":"Protocol"},"status":{"type":"string","description":"Status"},"bytes":{"type":"string","description":"Bytes"},"referrer":{"type":"string","description":"Referrer"},"user-agent":{"type":"string","description":"User-Agent"}}},"x-iotools-columns":["ip","date-time","method","path","protocol","status","bytes","referrer","user-agent"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ansi-escape-stripper":{"post":{"operationId":"run_ansi_escape_stripper","summary":"ANSI Escape Stripper","tags":["Formatters"],"description":"Remove ANSI escape codes — terminal color and style codes, cursor-movement sequences, and OSC sequences — from pasted terminal output or CI logs, leaving plain text.\n\n[Try ANSI Escape Stripper in your browser →](https://iotools.cloud/tool/ansi-escape-stripper/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"colored_log_line":{"summary":"Colored log line","value":{"inputText":"\u001b[31mError:\u001b[0m something failed"}},"plain_text_no_codes":{"summary":"Plain text (no codes)","value":{"inputText":"Just plain text"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"colored_log_line":{"summary":"Colored log line","value":{"tool":"ansi-escape-stripper","tool_version":"1.0.2","outputs":{"output":"Error: something failed","stats":[{"metric":"Escape sequences removed","value":"2"},{"metric":"Characters removed","value":"9"}]},"credits_used":5,"credits_remaining":null}},"plain_text_no_codes":{"summary":"Plain text (no codes)","value":{"tool":"ansi-escape-stripper","tool_version":"1.0.2","outputs":{"output":"Just plain text","stats":[{"metric":"Escape sequences removed","value":"0"},{"metric":"Characters removed","value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ansible-playbook-yaml-formatter":{"post":{"operationId":"run_ansible_playbook_yaml_formatter","summary":"Ansible Playbook YAML Formatter","tags":["Formatters"],"description":"Clean up messy Ansible playbook, role, or task-list YAML by normalizing indentation to a consistent 2- or 4-space step and tidying list-item dashes. Runs entirely in your browser — nothing is uploaded.\n\n[Try Ansible Playbook YAML Formatter in your browser →](https://iotools.cloud/tool/ansible-playbook-yaml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"Ansible Playbook YAML"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"messy_playbook_2_space_indent":{"summary":"Messy playbook (2-space indent)","value":{"inputYaml":"- hosts: web\n  become: yes\n  vars:\n      nginx_port: 80\n  tasks:\n    - name: Install nginx\n      apt:\n          name: nginx\n          state: present\n      when: ansible_os_family == \"Debian\"\n    - name: Start nginx\n      service:\n        name: nginx\n        state: started\n        enabled: yes\n","indentSize":"2"}},"same_playbook_4_space_indent":{"summary":"Same playbook, 4-space indent","value":{"inputYaml":"- hosts: web\n  become: yes\n  vars:\n      nginx_port: 80\n  tasks:\n    - name: Install nginx\n      apt:\n          name: nginx\n          state: present\n      when: ansible_os_family == \"Debian\"\n    - name: Start nginx\n      service:\n        name: nginx\n        state: started\n        enabled: yes\n","indentSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"messy_playbook_2_space_indent":{"summary":"Messy playbook (2-space indent)","value":{"tool":"ansible-playbook-yaml-formatter","tool_version":"1.0.2","outputs":{"output":"- hosts: web\n  become: yes\n  vars:\n    nginx_port: 80\n  tasks:\n    - name: Install nginx\n      apt:\n        name: nginx\n        state: present\n      when: ansible_os_family == \"Debian\"\n    - name: Start nginx\n      service:\n        name: nginx\n        state: started\n        enabled: yes\n"},"credits_used":5,"credits_remaining":null}},"same_playbook_4_space_indent":{"summary":"Same playbook, 4-space indent","value":{"tool":"ansible-playbook-yaml-formatter","tool_version":"1.0.2","outputs":{"output":"- hosts: web\n  become: yes\n  vars:\n      nginx_port: 80\n  tasks:\n      - name: Install nginx\n        apt:\n            name: nginx\n            state: present\n        when: ansible_os_family == \"Debian\"\n      - name: Start nginx\n        service:\n            name: nginx\n            state: started\n            enabled: yes\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted YAML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/apache-avro-schema-formatter-validator":{"post":{"operationId":"run_apache_avro_schema_formatter_validator","summary":"Apache Avro Schema Formatter & Validator","tags":["Formatters"],"description":"Validate an Apache Avro schema (JSON) against the Avro specification — missing type/fields/name, unknown types, invalid names, duplicate named types and malformed unions all get a clear message with the exact field path — then pretty-print it with 2 or 4-space indentation. Runs entirely in your browser.\n\n[Try Apache Avro Schema Formatter & Validator in your browser →](https://iotools.cloud/tool/apache-avro-schema-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"schemaInput":{"type":"string","description":"Avro Schema (JSON)"},"indent":{"enum":["2","4"],"description":"Indent"}},"required":[]},"examples":{"valid_record_with_a_union_and_a_nested_field":{"summary":"Valid record with a union and a nested field","value":{"schemaInput":"{\"type\":\"record\",\"name\":\"User\",\"fields\":[{\"name\":\"id\",\"type\":\"long\"},{\"name\":\"email\",\"type\":[\"null\",\"string\"],\"default\":null}]}","indent":"2"}},"invalid_field_missing_its_type":{"summary":"Invalid — field missing its type","value":{"schemaInput":"{\"type\":\"record\",\"name\":\"Bad\",\"fields\":[{\"name\":\"id\"}]}","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_record_with_a_union_and_a_nested_field":{"summary":"Valid record with a union and a nested field","value":{"tool":"apache-avro-schema-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"Valid Avro schema — 1 record, 2 fields, 1 union.","output":"{\n  \"type\": \"record\",\n  \"name\": \"User\",\n  \"fields\": [\n    {\n      \"name\": \"id\",\n      \"type\": \"long\"\n    },\n    {\n      \"name\": \"email\",\n      \"type\": [\n        \"null\",\n        \"string\"\n      ],\n      \"default\": null\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"invalid_field_missing_its_type":{"summary":"Invalid — field missing its type","value":{"tool":"apache-avro-schema-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid Avro schema — Field \"id\" is missing the required \"type\" property (at fields[0].type).","output":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Validation Result"},"output":{"type":"string","description":"Formatted Schema"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/apache-httpd-config-formatter":{"post":{"operationId":"run_apache_httpd_config_formatter","summary":"Apache httpd Config Formatter","tags":["Formatters"],"description":"Format and re-indent Apache httpd.conf / VirtualHost configuration text. Nested &lt;Directory>, &lt;Location>, &lt;IfModule> and other blocks get consistent indentation, one directive per line, with comments preserved.\n\n[Try Apache httpd Config Formatter in your browser →](https://iotools.cloud/tool/apache-httpd-config-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputConfig":{"type":"string","description":"Apache Config"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"virtualhost_with_nested_directory_4_spaces":{"summary":"VirtualHost with nested Directory (4 spaces)","value":{"inputConfig":"# Main config\n<VirtualHost *:80>\n    ServerName example.com\n    ServerAlias   www.example.com\n    DocumentRoot /var/www/html\n\n    <Directory /var/www/html>\n        Options -Indexes +FollowSymLinks\n        AllowOverride All\n        Require all granted\n    </Directory>\n\n    # Logging\n    ErrorLog ${APACHE_LOG_DIR}/error.log\n</VirtualHost>","indentSize":"4"}},"ifmodule_with_quoted_directory_2_spaces":{"summary":"IfModule with quoted directory (2 spaces)","value":{"inputConfig":"<IfModule mod_ssl.c>\nSSLEngine   on\n<Directory \"/var/www/html\">\nRequire all   granted\n</Directory>\n</IfModule>","indentSize":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"virtualhost_with_nested_directory_4_spaces":{"summary":"VirtualHost with nested Directory (4 spaces)","value":{"tool":"apache-httpd-config-formatter","tool_version":"1.0.2","outputs":{"output":"# Main config\n<VirtualHost *:80>\n    ServerName example.com\n    ServerAlias www.example.com\n    DocumentRoot /var/www/html\n\n    <Directory /var/www/html>\n        Options -Indexes +FollowSymLinks\n        AllowOverride All\n        Require all granted\n    </Directory>\n\n    # Logging\n    ErrorLog ${APACHE_LOG_DIR}/error.log\n</VirtualHost>"},"credits_used":5,"credits_remaining":null}},"ifmodule_with_quoted_directory_2_spaces":{"summary":"IfModule with quoted directory (2 spaces)","value":{"tool":"apache-httpd-config-formatter","tool_version":"1.0.2","outputs":{"output":"<IfModule mod_ssl.c>\n  SSLEngine on\n  <Directory \"/var/www/html\">\n    Require all granted\n  </Directory>\n</IfModule>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Config"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bicep-formatter-validator":{"post":{"operationId":"run_bicep_formatter_validator","summary":"Bicep Formatter & Validator","tags":["Formatters"],"description":"Format and validate Azure Bicep infrastructure-as-code templates — re-indent resource, module, param and output declarations to consistent 2- or 4-space nesting, and catch unbalanced brackets, unterminated strings/comments and unexpected top-level statements.\n\n[Try Bicep Formatter & Validator in your browser →](https://iotools.cloud/tool/bicep-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bicepInput":{"type":"string","description":"Bicep Template"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"fix_indentation_on_a_messy_storage_account_template":{"summary":"Fix indentation on a messy storage account template","value":{"bicepInput":"@description('Name of the storage account')\nparam storageAccountName string = 'mystorageacct001'\n\n@allowed([\n'Standard_LRS'\n'Standard_GRS'\n])\nparam storageAccountType string = 'Standard_LRS'\n\nvar location = resourceGroup().location\n\nresource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {\nname: storageAccountName\nlocation: location\nsku: {\nname: storageAccountType\n}\nkind: 'StorageV2'\nproperties: {\naccessTier: 'Hot'\nminimumTlsVersion: 'TLS1_2'\n}\n}\n\noutput storageAccountId string = storageAccount.id\noutput primaryEndpoint string = storageAccount.properties.primaryEndpoints.blob\n","indentSize":"2"}},"detect_an_unclosed_resource_block":{"summary":"Detect an unclosed resource block","value":{"bicepInput":"resource foo 'Microsoft.Storage/storageAccounts@2023-01-01' = {\n  name: 'foo'\n","indentSize":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fix_indentation_on_a_messy_storage_account_template":{"summary":"Fix indentation on a messy storage account template","value":{"tool":"bicep-formatter-validator","tool_version":"1.0.2","outputs":{"output":"@description('Name of the storage account')\nparam storageAccountName string = 'mystorageacct001'\n\n@allowed([\n  'Standard_LRS'\n  'Standard_GRS'\n])\nparam storageAccountType string = 'Standard_LRS'\n\nvar location = resourceGroup().location\n\nresource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {\n  name: storageAccountName\n  location: location\n  sku: {\n    name: storageAccountType\n  }\n  kind: 'StorageV2'\n  properties: {\n    accessTier: 'Hot'\n    minimumTlsVersion: 'TLS1_2'\n  }\n}\n\noutput storageAccountId string = storageAccount.id\noutput primaryEndpoint string = storageAccount.properties.primaryEndpoints.blob\n","issues":[{"line":"-","severity":"OK","message":"No issues found — formatted successfully."}]},"credits_used":5,"credits_remaining":null}},"detect_an_unclosed_resource_block":{"summary":"Detect an unclosed resource block","value":{"tool":"bicep-formatter-validator","tool_version":"1.0.2","outputs":{"output":"resource foo 'Microsoft.Storage/storageAccounts@2023-01-01' = {\n  name: 'foo'\n","issues":[{"line":"3","severity":"Error","message":"Unbalanced brackets — 1 unclosed {, [ or ( at end of file."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Bicep"},"issues":{"type":"array","description":"Validation Issues","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","severity","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/code-syntax-highlighter":{"post":{"operationId":"run_code_syntax_highlighter","summary":"Code Syntax Highlighter","tags":["Formatters"],"description":"Paste any code snippet and view it instantly with colorized syntax highlighting, then copy or download the result. Supports JavaScript, TypeScript, Python, PHP, HTML, CSS, JSON, YAML, SQL, Bash, Go, Rust, Java, C, C++, C#, Ruby, Swift, Kotlin, Markdown, XML and more.\n\n[Try Code Syntax Highlighter in your browser →](https://iotools.cloud/tool/code-syntax-highlighter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputCode":{"type":"string","description":"Code"},"language":{"enum":["javascript","typescript","python","php","html","css","json","yaml","sql","bash","go","rust","java","c","cpp","csharp","ruby","swift","kotlin","markdown","xml","plaintext"],"description":"Language"}},"required":[]},"examples":{"javascript_function":{"summary":"JavaScript function","value":{"inputCode":"function add(a, b) {\n  return a + b;\n}","language":"javascript"}},"python_snippet":{"summary":"Python snippet","value":{"inputCode":"def greet(name):   \n    return f\"Hello, {name}!\"   \n","language":"python"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"javascript_function":{"summary":"JavaScript function","value":{"tool":"code-syntax-highlighter","tool_version":"1.0.2","outputs":{"outputCode":"function add(a, b) {\n  return a + b;\n}"},"credits_used":5,"credits_remaining":null}},"python_snippet":{"summary":"Python snippet","value":{"tool":"code-syntax-highlighter","tool_version":"1.0.2","outputs":{"outputCode":"def greet(name):\n    return f\"Hello, {name}!\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputCode":{"type":"string","description":"Highlighted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/conventional-commit-message-formatter":{"post":{"operationId":"run_conventional_commit_message_formatter","summary":"Conventional Commit Message Formatter","tags":["Formatters"],"description":"Build a spec-compliant Conventional Commits message from a type, scope, and description, or paste an existing commit message to parse it back into its parts. Tracks the 72-character subject limit and adds a BREAKING CHANGE footer automatically.\n\n[Try Conventional Commit Message Formatter in your browser →](https://iotools.cloud/tool/conventional-commit-message-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["build","parse"],"description":"Mode"},"type":{"enum":["feat","fix","docs","style","refactor","perf","test","chore","ci","build","revert"],"description":"Type"},"scope":{"type":"string","description":"Scope"},"description":{"type":"string","description":"Description"},"breaking":{"type":"boolean","description":"Breaking change"},"breakingDescription":{"type":"string","description":"Breaking change description"},"body":{"type":"string","description":"Body"},"footers":{"type":"string","description":"Footers"},"rawMessage":{"type":"string","description":"Commit Message"}},"required":[]},"examples":{"feature_with_scope_and_breaking_change":{"summary":"Feature with scope and breaking change","value":{"mode":"build","type":"feat","scope":"auth","description":"add OAuth2 login support","breaking":"true","breakingDescription":"The login() function now requires an options object instead of positional arguments.","body":"Implements the OAuth2 authorization code flow using the existing session store.","footers":"Refs: #482"}},"simple_fix_no_scope":{"summary":"Simple fix, no scope","value":{"mode":"build","type":"fix","description":"handle empty response body"}},"parse_an_existing_commit_message":{"summary":"Parse an existing commit message","value":{"mode":"parse","rawMessage":"feat(auth)!: add OAuth2 login support\n\nImplements the OAuth2 authorization code flow using the existing session store.\n\nBREAKING CHANGE: The login() function now requires an options object instead of positional arguments.\nRefs: #482"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"feature_with_scope_and_breaking_change":{"summary":"Feature with scope and breaking change","value":{"tool":"conventional-commit-message-formatter","tool_version":"1.0.2","outputs":{"output":"feat(auth)!: add OAuth2 login support\n\nImplements the OAuth2 authorization code flow using the existing session store.\n\nBREAKING CHANGE: The login() function now requires an options object instead of positional arguments.\nRefs: #482","subjectCheck":[{"check":"Subject line","result":"feat(auth)!: add OAuth2 login support"},{"check":"Length","result":"37 / 72"},{"check":"Status","result":"Within limit"}]},"credits_used":5,"credits_remaining":null}},"simple_fix_no_scope":{"summary":"Simple fix, no scope","value":{"tool":"conventional-commit-message-formatter","tool_version":"1.0.2","outputs":{"output":"fix: handle empty response body","subjectCheck":[{"check":"Subject line","result":"fix: handle empty response body"},{"check":"Length","result":"31 / 72"},{"check":"Status","result":"Within limit"}]},"credits_used":5,"credits_remaining":null}},"parse_an_existing_commit_message":{"summary":"Parse an existing commit message","value":{"tool":"conventional-commit-message-formatter","tool_version":"1.0.2","outputs":{"parsed":[{"field":"Type","value":"feat"},{"field":"Scope","value":"auth"},{"field":"Breaking change","value":"Yes"},{"field":"Description","value":"add OAuth2 login support"},{"field":"Body","value":"Implements the OAuth2 authorization code flow using the existing session store."},{"field":"Footers","value":"BREAKING CHANGE: The login() function now requires an options object instead of positional arguments.\nRefs: #482"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Commit Message"},"subjectCheck":{"type":"array","description":"Subject Check","items":{"type":"object","properties":{"check":{"type":"string","description":"Check"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["check","result"]},"parsed":{"type":"array","description":"Parsed Components","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cpp-code-formatter":{"post":{"operationId":"run_cpp_code_formatter","summary":"C++ Code Formatter","tags":["Formatters"],"description":"Re-indent C and C++ source code by tracking brace ({ }) nesting depth — every block gets consistent indentation, with comments and string literals left untouched.\n\n[Try C++ Code Formatter in your browser →](https://iotools.cloud/tool/cpp-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputCode":{"type":"string","description":"C / C++ Code"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"function_with_nested_if_else_4_spaces":{"summary":"Function with nested if/else (4 spaces)","value":{"inputCode":"int max(int a, int b) {\n        if (a > b) {\nreturn a;\n    } else {\n                return b;\n}\n}","indentSize":"4"}},"comment_and_string_embedded_braces_2_spaces":{"summary":"Comment and string-embedded braces (2 spaces)","value":{"inputCode":"void greet(const std::string& name) {\n// Say hello\nstd::cout << \"Hi, {\" << name << \"}\" << std::endl;\n}","indentSize":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"function_with_nested_if_else_4_spaces":{"summary":"Function with nested if/else (4 spaces)","value":{"tool":"cpp-code-formatter","tool_version":"1.0.2","outputs":{"output":"int max(int a, int b) {\n    if (a > b) {\n        return a;\n    } else {\n        return b;\n    }\n}"},"credits_used":5,"credits_remaining":null}},"comment_and_string_embedded_braces_2_spaces":{"summary":"Comment and string-embedded braces (2 spaces)","value":{"tool":"cpp-code-formatter","tool_version":"1.0.2","outputs":{"output":"void greet(const std::string& name) {\n  // Say hello\n  std::cout << \"Hi, {\" << name << \"}\" << std::endl;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-email-inliner":{"post":{"operationId":"run_css_email_inliner","summary":"CSS Email Inliner","tags":["Formatters"],"description":"Inline CSS &lt;style> block rules into each matching HTML tag's style attribute, for email HTML where most clients strip &lt;style> tags. Supports simple tag, class, ID, and tag+class selectors — no descendant combinators, pseudo-classes, or specificity cascade.\n\n[Try CSS Email Inliner in your browser →](https://iotools.cloud/tool/css-email-inliner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"htmlInput":{"type":"string","description":"HTML with &lt;style> Block"},"keepUnsupportedRules":{"type":"boolean","description":"Keep unsupported rules (media queries, pseudo-classes, complex selectors) in a &lt;style> block"},"removeClassAttrs":{"type":"boolean","description":"Strip class attributes from output"}},"required":["htmlInput"]},"examples":{"simple_tag_selector":{"summary":"Simple tag selector","value":{"htmlInput":"<style>p { color: red; }</style><p>Hello</p>","keepUnsupportedRules":"true","removeClassAttrs":""}},"class_selector_merges_with_an_existing_inline_style":{"summary":"Class selector merges with an existing inline style","value":{"htmlInput":"<style>.box { color: blue; }</style><div class=\"box\" style=\"color: green;\">Hi</div>","keepUnsupportedRules":"true","removeClassAttrs":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_tag_selector":{"summary":"Simple tag selector","value":{"tool":"css-email-inliner","tool_version":"1.0.2","outputs":{"output":"<p style=\"color: red\">Hello</p>"},"credits_used":5,"credits_remaining":null}},"class_selector_merges_with_an_existing_inline_style":{"summary":"Class selector merges with an existing inline style","value":{"tool":"css-email-inliner","tool_version":"1.0.2","outputs":{"output":"<div style=\"color: blue; color: green\" class=\"box\">Hi</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Inlined HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-minifier-beautifier":{"post":{"operationId":"run_css_minifier_beautifier","summary":"CSS Minifier & Beautifier","tags":["Formatters"],"description":"Minify CSS to shrink stylesheet size, or beautify it back into readable, indented code. Strings, url() values and /*! bang comments are preserved, and the spaces inside calc() are never broken.\n\n[Try CSS Minifier & Beautifier in your browser →](https://iotools.cloud/tool/css-minifier-beautifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"css":{"type":"string","description":"CSS"},"mode":{"enum":["minify","keep-breaks","beautify"],"description":"Format"},"indent":{"enum":["2","4","tab"],"description":"Indentation"},"keepComments":{"type":"boolean","description":"Keep comments when minifying"}},"required":[]},"examples":{"minify":{"summary":"Minify","value":{"css":"body {\n  color: red;\n}\n\n@media screen and (min-width: 600px) {\n  body {\n    color: blue;\n  }\n}","mode":"minify","indent":"2","keepComments":""}},"minify_keep_line_breaks":{"summary":"Minify, keep line breaks","value":{"css":".card {\n  margin: 0 auto;\n  padding: 8px 16px;\n}\n.card:hover {\n  color: #fff;\n}","mode":"keep-breaks","indent":"2","keepComments":""}},"beautify":{"summary":"Beautify","value":{"css":".a,.b{margin:0 auto;color:#333}@media (max-width:480px){.a{display:none}}","mode":"beautify","indent":"2","keepComments":""}},"tricky_comment_like_strings_url_calc":{"summary":"Tricky: comment-like strings, url(), calc()","value":{"css":"/*! keep me */\n/* drop me */\n.q::before {\n  content: \"/* not a comment */\";\n  background: url(data:image/svg+xml;base64,PHN2Zy8+) no-repeat;\n  width: calc(100% - 10px);\n  color: red !important;\n}\np :first-child {\n  margin: 0;\n}","mode":"minify","indent":"2","keepComments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"minify":{"summary":"Minify","value":{"tool":"css-minifier-beautifier","tool_version":"1.0.2","outputs":{"output":"body{color:red}@media screen and (min-width:600px){body{color:blue}}"},"credits_used":5,"credits_remaining":null}},"minify_keep_line_breaks":{"summary":"Minify, keep line breaks","value":{"tool":"css-minifier-beautifier","tool_version":"1.0.2","outputs":{"output":".card{margin:0 auto;padding:8px 16px}\n.card:hover{color:#fff}"},"credits_used":5,"credits_remaining":null}},"beautify":{"summary":"Beautify","value":{"tool":"css-minifier-beautifier","tool_version":"1.0.2","outputs":{"output":".a, .b {\n  margin: 0 auto;\n  color: #333\n}\n@media (max-width: 480px) {\n  .a {\n    display: none\n  }\n}"},"credits_used":5,"credits_remaining":null}},"tricky_comment_like_strings_url_calc":{"summary":"Tricky: comment-like strings, url(), calc()","value":{"tool":"css-minifier-beautifier","tool_version":"1.0.2","outputs":{"output":"/*! keep me */ .q::before{content:\"/* not a comment */\";background:url(data:image/svg+xml;base64,PHN2Zy8+) no-repeat;width:calc(100% - 10px);color:red!important}p :first-child{margin:0}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-formatter":{"post":{"operationId":"run_csv_formatter","summary":"CSV Formatter","tags":["Formatters"],"description":"Clean up messy CSV data — auto-detect or choose the input delimiter, trim stray whitespace, and re-serialize with a consistent delimiter and RFC 4180 quoting (quote only when needed, or always).\n\n[Try CSV Formatter in your browser →](https://iotools.cloud/tool/csv-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvInput":{"type":"string","description":"CSV data"},"inputDelimiter":{"enum":["auto",",",";","\t"],"description":"Input delimiter"},"outputDelimiter":{"enum":[",",";","\t"],"description":"Output delimiter"},"quoteStyle":{"enum":["as-needed","always"],"description":"Quote style"},"trimWhitespace":{"type":"boolean","description":"Trim whitespace around fields"}},"required":[]},"examples":{"trim_messy_spacing":{"summary":"Trim messy spacing","value":{"csvInput":"Name, Age,City\n  Alice , 30,New York\nBob,25, Boston ","inputDelimiter":",","outputDelimiter":",","quoteStyle":"as-needed","trimWhitespace":"true"}},"quote_fields_with_commas_and_escaped_quotes":{"summary":"Quote fields with commas and escaped quotes","value":{"csvInput":"Name,Quote\n\"Smith, John\",\"She said \"\"hello\"\"\"","inputDelimiter":",","outputDelimiter":",","quoteStyle":"as-needed","trimWhitespace":""}},"auto_detect_semicolons_always_quote":{"summary":"Auto-detect semicolons, always quote","value":{"csvInput":"Name;Age\nAlice;30","inputDelimiter":"auto","outputDelimiter":";","quoteStyle":"always","trimWhitespace":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"trim_messy_spacing":{"summary":"Trim messy spacing","value":{"tool":"csv-formatter","tool_version":"1.0.2","outputs":{"formattedCsv":"Name,Age,City\nAlice,30,New York\nBob,25,Boston"},"credits_used":5,"credits_remaining":null}},"quote_fields_with_commas_and_escaped_quotes":{"summary":"Quote fields with commas and escaped quotes","value":{"tool":"csv-formatter","tool_version":"1.0.2","outputs":{"formattedCsv":"Name,Quote\n\"Smith, John\",\"She said \"\"hello\"\"\""},"credits_used":5,"credits_remaining":null}},"auto_detect_semicolons_always_quote":{"summary":"Auto-detect semicolons, always quote","value":{"tool":"csv-formatter","tool_version":"1.0.2","outputs":{"formattedCsv":"\"Name\";\"Age\"\n\"Alice\";\"30\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedCsv":{"type":"string","description":"Formatted CSV"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cue-formatter-validator":{"post":{"operationId":"run_cue_formatter_validator","summary":"CUE Formatter & Validator","tags":["Formatters"],"description":"Format, validate and evaluate CUE (cuelang.org) configuration — reindent structs and lists, catch syntax errors with a line number, resolve concrete fields to their JSON values, and see at a glance which fields are fixed values versus open constraints/schema. Runs entirely in your browser.\n\n[Try CUE Formatter & Validator in your browser →](https://iotools.cloud/tool/cue-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cueInput":{"type":"string","description":"CUE source"},"indentSize":{"enum":["2","4"],"description":"Indent size"}},"required":["cueInput"]},"examples":{"format_evaluate_a_service_config":{"summary":"Format + evaluate a service config","value":{"cueInput":"package config\n\n// Service configuration\nname:     \"checkout-service\"\nreplicas: >=1 & <=10\nport:     8080\ndebug:    false\n\nenv: \"production\" | \"staging\" | \"development\"\n\nresources: {\n\tcpu:    \"500m\"\n\tmemory: \"512Mi\"\n}\n\ntags: [\"payments\", \"checkout\"]\n","indentSize":"2"}},"definitions_unification_and_arithmetic":{"summary":"Definitions, unification and arithmetic","value":{"cueInput":"#Point: {\n\tx: number\n\ty: number\n}\n\norigin: #Point & {\n\tx: 0\n\ty: 0\n}\n\nscale: 2 * 4\n","indentSize":"2"}},"catch_an_unclosed_struct":{"summary":"Catch an unclosed struct","value":{"cueInput":"name: \"checkout-service\"\nport: 8080\nserver: {\n\thost: \"0.0.0.0\"\n","indentSize":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_evaluate_a_service_config":{"summary":"Format + evaluate a service config","value":{"tool":"cue-formatter-validator","tool_version":"1.0.2","outputs":{"formatted":"package config\n\n// Service configuration\nname: \"checkout-service\"\nreplicas: >=1 & <=10\nport: 8080\ndebug: false\n\nenv: \"production\" | \"staging\" | \"development\"\n\nresources: {\n  cpu: \"500m\"\n  memory: \"512Mi\"\n}\n\ntags: [\n  \"payments\",\n  \"checkout\",\n]\n","diagnostics":[{"line":"-","severity":"OK","message":"No syntax errors found."}],"classification":[{"field":"name","kind":"Concrete value","value-constraint":"\"checkout-service\""},{"field":"replicas","kind":"Constraint / schema","value-constraint":">=1 & <=10"},{"field":"port","kind":"Concrete value","value-constraint":"8080"},{"field":"debug","kind":"Concrete value","value-constraint":"false"},{"field":"env","kind":"Constraint / schema","value-constraint":"\"production\" | \"staging\" | \"development\""},{"field":"resources.cpu","kind":"Concrete value","value-constraint":"\"500m\""},{"field":"resources.memory","kind":"Concrete value","value-constraint":"\"512Mi\""},{"field":"tags","kind":"Concrete value","value-constraint":"[\"payments\",\"checkout\"]"}],"evaluated":"{\n  \"name\": \"checkout-service\",\n  \"replicas\": \"⟨constraint: >=1 & <=10⟩\",\n  \"port\": 8080,\n  \"debug\": false,\n  \"env\": \"⟨constraint: \\\"production\\\" | \\\"staging\\\" | \\\"development\\\"⟩\",\n  \"resources\": {\n    \"cpu\": \"500m\",\n    \"memory\": \"512Mi\"\n  },\n  \"tags\": [\n    \"payments\",\n    \"checkout\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"definitions_unification_and_arithmetic":{"summary":"Definitions, unification and arithmetic","value":{"tool":"cue-formatter-validator","tool_version":"1.0.2","outputs":{"formatted":"#Point: {\n  x: number\n  y: number\n}\n\norigin: #Point & {\n  x: 0\n  y: 0\n}\n\nscale: 2 * 4\n","diagnostics":[{"line":"-","severity":"OK","message":"No syntax errors found."}],"classification":[{"field":"#Point.x","kind":"Constraint / schema","value-constraint":"number"},{"field":"#Point.y","kind":"Constraint / schema","value-constraint":"number"},{"field":"origin","kind":"Constraint / schema","value-constraint":"#Point & {\n  x: 0\n  y: 0\n}"},{"field":"scale","kind":"Concrete value","value-constraint":"8"}],"evaluated":"{\n  \"#Point\": {\n    \"x\": \"⟨constraint: number⟩\",\n    \"y\": \"⟨constraint: number⟩\"\n  },\n  \"origin\": \"⟨constraint: #Point & {\\n  x: 0\\n  y: 0\\n}⟩\",\n  \"scale\": 8\n}"},"credits_used":5,"credits_remaining":null}},"catch_an_unclosed_struct":{"summary":"Catch an unclosed struct","value":{"tool":"cue-formatter-validator","tool_version":"1.0.2","outputs":{"formatted":"name: \"checkout-service\"\nport: 8080\nserver: {\n\thost: \"0.0.0.0\"\n","diagnostics":[{"line":"5","severity":"Error","message":"Expected \"}\""}],"classification":[{"field":"-","kind":"-","value-constraint":"No fields to classify."}],"evaluated":"{}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formatted":{"type":"string","description":"Formatted CUE"},"diagnostics":{"type":"array","description":"Validation","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","severity","message"]},"classification":{"type":"array","description":"Value vs. schema","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"kind":{"type":"string","description":"Kind"},"value-constraint":{"type":"string","description":"Value / constraint"}}},"x-iotools-columns":["field","kind","value-constraint"]},"evaluated":{"type":"string","description":"Evaluated JSON (concrete fields)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dart-code-formatter":{"post":{"operationId":"run_dart_code_formatter","summary":"Dart Code Formatter","tags":["Formatters"],"description":"Format and beautify Dart / Flutter source with dart_style-inspired rules — re-indent by bracket depth, normalize operator spacing, sort & group imports, and add trailing commas to multi-line lists.\n\n[Try Dart Code Formatter in your browser →](https://iotools.cloud/tool/dart-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dartInput":{"type":"string","description":"Dart Code"},"indentSize":{"enum":["2","4","tab"],"description":"Indent Size"},"sortImports":{"type":"boolean","description":"Sort and group directives (dart:, package:, relative)"},"trailingCommas":{"type":"boolean","description":"Add trailing commas in multi-line argument / parameter lists"},"removeBlankLines":{"type":"boolean","description":"Collapse 3+ blank lines into a single blank line"}},"required":[]},"examples":{"format_a_class_with_unsorted_imports_2_spaces_all_options":{"summary":"Format a class with unsorted imports (2 spaces, all options)","value":{"dartInput":"import 'package:flutter/material.dart';\nimport 'dart:async';\nimport 'dart:convert';\nimport '../utils/logger.dart';\n\nclass Point{\nfinal int x;\nfinal int y;\nPoint(this.x,this.y);\nint get sum=>x+y;\nbool equals(Point o)=>x==o.x&&y==o.y;\n}\nvoid main(){\nfinal p=Point(\n1,\n2\n);\nprint('sum: ${p.sum}');\n}","indentSize":"2","sortImports":"true","trailingCommas":"true","removeBlankLines":"true"}},"re_indent_only_4_spaces_imports_left_in_place":{"summary":"Re-indent only, 4 spaces, imports left in place","value":{"dartInput":"import 'package:flutter/material.dart';\nimport 'dart:async';\nimport 'dart:convert';\nimport '../utils/logger.dart';\n\nclass Point{\nfinal int x;\nfinal int y;\nPoint(this.x,this.y);\nint get sum=>x+y;\nbool equals(Point o)=>x==o.x&&y==o.y;\n}\nvoid main(){\nfinal p=Point(\n1,\n2\n);\nprint('sum: ${p.sum}');\n}","indentSize":"4","sortImports":"","trailingCommas":"","removeBlankLines":""}},"tabs_indent_minimal_class":{"summary":"Tabs indent, minimal class","value":{"dartInput":"class Box{\nfinal int n;\nBox(this.n);\n}","indentSize":"tab","sortImports":"true","trailingCommas":"true","removeBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_class_with_unsorted_imports_2_spaces_all_options":{"summary":"Format a class with unsorted imports (2 spaces, all options)","value":{"tool":"dart-code-formatter","tool_version":"1.0.2","outputs":{"output":"import 'dart:async';\nimport 'dart:convert';\n\nimport 'package:flutter/material.dart';\n\nimport '../utils/logger.dart';\n\nclass Point {\n  final int x;\n  final int y;\n  Point(this.x, this.y);\n  int get sum => x+y;\n  bool equals(Point o) => x == o.x && y == o.y;\n}\n\nvoid main() {\n  final p = Point(\n    1,\n    2,\n  );\n  print('sum: ${p.sum}');\n}\n"},"credits_used":5,"credits_remaining":null}},"re_indent_only_4_spaces_imports_left_in_place":{"summary":"Re-indent only, 4 spaces, imports left in place","value":{"tool":"dart-code-formatter","tool_version":"1.0.2","outputs":{"output":"import 'package:flutter/material.dart';\nimport 'dart:async';\nimport 'dart:convert';\nimport '../utils/logger.dart';\n\nclass Point {\n    final int x;\n    final int y;\n    Point(this.x, this.y);\n    int get sum => x+y;\n    bool equals(Point o) => x == o.x && y == o.y;\n}\n\nvoid main() {\n    final p = Point(\n        1,\n        2\n    );\n    print('sum: ${p.sum}');\n}\n"},"credits_used":5,"credits_remaining":null}},"tabs_indent_minimal_class":{"summary":"Tabs indent, minimal class","value":{"tool":"dart-code-formatter","tool_version":"1.0.2","outputs":{"output":"class Box {\n\tfinal int n;\n\tBox(this.n);\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/docker-compose-yaml-formatter":{"post":{"operationId":"run_docker_compose_yaml_formatter","summary":"Docker Compose YAML Formatter","tags":["Formatters"],"description":"Clean up a messy docker-compose.yml by normalizing indentation to a consistent 2- or 4-space step and tidying list-item dashes. Runs entirely in your browser — nothing is uploaded.\n\n[Try Docker Compose YAML Formatter in your browser →](https://iotools.cloud/tool/docker-compose-yaml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputCompose":{"type":"string","description":"docker-compose.yml"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"messy_compose_file_2_space_indent":{"summary":"Messy compose file (2-space indent)","value":{"inputCompose":"services:\n    web:\n        image: nginx:1.27-alpine\n        ports:\n        -   \"8080:80\"\n        depends_on:\n            - api\n    api:\n      image: ghcr.io/example/api:latest\n      environment:\n            - LOG_LEVEL=info\n            - REDIS_URL=redis://cache:6379\n      restart: on-failure\n    cache:\n      image: redis:7-alpine\n\nvolumes:\n  cache-data:\n","indentSize":"2"}},"same_compose_file_4_space_indent":{"summary":"Same compose file, 4-space indent","value":{"inputCompose":"services:\n    web:\n        image: nginx:1.27-alpine\n        ports:\n        -   \"8080:80\"\n        depends_on:\n            - api\n    api:\n      image: ghcr.io/example/api:latest\n      environment:\n            - LOG_LEVEL=info\n            - REDIS_URL=redis://cache:6379\n      restart: on-failure\n    cache:\n      image: redis:7-alpine\n\nvolumes:\n  cache-data:\n","indentSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"messy_compose_file_2_space_indent":{"summary":"Messy compose file (2-space indent)","value":{"tool":"docker-compose-yaml-formatter","tool_version":"1.0.2","outputs":{"output":"services:\n  web:\n    image: nginx:1.27-alpine\n    ports:\n    - \"8080:80\"\n    depends_on:\n      - api\n  api:\n    image: ghcr.io/example/api:latest\n    environment:\n      - LOG_LEVEL=info\n      - REDIS_URL=redis://cache:6379\n    restart: on-failure\n  cache:\n    image: redis:7-alpine\n\nvolumes:\n  cache-data:\n"},"credits_used":5,"credits_remaining":null}},"same_compose_file_4_space_indent":{"summary":"Same compose file, 4-space indent","value":{"tool":"docker-compose-yaml-formatter","tool_version":"1.0.2","outputs":{"output":"services:\n    web:\n        image: nginx:1.27-alpine\n        ports:\n        - \"8080:80\"\n        depends_on:\n            - api\n    api:\n        image: ghcr.io/example/api:latest\n        environment:\n            - LOG_LEVEL=info\n            - REDIS_URL=redis://cache:6379\n        restart: on-failure\n    cache:\n        image: redis:7-alpine\n\nvolumes:\n    cache-data:\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted docker-compose.yml"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/elixir-code-formatter":{"post":{"operationId":"run_elixir_code_formatter","summary":"Elixir Code Formatter","tags":["Formatters"],"description":"Format and beautify Elixir source code — operator/comma spacing, do/fn/end block-depth indentation, blank-line normalization around def/defmodule, and optional alphabetical sorting of alias/import/require/use groups, matching mix format conventions. Includes basic bracket and block-balance validation. Runs entirely in your browser.\n\n[Try Elixir Code Formatter in your browser →](https://iotools.cloud/tool/elixir-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"elixirInput":{"type":"string","description":"Elixir Source Code"},"maxLineLength":{"type":"number","description":"Max Line Length","minimum":40,"maximum":200},"sortAliases":{"type":"boolean","description":"Sort & Group alias / import / require / use blocks"}},"required":[]},"examples":{"schema_module_with_sorted_aliases_pipe_chain_and_cond_block":{"summary":"Schema module with sorted aliases, pipe chain, and cond block","value":{"elixirInput":"defmodule MyApp.Accounts.User do\n@moduledoc \"\"\"\nA user account in the system.\n\"\"\"\nuse Ecto.Schema\nimport Ecto.Changeset\nalias MyApp.Repo\nalias MyApp.Accounts.Profile\n\nschema \"users\" do\nfield :email,:string\nfield :name,:string\nfield :active,:boolean,default: true\nhas_one :profile,Profile\ntimestamps()\nend\n\ndef changeset(user,attrs)do\nuser\n|>cast(attrs,[:email,:name,:active])\n|>validate_required([:email,:name])\nend\n\ndef categorize(age)do\ncond do\nage<13->:child\nage<20->:teen\ntrue->:adult\nend\nend\nend","maxLineLength":"98","sortAliases":"true"}},"without_alias_sorting_aliases_keep_source_order":{"summary":"Without alias sorting, aliases keep source order","value":{"elixirInput":"alias MyApp.Zeta\nalias MyApp.Alpha\n\ndef run,do: :ok","maxLineLength":"98","sortAliases":""}},"unclosed_do_block":{"summary":"Unclosed do block","value":{"elixirInput":"defmodule Foo do\ndef bar do\n:ok\nend","maxLineLength":"98","sortAliases":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"schema_module_with_sorted_aliases_pipe_chain_and_cond_block":{"summary":"Schema module with sorted aliases, pipe chain, and cond block","value":{"tool":"elixir-code-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid Elixir — No syntax errors detected"}],"formattedOutput":"defmodule MyApp.Accounts.User do\n  @moduledoc \"\"\"\nA user account in the system.\n\"\"\"\n  use Ecto.Schema\n  import Ecto.Changeset\n  alias MyApp.Accounts.Profile\n  alias MyApp.Repo\n\n  schema \"users\" do\n    field :email, :string\n    field :name, :string\n    field :active, :boolean, default: true\n    has_one :profile, Profile\n    timestamps()\n  end\n\n  def changeset(user, attrs) do\n    user\n    |> cast(attrs, [:email, :name, :active])\n    |> validate_required([:email, :name])\n  end\n\n  def categorize(age) do\n    cond do\n      age < 13 -> :child\n      age < 20 -> :teen\n      true -> :adult\n    end\n  end\nend\n"},"credits_used":5,"credits_remaining":null}},"without_alias_sorting_aliases_keep_source_order":{"summary":"Without alias sorting, aliases keep source order","value":{"tool":"elixir-code-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid Elixir — No syntax errors detected"}],"formattedOutput":"alias MyApp.Zeta\nalias MyApp.Alpha\n\ndef run, do: :ok\n"},"credits_used":5,"credits_remaining":null}},"unclosed_do_block":{"summary":"Unclosed do block","value":{"tool":"elixir-code-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Missing 1 \"end\" keyword(s) — unclosed \"do\" on line 1"}],"formattedOutput":"defmodule Foo do\n  def bar do\n    :ok\n  end\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]},"formattedOutput":{"type":"string","description":"Formatted Elixir Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/env-file-parser":{"post":{"operationId":"run_env_file_parser","summary":"Env File Parser","tags":["Formatters"],"description":"Parse a .env (dotenv) file into clean key/value pairs and re-emit it as normalized ENV, a JSON object, or shell export statements — sorted, de-duplicated, with a report of missing '=', duplicate keys and empty values. Optionally mask secret values.\n\n[Try Env File Parser in your browser →](https://iotools.cloud/tool/env-file-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"envInput":{"type":"string","description":"ENV Content"},"outputFormat":{"enum":["clean","json","shell"],"description":"Output Format"},"maskValues":{"type":"boolean","description":"Mask Values"}},"required":[]},"examples":{"clean_env_with_issues":{"summary":"Clean ENV (with issues)","value":{"envInput":"# Database Configuration\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_production\nDB_USER=admin\nDB_PASS=s3cret_value\n\n# API Keys\nexport API_KEY=abc123def456\nAPI_SECRET=my-secret-key\nAPI_URL=https://api.example.com/v2\n\n# App Settings\nDEBUG=true\nLOG_LEVEL=info\nAPP_NAME=My_Application\nEMPTY_VAR=\nDB_HOST=remote.db.com  # duplicate key\nINVALID LINE WITHOUT EQUALS\n\n# Feature Flags\nENABLE_CACHE=true\nCACHE_TTL=3600  # seconds","outputFormat":"clean","maskValues":""}},"json_output":{"summary":"JSON output","value":{"envInput":"export API_KEY=abc123\nDB_URL=\"postgres://localhost/db\"\nGREETING=\"hello world\"","outputFormat":"json","maskValues":""}},"shell_export":{"summary":"Shell export","value":{"envInput":"GREETING=\"hello world\"\nPORT=8080","outputFormat":"shell","maskValues":""}},"masked_values":{"summary":"Masked values","value":{"envInput":"DB_PASS=supersecret\nDB_USER=admin","outputFormat":"clean","maskValues":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"clean_env_with_issues":{"summary":"Clean ENV (with issues)","value":{"tool":"env-file-parser","tool_version":"1.0.2","outputs":{"output":"API_KEY=abc123def456\nAPI_SECRET=my-secret-key\nAPI_URL=https://api.example.com/v2\nAPP_NAME=My_Application\nCACHE_TTL=3600\nDB_HOST=remote.db.com\nDB_NAME=myapp_production\nDB_PASS=s3cret_value\nDB_PORT=5432\nDB_USER=admin\nDEBUG=true\nEMPTY_VAR=\nENABLE_CACHE=true\nLOG_LEVEL=info","issues":[{"type":"Warning","line":"17","message":"Empty value for key \"EMPTY_VAR\""},{"type":"Warning","line":"18","message":"Duplicate key \"DB_HOST\" (first on line 2)"},{"type":"Error","line":"19","message":"Invalid line (missing =): \"INVALID LINE WITHOUT EQUALS\""}]},"credits_used":5,"credits_remaining":null}},"json_output":{"summary":"JSON output","value":{"tool":"env-file-parser","tool_version":"1.0.2","outputs":{"output":"{\n  \"API_KEY\": \"abc123\",\n  \"DB_URL\": \"postgres://localhost/db\",\n  \"GREETING\": \"hello world\"\n}","issues":[]},"credits_used":5,"credits_remaining":null}},"shell_export":{"summary":"Shell export","value":{"tool":"env-file-parser","tool_version":"1.0.2","outputs":{"output":"export GREETING=\"hello world\"\nexport PORT=\"8080\"","issues":[]},"credits_used":5,"credits_remaining":null}},"masked_values":{"summary":"Masked values","value":{"tool":"env-file-parser","tool_version":"1.0.2","outputs":{"output":"DB_PASS=*****\nDB_USER=*****","issues":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"},"issues":{"type":"array","description":"Parse Issues","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"line":{"type":"string","description":"Line"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["type","line","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/git-log-formatter-prettifier":{"post":{"operationId":"run_git_log_formatter_prettifier","summary":"Git Log Formatter / Prettifier","tags":["Formatters"],"description":"Turn raw `git log` output into a clean Markdown table, bullet list, one-line summary, or JSON. Parses the default commit/Author/Date block format, `--pretty=fuller`, and `--oneline`, with optional date reformatting (ISO, short, RFC 2822).\n\n[Try Git Log Formatter / Prettifier in your browser →](https://iotools.cloud/tool/git-log-formatter-prettifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rawLog":{"type":"string","description":"Git Log Output"},"inputFormat":{"enum":["auto","block","oneline"],"description":"Input Format"},"dateFormat":{"enum":["original","iso","short","rfc"],"description":"Date Format"},"outputStyle":{"enum":["markdown-table","markdown-list","oneline","json"],"description":"Output Style"}},"required":[]},"examples":{"standard_log_markdown_table":{"summary":"Standard log → Markdown table","value":{"rawLog":"commit a1b2c3d4e5f67890abcdef1234567890abcdef12 (HEAD -> main, origin/main)\nAuthor: Jane Doe <jane@example.com>\nDate:   Thu Oct 10 13:55:36 2024 -0700\n\n    feat: add user profile page\n\n    Adds a profile route with avatar, name, and bio fields.\n\ncommit d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3\nAuthor: John Smith <john@example.com>\nDate:   Wed Oct 9 09:20:11 2024 -0700\n\n    fix: handle null token in auth middleware","inputFormat":"auto","dateFormat":"original","outputStyle":"markdown-table"}},"oneline_log_one_line_per_commit":{"summary":"--oneline log → one line per commit","value":{"rawLog":"a1b2c3d (HEAD -> main, origin/main) feat: add user profile page\nd4e5f6a fix: handle null token in auth middleware\n7890abc docs: update README with deployment steps","inputFormat":"auto","dateFormat":"original","outputStyle":"oneline"}},"standard_log_json_with_iso_dates":{"summary":"Standard log → JSON with ISO dates","value":{"rawLog":"commit a1b2c3d4e5f67890abcdef1234567890abcdef12 (HEAD -> main, origin/main)\nAuthor: Jane Doe <jane@example.com>\nDate:   Thu Oct 10 13:55:36 2024 -0700\n\n    feat: add user profile page\n\n    Adds a profile route with avatar, name, and bio fields.\n\ncommit d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3\nAuthor: John Smith <john@example.com>\nDate:   Wed Oct 9 09:20:11 2024 -0700\n\n    fix: handle null token in auth middleware","inputFormat":"auto","dateFormat":"iso","outputStyle":"json"}},"standard_log_markdown_list_with_short_dates":{"summary":"Standard log → Markdown list with short dates","value":{"rawLog":"commit a1b2c3d4e5f67890abcdef1234567890abcdef12 (HEAD -> main, origin/main)\nAuthor: Jane Doe <jane@example.com>\nDate:   Thu Oct 10 13:55:36 2024 -0700\n\n    feat: add user profile page\n\n    Adds a profile route with avatar, name, and bio fields.\n\ncommit d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3\nAuthor: John Smith <john@example.com>\nDate:   Wed Oct 9 09:20:11 2024 -0700\n\n    fix: handle null token in auth middleware","inputFormat":"auto","dateFormat":"short","outputStyle":"markdown-list"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_log_markdown_table":{"summary":"Standard log → Markdown table","value":{"tool":"git-log-formatter-prettifier","tool_version":"1.0.2","outputs":{"summary":"Parsed 2 commits (detected: standard).","formatted":"| Hash | Author | Date | Subject |\n| --- | --- | --- | --- |\n| a1b2c3d | Jane Doe | Thu Oct 10 13:55:36 2024 -0700 | feat: add user profile page |\n| d4e5f6a | John Smith | Wed Oct 9 09:20:11 2024 -0700 | fix: handle null token in auth middleware |"},"credits_used":5,"credits_remaining":null}},"oneline_log_one_line_per_commit":{"summary":"--oneline log → one line per commit","value":{"tool":"git-log-formatter-prettifier","tool_version":"1.0.2","outputs":{"summary":"Parsed 3 commits (detected: oneline).","formatted":"a1b2c3d feat: add user profile page\nd4e5f6a fix: handle null token in auth middleware\n7890abc docs: update README with deployment steps"},"credits_used":5,"credits_remaining":null}},"standard_log_json_with_iso_dates":{"summary":"Standard log → JSON with ISO dates","value":{"tool":"git-log-formatter-prettifier","tool_version":"1.0.2","outputs":{"summary":"Parsed 2 commits (detected: standard).","formatted":"[\n  {\n    \"hash\": \"a1b2c3d4e5f67890abcdef1234567890abcdef12\",\n    \"shortHash\": \"a1b2c3d\",\n    \"subject\": \"feat: add user profile page\",\n    \"author\": \"Jane Doe\",\n    \"authorEmail\": \"jane@example.com\",\n    \"date\": \"2024-10-10 13:55:36\",\n    \"body\": \"Adds a profile route with avatar, name, and bio fields.\",\n    \"refs\": \"HEAD -> main, origin/main\"\n  },\n  {\n    \"hash\": \"d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3\",\n    \"shortHash\": \"d4e5f6a\",\n    \"subject\": \"fix: handle null token in auth middleware\",\n    \"author\": \"John Smith\",\n    \"authorEmail\": \"john@example.com\",\n    \"date\": \"2024-10-09 09:20:11\"\n  }\n]"},"credits_used":5,"credits_remaining":null}},"standard_log_markdown_list_with_short_dates":{"summary":"Standard log → Markdown list with short dates","value":{"tool":"git-log-formatter-prettifier","tool_version":"1.0.2","outputs":{"summary":"Parsed 2 commits (detected: standard).","formatted":"- `a1b2c3d` feat: add user profile page — Jane Doe, 2024-10-10\n- `d4e5f6a` fix: handle null token in auth middleware — John Smith, 2024-10-09"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Parse Summary"},"formatted":{"type":"string","description":"Formatted Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/go-formatter":{"post":{"operationId":"run_go_formatter","summary":"Go Formatter","tags":["Formatters"],"description":"Format and beautify Go source code — tab indentation derived from brace/paren depth, Go's mandatory same-line brace placement, unambiguous operator/comma spacing, composite-literal colon spacing, and optional stdlib/third-party import sorting — while leaving raw `backtick` strings and comments byte-for-byte untouched.\n\n[Try Go Formatter in your browser →](https://iotools.cloud/tool/go-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"goInput":{"type":"string","description":"Go Source Code"},"sortImports":{"type":"boolean","description":"Sort & group imports (standard library / third-party)"}},"required":[]},"examples":{"struct_if_blocks_and_allman_brace_merged_onto_one_line_imports_sorted":{"summary":"Struct, if-blocks and Allman brace merged onto one line, imports sorted","value":{"goInput":"package main\n\nimport (\n\"fmt\"\n\"os\"\n\"github.com/spf13/cobra\"\n\"strings\"\n)\n\ntype User struct{\nName string\nEmail string\nActive bool\n}\n\nfunc NewUser(name, email string) *User {\nreturn &User{Name:name,Email:email,Active:true}\n}\n\nfunc (u *User) Validate() error\n{\nif u.Name == \"\" {\nreturn fmt.Errorf(\"name is required\")\n}\nif !strings.Contains(u.Email, \"@\") {\nreturn fmt.Errorf(\"invalid email\")\n}\nreturn nil\n}\n\nfunc main(){\nu:=NewUser(\"Alice\",\"alice@example.com\")\nif err:=u.Validate();err!=nil{\nfmt.Println(err)\nos.Exit(1)\n}\nfmt.Println(u.Name)\n}","sortImports":"true"}},"raw_backtick_string_and_struct_tag_preserved_verbatim":{"summary":"Raw backtick string and struct tag preserved verbatim","value":{"goInput":"package main\n\nimport \"fmt\"\n\ntype Config struct {\nName string `json:\"name\"`\nPort int `json:\"port\"`\n}\n\nfunc render() string {\ntmpl:=`Hello {{.Name}}\n    Port: {{.Port}}`\nreturn tmpl\n}\n\nfunc main(){\nfmt.Println(render())\n}","sortImports":"true"}},"same_struct_example_with_import_sorting_turned_off":{"summary":"Same struct example with import sorting turned off","value":{"goInput":"package main\n\nimport (\n\"fmt\"\n\"os\"\n\"github.com/spf13/cobra\"\n\"strings\"\n)\n\ntype User struct{\nName string\nEmail string\nActive bool\n}\n\nfunc NewUser(name, email string) *User {\nreturn &User{Name:name,Email:email,Active:true}\n}\n\nfunc (u *User) Validate() error\n{\nif u.Name == \"\" {\nreturn fmt.Errorf(\"name is required\")\n}\nif !strings.Contains(u.Email, \"@\") {\nreturn fmt.Errorf(\"invalid email\")\n}\nreturn nil\n}\n\nfunc main(){\nu:=NewUser(\"Alice\",\"alice@example.com\")\nif err:=u.Validate();err!=nil{\nfmt.Println(err)\nos.Exit(1)\n}\nfmt.Println(u.Name)\n}","sortImports":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"struct_if_blocks_and_allman_brace_merged_onto_one_line_imports_sorted":{"summary":"Struct, if-blocks and Allman brace merged onto one line, imports sorted","value":{"tool":"go-formatter","tool_version":"1.0.2","outputs":{"output":"package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/spf13/cobra\"\n)\n\ntype User struct {\n\tName string\n\tEmail string\n\tActive bool\n}\n\nfunc NewUser(name, email string) *User {\n\treturn &User{Name: name, Email: email, Active: true}\n}\n\nfunc (u *User) Validate() error {\n\tif u.Name == \"\" {\n\t\treturn fmt.Errorf(\"name is required\")\n\t}\n\tif !strings.Contains(u.Email, \"@\") {\n\t\treturn fmt.Errorf(\"invalid email\")\n\t}\n\treturn nil\n}\n\nfunc main() {\n\tu := NewUser(\"Alice\", \"alice@example.com\")\n\tif err := u.Validate(); err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\tfmt.Println(u.Name)\n}\n"},"credits_used":5,"credits_remaining":null}},"raw_backtick_string_and_struct_tag_preserved_verbatim":{"summary":"Raw backtick string and struct tag preserved verbatim","value":{"tool":"go-formatter","tool_version":"1.0.2","outputs":{"output":"package main\n\nimport \"fmt\"\n\ntype Config struct {\n\tName string `json:\"name\"`\n\tPort int `json:\"port\"`\n}\n\nfunc render() string {\n\ttmpl := `Hello {{.Name}}\n    Port: {{.Port}}`\n\treturn tmpl\n}\n\nfunc main() {\n\tfmt.Println(render())\n}\n"},"credits_used":5,"credits_remaining":null}},"same_struct_example_with_import_sorting_turned_off":{"summary":"Same struct example with import sorting turned off","value":{"tool":"go-formatter","tool_version":"1.0.2","outputs":{"output":"package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"github.com/spf13/cobra\"\n\t\"strings\"\n)\n\ntype User struct {\n\tName string\n\tEmail string\n\tActive bool\n}\n\nfunc NewUser(name, email string) *User {\n\treturn &User{Name: name, Email: email, Active: true}\n}\n\nfunc (u *User) Validate() error {\n\tif u.Name == \"\" {\n\t\treturn fmt.Errorf(\"name is required\")\n\t}\n\tif !strings.Contains(u.Email, \"@\") {\n\t\treturn fmt.Errorf(\"invalid email\")\n\t}\n\treturn nil\n}\n\nfunc main() {\n\tu := NewUser(\"Alice\", \"alice@example.com\")\n\tif err := u.Validate(); err != nil {\n\t\tfmt.Println(err)\n\t\tos.Exit(1)\n\t}\n\tfmt.Println(u.Name)\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Go Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/har-file-formatter":{"post":{"operationId":"run_har_file_formatter","summary":"HAR File Formatter","tags":["Formatters"],"description":"Parse and filter a HAR (HTTP Archive) file — search by URL, method, status class or content type, and see per-request size and timing in a sortable table.\n\n[Try HAR File Formatter in your browser →](https://iotools.cloud/tool/har-file-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"harInput":{"type":"string","description":"HAR Content"},"filterSearch":{"type":"string","description":"Search"},"filterMethod":{"enum":["any","GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],"description":"Method"},"filterStatus":{"enum":["any","2xx","3xx","4xx","5xx","failed"],"description":"Status"},"filterType":{"enum":["any","document","xhr","script","stylesheet","image","font","media","other"],"description":"Type"}},"required":[]},"examples":{"all_requests":{"summary":"All requests","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"creator\": {\n      \"name\": \"IO Tools Example\",\n      \"version\": \"1.0\"\n    },\n    \"entries\": [\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.000Z\",\n        \"time\": 220,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 220,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 200,\n          \"statusText\": \"OK\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 1256,\n            \"mimeType\": \"text/html\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 180,\n          \"bodySize\": 1256\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 5,\n          \"dns\": 12,\n          \"connect\": 30,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 150,\n          \"receive\": 22\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.230Z\",\n        \"time\": 95,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/assets/app.css\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 160,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 200,\n          \"statusText\": \"OK\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 4321,\n            \"mimeType\": \"text/css\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 140,\n          \"bodySize\": 4321\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 24\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.420Z\",\n        \"time\": 320,\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 240,\n          \"bodySize\": 78,\n          \"postData\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2,\\\"currency\\\":\\\"USD\\\"}\"\n          }\n        },\n        \"response\": {\n          \"status\": 201,\n          \"statusText\": \"Created\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 142,\n            \"mimeType\": \"application/json\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 130,\n          \"bodySize\": 142\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 8,\n          \"connect\": 22,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 240,\n          \"receive\": 30\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.760Z\",\n        \"time\": 80,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/missing\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 150,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 404,\n          \"statusText\": \"Not Found\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 35,\n            \"mimeType\": \"application/json\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 110,\n          \"bodySize\": 35\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 9\n        }\n      }\n    ]\n  }\n}","filterSearch":"","filterMethod":"any","filterStatus":"any","filterType":"any"}},"filter_to_errors_only":{"summary":"Filter to errors only","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"creator\": {\n      \"name\": \"IO Tools Example\",\n      \"version\": \"1.0\"\n    },\n    \"entries\": [\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.000Z\",\n        \"time\": 220,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 220,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 200,\n          \"statusText\": \"OK\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 1256,\n            \"mimeType\": \"text/html\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 180,\n          \"bodySize\": 1256\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 5,\n          \"dns\": 12,\n          \"connect\": 30,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 150,\n          \"receive\": 22\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.230Z\",\n        \"time\": 95,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/assets/app.css\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 160,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 200,\n          \"statusText\": \"OK\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 4321,\n            \"mimeType\": \"text/css\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 140,\n          \"bodySize\": 4321\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 24\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.420Z\",\n        \"time\": 320,\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 240,\n          \"bodySize\": 78,\n          \"postData\": {\n            \"mimeType\": \"application/json\",\n            \"text\": \"{\\\"productId\\\":\\\"sku-42\\\",\\\"qty\\\":2,\\\"currency\\\":\\\"USD\\\"}\"\n          }\n        },\n        \"response\": {\n          \"status\": 201,\n          \"statusText\": \"Created\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 142,\n            \"mimeType\": \"application/json\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 130,\n          \"bodySize\": 142\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 8,\n          \"connect\": 22,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 240,\n          \"receive\": 30\n        }\n      },\n      {\n        \"startedDateTime\": \"2025-03-01T14:00:00.760Z\",\n        \"time\": 80,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/missing\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"queryString\": [],\n          \"cookies\": [],\n          \"headersSize\": 150,\n          \"bodySize\": 0\n        },\n        \"response\": {\n          \"status\": 404,\n          \"statusText\": \"Not Found\",\n          \"httpVersion\": \"HTTP/2\",\n          \"headers\": [],\n          \"cookies\": [],\n          \"content\": {\n            \"size\": 35,\n            \"mimeType\": \"application/json\"\n          },\n          \"redirectURL\": \"\",\n          \"headersSize\": 110,\n          \"bodySize\": 35\n        },\n        \"cache\": {},\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 9\n        }\n      }\n    ]\n  }\n}","filterSearch":"","filterMethod":"any","filterStatus":"4xx","filterType":"any"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"all_requests":{"summary":"All requests","value":{"tool":"har-file-formatter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Showing","value":"4 of 4"},{"metric":"OK","value":"3"},{"metric":"Errors","value":"1"},{"metric":"Transfer Size","value":"6.17 KB"},{"metric":"Content Size","value":"5.62 KB"}],"results":[{"method":"GET","status":"200","type":"document","url":"https://example.com/","transfer-size":"1.40 KB","time":"220 ms"},{"method":"GET","status":"200","type":"stylesheet","url":"https://example.com/assets/app.css","transfer-size":"4.36 KB","time":"95 ms"},{"method":"POST","status":"201","type":"xhr","url":"https://api.example.com/v1/orders","transfer-size":"272 B","time":"320 ms"},{"method":"GET","status":"404","type":"xhr","url":"https://api.example.com/v1/missing","transfer-size":"145 B","time":"80 ms"}]},"credits_used":5,"credits_remaining":null}},"filter_to_errors_only":{"summary":"Filter to errors only","value":{"tool":"har-file-formatter","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Showing","value":"1 of 4"},{"metric":"OK","value":"0"},{"metric":"Errors","value":"1"},{"metric":"Transfer Size","value":"145 B"},{"metric":"Content Size","value":"35 B"}],"results":[{"method":"GET","status":"404","type":"xhr","url":"https://api.example.com/v1/missing","transfer-size":"145 B","time":"80 ms"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"results":{"type":"array","description":"Requests","items":{"type":"object","properties":{"method":{"type":"string","description":"Method"},"status":{"type":"string","description":"Status"},"type":{"type":"string","description":"Type"},"url":{"type":"string","description":"URL"},"transfer-size":{"type":"string","description":"Transfer Size"},"time":{"type":"string","description":"Time"}}},"x-iotools-columns":["method","status","type","url","transfer-size","time"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/htaccess-formatter":{"post":{"operationId":"run_htaccess_formatter","summary":".htaccess Formatter","tags":["Formatters"],"description":"Format and re-indent Apache .htaccess files. Nested &lt;IfModule>, &lt;FilesMatch>, &lt;Directory> and other sections get consistent indentation and single-spaced directives, with comments and quoted values preserved.\n\n[Try .htaccess Formatter in your browser →](https://iotools.cloud/tool/htaccess-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputHtaccess":{"type":"string","description":".htaccess Content"},"indentSize":{"enum":["2","4"],"description":"Indent Size"}},"required":[]},"examples":{"rewrite_block_messy_indentation_2_spaces":{"summary":"Rewrite block, messy indentation (2 spaces)","value":{"inputHtaccess":"<IfModule mod_rewrite.c>\n    RewriteEngine    On\nRewriteCond %{HTTPS}  off\nRewriteRule ^(.*)$   https://%{HTTP_HOST}%{REQUEST_URI}   [L,R=301]\n</IfModule>","indentSize":"2"}},"blank_line_collapse_quoted_value_preserved_4_spaces":{"summary":"Blank-line collapse + quoted value preserved (4 spaces)","value":{"inputHtaccess":"# Security\n\n\n<FilesMatch \"\\.(env|log)$\">\nRequire all denied\n</FilesMatch>\n\n<IfModule mod_headers.c>\nHeader set  Content-Security-Policy   \"default-src  'self'\"\n</IfModule>","indentSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rewrite_block_messy_indentation_2_spaces":{"summary":"Rewrite block, messy indentation (2 spaces)","value":{"tool":"htaccess-formatter","tool_version":"1.0.2","outputs":{"output":"<IfModule mod_rewrite.c>\n  RewriteEngine On\n  RewriteCond %{HTTPS} off\n  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n</IfModule>"},"credits_used":5,"credits_remaining":null}},"blank_line_collapse_quoted_value_preserved_4_spaces":{"summary":"Blank-line collapse + quoted value preserved (4 spaces)","value":{"tool":"htaccess-formatter","tool_version":"1.0.2","outputs":{"output":"# Security\n\n<FilesMatch \"\\.(env|log)$\">\n    Require all denied\n</FilesMatch>\n\n<IfModule mod_headers.c>\n    Header set Content-Security-Policy \"default-src  'self'\"\n</IfModule>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted .htaccess"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hjson-formatter-validator":{"post":{"operationId":"run_hjson_formatter_validator","summary":"HJSON Formatter & Validator","tags":["Formatters"],"description":"Convert between HJSON and JSON, and validate as you go. HJSON is a human-friendly superset of JSON — no required quotes on keys, // and # comments, multiline ''' strings and trailing commas are all allowed. Format HJSON into pretty or minified JSON, or the reverse, with adjustable indentation, key sorting and quote style, plus a clear error message (with line/column) on malformed input.\n\n[Try HJSON Formatter & Validator in your browser →](https://iotools.cloud/tool/hjson-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"HJSON or JSON Input"},"mode":{"enum":["hjson-to-json","json-to-hjson"],"description":"Convert Direction"},"indent":{"enum":["2","4","tab","0"],"description":"Indent"},"sortKeys":{"type":"boolean","description":"Sort object keys alphabetically"},"quoteStyle":{"enum":["min","keys","all"],"description":"Quote Style"}},"required":[]},"examples":{"hjson_json":{"summary":"HJSON → JSON","value":{"input":"{\n  # HJSON is a human-friendly superset of JSON.\n  name: iotools\n  version: 1.0.0\n  description: A friendly format for humans to write config.\n  // Comments, unquoted keys/strings, and trailing commas are all fine.\n  tags: [\n    json\n    config\n    \"with spaces is fine too\",\n  ]\n  server: {\n    host: localhost\n    port: 8080\n    debug: true\n  }\n  banner:\n    '''\n    Welcome to HJSON!\n    This is a multiline string.\n    '''\n}","mode":"hjson-to-json","indent":"2","sortKeys":"","quoteStyle":"min"}},"json_hjson":{"summary":"JSON → HJSON","value":{"input":"{\n  \"name\": \"iotools\",\n  \"version\": \"1.0.0\",\n  \"tags\": [\n    \"json\",\n    \"config\"\n  ],\n  \"server\": {\n    \"host\": \"localhost\",\n    \"port\": 8080,\n    \"debug\": true\n  }\n}","mode":"json-to-hjson","indent":"2","sortKeys":"","quoteStyle":"min"}},"json_hjson_quote_all_keys_and_strings_sorted":{"summary":"JSON → HJSON, quote all keys and strings, sorted","value":{"input":"{\n  \"name\": \"iotools\",\n  \"version\": \"1.0.0\",\n  \"tags\": [\n    \"json\",\n    \"config\"\n  ],\n  \"server\": {\n    \"host\": \"localhost\",\n    \"port\": 8080,\n    \"debug\": true\n  }\n}","mode":"json-to-hjson","indent":"2","sortKeys":"true","quoteStyle":"all"}},"invalid_input_unterminated_string":{"summary":"Invalid input (unterminated string)","value":{"input":"{\n  name: \"unterminated\n}","mode":"hjson-to-json","indent":"2","sortKeys":"","quoteStyle":"min"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hjson_json":{"summary":"HJSON → JSON","value":{"tool":"hjson-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"iotools\",\n  \"version\": \"1.0.0\",\n  \"description\": \"A friendly format for humans to write config.\",\n  \"tags\": [\n    \"json\",\n    \"config\",\n    \"with spaces is fine too\"\n  ],\n  \"server\": {\n    \"host\": \"localhost\",\n    \"port\": 8080,\n    \"debug\": true\n  },\n  \"banner\": \"Welcome to HJSON!\\nThis is a multiline string.\"\n}","status":"Valid — 6 top-level keys · 326 chars"},"credits_used":5,"credits_remaining":null}},"json_hjson":{"summary":"JSON → HJSON","value":{"tool":"hjson-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  name: iotools\n  version: 1.0.0\n  tags:\n  [\n    json\n    config\n  ]\n  server:\n  {\n    host: localhost\n    port: 8080\n    debug: true\n  }\n}","status":"Valid — 4 top-level keys · 141 chars"},"credits_used":5,"credits_remaining":null}},"json_hjson_quote_all_keys_and_strings_sorted":{"summary":"JSON → HJSON, quote all keys and strings, sorted","value":{"tool":"hjson-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"iotools\"\n  \"server\":\n  {\n    \"debug\": true\n    \"host\": \"localhost\"\n    \"port\": 8080\n  }\n  \"tags\":\n  [\n    \"json\"\n    \"config\"\n  ]\n  \"version\": \"1.0.0\"\n}","status":"Valid — 4 top-level keys · 165 chars"},"credits_used":5,"credits_remaining":null}},"invalid_input_unterminated_string":{"summary":"Invalid input (unterminated string)","value":{"tool":"hjson-formatter-validator","tool_version":"1.0.2","outputs":{"output":"","status":"Invalid: Bad string containing newline at line 3,0 >>>} ..."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"},"status":{"type":"string","description":"Validation Status"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-formatter-beautifier":{"post":{"operationId":"run_html_formatter_beautifier","summary":"HTML Formatter & Beautifier","tags":["Formatters"],"description":"Format and beautify messy or minified HTML — re-indent nested tags by depth, keep attributes intact, and leave &lt;pre>, &lt;script>, &lt;style> and &lt;textarea> contents untouched. Runs entirely in your browser.\n\n[Try HTML Formatter & Beautifier in your browser →](https://iotools.cloud/tool/html-formatter-beautifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"htmlSource":{"type":"string","description":"HTML"},"indentation":{"enum":["  ","    ","\t"],"description":"Indentation"},"preserveNewlines":{"type":"boolean","description":"Preserve existing blank lines"},"removeComments":{"type":"boolean","description":"Remove HTML comments"}},"required":[]},"examples":{"format_a_full_html_page_nested_tags_attributes_void_elements_a_script_block":{"summary":"Format a full HTML page (nested tags, attributes, void elements, a script block)","value":{"htmlSource":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<title>Hello World</title>\n<style>body{margin:0;padding:20px;font-family:sans-serif}h1{color:#333}</style>\n</head>\n<body>\n<div class=\"container\">\n<h1>Hello, World!</h1>\n<p>This is a <strong>sample</strong> HTML page.</p>\n<ul>\n<li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ul>\n<img src=\"image.png\" alt=\"Sample\" />\n<br />\n<a href=\"https://example.com\">Visit Example</a>\n</div>\n<script>console.log(\"hello\");</script>\n</body>\n</html>","indentation":"  ","preserveNewlines":"","removeComments":""}},"remove_comments_4_space_indent_pre_content_stays_byte_for_byte":{"summary":"Remove comments, 4-space indent — <pre> content stays byte-for-byte","value":{"htmlSource":"<div>\n<!-- drop me -->\n<pre>\n  function foo() {\n      return 1;\n  }\n</pre>\n</div>","indentation":"    ","preserveNewlines":"","removeComments":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_full_html_page_nested_tags_attributes_void_elements_a_script_block":{"summary":"Format a full HTML page (nested tags, attributes, void elements, a script block)","value":{"tool":"html-formatter-beautifier","tool_version":"1.0.2","outputs":{"formattedHtml":"<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <title>Hello World</title>\n    <style>body{margin:0;padding:20px;font-family:sans-serif}h1{color:#333}</style>\n  </head>\n  <body>\n    <div class=\"container\">\n      <h1>Hello, World!</h1>\n      <p>This is a <strong>sample</strong> HTML page.</p>\n      <ul>\n        <li>Item 1</li>\n        <li>Item 2</li>\n        <li>Item 3</li>\n      </ul>\n      <img src=\"image.png\" alt=\"Sample\" />\n      <br />\n      <a href=\"https://example.com\">Visit Example</a>\n    </div>\n    <script>console.log(\"hello\");</script>\n  </body>\n</html>\n"},"credits_used":5,"credits_remaining":null}},"remove_comments_4_space_indent_pre_content_stays_byte_for_byte":{"summary":"Remove comments, 4-space indent — <pre> content stays byte-for-byte","value":{"tool":"html-formatter-beautifier","tool_version":"1.0.2","outputs":{"formattedHtml":"<div>\n    <pre>\n  function foo() {\n      return 1;\n  }\n</pre>\n</div>\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedHtml":{"type":"string","description":"Formatted HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-minifier":{"post":{"operationId":"run_html_minifier","summary":"HTML Minifier","tags":["Formatters"],"description":"Minify HTML by collapsing whitespace, removing comments and optionally minifying inline CSS and JavaScript. Content inside &lt;pre>, &lt;textarea>, &lt;script> and &lt;style> is never mangled, and conditional comments survive.\n\n[Try HTML Minifier in your browser →](https://iotools.cloud/tool/html-minifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"html":{"type":"string","description":"HTML"},"collapseWhitespace":{"type":"boolean","description":"Collapse whitespace"},"removeComments":{"type":"boolean","description":"Remove HTML comments"},"removeAttributeQuotes":{"type":"boolean","description":"Remove quotes around attributes when possible"},"minifyCSS":{"type":"boolean","description":"Minify CSS in &lt;style> and style attributes"},"minifyJS":{"type":"boolean","description":"Minify JavaScript in &lt;script>"}},"required":[]},"examples":{"minify_a_page":{"summary":"Minify a page","value":{"html":"<h2>Hello, World!</h2>\n<p>This is a test.</p>","collapseWhitespace":"true","removeComments":"true","removeAttributeQuotes":"true","minifyCSS":"true","minifyJS":"true"}},"tricky_pre_conditional_comments_inline_css_and_js":{"summary":"Tricky: <pre>, conditional comments, inline CSS and JS","value":{"html":"<!DOCTYPE html>\n<html>\n<head>\n  <!-- drop me -->\n  <!--[if lt IE 9]><script src=\"html5shiv.js\"></script><![endif]-->\n  <style>\n    /* a comment */\n    .q::before { content: \"/* not a comment */\"; width: calc(100% - 10px); }\n  </style>\n</head>\n<body>\n  <pre>\n  keep     these\n     spaces\n  </pre>\n  <p>Some   <b>bold</b> <i>italic</i>   text.</p>\n  <div class=\"card\" data-id=\"7\" style=\"color: red;   margin: 0 auto;\">x</div>\n  <img src=\"a.png\" alt=\"a b\"/>\n  <script>\n    // a comment\n    const re = /a\\/\\/b/g;\n    const s = \"x // y\";\n    console.log(re.test(s));\n  </script>\n</body>\n</html>","collapseWhitespace":"true","removeComments":"true","removeAttributeQuotes":"true","minifyCSS":"true","minifyJS":"true"}},"keep_comments_and_attribute_quotes":{"summary":"Keep comments and attribute quotes","value":{"html":"<!-- nav -->\n<ul class=\"nav\">\n  <li><a href=\"/a/\">A</a></li>\n</ul>","collapseWhitespace":"true","removeComments":"","removeAttributeQuotes":"","minifyCSS":"true","minifyJS":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"minify_a_page":{"summary":"Minify a page","value":{"tool":"html-minifier","tool_version":"1.0.2","outputs":{"output":"<h2>Hello, World!</h2><p>This is a test.</p>"},"credits_used":5,"credits_remaining":null}},"tricky_pre_conditional_comments_inline_css_and_js":{"summary":"Tricky: <pre>, conditional comments, inline CSS and JS","value":{"tool":"html-minifier","tool_version":"1.0.2","outputs":{"output":"<!DOCTYPE html><html><head><!--[if lt IE 9]><script src=\"html5shiv.js\"></script><![endif]--><style>.q::before{content:\"/* not a comment */\";width:calc(100% - 10px)}</style></head><body><pre>\n  keep     these\n     spaces\n  </pre><p>Some <b>bold</b> <i>italic</i> text.</p><div class=card data-id=7 style=\"color:red;margin:0 auto\">x</div><img src=a.png alt=\"a b\"><script>const re=/a\\/\\/b/g;const s=\"x // y\";console.log(re.test(s));</script></body></html>"},"credits_used":5,"credits_remaining":null}},"keep_comments_and_attribute_quotes":{"summary":"Keep comments and attribute quotes","value":{"tool":"html-minifier","tool_version":"1.0.2","outputs":{"output":"<!-- nav --><ul class=\"nav\"><li><a href=\"/a/\">A</a></li></ul>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Minified HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ini-formatter":{"post":{"operationId":"run_ini_formatter","summary":"INI Formatter","tags":["Formatters"],"description":"Format and beautify INI / config files. Normalizes [section] headers and key = value spacing, trims trailing whitespace, and puts one blank line between sections. Optionally sorts keys alphabetically within each section. Comments and section order are preserved.\n\n[Try INI Formatter in your browser →](https://iotools.cloud/tool/ini-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputIni":{"type":"string","description":"INI Content"},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically within each section"}},"required":[]},"examples":{"normalize_spacing_sort_off":{"summary":"Normalize spacing (sort off)","value":{"inputIni":"[server]\nhost=localhost\nport =8080\n; connection settings\nname = main\n\n\n[database]\nuser=admin\npassword=\"secret\"","sortKeys":""}},"sort_keys_within_each_section_sections_not_reordered":{"summary":"Sort keys within each section (sections not reordered)","value":{"inputIni":"[server]\nport = 8080\nhost = localhost\ndebug = true\n\n[alpha]\n# db host\nhost = local\nport = 90","sortKeys":"true"}},"global_keys_blank_run_collapse_comment_kept_with_key":{"summary":"Global keys, blank-run collapse, comment kept with key","value":{"inputIni":"; Application settings\napp_name=My App\ndebug =true\n\n\n[database]\nport=5432\nhost = localhost\n# main connection\nname= app_db\n\n[cache]\ndriver =redis\nttl=3600","sortKeys":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"normalize_spacing_sort_off":{"summary":"Normalize spacing (sort off)","value":{"tool":"ini-formatter","tool_version":"1.0.2","outputs":{"output":"[server]\nhost = localhost\nport = 8080\n; connection settings\nname = main\n\n[database]\nuser = admin\npassword = \"secret\""},"credits_used":5,"credits_remaining":null}},"sort_keys_within_each_section_sections_not_reordered":{"summary":"Sort keys within each section (sections not reordered)","value":{"tool":"ini-formatter","tool_version":"1.0.2","outputs":{"output":"[server]\ndebug = true\nhost = localhost\nport = 8080\n\n[alpha]\n# db host\nhost = local\nport = 90"},"credits_used":5,"credits_remaining":null}},"global_keys_blank_run_collapse_comment_kept_with_key":{"summary":"Global keys, blank-run collapse, comment kept with key","value":{"tool":"ini-formatter","tool_version":"1.0.2","outputs":{"output":"; Application settings\napp_name = My App\ndebug = true\n\n[database]\nport = 5432\nhost = localhost\n# main connection\nname = app_db\n\n[cache]\ndriver = redis\nttl = 3600"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted INI"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/java-code-formatter":{"post":{"operationId":"run_java_code_formatter","summary":"Java Code Formatter","tags":["Formatters"],"description":"Format and beautify Java source code — re-indent by brace depth, normalize operator spacing, choose K&R or Allman brace style, and sort & group imports (java, javax, third-party, static).\n\n[Try Java Code Formatter in your browser →](https://iotools.cloud/tool/java-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"javaInput":{"type":"string","description":"Java Code"},"indent":{"enum":["2","4","8","tab"],"description":"Indent"},"braceStyle":{"enum":["attach","allman"],"description":"Brace Style"},"sortImports":{"type":"boolean","description":"Sort and group imports (java, javax, third-party, static)"},"normalizeBlankLines":{"type":"boolean","description":"Normalize blank lines (collapse long runs of blank lines)"}},"required":[]},"examples":{"format_a_class_with_unsorted_imports_2_spaces_k_r":{"summary":"Format a class with unsorted imports (2 spaces, K&R)","value":{"javaInput":"import java.util.List;\nimport java.io.IOException;\nimport java.util.ArrayList;\n\npublic class   Greeter {\nprivate   final   List<String>   names;\npublic Greeter(){\nthis.names=new ArrayList<>();\n}\npublic void add(String name){\nif(name!=null&&!name.isEmpty()){\nnames.add(name);\n}\n}\n}","indent":"2","braceStyle":"attach","sortImports":"true","normalizeBlankLines":"true"}},"allman_brace_style_4_spaces":{"summary":"Allman brace style, 4 spaces","value":{"javaInput":"public class Box{\nprivate int n;\npublic Box(int n){this.n=n;}\npublic int get(){return n;}\n}","indent":"4","braceStyle":"allman","sortImports":"","normalizeBlankLines":"true"}},"tabs_indent_k_r_braces":{"summary":"Tabs indent, K&R braces","value":{"javaInput":"public class Box{\nprivate int n;\npublic Box(int n){this.n=n;}\npublic int get(){return n;}\n}","indent":"tab","braceStyle":"attach","sortImports":"true","normalizeBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_class_with_unsorted_imports_2_spaces_k_r":{"summary":"Format a class with unsorted imports (2 spaces, K&R)","value":{"tool":"java-code-formatter","tool_version":"1.0.2","outputs":{"output":"import java.io.IOException;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Greeter {\n  private final List<String> names;\n  public Greeter() {\n    this.names = new ArrayList<>();\n  }\n  public void add(String name) {\n    if (name != null && !name.isEmpty()) {\n      names.add(name);\n    }\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"allman_brace_style_4_spaces":{"summary":"Allman brace style, 4 spaces","value":{"tool":"java-code-formatter","tool_version":"1.0.2","outputs":{"output":"public class Box\n{\n    private int n;\n    public Box(int n) {this.n = n;}\n    public int get() {return n;}\n}\n"},"credits_used":5,"credits_remaining":null}},"tabs_indent_k_r_braces":{"summary":"Tabs indent, K&R braces","value":{"tool":"java-code-formatter","tool_version":"1.0.2","outputs":{"output":"public class Box{\n\tprivate int n;\n\tpublic Box(int n) {this.n = n;}\n\tpublic int get() {return n;}\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/java-properties-file-formatter":{"post":{"operationId":"run_java_properties_file_formatter","summary":"Java .properties File Formatter","tags":["Formatters"],"description":"Format and beautify Java .properties files. Normalizes key=value / key:value / whitespace separators to a consistent one, fixes spacing, joins backslash line continuations, and preserves comments and \\uXXXX escapes. Optionally sort keys, align separators, remove duplicates, or strip comments.\n\n[Try Java .properties File Formatter in your browser →](https://iotools.cloud/tool/java-properties-file-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputProps":{"type":"string","description":".properties Content"},"separator":{"enum":["equals","colon","preserve"],"description":"Separator"},"spacing":{"enum":["spaced","compact"],"description":"Spacing around separator"},"commentStyle":{"enum":["preserve","hash","bang","strip"],"description":"Comments"},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically"},"removeDuplicateKeys":{"type":"boolean","description":"Remove duplicate keys (keep last occurrence)"},"alignKeys":{"type":"boolean","description":"Align separators into a column"},"collapseBlankLines":{"type":"boolean","description":"Collapse multiple blank lines"}},"required":[]},"examples":{"normalize_mixed_separators_whitespace_and_spacing":{"summary":"Normalize mixed separators (=, :, whitespace) and spacing","value":{"inputProps":"# Spring Boot application properties\n! alternative comment style\nspring.application.name=demo\nspring.profiles.active : dev\nserver.port   8080\n\n# Database configuration\nspring.datasource.url=jdbc:postgresql://localhost:5432/mydb\nspring.datasource.username = admin\nlogging.pattern.console = %d{HH:mm:ss} \\\n  [%thread] %-5level %msg%n\napp.welcome.message=Hello \\u00e9 caf\\u00e9","separator":"equals","spacing":"spaced","commentStyle":"preserve","sortKeys":"","removeDuplicateKeys":"","alignKeys":"","collapseBlankLines":"true"}},"sort_keys_and_align_separators_into_a_column":{"summary":"Sort keys and align separators into a column","value":{"inputProps":"zebra=1\nalpha=22\nmid=333","separator":"equals","spacing":"spaced","commentStyle":"preserve","sortKeys":"true","removeDuplicateKeys":"","alignKeys":"true","collapseBlankLines":"true"}},"strip_comments_drop_duplicate_keys_join_line_continuation":{"summary":"Strip comments, drop duplicate keys, join line continuation","value":{"inputProps":"# comment to strip\n! another comment\nkey.a=first\nkey.b=long \\\nvalue\nkey.a=second","separator":"equals","spacing":"spaced","commentStyle":"strip","sortKeys":"","removeDuplicateKeys":"true","alignKeys":"","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"normalize_mixed_separators_whitespace_and_spacing":{"summary":"Normalize mixed separators (=, :, whitespace) and spacing","value":{"tool":"java-properties-file-formatter","tool_version":"1.0.2","outputs":{"output":"# Spring Boot application properties\n! alternative comment style\nspring.application.name = demo\nspring.profiles.active = dev\nserver.port = 8080\n\n# Database configuration\nspring.datasource.url = jdbc:postgresql://localhost:5432/mydb\nspring.datasource.username = admin\nlogging.pattern.console = %d{HH:mm:ss} [%thread] %-5level %msg%n\napp.welcome.message = Hello \\u00e9 caf\\u00e9"},"credits_used":5,"credits_remaining":null}},"sort_keys_and_align_separators_into_a_column":{"summary":"Sort keys and align separators into a column","value":{"tool":"java-properties-file-formatter","tool_version":"1.0.2","outputs":{"output":"alpha = 22\nmid   = 333\nzebra = 1"},"credits_used":5,"credits_remaining":null}},"strip_comments_drop_duplicate_keys_join_line_continuation":{"summary":"Strip comments, drop duplicate keys, join line continuation","value":{"tool":"java-properties-file-formatter","tool_version":"1.0.2","outputs":{"output":"key.b = long value\nkey.a = second"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted .properties"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/javascript-code-formatter":{"post":{"operationId":"run_javascript_code_formatter","summary":"JavaScript Code Formatter","tags":["Formatters"],"description":"Format and beautify messy or minified JavaScript — re-indent by brace depth, normalize spacing and quotes, pick 1TBS or Allman braces, and control semicolons and trailing commas. Runs entirely in your browser.\n\n[Try JavaScript Code Formatter in your browser →](https://iotools.cloud/tool/javascript-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsInput":{"type":"string","description":"JavaScript Code"},"indentStyle":{"enum":["2sp","4sp","tab"],"description":"Indentation"},"quoteStyle":{"enum":["single","double","preserve"],"description":"Quotes"},"semicolons":{"enum":["always","never","preserve"],"description":"Semicolons"},"braceStyle":{"enum":["attach","allman"],"description":"Brace Style"},"trailingComma":{"enum":["none","es5","all"],"description":"Trailing Commas"},"printWidth":{"type":"number","description":"Print Width","minimum":40,"maximum":200},"collapseBlankLines":{"type":"boolean","description":"Collapse 2+ blank lines into a single blank line"}},"required":[]},"examples":{"beautify_a_minified_snippet_2_spaces_single_quotes_1tbs":{"summary":"Beautify a minified snippet (2 spaces, single quotes, 1TBS)","value":{"jsInput":"const config={mode:\"production\",target:\"es2020\"};function greet(name){if(!name){return \"Hi\"}return \"Hi \"+name}","indentStyle":"2sp","quoteStyle":"single","semicolons":"always","braceStyle":"attach","trailingComma":"es5","printWidth":"80","collapseBlankLines":"true"}},"allman_braces_4_spaces_double_quotes":{"summary":"Allman braces, 4 spaces, double quotes","value":{"jsInput":"function max(a,b){if(a>b){return a}return b}","indentStyle":"4sp","quoteStyle":"double","semicolons":"always","braceStyle":"allman","trailingComma":"es5","printWidth":"80","collapseBlankLines":"true"}},"omit_semicolons_tab_indent":{"summary":"Omit semicolons, tab indent","value":{"jsInput":"const nums=[1,2,3];const isEven=n=>n%2===0;const evens=nums.filter(isEven)","indentStyle":"tab","quoteStyle":"single","semicolons":"never","braceStyle":"attach","trailingComma":"none","printWidth":"80","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"beautify_a_minified_snippet_2_spaces_single_quotes_1tbs":{"summary":"Beautify a minified snippet (2 spaces, single quotes, 1TBS)","value":{"tool":"javascript-code-formatter","tool_version":"1.0.2","outputs":{"output":"const config = { mode: 'production', target: 'es2020' };\nfunction greet(name) {\n  if (!name) {\n    return 'Hi';\n  }\n  return 'Hi ' + name;\n}\n"},"credits_used":5,"credits_remaining":null}},"allman_braces_4_spaces_double_quotes":{"summary":"Allman braces, 4 spaces, double quotes","value":{"tool":"javascript-code-formatter","tool_version":"1.0.2","outputs":{"output":"function max(a, b)\n{\n    if (a > b)\n    {\n        return a;\n    }\n    return b;\n}\n"},"credits_used":5,"credits_remaining":null}},"omit_semicolons_tab_indent":{"summary":"Omit semicolons, tab indent","value":{"tool":"javascript-code-formatter","tool_version":"1.0.2","outputs":{"output":"const nums = [1, 2, 3]\nconst isEven = n => n % 2 === 0\nconst evens = nums.filter(isEven)\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/javascript-escape-unescape":{"post":{"operationId":"run_javascript_escape_unescape","summary":"JavaScript Escape / Unescape","tags":["Formatters"],"description":"Escape a string into a JavaScript string-literal-safe form (backslash-escaping quotes, backslashes, newlines, tabs, and control characters) or unescape JS escape sequences (\\n, \\t, \\xHH, \\uHHHH, \\u{...}) back into plain text.\n\n[Try JavaScript Escape / Unescape in your browser →](https://iotools.cloud/tool/javascript-escape-unescape/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["escape","unescape"],"description":"Mode"}},"required":[]},"examples":{"escape_quotes_newline_and_tab":{"summary":"Escape quotes, newline and tab","value":{"inputText":"He said \"Hi\"\n\t'bye'\\done","mode":"escape"}},"unescape_back_to_plain_text":{"summary":"Unescape back to plain text","value":{"inputText":"He said \\\"Hi\\\"\\n\\t\\'bye\\'\\\\done","mode":"unescape"}},"unescape_unicode_escapes":{"summary":"Unescape Unicode escapes","value":{"inputText":"caf\\u00e9 \\u{1F600} tab\\x09end","mode":"unescape"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"escape_quotes_newline_and_tab":{"summary":"Escape quotes, newline and tab","value":{"tool":"javascript-escape-unescape","tool_version":"1.0.2","outputs":{"output":"He said \\\"Hi\\\"\\n\\t\\'bye\\'\\\\done"},"credits_used":5,"credits_remaining":null}},"unescape_back_to_plain_text":{"summary":"Unescape back to plain text","value":{"tool":"javascript-escape-unescape","tool_version":"1.0.2","outputs":{"output":"He said \"Hi\"\n\t'bye'\\done"},"credits_used":5,"credits_remaining":null}},"unescape_unicode_escapes":{"summary":"Unescape Unicode escapes","value":{"tool":"javascript-escape-unescape","tool_version":"1.0.2","outputs":{"output":"café 😀 tab\tend"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/javascript-minifier":{"post":{"operationId":"run_javascript_minifier","summary":"JavaScript Minifier","tags":["Formatters"],"description":"Minify JavaScript by stripping comments and every byte of unnecessary whitespace. Strings, template literals and regular expressions are left byte-identical, and line breaks that Automatic Semicolon Insertion depends on are preserved.\n\n[Try JavaScript Minifier in your browser →](https://iotools.cloud/tool/javascript-minifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"js":{"type":"string","description":"JavaScript"},"removeComments":{"type":"boolean","description":"Remove comments"},"keepLicense":{"type":"boolean","description":"Keep license comments"}},"required":[]},"examples":{"minify_a_function":{"summary":"Minify a function","value":{"js":"function hello(name) {\n  return `Hello, ${name}!`;\n}\n\nconsole.log(hello(`World`));","removeComments":"true","keepLicense":"true"}},"tricky_regex_literals_and_inside_strings":{"summary":"Tricky: regex literals and // inside strings","value":{"js":"/*! iotools v1 */\n// strip this line comment\nconst re = /https?:\\/\\/[^\\s\"]+/g;   // matches URLs\nconst url = \"https://example.com//double\";\nconst div = 10 / 2 / 1;\nfunction check(s) {\n  return re.test(s) ? \"yes\" : \"no\"; /* trailing block */\n}\ncheck(url);","removeComments":"true","keepLicense":"true"}},"tricky_no_semicolons_asi_must_survive":{"summary":"Tricky: no semicolons (ASI must survive)","value":{"js":"function f(a) {\n  let b = a\n  b = b + 1\n  return b\n}\nconst out = f(1)\nout","removeComments":"true","keepLicense":"true"}},"keep_all_comments":{"summary":"Keep all comments","value":{"js":"// header\nconst a = 1; /* inline */\nconst b = a + 1;","removeComments":"","keepLicense":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"minify_a_function":{"summary":"Minify a function","value":{"tool":"javascript-minifier","tool_version":"1.0.2","outputs":{"output":"function hello(name){return`Hello, ${name}!`;}\nconsole.log(hello(`World`));"},"credits_used":5,"credits_remaining":null}},"tricky_regex_literals_and_inside_strings":{"summary":"Tricky: regex literals and // inside strings","value":{"tool":"javascript-minifier","tool_version":"1.0.2","outputs":{"output":"/*! iotools v1 */const re=/https?:\\/\\/[^\\s\"]+/g;const url=\"https://example.com//double\";const div=10/2/1;function check(s){return re.test(s)?\"yes\":\"no\";}\ncheck(url);"},"credits_used":5,"credits_remaining":null}},"tricky_no_semicolons_asi_must_survive":{"summary":"Tricky: no semicolons (ASI must survive)","value":{"tool":"javascript-minifier","tool_version":"1.0.2","outputs":{"output":"function f(a){let b=a\nb=b+1\nreturn b}\nconst out=f(1)\nout"},"credits_used":5,"credits_remaining":null}},"keep_all_comments":{"summary":"Keep all comments","value":{"tool":"javascript-minifier","tool_version":"1.0.2","outputs":{"output":"// header\nconst a=1;/* inline */const b=a+1;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Minified JavaScript"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-escape-unescape":{"post":{"operationId":"run_json_escape_unescape","summary":"JSON Escape / Unescape","tags":["Formatters"],"description":"Escape text into a safe JSON string value, or unescape a JSON-escaped string back to raw text. Uses the exact rules of the JSON spec (RFC 8259): quotes, backslashes, and every control character are escaped. Toggle whether the output is wrapped in double quotes as a full JSON string literal.\n\n[Try JSON Escape / Unescape in your browser →](https://iotools.cloud/tool/json-escape-unescape/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"mode":{"enum":["escape","unescape"],"description":"Mode"},"wrapQuotes":{"type":"boolean","description":"Wrap output in double quotes (full JSON string literal)"}},"required":[]},"examples":{"escape_quotes_newline_tab_non_ascii":{"summary":"Escape (quotes, newline, tab, non-ASCII)","value":{"inputText":"Hello \"World\"\n\tCafé","mode":"escape","wrapQuotes":""}},"unescape_back_to_raw_text":{"summary":"Unescape back to raw text","value":{"inputText":"Hello \\\"World\\\"\\n\\tCafé","mode":"unescape","wrapQuotes":""}},"escape_wrapped_as_a_full_json_string_literal":{"summary":"Escape wrapped as a full JSON string literal","value":{"inputText":"Say \"hi\"","mode":"escape","wrapQuotes":"true"}},"unescape_a_full_json_string_literal":{"summary":"Unescape a full JSON string literal","value":{"inputText":"\"Say \\\"hi\\\"\"","mode":"unescape","wrapQuotes":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"escape_quotes_newline_tab_non_ascii":{"summary":"Escape (quotes, newline, tab, non-ASCII)","value":{"tool":"json-escape-unescape","tool_version":"1.0.2","outputs":{"output":"Hello \\\"World\\\"\\n\\tCafé"},"credits_used":5,"credits_remaining":null}},"unescape_back_to_raw_text":{"summary":"Unescape back to raw text","value":{"tool":"json-escape-unescape","tool_version":"1.0.2","outputs":{"output":"Hello \"World\"\n\tCafé"},"credits_used":5,"credits_remaining":null}},"escape_wrapped_as_a_full_json_string_literal":{"summary":"Escape wrapped as a full JSON string literal","value":{"tool":"json-escape-unescape","tool_version":"1.0.2","outputs":{"output":"\"Say \\\"hi\\\"\""},"credits_used":5,"credits_remaining":null}},"unescape_a_full_json_string_literal":{"summary":"Unescape a full JSON string literal","value":{"tool":"json-escape-unescape","tool_version":"1.0.2","outputs":{"output":"Say \"hi\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-flattener":{"post":{"operationId":"run_json_flattener","summary":"JSON Flattener","tags":["Formatters"],"description":"Flatten nested JSON into a single-level object with dot-and-bracket path keys (user.roles[0]), or unflatten flat keys back into nested JSON. Pick the key delimiter and get pretty-printed output.\n\n[Try JSON Flattener in your browser →](https://iotools.cloud/tool/json-flattener/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"JSON input"},"mode":{"enum":["flatten","unflatten"],"description":"Mode"},"delimiter":{"enum":[".","_","/"],"description":"Key delimiter"}},"required":[]},"examples":{"flatten_a_nested_object":{"summary":"Flatten a nested object","value":{"input":"{\"user\":{\"name\":\"Ada\",\"roles\":[\"admin\",\"dev\"]},\"active\":true}","mode":"flatten","delimiter":"."}},"flatten_a_nested_array":{"summary":"Flatten a nested array","value":{"input":"[{\"id\":1,\"tags\":[\"x\",\"y\"]},{\"id\":2,\"tags\":[\"z\"]}]","mode":"flatten","delimiter":"."}},"unflatten_back_to_nested_json":{"summary":"Unflatten back to nested JSON","value":{"input":"{\"user.name\":\"Ada\",\"user.roles[0]\":\"admin\",\"user.roles[1]\":\"dev\",\"active\":true}","mode":"unflatten","delimiter":"."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flatten_a_nested_object":{"summary":"Flatten a nested object","value":{"tool":"json-flattener","tool_version":"1.0.2","outputs":{"output":"{\n  \"user.name\": \"Ada\",\n  \"user.roles[0]\": \"admin\",\n  \"user.roles[1]\": \"dev\",\n  \"active\": true\n}"},"credits_used":5,"credits_remaining":null}},"flatten_a_nested_array":{"summary":"Flatten a nested array","value":{"tool":"json-flattener","tool_version":"1.0.2","outputs":{"output":"{\n  \"[0].id\": 1,\n  \"[0].tags[0]\": \"x\",\n  \"[0].tags[1]\": \"y\",\n  \"[1].id\": 2,\n  \"[1].tags[0]\": \"z\"\n}"},"credits_used":5,"credits_remaining":null}},"unflatten_back_to_nested_json":{"summary":"Unflatten back to nested JSON","value":{"tool":"json-flattener","tool_version":"1.0.2","outputs":{"output":"{\n  \"user\": {\n    \"name\": \"Ada\",\n    \"roles\": [\n      \"admin\",\n      \"dev\"\n    ]\n  },\n  \"active\": true\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-schema-validator":{"post":{"operationId":"run_json_schema_validator","summary":"JSON Schema Validator","tags":["Formatters"],"description":"Validate a JSON document against a JSON Schema (Draft-07) and get every rule violation listed by its JSON-pointer path — missing required keys, wrong types, out-of-range numbers, failed patterns, enums, $ref definitions and oneOf/anyOf/allOf combinators. Runs entirely in your browser.\n\n[Try JSON Schema Validator in your browser →](https://iotools.cloud/tool/json-schema-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON data"},"schemaInput":{"type":"string","description":"JSON Schema"}},"required":[]},"examples":{"valid_document":{"summary":"Valid document","value":{"jsonInput":"{\"name\":\"Ada\",\"age\":30}","schemaInput":"{\"type\":\"object\",\"required\":[\"name\",\"age\"],\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"integer\",\"minimum\":0}}}"}},"missing_required_key_and_value_below_minimum":{"summary":"Missing required key and value below minimum","value":{"jsonInput":"{\"age\":-1}","schemaInput":"{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\",\"minimum\":0}}}"}},"enum_type_and_additionalproperties":{"summary":"Enum, type and additionalProperties","value":{"jsonInput":"{\"role\":\"guest\",\"age\":\"old\",\"extra\":1}","schemaInput":"{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"role\":{\"enum\":[\"admin\",\"user\"]},\"age\":{\"type\":\"integer\"}}}"}},"array_item_validation":{"summary":"Array item validation","value":{"jsonInput":"{\"tags\":[\"ok\",\"\",5]}","schemaInput":"{\"type\":\"object\",\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"minLength\":1}}}}"}},"ref_into_definitions_is_actually_resolved":{"summary":"$ref into definitions is actually resolved","value":{"jsonInput":"{\"user\":{\"age\":\"not-a-number\"}}","schemaInput":"{\"type\":\"object\",\"properties\":{\"user\":{\"$ref\":\"#/definitions/User\"}},\"definitions\":{\"User\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"age\":{\"type\":\"integer\"}}}}}"}},"oneof_and_const_are_enforced":{"summary":"oneOf and const are enforced","value":{"jsonInput":"{\"v\":true,\"kind\":\"WRONG\"}","schemaInput":"{\"type\":\"object\",\"properties\":{\"v\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"kind\":{\"const\":\"fixed\"}}}"}},"patternproperties_exempts_a_key_from_additionalproperties":{"summary":"patternProperties exempts a key from additionalProperties","value":{"jsonInput":"{\"x_1\":1}","schemaInput":"{\"type\":\"object\",\"patternProperties\":{\"^x_\":{\"type\":\"integer\"}},\"additionalProperties\":false}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_document":{"summary":"Valid document","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Valid — the JSON matches the schema.","errors":[]},"credits_used":5,"credits_remaining":null}},"missing_required_key_and_value_below_minimum":{"summary":"Missing required key and value below minimum","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid — 2 errors found.","errors":[{"path":"/name","rule":"required","message":"Missing required property \"name\""},{"path":"/age","rule":"minimum","message":"Value -1 is less than minimum 0"}]},"credits_used":5,"credits_remaining":null}},"enum_type_and_additionalproperties":{"summary":"Enum, type and additionalProperties","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid — 3 errors found.","errors":[{"path":"/role","rule":"enum","message":"Value must be one of: \"admin\", \"user\""},{"path":"/age","rule":"type","message":"Expected type integer but got string"},{"path":"/extra","rule":"additionalProperties","message":"Property \"extra\" is not allowed"}]},"credits_used":5,"credits_remaining":null}},"array_item_validation":{"summary":"Array item validation","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid — 2 errors found.","errors":[{"path":"/tags/1","rule":"minLength","message":"String is too short (0 chars); minimum is 1"},{"path":"/tags/2","rule":"type","message":"Expected type string but got integer"}]},"credits_used":5,"credits_remaining":null}},"ref_into_definitions_is_actually_resolved":{"summary":"$ref into definitions is actually resolved","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid — 2 errors found.","errors":[{"path":"/user/name","rule":"required","message":"Missing required property \"name\""},{"path":"/user/age","rule":"type","message":"Expected type integer but got string"}]},"credits_used":5,"credits_remaining":null}},"oneof_and_const_are_enforced":{"summary":"oneOf and const are enforced","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Invalid — 2 errors found.","errors":[{"path":"/v","rule":"oneOf","message":"Value does not match any of the 2 allowed schemas (oneOf)"},{"path":"/kind","rule":"const","message":"Value must be exactly \"fixed\""}]},"credits_used":5,"credits_remaining":null}},"patternproperties_exempts_a_key_from_additionalproperties":{"summary":"patternProperties exempts a key from additionalProperties","value":{"tool":"json-schema-validator","tool_version":"1.0.2","outputs":{"summary":"Valid — the JSON matches the schema.","errors":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"errors":{"type":"array","description":"Violations","items":{"type":"object","properties":{"path":{"type":"string","description":"Path"},"rule":{"type":"string","description":"Rule"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["path","rule","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-ld-formatter-validator":{"post":{"operationId":"run_json_ld_formatter_validator","summary":"JSON-LD Formatter & Validator","tags":["Formatters"],"description":"Format, beautify and validate JSON-LD structured data — paste raw JSON or a full &lt;script> tag and check @context, @type and the required properties Google needs for Article, Product, FAQPage, BreadcrumbList, LocalBusiness, Event and more. Runs entirely in your browser.\n\n[Try JSON-LD Formatter & Validator in your browser →](https://iotools.cloud/tool/json-ld-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonLdInput":{"type":"string","description":"JSON-LD (raw JSON or a full &lt;script> tag)"}},"required":[]},"examples":{"article_pasted_as_a_script_tag":{"summary":"Article (pasted as a <script> tag)","value":{"jsonLdInput":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"How to validate JSON-LD\",\n  \"image\": \"https://example.com/cover.jpg\",\n  \"datePublished\": \"2026-08-01\",\n  \"author\": { \"@type\": \"Person\", \"name\": \"Ada Lovelace\" }\n}\n</script>"}},"product_missing_a_required_property":{"summary":"Product — missing a required property","value":{"jsonLdInput":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Wireless Mouse\",\n  \"offers\": { \"@type\": \"Offer\", \"priceCurrency\": \"USD\" }\n}"}},"faqpage":{"summary":"FAQPage","value":{"jsonLdInput":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is this free?\",\n      \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes.\" }\n    }\n  ]\n}"}},"breadcrumblist":{"summary":"BreadcrumbList","value":{"jsonLdInput":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"https://example.com/\" },\n    { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Tools\", \"item\": \"https://example.com/tools/\" }\n  ]\n}"}},"localbusiness":{"summary":"LocalBusiness","value":{"jsonLdInput":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Restaurant\",\n  \"name\": \"Ada's Kitchen\",\n  \"address\": \"123 Main St, Springfield\"\n}"}},"event":{"summary":"Event","value":{"jsonLdInput":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Event\",\n  \"name\": \"Product Launch\",\n  \"startDate\": \"2026-09-01T18:00\",\n  \"location\": { \"@type\": \"Place\", \"name\": \"Main Hall\" }\n}"}},"graph_with_a_bad_context":{"summary":"@graph with a bad @context","value":{"jsonLdInput":"{\n  \"@context\": \"https://example.org\",\n  \"@graph\": [\n    { \"@type\": \"Organization\", \"name\": \"iotools\", \"url\": \"https://iotools.cloud\" }\n  ]\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"article_pasted_as_a_script_tag":{"summary":"Article (pasted as a <script> tag)","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"✅ 1 node found (Article). Eligible for the Article rich result. No problems found.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Article\",\n  \"headline\": \"How to validate JSON-LD\",\n  \"image\": \"https://example.com/cover.jpg\",\n  \"datePublished\": \"2026-08-01\",\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Ada Lovelace\"\n  }\n}","checks":[{"node":"Article","property":"@context","requirement":"Structure","result":"OK"},{"node":"Article","property":"@type \"Article\"","requirement":"Structure","result":"OK"},{"node":"Article","property":"headline","requirement":"Required","result":"Present"},{"node":"Article","property":"image","requirement":"Required","result":"Present"},{"node":"Article","property":"datePublished","requirement":"Required","result":"Present"},{"node":"Article","property":"author.name","requirement":"Required","result":"Present"},{"node":"Article","property":"dateModified","requirement":"Recommended","result":"Not set"},{"node":"Article","property":"publisher.name","requirement":"Recommended","result":"Not set"}]},"credits_used":5,"credits_remaining":null}},"product_missing_a_required_property":{"summary":"Product — missing a required property","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"❌ 1 node found (Product). 2 problems found — see the table below.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Wireless Mouse\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"priceCurrency\": \"USD\"\n  }\n}","checks":[{"node":"Product","property":"@context","requirement":"Structure","result":"OK"},{"node":"Product","property":"@type \"Product\"","requirement":"Structure","result":"OK"},{"node":"Product","property":"name","requirement":"Required","result":"Present"},{"node":"Product","property":"image","requirement":"Required","result":"Missing"},{"node":"Product","property":"offers.price","requirement":"Required","result":"Missing"},{"node":"Product","property":"offers.priceCurrency","requirement":"Required","result":"Present"},{"node":"Product","property":"brand.name","requirement":"Recommended","result":"Not set"},{"node":"Product","property":"aggregateRating","requirement":"Recommended","result":"Not set"}]},"credits_used":5,"credits_remaining":null}},"faqpage":{"summary":"FAQPage","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"✅ 1 node found (FAQPage). Eligible for the FAQPage rich result. No problems found.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Is this free?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes.\"\n      }\n    }\n  ]\n}","checks":[{"node":"FAQPage","property":"@context","requirement":"Structure","result":"OK"},{"node":"FAQPage","property":"@type \"FAQPage\"","requirement":"Structure","result":"OK"},{"node":"FAQPage","property":"mainEntity (question + answer)","requirement":"Required","result":"Present"}]},"credits_used":5,"credits_remaining":null}},"breadcrumblist":{"summary":"BreadcrumbList","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"✅ 1 node found (BreadcrumbList). Eligible for the BreadcrumbList rich result. No problems found.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"https://example.com/\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"Tools\",\n      \"item\": \"https://example.com/tools/\"\n    }\n  ]\n}","checks":[{"node":"BreadcrumbList","property":"@context","requirement":"Structure","result":"OK"},{"node":"BreadcrumbList","property":"@type \"BreadcrumbList\"","requirement":"Structure","result":"OK"},{"node":"BreadcrumbList","property":"itemListElement (2 or more)","requirement":"Required","result":"Present"}]},"credits_used":5,"credits_remaining":null}},"localbusiness":{"summary":"LocalBusiness","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"✅ 1 node found (Restaurant). Eligible for the LocalBusiness rich result. No problems found.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Restaurant\",\n  \"name\": \"Ada's Kitchen\",\n  \"address\": \"123 Main St, Springfield\"\n}","checks":[{"node":"Restaurant","property":"@context","requirement":"Structure","result":"OK"},{"node":"Restaurant","property":"@type \"Restaurant\"","requirement":"Structure","result":"OK"},{"node":"Restaurant","property":"name","requirement":"Required","result":"Present"},{"node":"Restaurant","property":"address","requirement":"Required","result":"Present"},{"node":"Restaurant","property":"image","requirement":"Recommended","result":"Not set"},{"node":"Restaurant","property":"telephone","requirement":"Recommended","result":"Not set"},{"node":"Restaurant","property":"openingHoursSpecification","requirement":"Recommended","result":"Not set"},{"node":"Restaurant","property":"priceRange","requirement":"Recommended","result":"Not set"}]},"credits_used":5,"credits_remaining":null}},"event":{"summary":"Event","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"✅ 1 node found (Event). Eligible for the Event rich result. No problems found.","formatted":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Event\",\n  \"name\": \"Product Launch\",\n  \"startDate\": \"2026-09-01T18:00\",\n  \"location\": {\n    \"@type\": \"Place\",\n    \"name\": \"Main Hall\"\n  }\n}","checks":[{"node":"Event","property":"@context","requirement":"Structure","result":"OK"},{"node":"Event","property":"@type \"Event\"","requirement":"Structure","result":"OK"},{"node":"Event","property":"name","requirement":"Required","result":"Present"},{"node":"Event","property":"startDate","requirement":"Required","result":"Present"},{"node":"Event","property":"location","requirement":"Required","result":"Present"},{"node":"Event","property":"image","requirement":"Recommended","result":"Not set"},{"node":"Event","property":"offers","requirement":"Recommended","result":"Not set"}]},"credits_used":5,"credits_remaining":null}},"graph_with_a_bad_context":{"summary":"@graph with a bad @context","value":{"tool":"json-ld-formatter-validator","tool_version":"1.0.2","outputs":{"summary":"⚠️ 1 node found (Organization). Eligible for the Organization rich result. 1 warning — see the table below.","formatted":"{\n  \"@context\": \"https://example.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Organization\",\n      \"name\": \"iotools\",\n      \"url\": \"https://iotools.cloud\"\n    }\n  ]\n}","checks":[{"node":"Organization","property":"@context","requirement":"Structure","result":"Not schema.org"},{"node":"Organization","property":"@type \"Organization\"","requirement":"Structure","result":"OK"},{"node":"Organization","property":"name","requirement":"Required","result":"Present"},{"node":"Organization","property":"url","requirement":"Required","result":"Present"},{"node":"Organization","property":"logo","requirement":"Recommended","result":"Not set"},{"node":"Organization","property":"sameAs","requirement":"Recommended","result":"Not set"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"formatted":{"type":"string","description":"Formatted JSON-LD"},"checks":{"type":"array","description":"Validation checklist","items":{"type":"object","properties":{"node":{"type":"string","description":"Node"},"property":{"type":"string","description":"Property"},"requirement":{"type":"string","description":"Requirement"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["node","property","requirement","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/graphql-schema-formatter":{"post":{"operationId":"run_graphql_schema_formatter","summary":"GraphQL Schema Formatter","tags":["Formatters"],"description":"Validate and reformat GraphQL SDL (Schema Definition Language) — type, interface, enum, input, scalar, union and directive definitions. Reports the exact syntax error and line/column on invalid schemas, and reprints valid ones with consistent 2- or 4-space indentation, optionally sorting types and fields alphabetically.\n\n[Try GraphQL Schema Formatter in your browser →](https://iotools.cloud/tool/graphql-schema-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"graphqlInput":{"type":"string","description":"GraphQL Schema (SDL)"},"indentWidth":{"enum":["2","4"],"description":"Indent Width"},"sortAlphabetically":{"type":"boolean","description":"Sort Types & Fields Alphabetically"}},"required":[]},"examples":{"format_a_valid_schema":{"summary":"Format a valid schema","value":{"graphqlInput":"\"\"\"\nA simple blog API schema.\n\"\"\"\nschema {\n  query: Query\n  mutation: Mutation\n}\n\n\"Supported post status values\"\nenum PostStatus {\n  DRAFT\n  PUBLISHED\n  ARCHIVED\n}\n\ntype Post {\n  id: ID!\n  title: String!\n  status: PostStatus!\n  author: User!\n}\n\ntype User {\n  id: ID!\n  name: String!\n  posts: [Post!]!\n}\n\ntype Query {\n  post(id: ID!): Post\n  posts(status: PostStatus): [Post!]!\n}\n\ntype Mutation {\n  createPost(title: String!, authorId: ID!): Post!\n}\n","indentWidth":"2","sortAlphabetically":""}},"syntax_error_missing_colon":{"summary":"Syntax error (missing colon)","value":{"graphqlInput":"type Post {\n  id: ID!\n  title String!\n  status: PostStatus!\n}\n","indentWidth":"2","sortAlphabetically":""}},"directive_union_sorted_4_space_indent":{"summary":"Directive + union, sorted, 4-space indent","value":{"graphqlInput":"directive @key(fields: String!) repeatable on OBJECT | INTERFACE\n\ntype Zebra @key(fields: \"id\") {\n  name: String!\n  id: ID!\n}\n\ntype Apple @key(fields: \"id\") {\n  color: String!\n  id: ID!\n}\n\nunion SearchResult = Zebra | Apple\n","indentWidth":"4","sortAlphabetically":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_valid_schema":{"summary":"Format a valid schema","value":{"tool":"graphql-schema-formatter","tool_version":"1.0.2","outputs":{"output":"\"\"\"A simple blog API schema.\"\"\"\nschema {\n  query: Query\n  mutation: Mutation\n}\n\n\"Supported post status values\"\nenum PostStatus {\n  DRAFT\n  PUBLISHED\n  ARCHIVED\n}\n\ntype Post {\n  id: ID!\n  title: String!\n  status: PostStatus!\n  author: User!\n}\n\ntype User {\n  id: ID!\n  name: String!\n  posts: [Post!]!\n}\n\ntype Query {\n  post(id: ID!): Post\n  posts(status: PostStatus): [Post!]!\n}\n\ntype Mutation {\n  createPost(title: String!, authorId: ID!): Post!\n}\n"},"credits_used":5,"credits_remaining":null}},"syntax_error_missing_colon":{"summary":"Syntax error (missing colon)","value":{"tool":"graphql-schema-formatter","tool_version":"1.0.2","outputs":{"output":"# Error parsing schema:\n# Syntax Error: Expected \":\", found Name \"String\". (line 3, column 9)"},"credits_used":5,"credits_remaining":null}},"directive_union_sorted_4_space_indent":{"summary":"Directive + union, sorted, 4-space indent","value":{"tool":"graphql-schema-formatter","tool_version":"1.0.2","outputs":{"output":"union SearchResult = Zebra | Apple\n\ntype Apple @key(fields: \"id\") {\n    color: String!\n    id: ID!\n}\n\ntype Zebra @key(fields: \"id\") {\n    id: ID!\n    name: String!\n}\n\ndirective @key(fields: String!) repeatable on OBJECT | INTERFACE\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Schema"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/toml-formatter":{"post":{"operationId":"run_toml_formatter","summary":"TOML Formatter","tags":["Formatters"],"description":"Pretty-print and reformat TOML with consistent spacing and table syntax. Optionally sort keys alphabetically, and get a clear error with line/column when the TOML is invalid. Runs entirely in your browser.\n\n[Try TOML Formatter in your browser →](https://iotools.cloud/tool/toml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tomlInput":{"type":"string","description":"TOML input"},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically"}},"required":["tomlInput"]},"examples":{"reformat_messy_cargo_toml_inconsistent_spacing":{"summary":"Reformat messy Cargo.toml (inconsistent spacing)","value":{"tomlInput":"[package]\nname    =   \"my-project\"\nversion=\"0.1.0\"\n  edition = \"2021\"\n\n[dependencies]\nserde={ version = \"1.0\", features=[\"derive\"] }\ntokio    =  \"1\"\nanyhow=\"1.0\"\n\n[[bin]]\nname=\"my-app\"\npath = \"src/main.rs\"\n","sortKeys":""}},"sort_keys_alphabetically":{"summary":"Sort keys alphabetically","value":{"tomlInput":"zebra = \"z-value\"\napple = \"a-value\"\nmango = \"m-value\"\n\n[server]\nport = 8080\nhost = \"localhost\"\ndebug = true\n","sortKeys":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"reformat_messy_cargo_toml_inconsistent_spacing":{"summary":"Reformat messy Cargo.toml (inconsistent spacing)","value":{"tool":"toml-formatter","tool_version":"1.0.2","outputs":{"formattedToml":"[package]\nname = \"my-project\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies]\ntokio = \"1\"\nanyhow = \"1.0\"\n\n[dependencies.serde]\nversion = \"1.0\"\nfeatures = [ \"derive\" ]\n\n[[bin]]\nname = \"my-app\"\npath = \"src/main.rs\""},"credits_used":5,"credits_remaining":null}},"sort_keys_alphabetically":{"summary":"Sort keys alphabetically","value":{"tool":"toml-formatter","tool_version":"1.0.2","outputs":{"formattedToml":"apple = \"a-value\"\nmango = \"m-value\"\nzebra = \"z-value\"\n\n[server]\ndebug = true\nhost = \"localhost\"\nport = 8080"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedToml":{"type":"string","description":"Formatted TOML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/typescript-formatter":{"post":{"operationId":"run_typescript_formatter","summary":"TypeScript Code Formatter","tags":["Formatters"],"description":"Format and beautify TypeScript (.ts/.tsx) source with real Prettier — consistent indentation, quote style, semicolons and trailing commas. Free and private in your browser; also available as a paid API.\n\n[Try TypeScript Code Formatter in your browser →](https://iotools.cloud/tool/typescript-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"TypeScript Code"},"indentWidth":{"enum":["2","4"],"description":"Indent width"},"useTabs":{"type":"boolean","description":"Use tabs instead of spaces"},"semicolons":{"type":"boolean","description":"Add semicolons"},"singleQuote":{"type":"boolean","description":"Use single quotes"},"trailingComma":{"enum":["all","es5","none"],"description":"Trailing commas"},"printWidth":{"type":"number","description":"Print width","minimum":40,"maximum":200}},"required":[]},"examples":{"format_a_messy_interface_function_defaults":{"summary":"Format a messy interface + function (defaults)","value":{"inputText":"interface User{id:number,name:string,active?:boolean}\nfunction greet(user:User):string{return \"Hello, \"+user.name}","indentWidth":"2","useTabs":"","semicolons":"true","singleQuote":"","trailingComma":"all","printWidth":"80"}},"no_semicolons_single_quotes_4_space_indent":{"summary":"No semicolons, single quotes, 4-space indent","value":{"inputText":"const nums:number[]=[1,2,3];const doubled=nums.map((n)=>n*2);export {doubled}","indentWidth":"4","useTabs":"","semicolons":"","singleQuote":"true","trailingComma":"none","printWidth":"80"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/julia-code-formatter":{"post":{"operationId":"run_julia_code_formatter","summary":"Julia Code Formatter","tags":["Formatters"],"description":"Format and beautify Julia (.jl) source — re-indent by end-delimited blocks (function, if, for, struct, module), normalize spacing around operators and after commas, and optionally strip comments and collapse blank lines. Runs entirely in your browser.\n\n[Try Julia Code Formatter in your browser →](https://iotools.cloud/tool/julia-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"juliaInput":{"type":"string","description":"Julia Code"},"indentStyle":{"enum":["4","2","tab"],"description":"Indent Style"},"spaceAroundOps":{"type":"boolean","description":"Spaces around binary operators (=, +, -, *, /, ==, ...)"},"preserveComments":{"type":"boolean","description":"Preserve comments"},"collapseBlankLines":{"type":"boolean","description":"Collapse multiple blank lines into one"}},"required":[]},"examples":{"re_indent_a_module_4_spaces_spaces_around_operators":{"summary":"Re-indent a module (4 spaces, spaces around operators)","value":{"juliaInput":"module Geometry\n\nabstract type Shape end\n\nstruct Circle<:Shape\nradius::Float64\nend\n\nfunction area(c::Circle)\nreturn π*c.radius^2\nend\n\nfunction describe(s::Shape)\na=area(s)\nif a>100\nprintln(\"Big shape with area=$a\")\nelseif a>10\nprintln(\"Medium shape\")\nelse\nprintln(\"Small shape\")\nend\nend\n\nend","indentStyle":"4","spaceAroundOps":"true","preserveComments":"true","collapseBlankLines":"true"}},"format_a_for_loop_function_2_spaces":{"summary":"Format a for-loop function (2 spaces)","value":{"juliaInput":"function fib(n)\na=0\nb=1\nfor i in 1:n\na,b=b,a+b\nend\nreturn a\nend","indentStyle":"2","spaceAroundOps":"true","preserveComments":"true","collapseBlankLines":"true"}},"tight_operators_tab_indent":{"summary":"Tight operators, tab indent","value":{"juliaInput":"x=collect(1:10)\ny=map(v->v^2+1,x)\ntotal=sum(y)/length(y)","indentStyle":"tab","spaceAroundOps":"","preserveComments":"true","collapseBlankLines":"true"}},"strings_interpolation_end_index_and_ternary_are_preserved":{"summary":"Strings, interpolation, end-index and ternary are preserved","value":{"juliaInput":"function f(x)\ny = x[1:end-1]\ns = \"keep    spaces $(g(\"a  b\"))\"\nreturn a > 0 ? y : s\nend","indentStyle":"4","spaceAroundOps":"true","preserveComments":"true","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"re_indent_a_module_4_spaces_spaces_around_operators":{"summary":"Re-indent a module (4 spaces, spaces around operators)","value":{"tool":"julia-code-formatter","tool_version":"1.0.2","outputs":{"output":"module Geometry\n\n    abstract type Shape end\n\n    struct Circle<:Shape\n        radius::Float64\n    end\n\n    function area(c::Circle)\n        return π * c.radius ^ 2\n    end\n\n    function describe(s::Shape)\n        a = area(s)\n        if a > 100\n            println(\"Big shape with area=$a\")\n        elseif a > 10\n            println(\"Medium shape\")\n        else\n            println(\"Small shape\")\n        end\n    end\n\nend\n"},"credits_used":5,"credits_remaining":null}},"format_a_for_loop_function_2_spaces":{"summary":"Format a for-loop function (2 spaces)","value":{"tool":"julia-code-formatter","tool_version":"1.0.2","outputs":{"output":"function fib(n)\n  a = 0\n  b = 1\n  for i in 1:n\n    a, b = b, a + b\n  end\n  return a\nend\n"},"credits_used":5,"credits_remaining":null}},"tight_operators_tab_indent":{"summary":"Tight operators, tab indent","value":{"tool":"julia-code-formatter","tool_version":"1.0.2","outputs":{"output":"x = collect(1:10)\ny = map(v -> v^2+ 1, x)\ntotal = sum(y)/length(y)\n"},"credits_used":5,"credits_remaining":null}},"strings_interpolation_end_index_and_ternary_are_preserved":{"summary":"Strings, interpolation, end-index and ternary are preserved","value":{"tool":"julia-code-formatter","tool_version":"1.0.2","outputs":{"output":"function f(x)\n    y = x[1:end - 1]\n    s = \"keep    spaces $(g(\"a  b\"))\"\n    return a > 0 ? y : s\nend\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/kotlin-code-formatter":{"post":{"operationId":"run_kotlin_code_formatter","summary":"Kotlin Code Formatter","tags":["Formatters"],"description":"Format and beautify Kotlin source code — re-indent by brace depth, normalize operator and comma spacing, sort imports, and add trailing commas to multi-line lists. Runs entirely in your browser.\n\n[Try Kotlin Code Formatter in your browser →](https://iotools.cloud/tool/kotlin-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"kotlinInput":{"type":"string","description":"Kotlin Code"},"indent":{"enum":["2","4","tab"],"description":"Indent Size"},"sortImports":{"type":"boolean","description":"Sort imports alphabetically"},"trailingCommas":{"type":"boolean","description":"Add trailing commas in multi-line lists"}},"required":[]},"examples":{"beautify_a_function_4_spaces":{"summary":"Beautify a function (4 spaces)","value":{"kotlinInput":"fun greet(name:String):String{\nif(name.isEmpty()){\nreturn \"Hello, stranger\"\n}\nreturn name\n}","indent":"4","sortImports":"true","trailingCommas":"true"}},"sort_imports_trailing_commas_2_spaces":{"summary":"Sort imports, trailing commas, 2 spaces","value":{"kotlinInput":"import kotlinx.coroutines.flow.Flow\nimport com.example.utils.Logger\nimport kotlin.collections.List\n\ndata class User(\nval id:Long,\nval name:String,\nval email:String?\n)","indent":"2","sortImports":"true","trailingCommas":"true"}},"when_block_with_arrows_tabs":{"summary":"when block with arrows (tabs)","value":{"kotlinInput":"fun classify(status:String):Int{\nreturn when(status){\n\"active\"->1\n\"pending\"->2\nelse->0\n}\n}","indent":"tab","sortImports":"","trailingCommas":""}},"strings_raw_strings_templates_and_grouping_parens_are_preserved":{"summary":"Strings, raw strings, templates and grouping parens are preserved","value":{"kotlinInput":"fun f() {\nval marker = \"/*\"\nval sql = \"\"\"\nSELECT *\n  FROM t\n\"\"\"\nprintln(\"${g(\"a  b\")}\")\nval x = (\n1 + 2\n)\n}","indent":"4","sortImports":"true","trailingCommas":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"beautify_a_function_4_spaces":{"summary":"Beautify a function (4 spaces)","value":{"tool":"kotlin-code-formatter","tool_version":"1.0.2","outputs":{"output":"fun greet(name: String): String {\n    if (name.isEmpty()) {\n        return \"Hello, stranger\"\n    }\n    return name\n}\n"},"credits_used":5,"credits_remaining":null}},"sort_imports_trailing_commas_2_spaces":{"summary":"Sort imports, trailing commas, 2 spaces","value":{"tool":"kotlin-code-formatter","tool_version":"1.0.2","outputs":{"output":"import com.example.utils.Logger\nimport kotlin.collections.List\nimport kotlinx.coroutines.flow.Flow\n\ndata class User(\n  val id: Long,\n  val name: String,\n  val email: String?,\n)\n"},"credits_used":5,"credits_remaining":null}},"when_block_with_arrows_tabs":{"summary":"when block with arrows (tabs)","value":{"tool":"kotlin-code-formatter","tool_version":"1.0.2","outputs":{"output":"fun classify(status: String): Int {\n\treturn when (status) {\n\t\t\"active\" -> 1\n\t\t\"pending\" -> 2\n\t\telse -> 0\n\t}\n}\n"},"credits_used":5,"credits_remaining":null}},"strings_raw_strings_templates_and_grouping_parens_are_preserved":{"summary":"Strings, raw strings, templates and grouping parens are preserved","value":{"tool":"kotlin-code-formatter","tool_version":"1.0.2","outputs":{"output":"fun f() {\n    val marker = \"/*\"\n    val sql = \"\"\"\nSELECT *\n  FROM t\n\"\"\"\n    println(\"${g(\"a  b\")}\")\n    val x = (\n        1 + 2\n    )\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/kubernetes-yaml-formatter":{"post":{"operationId":"run_kubernetes_yaml_formatter","summary":"Kubernetes YAML Formatter","tags":["Formatters"],"description":"Clean up and beautify Kubernetes manifests: re-indent to a consistent 2- or 4-space step, optionally reorder keys into the conventional apiVersion → kind → metadata → spec order, and normalize quoting — across multi-document (---) files. Runs entirely in your browser; nothing is uploaded.\n\n[Try Kubernetes YAML Formatter in your browser →](https://iotools.cloud/tool/kubernetes-yaml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"Kubernetes YAML"},"indentSize":{"enum":["2","4"],"description":"Indent Size"},"sortKeys":{"type":"boolean","description":"Sort keys (Kubernetes order, then alphabetical)"}},"required":[]},"examples":{"deployment_2_space_indent":{"summary":"Deployment (2-space indent)","value":{"inputYaml":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.27\n          ports:\n            - containerPort: 80\n          resources:\n            requests:\n              memory: \"64Mi\"\n              cpu: \"250m\"\n            limits:\n              memory: \"128Mi\"\n              cpu: \"500m\"","indentSize":"2","sortKeys":""}},"service_with_keys_sorted_into_kubernetes_order":{"summary":"Service with keys sorted into Kubernetes order","value":{"inputYaml":"kind: Service\napiVersion: v1\nmetadata:\n  name: web\n  labels:\n    tier: frontend\n    app: web\nspec:\n  selector:\n    app: web\n  ports:\n    - targetPort: 8080\n      port: 80\n      name: http\n  type: ClusterIP","indentSize":"2","sortKeys":"true"}},"multi_document_manifest_namespace_configmap_service":{"summary":"Multi-document manifest (Namespace + ConfigMap + Service)","value":{"inputYaml":"apiVersion: v1\nkind: Namespace\nmetadata:\n  name: my-app\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\n  namespace: my-app\ndata:\n  DATABASE_HOST: postgres.my-app.svc.cluster.local\n  DATABASE_PORT: \"5432\"\n  LOG_LEVEL: info\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: my-app\n  namespace: my-app\nspec:\n  selector:\n    app: my-app\n  ports:\n    - port: 80\n      targetPort: 8080\n  type: ClusterIP","indentSize":"2","sortKeys":""}},"quoted_keys_block_scalars_and_escapes_survive_intact":{"summary":"Quoted keys, block scalars and escapes survive intact","value":{"inputYaml":"apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: scripts\ndata:\n  \"0755\": mode\n  entrypoint.sh: |\n    set -e\n    echo \"hello  world\"\n  greeting: \"caf\\u00e9\"\n","indentSize":"2","sortKeys":""}},"block_scalar_as_a_sequence_item_args":{"summary":"Block scalar as a sequence item (args: - |)","value":{"inputYaml":"apiVersion: v1\nkind: Pod\nspec:\n  containers:\n    - name: busybox\n      image: busybox\n      args:\n        - |\n          set -e\n          echo hi\n","indentSize":"2","sortKeys":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"deployment_2_space_indent":{"summary":"Deployment (2-space indent)","value":{"tool":"kubernetes-yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n        - name: nginx\n          image: nginx:1.27\n          ports:\n            - containerPort: 80\n          resources:\n            requests:\n              memory: \"64Mi\"\n              cpu: \"250m\"\n            limits:\n              memory: \"128Mi\"\n              cpu: \"500m\"\n"},"credits_used":5,"credits_remaining":null}},"service_with_keys_sorted_into_kubernetes_order":{"summary":"Service with keys sorted into Kubernetes order","value":{"tool":"kubernetes-yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: web\n    tier: frontend\n  name: web\nspec:\n  ports:\n    - name: http\n      port: 80\n      targetPort: 8080\n  selector:\n    app: web\n  type: ClusterIP\n"},"credits_used":5,"credits_remaining":null}},"multi_document_manifest_namespace_configmap_service":{"summary":"Multi-document manifest (Namespace + ConfigMap + Service)","value":{"tool":"kubernetes-yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"apiVersion: v1\nkind: Namespace\nmetadata:\n  name: my-app\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\n  namespace: my-app\ndata:\n  DATABASE_HOST: postgres.my-app.svc.cluster.local\n  DATABASE_PORT: \"5432\"\n  LOG_LEVEL: info\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: my-app\n  namespace: my-app\nspec:\n  selector:\n    app: my-app\n  ports:\n    - port: 80\n      targetPort: 8080\n  type: ClusterIP\n"},"credits_used":5,"credits_remaining":null}},"quoted_keys_block_scalars_and_escapes_survive_intact":{"summary":"Quoted keys, block scalars and escapes survive intact","value":{"tool":"kubernetes-yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: scripts\ndata:\n  \"0755\": mode\n  entrypoint.sh: |\n    set -e\n    echo \"hello  world\"\n  greeting: \"café\"\n"},"credits_used":5,"credits_remaining":null}},"block_scalar_as_a_sequence_item_args":{"summary":"Block scalar as a sequence item (args: - |)","value":{"tool":"kubernetes-yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"apiVersion: v1\nkind: Pod\nspec:\n  containers:\n    - name: busybox\n      image: busybox\n      args:\n        - |\n          set -e\n          echo hi\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted YAML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-formatter":{"post":{"operationId":"run_json_formatter","summary":"JSON Formatter","tags":["Formatters"],"description":"Format, validate and minify JSON instantly. Pretty-print with 2 or 4 spaces or tabs, optionally sort keys alphabetically, and get a clear error message when the JSON is invalid.\n\n[Try JSON Formatter in your browser →](https://iotools.cloud/tool/json-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON input"},"indent":{"enum":["2","4","tab","min"],"description":"Indentation"},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically"}},"required":[]},"examples":{"pretty_print":{"summary":"Pretty-print","value":{"json":"{\"name\":\"iotools\",\"tools\":683,\"free\":true,\"tags\":[\"fast\",\"private\"]}","indent":"2","sortKeys":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pretty_print":{"summary":"Pretty-print","value":{"tool":"json-formatter","tool_version":"1.0.2","outputs":{"formatted":"{\n  \"name\": \"iotools\",\n  \"tools\": 683,\n  \"free\": true,\n  \"tags\": [\n    \"fast\",\n    \"private\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formatted":{"type":"string","description":"Formatted JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json5-formatter-validator":{"post":{"operationId":"run_json5_formatter_validator","summary":"JSON5 Formatter & Validator","tags":["Formatters"],"description":"Validate, format and convert JSON5 — the JSON superset used in tsconfig.json, .eslintrc, jest.config and Babel configs that allows comments, trailing commas, unquoted keys, single-quoted strings and hex numbers. Pretty-print with 2 or 4 space indent, strip it down to strict JSON, and get a precise error with line/column on invalid input.\n\n[Try JSON5 Formatter & Validator in your browser →](https://iotools.cloud/tool/json5-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"JSON5 Input"},"outputFormat":{"enum":["json5","json"],"description":"Output Format"},"indent":{"enum":["2","4","tab","0"],"description":"Indent"},"sortKeys":{"type":"boolean","description":"Sort object keys alphabetically"},"quoteStyle":{"enum":["double","single"],"description":"Quote Style"}},"required":[]},"examples":{"format_json5":{"summary":"Format JSON5","value":{"input":"{\n  // JSON5 allows comments like this\n  name: 'iotools', // and unquoted keys + single quotes\n  version: 1.0,\n  tags: ['json5', 'config',], // trailing commas are fine\n  hex: 0xFF,\n  positive: +42,\n  leading: .5,\n  infinite: Infinity,\n}","outputFormat":"json5","indent":"2","sortKeys":"","quoteStyle":"double"}},"convert_to_strict_json":{"summary":"Convert to strict JSON","value":{"input":"{\n  // JSON5 allows comments like this\n  name: 'iotools', // and unquoted keys + single quotes\n  version: 1.0,\n  tags: ['json5', 'config',], // trailing commas are fine\n  hex: 0xFF,\n  positive: +42,\n  leading: .5,\n  infinite: Infinity,\n}","outputFormat":"json","indent":"2","sortKeys":"","quoteStyle":"double"}},"format_json5_single_quotes_sorted_keys":{"summary":"Format JSON5, single quotes, sorted keys","value":{"input":"{\n  // JSON5 allows comments like this\n  name: 'iotools', // and unquoted keys + single quotes\n  version: 1.0,\n  tags: ['json5', 'config',], // trailing commas are fine\n  hex: 0xFF,\n  positive: +42,\n  leading: .5,\n  infinite: Infinity,\n}","outputFormat":"json5","indent":"2","sortKeys":"true","quoteStyle":"single"}},"invalid_input_unterminated_string":{"summary":"Invalid input (unterminated string)","value":{"input":"{\n  name: 'unterminated\n}","outputFormat":"json5","indent":"2","sortKeys":"","quoteStyle":"double"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_json5":{"summary":"Format JSON5","value":{"tool":"json5-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  name: \"iotools\",\n  version: 1,\n  tags: [\n    \"json5\",\n    \"config\",\n  ],\n  hex: 255,\n  positive: 42,\n  leading: 0.5,\n  infinite: Infinity,\n}","status":"Valid — 7 top-level keys · uses comments, unquoted keys, single-quoted strings, trailing commas, hexadecimal numbers, leading/trailing decimal points, explicit plus signs, Infinity / NaN"},"credits_used":5,"credits_remaining":null}},"convert_to_strict_json":{"summary":"Convert to strict JSON","value":{"tool":"json5-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"iotools\",\n  \"version\": 1,\n  \"tags\": [\n    \"json5\",\n    \"config\"\n  ],\n  \"hex\": 255,\n  \"positive\": 42,\n  \"leading\": 0.5,\n  \"infinite\": null\n}","status":"Valid — 7 top-level keys · uses comments, unquoted keys, single-quoted strings, trailing commas, hexadecimal numbers, leading/trailing decimal points, explicit plus signs, Infinity / NaN"},"credits_used":5,"credits_remaining":null}},"format_json5_single_quotes_sorted_keys":{"summary":"Format JSON5, single quotes, sorted keys","value":{"tool":"json5-formatter-validator","tool_version":"1.0.2","outputs":{"output":"{\n  hex: 255,\n  infinite: Infinity,\n  leading: 0.5,\n  name: 'iotools',\n  positive: 42,\n  tags: [\n    'json5',\n    'config',\n  ],\n  version: 1,\n}","status":"Valid — 7 top-level keys · uses comments, unquoted keys, single-quoted strings, trailing commas, hexadecimal numbers, leading/trailing decimal points, explicit plus signs, Infinity / NaN"},"credits_used":5,"credits_remaining":null}},"invalid_input_unterminated_string":{"summary":"Invalid input (unterminated string)","value":{"tool":"json5-formatter-validator","tool_version":"1.0.2","outputs":{"output":"","status":"Invalid JSON5: JSON5: invalid character '\\n' at 3:0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"},"status":{"type":"string","description":"Validation Status"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jsonnet-formatter-evaluator":{"post":{"operationId":"run_jsonnet_formatter_evaluator","summary":"Jsonnet Formatter & Evaluator","tags":["Formatters"],"description":"Format Jsonnet source with consistent indentation, or evaluate it to JSON — objects with inheritance (self/super), locals, functions, comprehensions, string interpolation, and a substantial subset of the std library. import/importstr are not supported (no filesystem access in-browser). Runs entirely in your browser.\n\n[Try Jsonnet Formatter & Evaluator in your browser →](https://iotools.cloud/tool/jsonnet-formatter-evaluator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonnetInput":{"type":"string","description":"Jsonnet Source"},"jsonnetMode":{"enum":["evaluate","format"],"description":"Mode"},"jsonnetIndent":{"enum":["2","4","tab","0"],"description":"Indent"},"jsonnetSortKeys":{"type":"boolean","description":"Sort object keys alphabetically (evaluate only)"},"jsonnetStringOutput":{"type":"boolean","description":"Force string output — top-level result must be a string (evaluate only)"}},"required":[]},"examples":{"evaluate_a_kubernetes_pod_manifest_to_json":{"summary":"Evaluate a Kubernetes Pod manifest to JSON","value":{"jsonnetInput":"local name = 'hello';\nlocal image = 'nginx:1.27';\n{\n  apiVersion: 'v1',\n  kind: 'Pod',\n  metadata: { name: name, labels: { app: name } },\n  spec: {\n    containers: [\n      {\n        name: name,\n        image: image,\n        ports: [{ containerPort: 80 }],\n      },\n    ],\n  },\n}","jsonnetMode":"evaluate","jsonnetIndent":"2","jsonnetSortKeys":"","jsonnetStringOutput":""}},"object_inheritance_with_self_super":{"summary":"Object inheritance with self/super","value":{"jsonnetInput":"local Base = { greeting: 'Hello', target: 'World' };\nlocal Derived = Base + { target: 'Jsonnet', shout: super.greeting + ' ' + self.target + '!' };\nDerived","jsonnetMode":"evaluate","jsonnetIndent":"2","jsonnetSortKeys":"","jsonnetStringOutput":""}},"format_mode_normalizes_indentation_and_multi_bind_locals":{"summary":"Format mode normalizes indentation and multi-bind locals","value":{"jsonnetInput":"local x=1,   y=2;\n{a:x,b:y,c:x+y}","jsonnetMode":"format","jsonnetIndent":"2","jsonnetSortKeys":"","jsonnetStringOutput":""}},"syntax_error_reports_line_and_column":{"summary":"Syntax error reports line and column","value":{"jsonnetInput":"{ a: 1, b }","jsonnetMode":"evaluate","jsonnetIndent":"2","jsonnetSortKeys":"","jsonnetStringOutput":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"evaluate_a_kubernetes_pod_manifest_to_json":{"summary":"Evaluate a Kubernetes Pod manifest to JSON","value":{"tool":"jsonnet-formatter-evaluator","tool_version":"1.0.2","outputs":{"output":"{\n  \"apiVersion\": \"v1\",\n  \"kind\": \"Pod\",\n  \"metadata\": {\n    \"name\": \"hello\",\n    \"labels\": {\n      \"app\": \"hello\"\n    }\n  },\n  \"spec\": {\n    \"containers\": [\n      {\n        \"name\": \"hello\",\n        \"image\": \"nginx:1.27\",\n        \"ports\": [\n          {\n            \"containerPort\": 80\n          }\n        ]\n      }\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}},"object_inheritance_with_self_super":{"summary":"Object inheritance with self/super","value":{"tool":"jsonnet-formatter-evaluator","tool_version":"1.0.2","outputs":{"output":"{\n  \"greeting\": \"Hello\",\n  \"target\": \"Jsonnet\",\n  \"shout\": \"Hello Jsonnet!\"\n}"},"credits_used":5,"credits_remaining":null}},"format_mode_normalizes_indentation_and_multi_bind_locals":{"summary":"Format mode normalizes indentation and multi-bind locals","value":{"tool":"jsonnet-formatter-evaluator","tool_version":"1.0.2","outputs":{"output":"local x = 1,\n  y = 2;\n{\n  a: x,\n  b: y,\n  c: x + y,\n}"},"credits_used":5,"credits_remaining":null}},"syntax_error_reports_line_and_column":{"summary":"Syntax error reports line and column","value":{"tool":"jsonnet-formatter-evaluator","tool_version":"1.0.2","outputs":{"output":"Error: Expected ':' after field key, got \"}\" (line 1, col 11)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-minifier":{"post":{"operationId":"run_json_minifier","summary":"JSON Minifier","tags":["Formatters"],"description":"Minify JSON instantly — strip every space, tab and line break from a JSON document while keeping it valid and byte-for-byte equivalent. Paste JSON or drop a .json file; invalid JSON is reported with the exact parse error.\n\n[Try JSON Minifier in your browser →](https://iotools.cloud/tool/json-minifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON input"}},"required":[]},"examples":{"minify_a_formatted_object":{"summary":"Minify a formatted object","value":{"json":"{\n  \"name\": \"John Doe\",\n  \"age\": 30,\n  \"city\": \"New York\",\n  \"email\": \"john@example.com\"\n}"}},"nested_arrays_and_objects":{"summary":"Nested arrays and objects","value":{"json":"{\n  \"tools\": [\n    { \"slug\": \"json-minifier\", \"free\": true },\n    { \"slug\": \"xml-formatter\", \"free\": true }\n  ],\n  \"count\": 2\n}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"minify_a_formatted_object":{"summary":"Minify a formatted object","value":{"tool":"json-minifier","tool_version":"1.0.2","outputs":{"minifiedJson":"{\"name\":\"John Doe\",\"age\":30,\"city\":\"New York\",\"email\":\"john@example.com\"}"},"credits_used":5,"credits_remaining":null}},"nested_arrays_and_objects":{"summary":"Nested arrays and objects","value":{"tool":"json-minifier","tool_version":"1.0.2","outputs":{"minifiedJson":"{\"tools\":[{\"slug\":\"json-minifier\",\"free\":true},{\"slug\":\"xml-formatter\",\"free\":true}],\"count\":2}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"minifiedJson":{"type":"string","description":"Minified JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/line-affixer":{"post":{"operationId":"run_line_affixer","summary":"Line Affixer","tags":["Formatters"],"description":"Add a prefix and/or suffix to every line of text at once. Great for wrapping lines in quotes, building SQL IN-lists, adding bullets, or numbering lines. Use {n} in the prefix or suffix to insert the line number.\n\n[Try Line Affixer in your browser →](https://iotools.cloud/tool/line-affixer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Original Text"},"prefix":{"type":"string","description":"Prefix"},"suffix":{"type":"string","description":"Suffix"},"numberingFormat":{"enum":["1","0","01","00","001","000"],"description":"Numbering"},"trimLines":{"type":"boolean","description":"Trim each line"},"skipEmptyLines":{"type":"boolean","description":"Skip empty lines"}},"required":[]},"examples":{"bullet_list":{"summary":"Bullet list","value":{"inputText":"apple\nbanana\ncherry","prefix":"- ","suffix":"","numberingFormat":"1","trimLines":"","skipEmptyLines":"true"}},"numbered_list":{"summary":"Numbered list","value":{"inputText":"First\nSecond\nThird","prefix":"{n}. ","suffix":"","numberingFormat":"1","trimLines":"","skipEmptyLines":"true"}},"sql_in_list_wrap_skip_blanks":{"summary":"SQL IN-list (wrap + skip blanks)","value":{"inputText":"10\n20\n\n30","prefix":"'","suffix":"',","numberingFormat":"1","trimLines":"","skipEmptyLines":"true"}},"zero_padded_numbering_keep_blank_lines":{"summary":"Zero-padded numbering, keep blank lines","value":{"inputText":"one\ntwo\n\nfour","prefix":"{n}: ","suffix":"","numberingFormat":"001","trimLines":"","skipEmptyLines":""}},"zero_based_index":{"summary":"Zero-based index","value":{"inputText":"a\nb\nc","prefix":"[{n}] ","suffix":"","numberingFormat":"0","trimLines":"","skipEmptyLines":"true"}},"trim_each_line":{"summary":"Trim each line","value":{"inputText":"  hello  \n  world  ","prefix":"> ","suffix":"","numberingFormat":"1","trimLines":"true","skipEmptyLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bullet_list":{"summary":"Bullet list","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"- apple\n- banana\n- cherry"},"credits_used":5,"credits_remaining":null}},"numbered_list":{"summary":"Numbered list","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"1. First\n2. Second\n3. Third"},"credits_used":5,"credits_remaining":null}},"sql_in_list_wrap_skip_blanks":{"summary":"SQL IN-list (wrap + skip blanks)","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"'10',\n'20',\n'30',"},"credits_used":5,"credits_remaining":null}},"zero_padded_numbering_keep_blank_lines":{"summary":"Zero-padded numbering, keep blank lines","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"001: one\n002: two\n\n003: four"},"credits_used":5,"credits_remaining":null}},"zero_based_index":{"summary":"Zero-based index","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"[0] a\n[1] b\n[2] c"},"credits_used":5,"credits_remaining":null}},"trim_each_line":{"summary":"Trim each line","value":{"tool":"line-affixer","tool_version":"1.0.2","outputs":{"output":"> hello\n> world"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"New Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lua-code-formatter":{"post":{"operationId":"run_lua_code_formatter","summary":"Lua Code Formatter","tags":["Formatters"],"description":"Format and beautify Lua source code — re-indent by block structure (function/if/for/while/repeat), normalize operator and comma spacing, and choose 2-space, 4-space, or tab indentation. Runs entirely in your browser.\n\n[Try Lua Code Formatter in your browser →](https://iotools.cloud/tool/lua-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"luaInput":{"type":"string","description":"Lua Code"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent Style"},"preserveComments":{"type":"boolean","description":"Preserve comments"},"collapseBlankLines":{"type":"boolean","description":"Collapse multiple blank lines into one"}},"required":[]},"examples":{"indent_a_function_with_a_for_loop_2_spaces":{"summary":"Indent a function with a for loop (2 spaces)","value":{"luaInput":"local function sum(t)\nlocal total=0\nfor i=1,#t do\ntotal=total+t[i]\nend\nreturn total\nend","indentStyle":"2","preserveComments":"true","collapseBlankLines":"true"}},"preserve_comments_keywords_inside_strings_comments_are_safe_4_spaces":{"summary":"Preserve comments; keywords inside strings/comments are safe (4 spaces)","value":{"luaInput":"-- greet the user\nlocal function greet(name)\nprint(\"end of greeting\")  -- not a real end\nreturn name\nend","indentStyle":"4","preserveComments":"true","collapseBlankLines":"true"}},"if_elseif_else_block_tabs":{"summary":"if / elseif / else block (tabs)","value":{"luaInput":"local function classify(n)\nif n<0 then\nreturn \"negative\"\nelseif n==0 then\nreturn \"zero\"\nelse\nreturn \"positive\"\nend\nend","indentStyle":"tab","preserveComments":"true","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"indent_a_function_with_a_for_loop_2_spaces":{"summary":"Indent a function with a for loop (2 spaces)","value":{"tool":"lua-code-formatter","tool_version":"1.0.2","outputs":{"output":"local function sum(t)\n  local total = 0\n  for i = 1, #t do\n    total = total + t[i]\n  end\n  return total\nend\n"},"credits_used":5,"credits_remaining":null}},"preserve_comments_keywords_inside_strings_comments_are_safe_4_spaces":{"summary":"Preserve comments; keywords inside strings/comments are safe (4 spaces)","value":{"tool":"lua-code-formatter","tool_version":"1.0.2","outputs":{"output":"-- greet the user\nlocal function greet(name)\n    print(\"end of greeting\") -- not a real end\n    return name\nend\n"},"credits_used":5,"credits_remaining":null}},"if_elseif_else_block_tabs":{"summary":"if / elseif / else block (tabs)","value":{"tool":"lua-code-formatter","tool_version":"1.0.2","outputs":{"output":"local function classify(n)\n\tif n < 0 then\n\t\treturn \"negative\"\n\telseif n == 0 then\n\t\treturn \"zero\"\n\telse\n\t\treturn \"positive\"\n\tend\nend\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/makefile-formatter":{"post":{"operationId":"run_makefile_formatter","summary":"Makefile Formatter","tags":["Formatters"],"description":"Format and clean up GNU Makefiles. Converts space-indented recipe lines to the tabs Make requires, trims trailing whitespace, collapses extra blank lines, normalizes spacing around assignment operators (= := ?= +=), and optionally aligns consecutive variable assignments. Runs entirely in your browser.\n\n[Try Makefile Formatter in your browser →](https://iotools.cloud/tool/makefile-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"makefileInput":{"type":"string","description":"Makefile"},"tabWidth":{"enum":["8","4","2"],"description":"Tab Width"},"convertSpacesToTabs":{"type":"boolean","description":"Convert leading spaces on recipe lines to a tab (required by Make)"},"trimTrailing":{"type":"boolean","description":"Trim trailing whitespace"},"normalizeBlanks":{"type":"boolean","description":"Normalize blank lines (max 2 consecutive)"},"collapseAssignSpacing":{"type":"boolean","description":"Normalize spacing around assignment operators (= := ?= +=)"},"alignAssignments":{"type":"boolean","description":"Align consecutive variable assignments"}},"required":[]},"examples":{"fix_space_indented_recipes_spacing_and_blank_lines":{"summary":"Fix space-indented recipes, spacing and blank lines","value":{"makefileInput":"# Sample Makefile with common formatting issues\nCC=gcc\nCFLAGS  =   -Wall -O2\nLDFLAGS =-lm\nSRC = main.c utils.c parser.c\nOBJ = $(SRC:.c=.o)\nTARGET   =myapp\n\n\n\n.PHONY: all clean\n\nall: $(TARGET)\n    @echo \"Build complete\"   \n\n$(TARGET): $(OBJ)\n    $(CC) $(LDFLAGS) -o $@ $^\n\nclean:\n    rm -f $(OBJ) $(TARGET)","tabWidth":"8","convertSpacesToTabs":"true","trimTrailing":"true","normalizeBlanks":"true","collapseAssignSpacing":"true","alignAssignments":""}},"align_consecutive_variable_assignments":{"summary":"Align consecutive variable assignments","value":{"makefileInput":"CC = gcc\nCFLAGS = -Wall\nLDFLAGS = -lm\nPREFIX = /usr/local\n\nbuild:\n\t$(CC) $(CFLAGS) -o app main.c","tabWidth":"8","convertSpacesToTabs":"true","trimTrailing":"true","normalizeBlanks":"true","collapseAssignSpacing":"true","alignAssignments":"true"}},"preserve_backslash_line_continuations":{"summary":"Preserve backslash line continuations","value":{"makefileInput":"SOURCES = main.c \\\n          utils.c \\\n          parser.c\n\napp: $(SOURCES)\n    $(CC) -o $@ $(SOURCES) \\\n        -lm -lpthread","tabWidth":"8","convertSpacesToTabs":"true","trimTrailing":"true","normalizeBlanks":"true","collapseAssignSpacing":"true","alignAssignments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fix_space_indented_recipes_spacing_and_blank_lines":{"summary":"Fix space-indented recipes, spacing and blank lines","value":{"tool":"makefile-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"# Sample Makefile with common formatting issues\nCC = gcc\nCFLAGS = -Wall -O2\nLDFLAGS = -lm\nSRC = main.c utils.c parser.c\nOBJ = $(SRC:.c=.o)\nTARGET = myapp\n\n\n.PHONY: all clean\n\nall: $(TARGET)\n\t@echo \"Build complete\"\n\n$(TARGET): $(OBJ)\n\t$(CC) $(LDFLAGS) -o $@ $^\n\nclean:\n\trm -f $(OBJ) $(TARGET)\n"},"credits_used":5,"credits_remaining":null}},"align_consecutive_variable_assignments":{"summary":"Align consecutive variable assignments","value":{"tool":"makefile-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"CC      = gcc\nCFLAGS  = -Wall\nLDFLAGS = -lm\nPREFIX  = /usr/local\n\nbuild:\n\t$(CC) $(CFLAGS) -o app main.c\n"},"credits_used":5,"credits_remaining":null}},"preserve_backslash_line_continuations":{"summary":"Preserve backslash line continuations","value":{"tool":"makefile-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"SOURCES = main.c \\\n          utils.c \\\n          parser.c\n\napp: $(SOURCES)\n\t$(CC) -o $@ $(SOURCES) \\\n        -lm -lpthread\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted Makefile"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-table-formatter":{"post":{"operationId":"run_markdown_table_formatter","summary":"Markdown Table Formatter","tags":["Formatters"],"description":"Clean up and reformat a Markdown table: align columns, pad cells evenly, control the separator style and outer pipes, sort by any column, and export the same data as CSV, HTML or JSON.\n\n[Try Markdown Table Formatter in your browser →](https://iotools.cloud/tool/markdown-table-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMarkdown":{"type":"string","description":"Markdown table"},"columnAlignment":{"enum":["auto","left","center","right"],"description":"Column alignment"},"padding":{"enum":["spaced","compact"],"description":"Padding"},"separatorStyle":{"enum":["full","minimal"],"description":"Separator style"},"sortByColumn":{"enum":["none","0","1","2","3","4","5","6","7","8","9"],"description":"Sort by column"},"trimContent":{"type":"boolean","description":"Trim cell content"},"outerPipes":{"type":"boolean","description":"Include outer pipes"}},"required":[]},"examples":{"format_a_table_default_options":{"summary":"Format a table (default options)","value":{"inputMarkdown":"| Name | Age | City |\n| --- | --- | --- |\n| Alice | 30 | New York |\n| Bob | 25 | San Francisco |\n| Charlie | 35 | Chicago |","columnAlignment":"auto","padding":"spaced","separatorStyle":"full","sortByColumn":"none","trimContent":"true","outerPipes":"true"}},"center_compact_sorted_by_age":{"summary":"Center, compact, sorted by Age","value":{"inputMarkdown":"| Name | Age | City |\n| --- | --- | --- |\n| Alice | 30 | New York |\n| Bob | 25 | San Francisco |\n| Charlie | 35 | Chicago |","columnAlignment":"center","padding":"compact","separatorStyle":"minimal","sortByColumn":"1","trimContent":"true","outerPipes":""}},"right_aligned_sorted_by_name":{"summary":"Right-aligned, sorted by Name","value":{"inputMarkdown":"| Name | Age | City |\n| --- | --- | --- |\n| Alice | 30 | New York |\n| Bob | 25 | San Francisco |\n| Charlie | 35 | Chicago |","columnAlignment":"right","padding":"spaced","separatorStyle":"full","sortByColumn":"0","trimContent":"true","outerPipes":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_table_default_options":{"summary":"Format a table (default options)","value":{"tool":"markdown-table-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"| Name    | Age | City          |\n|---------|-----|---------------|\n| Alice   | 30  | New York      |\n| Bob     | 25  | San Francisco |\n| Charlie | 35  | Chicago       |","htmlOutput":"<table style=\"border-collapse:collapse\">\n  <thead>\n    <tr>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Name</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Age</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">City</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Alice</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">30</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">New York</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Bob</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">25</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">San Francisco</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Charlie</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">35</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Chicago</td>\n    </tr>\n  </tbody>\n</table>","csvOutput":"Name,Age,City\nAlice,30,New York\nBob,25,San Francisco\nCharlie,35,Chicago","jsonOutput":"[\n  {\n    \"Name\": \"Alice\",\n    \"Age\": \"30\",\n    \"City\": \"New York\"\n  },\n  {\n    \"Name\": \"Bob\",\n    \"Age\": \"25\",\n    \"City\": \"San Francisco\"\n  },\n  {\n    \"Name\": \"Charlie\",\n    \"Age\": \"35\",\n    \"City\": \"Chicago\"\n  }\n]","validation":"ℹ️ Columns: 3, Data rows: 3\n✅ Table is well-formed"},"credits_used":5,"credits_remaining":null}},"center_compact_sorted_by_age":{"summary":"Center, compact, sorted by Age","value":{"tool":"markdown-table-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":" Name  |Age|    City     \n:-:|:-:|:-:\n  Bob  |25 |San Francisco\n Alice |30 |  New York   \nCharlie|35 |   Chicago   ","htmlOutput":"<table style=\"border-collapse:collapse\">\n  <thead>\n    <tr>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Name</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Age</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">City</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Alice</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">30</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">New York</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Bob</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">25</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">San Francisco</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Charlie</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">35</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Chicago</td>\n    </tr>\n  </tbody>\n</table>","csvOutput":"Name,Age,City\nAlice,30,New York\nBob,25,San Francisco\nCharlie,35,Chicago","jsonOutput":"[\n  {\n    \"Name\": \"Alice\",\n    \"Age\": \"30\",\n    \"City\": \"New York\"\n  },\n  {\n    \"Name\": \"Bob\",\n    \"Age\": \"25\",\n    \"City\": \"San Francisco\"\n  },\n  {\n    \"Name\": \"Charlie\",\n    \"Age\": \"35\",\n    \"City\": \"Chicago\"\n  }\n]","validation":"ℹ️ Columns: 3, Data rows: 3\n✅ Table is well-formed"},"credits_used":5,"credits_remaining":null}},"right_aligned_sorted_by_name":{"summary":"Right-aligned, sorted by Name","value":{"tool":"markdown-table-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"|    Name | Age |          City |\n|--------:|----:|--------------:|\n|   Alice |  30 |      New York |\n|     Bob |  25 | San Francisco |\n| Charlie |  35 |       Chicago |","htmlOutput":"<table style=\"border-collapse:collapse\">\n  <thead>\n    <tr>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Name</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">Age</th>\n      <th style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left;background:#f3f4f6;font-weight:600\">City</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Alice</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">30</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">New York</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Bob</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">25</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">San Francisco</td>\n    </tr>\n    <tr>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Charlie</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">35</td>\n      <td style=\"border:1px solid #d1d5db;padding:6px 12px;text-align:left\">Chicago</td>\n    </tr>\n  </tbody>\n</table>","csvOutput":"Name,Age,City\nAlice,30,New York\nBob,25,San Francisco\nCharlie,35,Chicago","jsonOutput":"[\n  {\n    \"Name\": \"Alice\",\n    \"Age\": \"30\",\n    \"City\": \"New York\"\n  },\n  {\n    \"Name\": \"Bob\",\n    \"Age\": \"25\",\n    \"City\": \"San Francisco\"\n  },\n  {\n    \"Name\": \"Charlie\",\n    \"Age\": \"35\",\n    \"City\": \"Chicago\"\n  }\n]","validation":"ℹ️ Columns: 3, Data rows: 3\n✅ Table is well-formed"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted table"},"validation":{"type":"string","description":"Validation report"},"csvOutput":{"type":"string","description":"CSV"},"htmlOutput":{"type":"string","description":"HTML"},"jsonOutput":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ndjson-formatter-validator":{"post":{"operationId":"run_ndjson_formatter_validator","summary":"NDJSON Formatter & Validator","tags":["Formatters"],"description":"Validate newline-delimited JSON line-by-line (each bad line flagged, never crashing the rest), pretty-print or minify every record while keeping the NDJSON structure, and convert NDJSON to and from a JSON array. Optionally sort object keys.\n\n[Try NDJSON Formatter & Validator in your browser →](https://iotools.cloud/tool/ndjson-formatter-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ndjsonInput":{"type":"string","description":"NDJSON Input"},"mode":{"enum":["validate","format","minify","to-array","from-array"],"description":"Mode"},"indent":{"enum":["2","4","tab"],"description":"Indent"},"skipBlankLines":{"type":"boolean","description":"Skip blank lines"},"sortKeys":{"type":"boolean","description":"Sort object keys alphabetically"}},"required":[]},"examples":{"format_valid_ndjson_pretty_print":{"summary":"Format valid NDJSON (pretty-print)","value":{"ndjsonInput":"{\"event\":\"login\",\"user\":\"alice\",\"ts\":\"2024-01-01T00:00:00Z\"}\n{\"event\":\"click\",\"user\":\"bob\",\"page\":\"/home\",\"duration_ms\":1240}\n{\"event\":\"signup\",\"user\":\"carol\",\"plan\":\"pro\",\"referrer\":null}\n   { \"event\" : \"logout\" , \"user\" : \"alice\" }   \n{\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99,\"currency\":\"USD\",\"items\":[\"pro-plan\"]}","mode":"format","indent":"2","skipBlankLines":"true","sortKeys":""}},"minify_sort_keys":{"summary":"Minify + sort keys","value":{"ndjsonInput":"{\"event\":\"login\",\"user\":\"alice\",\"ts\":\"2024-01-01T00:00:00Z\"}\n{\"event\":\"click\",\"user\":\"bob\",\"page\":\"/home\",\"duration_ms\":1240}\n{\"event\":\"signup\",\"user\":\"carol\",\"plan\":\"pro\",\"referrer\":null}\n   { \"event\" : \"logout\" , \"user\" : \"alice\" }   \n{\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99,\"currency\":\"USD\",\"items\":[\"pro-plan\"]}","mode":"minify","indent":"2","skipBlankLines":"true","sortKeys":"true"}},"convert_ndjson_to_a_json_array":{"summary":"Convert NDJSON to a JSON array","value":{"ndjsonInput":"{\"event\":\"login\",\"user\":\"alice\",\"ts\":\"2024-01-01T00:00:00Z\"}\n{\"event\":\"click\",\"user\":\"bob\",\"page\":\"/home\",\"duration_ms\":1240}\n{\"event\":\"signup\",\"user\":\"carol\",\"plan\":\"pro\",\"referrer\":null}\n   { \"event\" : \"logout\" , \"user\" : \"alice\" }   \n{\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99,\"currency\":\"USD\",\"items\":[\"pro-plan\"]}","mode":"to-array","indent":"2","skipBlankLines":"true","sortKeys":""}},"convert_a_json_array_to_ndjson":{"summary":"Convert a JSON array to NDJSON","value":{"ndjsonInput":"[{\"id\":1,\"tags\":[\"a\",\"b\"]},{\"id\":2,\"tags\":[]},{\"id\":3,\"tags\":[\"c\"]}]","mode":"from-array","indent":"2","skipBlankLines":"true","sortKeys":""}},"validate_ndjson_with_a_malformed_line":{"summary":"Validate NDJSON with a malformed line","value":{"ndjsonInput":"{\"event\":\"login\",\"user\":\"alice\"}\n{\"event\":\"click\",\"user\":\"bob\",\"page\":\"/pricing\"\nnot-json-at-all\n{\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99}","mode":"validate","indent":"2","skipBlankLines":"true","sortKeys":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_valid_ndjson_pretty_print":{"summary":"Format valid NDJSON (pretty-print)","value":{"tool":"ndjson-formatter-validator","tool_version":"1.0.2","outputs":{"report":[{"line":"1","status":"Valid","error":""},{"line":"2","status":"Valid","error":""},{"line":"3","status":"Valid","error":""},{"line":"4","status":"Valid","error":""},{"line":"5","status":"Valid","error":""}],"output":"{\n  \"event\": \"login\",\n  \"user\": \"alice\",\n  \"ts\": \"2024-01-01T00:00:00Z\"\n}\n\n{\n  \"event\": \"click\",\n  \"user\": \"bob\",\n  \"page\": \"/home\",\n  \"duration_ms\": 1240\n}\n\n{\n  \"event\": \"signup\",\n  \"user\": \"carol\",\n  \"plan\": \"pro\",\n  \"referrer\": null\n}\n\n{\n  \"event\": \"logout\",\n  \"user\": \"alice\"\n}\n\n{\n  \"event\": \"purchase\",\n  \"user\": \"carol\",\n  \"amount\": 29.99,\n  \"currency\": \"USD\",\n  \"items\": [\n    \"pro-plan\"\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"minify_sort_keys":{"summary":"Minify + sort keys","value":{"tool":"ndjson-formatter-validator","tool_version":"1.0.2","outputs":{"report":[{"line":"1","status":"Valid","error":""},{"line":"2","status":"Valid","error":""},{"line":"3","status":"Valid","error":""},{"line":"4","status":"Valid","error":""},{"line":"5","status":"Valid","error":""}],"output":"{\"event\":\"login\",\"ts\":\"2024-01-01T00:00:00Z\",\"user\":\"alice\"}\n{\"duration_ms\":1240,\"event\":\"click\",\"page\":\"/home\",\"user\":\"bob\"}\n{\"event\":\"signup\",\"plan\":\"pro\",\"referrer\":null,\"user\":\"carol\"}\n{\"event\":\"logout\",\"user\":\"alice\"}\n{\"amount\":29.99,\"currency\":\"USD\",\"event\":\"purchase\",\"items\":[\"pro-plan\"],\"user\":\"carol\"}"},"credits_used":5,"credits_remaining":null}},"convert_ndjson_to_a_json_array":{"summary":"Convert NDJSON to a JSON array","value":{"tool":"ndjson-formatter-validator","tool_version":"1.0.2","outputs":{"report":[{"line":"1","status":"Valid","error":""},{"line":"2","status":"Valid","error":""},{"line":"3","status":"Valid","error":""},{"line":"4","status":"Valid","error":""},{"line":"5","status":"Valid","error":""}],"output":"[\n  {\n    \"event\": \"login\",\n    \"user\": \"alice\",\n    \"ts\": \"2024-01-01T00:00:00Z\"\n  },\n  {\n    \"event\": \"click\",\n    \"user\": \"bob\",\n    \"page\": \"/home\",\n    \"duration_ms\": 1240\n  },\n  {\n    \"event\": \"signup\",\n    \"user\": \"carol\",\n    \"plan\": \"pro\",\n    \"referrer\": null\n  },\n  {\n    \"event\": \"logout\",\n    \"user\": \"alice\"\n  },\n  {\n    \"event\": \"purchase\",\n    \"user\": \"carol\",\n    \"amount\": 29.99,\n    \"currency\": \"USD\",\n    \"items\": [\n      \"pro-plan\"\n    ]\n  }\n]"},"credits_used":5,"credits_remaining":null}},"convert_a_json_array_to_ndjson":{"summary":"Convert a JSON array to NDJSON","value":{"tool":"ndjson-formatter-validator","tool_version":"1.0.2","outputs":{"report":[{"line":"1","status":"Valid","error":""},{"line":"2","status":"Valid","error":""},{"line":"3","status":"Valid","error":""}],"output":"{\"id\":1,\"tags\":[\"a\",\"b\"]}\n{\"id\":2,\"tags\":[]}\n{\"id\":3,\"tags\":[\"c\"]}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"report":{"type":"array","description":"Report","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"status":{"type":"string","description":"Status"},"error":{"type":"string","description":"Error"}}},"x-iotools-columns":["line","status","error"]},"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nginx-formatter":{"post":{"operationId":"run_nginx_formatter","summary":"Nginx Config Formatter","tags":["Formatters"],"description":"Format and re-indent nginx configuration files. Nested http, server, location, upstream and other blocks get consistent indentation and one directive per line, with quoted values and comments preserved.\n\n[Try Nginx Config Formatter in your browser →](https://iotools.cloud/tool/nginx-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputConfig":{"type":"string","description":"Nginx Config"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent Style"},"braceStyle":{"enum":["same","next"],"description":"Brace Style"},"semicolonSpacing":{"enum":["none","space"],"description":"Semicolon Spacing"},"normalizeComments":{"type":"boolean","description":"Normalize comments (ensure space after #)"},"removeBlankLines":{"type":"boolean","description":"Remove extra blank lines"},"alignDirectives":{"type":"boolean","description":"Align directive values"}},"required":[]},"examples":{"nested_http_server_location_blocks_4_spaces":{"summary":"Nested http/server/location blocks (4 spaces)","value":{"inputConfig":"# Main site\nhttp {\ninclude mime.types;\ndefault_type application/octet-stream;\nserver {\nlisten 80;\nserver_name example.com www.example.com;\nroot /var/www/html;\nlocation / {\ntry_files $uri $uri/ /index.html;\n}\nlocation /api/ {\nproxy_pass http://backend;\nproxy_set_header Host $host;\n}\n}\n}","indentStyle":"4","braceStyle":"same","semicolonSpacing":"none","normalizeComments":"true","removeBlankLines":"true","alignDirectives":""}},"comment_normalization_blank_line_collapse_2_spaces":{"summary":"Comment normalization + blank-line collapse (2 spaces)","value":{"inputConfig":"#server config\nserver {\n  listen 443 ssl;\n  server_name secure.example.com;\n\n\n  #TLS settings\n  ssl_certificate /etc/ssl/cert.pem;\n  ssl_certificate_key /etc/ssl/key.pem;\n}","indentStyle":"2","braceStyle":"same","semicolonSpacing":"none","normalizeComments":"true","removeBlankLines":"true","alignDirectives":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_http_server_location_blocks_4_spaces":{"summary":"Nested http/server/location blocks (4 spaces)","value":{"tool":"nginx-formatter","tool_version":"1.0.2","outputs":{"formattedConfig":"# Main site\nhttp {\n    include mime.types;\n    default_type application/octet-stream;\n    server {\n        listen 80;\n        server_name example.com www.example.com;\n        root /var/www/html;\n        location / {\n            try_files $uri $uri/ /index.html;\n        }\n        location /api/ {\n            proxy_pass http://backend;\n            proxy_set_header Host $host;\n        }\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"comment_normalization_blank_line_collapse_2_spaces":{"summary":"Comment normalization + blank-line collapse (2 spaces)","value":{"tool":"nginx-formatter","tool_version":"1.0.2","outputs":{"formattedConfig":"# server config\nserver {\n  listen 443 ssl;\n  server_name secure.example.com;\n  # TLS settings\n  ssl_certificate /etc/ssl/cert.pem;\n  ssl_certificate_key /etc/ssl/key.pem;\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedConfig":{"type":"string","description":"Formatted Config"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/openapi-swagger-validator":{"post":{"operationId":"run_openapi_swagger_validator","summary":"OpenAPI / Swagger Validator","tags":["Formatters"],"description":"Validate an OpenAPI 3.x or Swagger 2.0 spec — paste it, upload a file, or fetch it from a URL — for structural and semantic errors: missing info/paths, invalid HTTP methods, duplicate operationIds, undeclared path parameters, and unresolved local $ref pointers. Every issue is reported with its JSON-pointer path.\n\n[Try OpenAPI / Swagger Validator in your browser →](https://iotools.cloud/tool/openapi-swagger-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"specUrl":{"type":"string","description":"Fetch from URL (optional)"},"specInput":{"type":"string","description":"OpenAPI / Swagger Spec (JSON or YAML)"}},"required":[]},"examples":{"valid_minimal_openapi_3_0_spec":{"summary":"Valid minimal OpenAPI 3.0 spec","value":{"specInput":"openapi: \"3.0.3\"\ninfo:\n  title: Minimal API\n  version: \"1.0.0\"\nservers:\n  - url: https://api.example.com\npaths:\n  /ping:\n    get:\n      operationId: ping\n      responses:\n        \"200\":\n          description: OK"}},"missing_info_version_undeclared_path_param_unresolved_ref":{"summary":"Missing info.version, undeclared path param, unresolved $ref","value":{"specInput":"{\n  \"openapi\": \"3.0.3\",\n  \"info\": { \"title\": \"Broken API\" },\n  \"paths\": {\n    \"/pets/{petId}\": {\n      \"get\": {\n        \"operationId\": \"getPet\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"A pet\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": { \"$ref\": \"#/components/schemas/Pet\" }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}},"swagger_2_0_with_duplicate_operationid":{"summary":"Swagger 2.0 with duplicate operationId","value":{"specInput":"swagger: \"2.0\"\ninfo:\n  title: Legacy API\n  version: \"1.0.0\"\nhost: api.example.com\npaths:\n  /a:\n    get:\n      operationId: dup\n      responses:\n        \"200\":\n          description: OK\n  /b:\n    get:\n      operationId: dup\n      responses:\n        \"200\":\n          description: OK"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"issues":{"type":"array","description":"Issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"path":{"type":"string","description":"Path"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","path","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/package-json-formatter-key-sorter":{"post":{"operationId":"run_package_json_formatter_key_sorter","summary":"package.json Formatter & Key Sorter","tags":["Formatters"],"description":"Pretty-print a package.json and reorder its keys into the conventional npm order (name, version, description, ... dependencies, devDependencies, ...). Sorts dependencies, devDependencies, peerDependencies and similar maps alphabetically by package name, and preserves any non-standard fields at the end.\n\n[Try package.json Formatter & Key Sorter in your browser →](https://iotools.cloud/tool/package-json-formatter-key-sorter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"packageJsonInput":{"type":"string","description":"package.json Input"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent"}},"required":[]},"examples":{"reorder_into_conventional_npm_order_2_space_indent":{"summary":"Reorder into conventional npm order (2-space indent)","value":{"packageJsonInput":"{\"devDependencies\":{\"webpack\":\"^5.90.0\",\"eslint\":\"^8.50.0\"},\"name\":\"my-cool-package\",\"scripts\":{\"test\":\"jest\",\"build\":\"webpack --mode production\",\"start\":\"node index.js\"},\"main\":\"dist/index.js\",\"dependencies\":{\"lodash\":\"^4.17.21\",\"axios\":\"^1.6.0\",\"express\":\"~4.18.2\"},\"version\":\"1.0.0\",\"keywords\":[\"demo\",\"example\"],\"license\":\"MIT\",\"customField\":\"unknown field preserved\",\"description\":\"Example package for the formatter tool\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/example/my-cool-package.git\"}}","indentStyle":"2"}},"sorts_dependency_maps_keeps_unknown_fields_relative_order_4_space_indent":{"summary":"Sorts dependency maps, keeps unknown fields' relative order (4-space indent)","value":{"packageJsonInput":"{\"peerDependencies\":{\"react-dom\":\"^18.0.0\",\"react\":\"^18.0.0\"},\"unknownFieldB\":\"b\",\"name\":\"peer-pkg\",\"unknownFieldA\":\"a\",\"version\":\"2.0.0\",\"optionalDependencies\":{\"fsevents\":\"^2.3.0\"}}","indentStyle":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"reorder_into_conventional_npm_order_2_space_indent":{"summary":"Reorder into conventional npm order (2-space indent)","value":{"tool":"package-json-formatter-key-sorter","tool_version":"1.0.2","outputs":{"packageJsonOutput":"{\n  \"name\": \"my-cool-package\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Example package for the formatter tool\",\n  \"keywords\": [\n    \"demo\",\n    \"example\"\n  ],\n  \"license\": \"MIT\",\n  \"main\": \"dist/index.js\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/example/my-cool-package.git\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"build\": \"webpack --mode production\",\n    \"start\": \"node index.js\"\n  },\n  \"dependencies\": {\n    \"axios\": \"^1.6.0\",\n    \"express\": \"~4.18.2\",\n    \"lodash\": \"^4.17.21\"\n  },\n  \"devDependencies\": {\n    \"eslint\": \"^8.50.0\",\n    \"webpack\": \"^5.90.0\"\n  },\n  \"customField\": \"unknown field preserved\"\n}"},"credits_used":5,"credits_remaining":null}},"sorts_dependency_maps_keeps_unknown_fields_relative_order_4_space_indent":{"summary":"Sorts dependency maps, keeps unknown fields' relative order (4-space indent)","value":{"tool":"package-json-formatter-key-sorter","tool_version":"1.0.2","outputs":{"packageJsonOutput":"{\n    \"name\": \"peer-pkg\",\n    \"version\": \"2.0.0\",\n    \"peerDependencies\": {\n        \"react\": \"^18.0.0\",\n        \"react-dom\": \"^18.0.0\"\n    },\n    \"optionalDependencies\": {\n        \"fsevents\": \"^2.3.0\"\n    },\n    \"unknownFieldB\": \"b\",\n    \"unknownFieldA\": \"a\"\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"packageJsonOutput":{"type":"string","description":"Formatted package.json"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/php-code-formatter":{"post":{"operationId":"run_php_code_formatter","summary":"PHP Code Formatter","tags":["Formatters"],"description":"Format and beautify PHP source code - re-indent by brace depth, normalize operator spacing, and choose PSR-12 mixed, K&R, or Allman brace style. Handles variables, string interpolation, heredoc/nowdoc, and -> / :: operators.\n\n[Try PHP Code Formatter in your browser →](https://iotools.cloud/tool/php-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"phpInput":{"type":"string","description":"PHP Code"},"indent":{"enum":["2","4","8","tab"],"description":"Indent"},"braceStyle":{"enum":["mixed","attach","allman"],"description":"Brace Style"},"normalizeBlankLines":{"type":"boolean","description":"Normalize blank lines (collapse long runs of blank lines)"}},"required":[]},"examples":{"format_a_class_psr_12_mixed_4_spaces":{"summary":"Format a class (PSR-12 mixed, 4 spaces)","value":{"phpInput":"<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\User;\n\nclass   UserService {\nprivate   array   $users;\n\n  public   function   __construct(){\n$this->users=[];\n}\n\n    public   function   getActiveUsers():   array{\n    $active=[];\n      foreach($this->users   as   $user){\n      if($user!==null&&$user->isActive()){\n        $active[]=$user;\n      }\n    }\n  return   $active;\n}\n}","indent":"4","braceStyle":"mixed","normalizeBlankLines":"true"}},"k_r_same_line_braces_2_spaces":{"summary":"K&R same-line braces, 2 spaces","value":{"phpInput":"<?php\nclass Box\n{\nprivate int $n;\npublic function __construct($n)\n{\n$this->n=$n;\n}\npublic function get()\n{\nreturn $this->n;\n}\n}","indent":"2","braceStyle":"attach","normalizeBlankLines":"true"}},"allman_next_line_braces_tabs":{"summary":"Allman next-line braces, tabs","value":{"phpInput":"<?php\nclass Box\n{\nprivate int $n;\npublic function __construct($n)\n{\n$this->n=$n;\n}\npublic function get()\n{\nreturn $this->n;\n}\n}","indent":"tab","braceStyle":"allman","normalizeBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_class_psr_12_mixed_4_spaces":{"summary":"Format a class (PSR-12 mixed, 4 spaces)","value":{"tool":"php-code-formatter","tool_version":"1.0.2","outputs":{"output":"<?php\n\nnamespace App\\Services;\n\nuse App\\Models\\User;\n\nclass UserService\n{\n    private array $users;\n\n    public function __construct()\n    {\n        $this->users = [];\n    }\n\n    public function getActiveUsers(): array\n    {\n        $active = [];\n        foreach ($this->users as $user) {\n            if ($user !== null && $user->isActive()) {\n                $active[] = $user;\n            }\n        }\n        return $active;\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"k_r_same_line_braces_2_spaces":{"summary":"K&R same-line braces, 2 spaces","value":{"tool":"php-code-formatter","tool_version":"1.0.2","outputs":{"output":"<?php\nclass Box {\n  private int $n;\n  public function __construct($n) {\n    $this->n = $n;\n  }\n  public function get() {\n    return $this->n;\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"allman_next_line_braces_tabs":{"summary":"Allman next-line braces, tabs","value":{"tool":"php-code-formatter","tool_version":"1.0.2","outputs":{"output":"<?php\nclass Box\n{\n\tprivate int $n;\n\tpublic function __construct($n)\n\t{\n\t\t$this->n = $n;\n\t}\n\tpublic function get()\n\t{\n\t\treturn $this->n;\n\t}\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/prisma-schema-formatter":{"post":{"operationId":"run_prisma_schema_formatter","summary":"Prisma Schema Formatter","tags":["Formatters"],"description":"Format and beautify Prisma .prisma schema files — re-indent model/enum/datasource/generator blocks and column-align field names, types and attributes, Prisma format's signature look. Preserves // and /// doc comments, handles multi-line attribute values, and can reorder fields alphabetically or by type.\n\n[Try Prisma Schema Formatter in your browser →](https://iotools.cloud/tool/prisma-schema-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"prismaInput":{"type":"string","description":"Prisma Schema"},"sortFields":{"enum":["none","alpha","type-grouped"],"description":"Field Sorting"}},"required":[]},"examples":{"align_columns_in_a_model_preserve_order":{"summary":"Align columns in a model (preserve order)","value":{"prismaInput":"model User {\nid Int @id @default(autoincrement())\nemail String @unique\nname String?\n}","sortFields":"none"}},"sort_fields_alphabetically":{"summary":"Sort fields alphabetically","value":{"prismaInput":"model User {\nid Int @id @default(autoincrement())\nemail String @unique\nname String?\n}","sortFields":"alpha"}},"format_a_full_schema_datasource_generator_doc_comments_enums":{"summary":"Format a full schema (datasource, generator, doc comments, enums)","value":{"prismaInput":"// Prisma Schema for a Blog Application\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n  provider = \"prisma-client-js\"\n  previewFeatures = [\"fullTextSearch\", \"filteredRelationCount\"]\n}\n\n/// Represents a user in the system\nmodel User {\n  id        Int      @id @default(autoincrement())\n  email     String   @unique\n  name      String?\n  password  String\n  role      Role     @default(USER)\n  posts     Post[]\n  comments  Comment[]\n  profile   Profile?\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n\n  @@map(\"users\")\n  @@index([email])\n}\n\nmodel Profile {\n  id     Int    @id @default(autoincrement())\n  bio    String?\n  avatar String?\n  userId Int    @unique\n  user   User   @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@map(\"profiles\")\n}\n\n/// Blog post with content and metadata\nmodel Post {\n  id          Int       @id @default(autoincrement())\n  title       String    @db.VarChar(255)\n  slug        String    @unique\n  content     String?\n  published   Boolean   @default(false)\n  authorId    Int\n  author      User      @relation(fields: [authorId], references: [id])\n  categories  Category[]\n  comments    Comment[]\n  tags        Tag[]\n  viewCount   Int       @default(0)\n  createdAt   DateTime  @default(now())\n  updatedAt   DateTime  @updatedAt\n\n  @@index([authorId])\n  @@index([slug])\n  @@unique([title, authorId])\n}\n\nmodel Comment {\n  id        Int      @id @default(autoincrement())\n  content   String\n  authorId  Int\n  author    User     @relation(fields: [authorId], references: [id])\n  postId    Int\n  post      Post     @relation(fields: [postId], references: [id], onDelete: Cascade)\n  createdAt DateTime @default(now())\n\n  @@map(\"comments\")\n  @@index([postId])\n}\n\nmodel Category {\n  id    Int    @id @default(autoincrement())\n  name  String @unique\n  posts Post[]\n\n  @@map(\"categories\")\n}\n\nmodel Tag {\n  id    Int    @id @default(autoincrement())\n  name  String @unique\n  posts Post[]\n\n  @@map(\"tags\")\n}\n\n/// User role enumeration\nenum Role {\n  USER\n  EDITOR\n  ADMIN\n\n  @@map(\"roles\")\n}\n\nenum PostStatus {\n  DRAFT\n  REVIEW\n  PUBLISHED\n  ARCHIVED @map(\"archived_status\")\n}","sortFields":"none"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"align_columns_in_a_model_preserve_order":{"summary":"Align columns in a model (preserve order)","value":{"tool":"prisma-schema-formatter","tool_version":"1.0.2","outputs":{"output":"model User {\n  id    Int     @id @default(autoincrement())\n  email String  @unique\n  name  String?\n}\n"},"credits_used":5,"credits_remaining":null}},"sort_fields_alphabetically":{"summary":"Sort fields alphabetically","value":{"tool":"prisma-schema-formatter","tool_version":"1.0.2","outputs":{"output":"model User {\n  email String  @unique\n  id    Int     @id @default(autoincrement())\n  name  String?\n}\n"},"credits_used":5,"credits_remaining":null}},"format_a_full_schema_datasource_generator_doc_comments_enums":{"summary":"Format a full schema (datasource, generator, doc comments, enums)","value":{"tool":"prisma-schema-formatter","tool_version":"1.0.2","outputs":{"output":"// Prisma Schema for a Blog Application\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"DATABASE_URL\")\n}\n\ngenerator client {\n  provider        = \"prisma-client-js\"\n  previewFeatures = [\"fullTextSearch\", \"filteredRelationCount\"]\n}\n\n/// Represents a user in the system\nmodel User {\n  id        Int       @id @default(autoincrement())\n  email     String    @unique\n  name      String?\n  password  String\n  role      Role      @default(USER)\n  posts     Post[]\n  comments  Comment[]\n  profile   Profile?\n  createdAt DateTime  @default(now())\n  updatedAt DateTime  @updatedAt\n\n  @@map(\"users\")\n  @@index([email])\n}\n\nmodel Profile {\n  id     Int     @id @default(autoincrement())\n  bio    String?\n  avatar String?\n  userId Int     @unique\n  user   User    @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n  @@map(\"profiles\")\n}\n\n/// Blog post with content and metadata\nmodel Post {\n  id         Int        @id @default(autoincrement())\n  title      String     @db.VarChar(255)\n  slug       String     @unique\n  content    String?\n  published  Boolean    @default(false)\n  authorId   Int\n  author     User       @relation(fields: [authorId], references: [id])\n  categories Category[]\n  comments   Comment[]\n  tags       Tag[]\n  viewCount  Int        @default(0)\n  createdAt  DateTime   @default(now())\n  updatedAt  DateTime   @updatedAt\n\n  @@index([authorId])\n  @@index([slug])\n  @@unique([title, authorId])\n}\n\nmodel Comment {\n  id        Int      @id @default(autoincrement())\n  content   String\n  authorId  Int\n  author    User     @relation(fields: [authorId], references: [id])\n  postId    Int\n  post      Post     @relation(fields: [postId], references: [id], onDelete: Cascade)\n  createdAt DateTime @default(now())\n\n  @@map(\"comments\")\n  @@index([postId])\n}\n\nmodel Category {\n  id    Int    @id @default(autoincrement())\n  name  String @unique\n  posts Post[]\n\n  @@map(\"categories\")\n}\n\nmodel Tag {\n  id    Int    @id @default(autoincrement())\n  name  String @unique\n  posts Post[]\n\n  @@map(\"tags\")\n}\n\n/// User role enumeration\nenum Role {\n  USER\n  EDITOR\n  ADMIN\n\n  @@map(\"roles\")\n}\n\nenum PostStatus {\n  DRAFT\n  REVIEW\n  PUBLISHED\n  ARCHIVED  @map(\"archived_status\")\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Schema"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/promql-formatter":{"post":{"operationId":"run_promql_formatter","summary":"PromQL Formatter","tags":["Formatters"],"description":"Format and validate PromQL (Prometheus Query Language) expressions — consistent indentation and line-breaking for metric selectors, label matchers, functions, binary/aggregation operators, and by/without/on/group_left clauses. Optionally wraps the result as a Prometheus recording rule. Runs entirely in your browser.\n\n[Try PromQL Formatter in your browser →](https://iotools.cloud/tool/promql-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"promqlInput":{"type":"string","description":"PromQL Query"},"indentSize":{"enum":["2","4","tab"],"description":"Indent Width"},"maxLineLength":{"type":"number","description":"Max Line Length","minimum":40,"maximum":240},"forceMultiline":{"type":"boolean","description":"Always break aggregation, function args, and label matchers onto separate lines"},"wrapRecordingRule":{"type":"boolean","description":"Wrap output as a Prometheus recording rule (YAML)"},"recordingRuleName":{"type":"string","description":"Recording rule name"}},"required":[]},"examples":{"aggregation_rate_and_vector_matching_default_2_space_100_col_wrap":{"summary":"Aggregation, rate, and vector matching — default 2-space, 100-col wrap","value":{"promqlInput":"sum by (job, instance) (rate(http_requests_total{status=~\"5..\",environment=\"production\"}[5m])) / sum by (job, instance) (rate(http_requests_total{environment=\"production\"}[5m])) > 0.05 and on(job, instance) up{job=~\"api|web\"} == 1","indentSize":"2","maxLineLength":"100","forceMultiline":"","wrapRecordingRule":"","recordingRuleName":"my:metric:name"}},"unary_minus_stays_tight_against_its_operand_the_bug_fix":{"summary":"Unary minus stays tight against its operand (the bug fix)","value":{"promqlInput":"clamp_min(delta(temperature_celsius[10m]), -1)","indentSize":"2","maxLineLength":"100","forceMultiline":"","wrapRecordingRule":"","recordingRuleName":"my:metric:name"}},"wrapped_as_a_recording_rule_yaml":{"summary":"Wrapped as a recording rule (YAML)","value":{"promqlInput":"sum(rate(http_requests_total[5m]))","indentSize":"2","maxLineLength":"100","forceMultiline":"","wrapRecordingRule":"true","recordingRuleName":"job:http_requests:rate5m"}},"invalid_label_matcher_missing_operator_value":{"summary":"Invalid label matcher (missing operator/value)","value":{"promqlInput":"up{job=\"api\", instance}","indentSize":"2","maxLineLength":"100","forceMultiline":"","wrapRecordingRule":"","recordingRuleName":"my:metric:name"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"aggregation_rate_and_vector_matching_default_2_space_100_col_wrap":{"summary":"Aggregation, rate, and vector matching — default 2-space, 100-col wrap","value":{"tool":"promql-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid PromQL — 1 line(s) exceed 100 chars: line 1 (106 chars)"}],"formattedOutput":"sum by (job, instance) (rate(http_requests_total{status=~\"5..\", environment=\"production\"}[5m])) / sum by (\n  job,\n  instance\n) (rate(http_requests_total{environment=\"production\"}[5m])) > 0.05\nand on(job, instance) up{job=~\"api|web\"} == 1\n"},"credits_used":5,"credits_remaining":null}},"unary_minus_stays_tight_against_its_operand_the_bug_fix":{"summary":"Unary minus stays tight against its operand (the bug fix)","value":{"tool":"promql-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid PromQL — No syntax errors detected"}],"formattedOutput":"clamp_min(delta(temperature_celsius[10m]), -1)\n"},"credits_used":5,"credits_remaining":null}},"wrapped_as_a_recording_rule_yaml":{"summary":"Wrapped as a recording rule (YAML)","value":{"tool":"promql-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid PromQL — No syntax errors detected"}],"formattedOutput":"- record: job:http_requests:rate5m\n  expr: sum(rate(http_requests_total[5m]))\n"},"credits_used":5,"credits_remaining":null}},"invalid_label_matcher_missing_operator_value":{"summary":"Invalid label matcher (missing operator/value)","value":{"tool":"promql-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Line 1: Incomplete label matcher inside { ... }"}],"formattedOutput":"up{job=\"api\", instance}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]},"formattedOutput":{"type":"string","description":"Formatted PromQL"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/protobuf-formatter":{"post":{"operationId":"run_protobuf_formatter","summary":"Protobuf Formatter","tags":["Formatters"],"description":"Format and pretty-print .proto (Protocol Buffers) source — consistent indentation, blank-line spacing between messages/enums/services, aligned enum values, and optional sorting of fields by tag number. Includes basic syntax validation. Runs entirely in your browser.\n\n[Try Protobuf Formatter in your browser →](https://iotools.cloud/tool/protobuf-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"protobufInput":{"type":"string","description":"Protobuf input"},"indentSize":{"enum":["2","4"],"description":"Indentation"},"sortFields":{"type":"boolean","description":"Sort fields by tag number"}},"required":[]},"examples":{"misindented_message_and_enum_default_2_space_indent":{"summary":"Misindented message and enum, default 2-space indent","value":{"protobufInput":"syntax = \"proto3\";\n\nmessage User {\n    string id = 1;\n  string email = 2;\n      string display_name = 3;\n  UserRole role = 4;\n}\n\nenum UserRole {\n  USER_ROLE_UNSPECIFIED = 0;\n    USER_ROLE_ADMIN = 1;\n  USER_ROLE_VIEWER = 2;\n}\n","indentSize":"2","sortFields":""}},"sort_fields_by_tag_number_4_space_indent":{"summary":"Sort fields by tag number, 4-space indent","value":{"protobufInput":"syntax = \"proto3\";\n\nmessage Item {\n  string name = 3;\n  int32 id = 1;\n  double price = 2;\n}\n","indentSize":"4","sortFields":"true"}},"aggregate_option_preserves_its_own_separator_style":{"summary":"Aggregate option preserves its own separator style","value":{"protobufInput":"syntax = \"proto3\";\n\noption (my.custom_option) = { name = \"example\", version = 2 };\n","indentSize":"2","sortFields":""}},"missing_syntax_declaration_and_unbalanced_brace":{"summary":"Missing syntax declaration and unbalanced brace","value":{"protobufInput":"message Broken {\n  string id = 1;\n","indentSize":"2","sortFields":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"misindented_message_and_enum_default_2_space_indent":{"summary":"Misindented message and enum, default 2-space indent","value":{"tool":"protobuf-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"syntax = \"proto3\";\n\nmessage User {\n  string id = 1;\n  string email = 2;\n  string display_name = 3;\n  UserRole role = 4;\n}\n\nenum UserRole {\n  USER_ROLE_UNSPECIFIED = 0;\n  USER_ROLE_ADMIN       = 1;\n  USER_ROLE_VIEWER      = 2;\n}\n","validation":[{"issue":"Valid protobuf — no syntax issues detected."}]},"credits_used":5,"credits_remaining":null}},"sort_fields_by_tag_number_4_space_indent":{"summary":"Sort fields by tag number, 4-space indent","value":{"tool":"protobuf-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"syntax = \"proto3\";\n\nmessage Item {\n    int32 id = 1;\n    double price = 2;\n    string name = 3;\n}\n","validation":[{"issue":"Valid protobuf — no syntax issues detected."}]},"credits_used":5,"credits_remaining":null}},"aggregate_option_preserves_its_own_separator_style":{"summary":"Aggregate option preserves its own separator style","value":{"tool":"protobuf-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"syntax = \"proto3\";\n\noption (my.custom_option) = {name = \"example\", version = 2};\n","validation":[{"issue":"Valid protobuf — no syntax issues detected."}]},"credits_used":5,"credits_remaining":null}},"missing_syntax_declaration_and_unbalanced_brace":{"summary":"Missing syntax declaration and unbalanced brace","value":{"tool":"protobuf-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"message Broken {\n  string id = 1;\n}\n","validation":[{"issue":"Missing 1 closing brace(s) \"}\""},{"issue":"Missing or invalid syntax declaration (expected syntax = \"proto2\" or \"proto3\")"},{"issue":"Line 2: Expected RBRACE but got \"\" (message close)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted protobuf"},"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/python-code-formatter":{"post":{"operationId":"run_python_code_formatter","summary":"Python Code Formatter","tags":["Formatters"],"description":"Clean up Python source: normalize existing indentation to a consistent width, tidy comma/operator spacing, collapse long blank-line runs, and trim trailing whitespace — without touching triple-quoted strings, f-strings, or comments.\n\n[Try Python Code Formatter in your browser →](https://iotools.cloud/tool/python-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pythonInput":{"type":"string","description":"Python Code"},"indent":{"enum":["2","4","8","tab"],"description":"Indent"},"normalizeSpacing":{"type":"boolean","description":"Normalize comma & operator spacing"},"normalizeBlankLines":{"type":"boolean","description":"Normalize blank lines (collapse long runs of blank lines)"}},"required":[]},"examples":{"preserve_a_multi_line_docstring_while_reindenting":{"summary":"Preserve a multi-line docstring while reindenting","value":{"pythonInput":"class Greeter:\n  def __init__(self, name):\n      '''Store the name to greet.\n\n      Multi-line docstring with its own\n        deliberately-indented example block\n      that must survive untouched.\n      '''\n      self.name=name\n\n  def greet(self):\n        # say hello\n      return \"Hello, \"+self.name+\"!\"","indent":"4","normalizeSpacing":"true","normalizeBlankLines":"true"}},"normalize_inconsistent_indentation_to_4_spaces":{"summary":"Normalize inconsistent indentation to 4 spaces","value":{"pythonInput":"def classify(n):\n  if n < 0:\n        return 'negative'\n  elif n == 0:\n    return 'zero'\n  else:\n      result = []\n      for i in range(n):\n          if i % 2 == 0:\n                  result.append(i)\n      return result","indent":"4","normalizeSpacing":"true","normalizeBlankLines":"true"}},"f_string_interpolation_stays_untouched_2_space_indent":{"summary":"F-string interpolation stays untouched, 2-space indent","value":{"pythonInput":"def describe(user,count):\n    label=f\"{user['name']} has {count} item{'s' if count!=1 else ''}\"\n    return label","indent":"2","normalizeSpacing":"true","normalizeBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"preserve_a_multi_line_docstring_while_reindenting":{"summary":"Preserve a multi-line docstring while reindenting","value":{"tool":"python-code-formatter","tool_version":"1.0.2","outputs":{"output":"class Greeter:\n    def __init__(self, name):\n        '''Store the name to greet.\n\n      Multi-line docstring with its own\n        deliberately-indented example block\n      that must survive untouched.\n      '''\n        self.name=name\n\n    def greet(self):\n        # say hello\n        return \"Hello, \"+self.name+\"!\"\n"},"credits_used":5,"credits_remaining":null}},"normalize_inconsistent_indentation_to_4_spaces":{"summary":"Normalize inconsistent indentation to 4 spaces","value":{"tool":"python-code-formatter","tool_version":"1.0.2","outputs":{"output":"def classify(n):\n    if n < 0:\n        return 'negative'\n    elif n == 0:\n        return 'zero'\n    else:\n        result = []\n        for i in range(n):\n            if i % 2 == 0:\n                result.append(i)\n        return result\n"},"credits_used":5,"credits_remaining":null}},"f_string_interpolation_stays_untouched_2_space_indent":{"summary":"F-string interpolation stays untouched, 2-space indent","value":{"tool":"python-code-formatter","tool_version":"1.0.2","outputs":{"output":"def describe(user, count):\n  label=f\"{user['name']} has {count} item{'s' if count!=1 else ''}\"\n  return label\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-optimizer":{"post":{"operationId":"run_svg_optimizer","summary":"SVG Optimizer","tags":["Formatters"],"description":"Shrink SVG markup with the real SVGO optimizer — strip comments, editor metadata and XML boilerplate, drop redundant/default attribute values, round coordinate precision, minify path data, shorten hex colors, and remove unreferenced IDs. Shows original vs. optimized size and the reduction percentage.\n\n[Try SVG Optimizer in your browser →](https://iotools.cloud/tool/svg-optimizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"svgInput":{"type":"string","description":"SVG Code"},"preset":{"enum":["light","moderate","aggressive","custom"],"description":"Preset"},"removeComments":{"type":"boolean","description":"Remove comments"},"removeMetadata":{"type":"boolean","description":"Remove editor metadata, title & desc"},"minifyPaths":{"type":"boolean","description":"Minify path data (reduce coordinate precision)"},"removeDefaults":{"type":"boolean","description":"Remove default/redundant attribute values"},"removeHidden":{"type":"boolean","description":"Remove hidden/invisible elements"},"collapseGroups":{"type":"boolean","description":"Collapse unnecessary groups"},"stylesToAttributes":{"type":"boolean","description":"Convert inline styles to presentation attributes"},"removeUnusedIds":{"type":"boolean","description":"Remove unreferenced IDs"},"roundCoordinates":{"type":"boolean","description":"Round coordinates"},"removeEmptyContainers":{"type":"boolean","description":"Remove empty containers"},"precision":{"type":"number","description":"Coordinate Precision","minimum":0,"maximum":5}},"required":[]},"examples":{"moderate_preset_inkscape_export":{"summary":"Moderate preset — Inkscape export","value":{"svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:inkscape=\"http://inkscape.sourceforge.net/DTD/inkscape-0.dtd\" viewBox=\"0.000 0.000 200.000 200.000\" width=\"200.000\" height=\"200.000\">\n  <!-- Created with Inkscape (http://www.inkscape.org/) -->\n  <metadata>Example</metadata>\n  <g id=\"unused-group-id\">\n    <rect x=\"10.0000\" y=\"10.0000\" width=\"180.0000\" height=\"180.0000\" rx=\"20.0000\" fill=\"#ffffff\" fill-opacity=\"1\" stroke-width=\"1\" />\n    <circle cx=\"70.12345\" cy=\"80.98765\" r=\"25.54321\" fill=\"#ffffff\" opacity=\"1\" display=\"inline\" />\n  </g>\n  <g></g>\n  <!-- Unused empty group above -->\n</svg>","preset":"moderate"}},"custom_remove_unused_ids_and_hidden_elements":{"summary":"Custom — remove unused IDs and hidden elements","value":{"svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><rect id=\"unused\" x=\"0\" y=\"0\" width=\"50\" height=\"50\" fill=\"#ff0000\" /><circle id=\"referenced\" cx=\"70\" cy=\"70\" r=\"20\" fill=\"url(#referenced)\" /><rect x=\"0\" y=\"0\" width=\"10\" height=\"10\" display=\"none\" /></svg>","preset":"custom","removeComments":"true","removeMetadata":"true","minifyPaths":"true","removeDefaults":"true","removeHidden":"true","collapseGroups":"true","stylesToAttributes":"","removeUnusedIds":"true","roundCoordinates":"true","removeEmptyContainers":"true","precision":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"moderate_preset_inkscape_export":{"summary":"Moderate preset — Inkscape export","value":{"tool":"svg-optimizer","tool_version":"1.0.2","outputs":{"svgOutput":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:inkscape=\"http://inkscape.sourceforge.net/DTD/inkscape-0.dtd\" viewBox=\"0 0 200 200\" width=\"200\" height=\"200\"><g fill=\"#fff\"><rect x=\"10\" y=\"10\" width=\"180\" height=\"180\" rx=\"20\"/><circle cx=\"70.123\" cy=\"80.988\" r=\"25.543\"/></g></svg>","sizeStats":[{"property":"Original Size","value":"591 B"},{"property":"Optimized Size","value":"278 B"},{"property":"Reduction","value":"53.0%"},{"property":"Bytes Saved","value":"313 B"}]},"credits_used":5,"credits_remaining":null}},"custom_remove_unused_ids_and_hidden_elements":{"summary":"Custom — remove unused IDs and hidden elements","value":{"tool":"svg-optimizer","tool_version":"1.0.2","outputs":{"svgOutput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"><rect width=\"50\" height=\"50\" fill=\"red\"/><circle id=\"a\" cx=\"70\" cy=\"70\" r=\"20\" fill=\"url(#a)\"/></svg>","sizeStats":[{"property":"Original Size","value":"272 B"},{"property":"Optimized Size","value":"166 B"},{"property":"Reduction","value":"39.0%"},{"property":"Bytes Saved","value":"106 B"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svgOutput":{"type":"string","description":"Optimized SVG Code"},"sizeStats":{"type":"array","description":"Size Comparison","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/reverse-text":{"post":{"operationId":"run_reverse_text","summary":"Reverse Text","tags":["Formatters"],"description":"Reverse text either by characters (flip the entire string) or by words (reverse word order while keeping each word intact). Handles emoji and multi-byte Unicode characters correctly.\n\n[Try Reverse Text in your browser →](https://iotools.cloud/tool/reverse-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"reverseMode":{"enum":["characters","words"],"description":"Reverse Mode"}},"required":[]},"examples":{"reverse_by_characters":{"summary":"Reverse by characters","value":{"inputText":"Hello","reverseMode":"characters"}},"reverse_word_order":{"summary":"Reverse word order","value":{"inputText":"Hello World! This is a sample text.","reverseMode":"words"}},"emoji_stays_intact":{"summary":"Emoji stays intact","value":{"inputText":"Hello 👋 World","reverseMode":"characters"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"reverse_by_characters":{"summary":"Reverse by characters","value":{"tool":"reverse-text","tool_version":"1.0.2","outputs":{"outputText":"olleH"},"credits_used":5,"credits_remaining":null}},"reverse_word_order":{"summary":"Reverse word order","value":{"tool":"reverse-text","tool_version":"1.0.2","outputs":{"outputText":"text. sample a is This World! Hello"},"credits_used":5,"credits_remaining":null}},"emoji_stays_intact":{"summary":"Emoji stays intact","value":{"tool":"reverse-text","tool_version":"1.0.2","outputs":{"outputText":"dlroW 👋 olleH"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Reversed Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ruby-code-formatter":{"post":{"operationId":"run_ruby_code_formatter","summary":"Ruby Code Formatter","tags":["Formatters"],"description":"Format and beautify Ruby source code — re-indent by block structure (class/module/def/if/unless/case/while/until/do), normalize operator and comma spacing, and choose 2-space, 4-space, or tab indentation. Strings, comments and heredocs are left untouched. Runs entirely in your browser.\n\n[Try Ruby Code Formatter in your browser →](https://iotools.cloud/tool/ruby-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rubyInput":{"type":"string","description":"Ruby Code"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent Style"},"normalizeSpacing":{"type":"boolean","description":"Normalize operator & comma spacing"},"collapseBlankLines":{"type":"boolean","description":"Collapse multiple blank lines into one"}},"required":[]},"examples":{"nested_class_method_if_else_block_2_spaces":{"summary":"Nested class → method → if/else → block (2 spaces)","value":{"rubyInput":"class Report\ndef summarize(rows)\ntotal=0\nrows.each do |row|\nif row[:valid]\ntotal+=row[:amount]\nelse\nputs \"skipping #{row[:id]}\"\nend\nend\ntotal\nend\nend","indentStyle":"2","normalizeSpacing":"true","collapseBlankLines":"true"}},"case_when_else_block_4_spaces":{"summary":"case / when / else block (4 spaces)","value":{"rubyInput":"def status_label(code)\ncase code\nwhen 200\n\"ok\"\nwhen 404\n\"not found\"\nelse\n\"unknown\"\nend\nend","indentStyle":"4","normalizeSpacing":"true","collapseBlankLines":"true"}},"heredoc_body_preserved_verbatim_2_spaces":{"summary":"Heredoc body preserved verbatim (2 spaces)","value":{"rubyInput":"def query(id)\nsql = <<~SQL\nSELECT *\nFROM users\nWHERE id = #{id}\nSQL\nrun(sql)\nend","indentStyle":"2","normalizeSpacing":"true","collapseBlankLines":"true"}},"keywords_inside_strings_comments_stay_inert_tabs":{"summary":"Keywords inside strings/comments stay inert (tabs)","value":{"rubyInput":"def render(items)\nlabels = %w[alpha beta gamma]\nitems.map do |i|\n\"#{labels[i]} => end\"  # the word end here must not dedent\nend\nend","indentStyle":"tab","normalizeSpacing":"true","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nested_class_method_if_else_block_2_spaces":{"summary":"Nested class → method → if/else → block (2 spaces)","value":{"tool":"ruby-code-formatter","tool_version":"1.0.2","outputs":{"output":"class Report\n  def summarize(rows)\n    total=0\n    rows.each do |row|\n      if row[:valid]\n        total += row[:amount]\n      else\n        puts \"skipping #{row[:id]}\"\n      end\n    end\n    total\n  end\nend\n"},"credits_used":5,"credits_remaining":null}},"case_when_else_block_4_spaces":{"summary":"case / when / else block (4 spaces)","value":{"tool":"ruby-code-formatter","tool_version":"1.0.2","outputs":{"output":"def status_label(code)\n    case code\n    when 200\n        \"ok\"\n    when 404\n        \"not found\"\n    else\n        \"unknown\"\n    end\nend\n"},"credits_used":5,"credits_remaining":null}},"heredoc_body_preserved_verbatim_2_spaces":{"summary":"Heredoc body preserved verbatim (2 spaces)","value":{"tool":"ruby-code-formatter","tool_version":"1.0.2","outputs":{"output":"def query(id)\n  sql = <<~SQL\nSELECT *\nFROM users\nWHERE id = #{id}\nSQL\n  run(sql)\nend\n"},"credits_used":5,"credits_remaining":null}},"keywords_inside_strings_comments_stay_inert_tabs":{"summary":"Keywords inside strings/comments stay inert (tabs)","value":{"tool":"ruby-code-formatter","tool_version":"1.0.2","outputs":{"output":"def render(items)\n\tlabels = %w[alpha beta gamma]\n\titems.map do |i|\n\t\t\"#{labels[i]} => end\"  # the word end here must not dedent\n\tend\nend\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rust-code-formatter":{"post":{"operationId":"run_rust_code_formatter","summary":"Rust Code Formatter","tags":["Formatters"],"description":"Re-indent Rust source code by tracking brace, paren and bracket nesting depth — fn, struct, impl, trait, enum, match arms and closures get consistent indentation, while comments, string and raw-string literals are left untouched.\n\n[Try Rust Code Formatter in your browser →](https://iotools.cloud/tool/rust-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rustInput":{"type":"string","description":"Rust Code"},"indent":{"enum":["2","4","tab"],"description":"Indent Size"}},"required":[]},"examples":{"function_with_nested_if_else_4_spaces":{"summary":"Function with nested if/else (4 spaces)","value":{"rustInput":"fn max(a: i32, b: i32) -> i32 {\nif a > b {\na\n} else {\nb\n}\n}","indent":"4"}},"struct_and_impl_block_2_spaces":{"summary":"Struct and impl block (2 spaces)","value":{"rustInput":"#[derive(Debug)]\nstruct Point {\nx: f64,\ny: f64,\n}\n\nimpl Point {\nfn origin() -> Self {\nPoint { x: 0.0, y: 0.0 }\n}\n}","indent":"2"}},"impl_fn_match_closure_4_spaces":{"summary":"impl → fn → match → closure (4 spaces)","value":{"rustInput":"impl Handler {\nfn run(&self, items: &[i32]) -> i32 {\nlet total = items.iter().fold(0, |acc, x| {\nmatch x {\n0 => acc,\nn => acc + n,\n}\n});\ntotal\n}\n}","indent":"4"}},"braces_inside_strings_raw_strings_chars_and_comments_are_ignored":{"summary":"Braces inside strings, raw strings, chars and comments are ignored","value":{"rustInput":"fn demo() {\nlet s = \"a { b } c\";\nlet r = r#\"raw ) string {\"#;\nlet c = '}';\n// a comment with { braces }\nlet life: &'static str = \"ok\";\n}","indent":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"function_with_nested_if_else_4_spaces":{"summary":"Function with nested if/else (4 spaces)","value":{"tool":"rust-code-formatter","tool_version":"1.0.2","outputs":{"output":"fn max(a: i32, b: i32) -> i32 {\n    if a > b {\n        a\n    } else {\n        b\n    }\n}"},"credits_used":5,"credits_remaining":null}},"struct_and_impl_block_2_spaces":{"summary":"Struct and impl block (2 spaces)","value":{"tool":"rust-code-formatter","tool_version":"1.0.2","outputs":{"output":"#[derive(Debug)]\nstruct Point {\n  x: f64,\n  y: f64,\n}\n\nimpl Point {\n  fn origin() -> Self {\n    Point { x: 0.0, y: 0.0 }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"impl_fn_match_closure_4_spaces":{"summary":"impl → fn → match → closure (4 spaces)","value":{"tool":"rust-code-formatter","tool_version":"1.0.2","outputs":{"output":"impl Handler {\n    fn run(&self, items: &[i32]) -> i32 {\n        let total = items.iter().fold(0, |acc, x| {\n            match x {\n                0 => acc,\n                n => acc + n,\n            }\n        });\n        total\n    }\n}"},"credits_used":5,"credits_remaining":null}},"braces_inside_strings_raw_strings_chars_and_comments_are_ignored":{"summary":"Braces inside strings, raw strings, chars and comments are ignored","value":{"tool":"rust-code-formatter","tool_version":"1.0.2","outputs":{"output":"fn demo() {\n    let s = \"a { b } c\";\n    let r = r#\"raw ) string {\"#;\n    let c = '}';\n    // a comment with { braces }\n    let life: &'static str = \"ok\";\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/scala-code-formatter":{"post":{"operationId":"run_scala_code_formatter","summary":"Scala Code Formatter","tags":["Formatters"],"description":"Re-indent Scala source code by tracking brace, paren and bracket nesting depth — object, class, trait, def, match/case, if/else and for/yield blocks get consistent indentation, while comments, string and triple-quoted literals are left untouched.\n\n[Try Scala Code Formatter in your browser →](https://iotools.cloud/tool/scala-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"scalaInput":{"type":"string","description":"Scala Code"},"indent":{"enum":["2","4","tab"],"description":"Indent Size"}},"required":[]},"examples":{"object_with_nested_if_else_2_spaces":{"summary":"Object with nested if/else (2 spaces)","value":{"scalaInput":"object Main {\ndef greet(name: String): String = {\nif (name.isEmpty) {\n\"Hello, stranger\"\n} else {\ns\"Hello, $name\"\n}\n}\n}","indent":"2"}},"case_class_with_method_body_4_spaces":{"summary":"Case class with method body (4 spaces)","value":{"scalaInput":"case class Point(x: Double, y: Double) {\ndef distance(other: Point): Double = {\nval dx = x - other.x\nval dy = y - other.y\nmath.sqrt(dx * dx + dy * dy)\n}\n}","indent":"4"}},"object_class_def_match_case_2_spaces":{"summary":"object → class → def → match/case (2 spaces)","value":{"scalaInput":"object Geometry {\nclass Shape(name: String) {\ndef describe(sides: Int): String = sides match {\ncase 0 => \"circle\"\ncase 3 => \"triangle\"\ncase _ => s\"$name with $sides sides\"\n}\n}\n}","indent":"2"}},"braces_inside_strings_triple_quotes_chars_and_nested_comments_are_ignored":{"summary":"Braces inside strings, triple-quotes, chars and nested comments are ignored","value":{"scalaInput":"object Demo {\nval a = \"a { b } c\"\nval sql = \"\"\"SELECT * FROM t WHERE x = \"y\" AND z > 0\"\"\"\nval ch = '}'\n/* a block { comment } /* nested */ still open */\nval m = s\"total: ${items.map(_.size).sum}\"\n}","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"object_with_nested_if_else_2_spaces":{"summary":"Object with nested if/else (2 spaces)","value":{"tool":"scala-code-formatter","tool_version":"1.0.2","outputs":{"output":"object Main {\n  def greet(name: String): String = {\n    if (name.isEmpty) {\n      \"Hello, stranger\"\n    } else {\n      s\"Hello, $name\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"case_class_with_method_body_4_spaces":{"summary":"Case class with method body (4 spaces)","value":{"tool":"scala-code-formatter","tool_version":"1.0.2","outputs":{"output":"case class Point(x: Double, y: Double) {\n    def distance(other: Point): Double = {\n        val dx = x - other.x\n        val dy = y - other.y\n        math.sqrt(dx * dx + dy * dy)\n    }\n}"},"credits_used":5,"credits_remaining":null}},"object_class_def_match_case_2_spaces":{"summary":"object → class → def → match/case (2 spaces)","value":{"tool":"scala-code-formatter","tool_version":"1.0.2","outputs":{"output":"object Geometry {\n  class Shape(name: String) {\n    def describe(sides: Int): String = sides match {\n      case 0 => \"circle\"\n      case 3 => \"triangle\"\n      case _ => s\"$name with $sides sides\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"braces_inside_strings_triple_quotes_chars_and_nested_comments_are_ignored":{"summary":"Braces inside strings, triple-quotes, chars and nested comments are ignored","value":{"tool":"scala-code-formatter","tool_version":"1.0.2","outputs":{"output":"object Demo {\n  val a = \"a { b } c\"\n  val sql = \"\"\"SELECT * FROM t WHERE x = \"y\" AND z > 0\"\"\"\n  val ch = '}'\n  /* a block { comment } /* nested */ still open */\n  val m = s\"total: ${items.map(_.size).sum}\"\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/scss-formatter":{"post":{"operationId":"run_scss_formatter","summary":"SCSS Formatter","tags":["Formatters"],"description":"Format and re-indent SCSS / Sass source by tracking brace nesting depth — rules, nested selectors, $variables, @mixin/@include and @if/@else/@each/@for blocks get consistent indentation, while comments, strings and #{} interpolation are left untouched. Structural formatting only, not a Sass compiler.\n\n[Try SCSS Formatter in your browser →](https://iotools.cloud/tool/scss-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"scssInput":{"type":"string","description":"SCSS Code"},"indent":{"enum":["2","4","tab"],"description":"Indent Size"}},"required":[]},"examples":{"compressed_rule_with_a_variable_2_spaces":{"summary":"Compressed rule with a $variable (2 spaces)","value":{"scssInput":"$primary:    #3498db;\n.button{color:$primary;padding:8px 16px;border-radius:4px;}","indent":"2"}},"mixin_content_and_include_2_spaces":{"summary":"Mixin, @content and @include (2 spaces)","value":{"scssInput":"@mixin respond-to($breakpoint:768px){\n@media (min-width:$breakpoint){\n@content;\n}\n}\n.container{\nwidth:100%;\n@include respond-to(1024px){padding:0 20px;}\n}","indent":"2"}},"nested_selector_with_if_else_4_spaces":{"summary":"Nested selector with @if/@else (4 spaces)","value":{"scssInput":"$large: true;\n.card{\ncolor:#333;\n.card__header{\n@if $large{\nfont-size:20px;\n}@else{\nfont-size:14px;\n}\n&:hover{opacity:0.8;}\n}\n}","indent":"4"}},"braces_in_comments_strings_url_and_interpolation_are_ignored":{"summary":"Braces in comments, strings, url() and #{} interpolation are ignored","value":{"scssInput":".hero{\n// a line comment with { braces }\ncontent:\"a { b } c\";\nbackground:url(\"http://ex.com/bg.png\");\nwidth:calc(100% - #{$gap});\n}","indent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compressed_rule_with_a_variable_2_spaces":{"summary":"Compressed rule with a $variable (2 spaces)","value":{"tool":"scss-formatter","tool_version":"1.0.2","outputs":{"output":"$primary: #3498db;\n.button {\n  color: $primary;\n  padding: 8px 16px;\n  border-radius: 4px;\n}"},"credits_used":5,"credits_remaining":null}},"mixin_content_and_include_2_spaces":{"summary":"Mixin, @content and @include (2 spaces)","value":{"tool":"scss-formatter","tool_version":"1.0.2","outputs":{"output":"@mixin respond-to($breakpoint:768px) {\n  @media (min-width:$breakpoint) {\n    @content;\n  }\n}\n.container {\n  width: 100%;\n  @include respond-to(1024px) {\n    padding: 0 20px;\n  }\n}"},"credits_used":5,"credits_remaining":null}},"nested_selector_with_if_else_4_spaces":{"summary":"Nested selector with @if/@else (4 spaces)","value":{"tool":"scss-formatter","tool_version":"1.0.2","outputs":{"output":"$large: true;\n.card {\n    color: #333;\n    .card__header {\n        @if $large {\n            font-size: 20px;\n        } @else {\n            font-size: 14px;\n        }\n        &:hover {\n            opacity: 0.8;\n        }\n    }\n}"},"credits_used":5,"credits_remaining":null}},"braces_in_comments_strings_url_and_interpolation_are_ignored":{"summary":"Braces in comments, strings, url() and #{} interpolation are ignored","value":{"tool":"scss-formatter","tool_version":"1.0.2","outputs":{"output":".hero {\n  // a line comment with { braces }\n  content: \"a { b } c\";\n  background: url(\"http://ex.com/bg.png\");\n  width: calc(100% - #{$gap});\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Formatted SCSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sql-formatter":{"post":{"operationId":"run_sql_formatter","summary":"SQL Formatter","tags":["Formatters"],"description":"Pretty-print and beautify SQL queries — real dialect-aware formatting (MySQL, PostgreSQL, SQLite, SQL Server, BigQuery, Snowflake and more) with configurable indent size and keyword casing. Runs entirely in your browser.\n\n[Try SQL Formatter in your browser →](https://iotools.cloud/tool/sql-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sqlInput":{"type":"string","description":"SQL Query"},"dialect":{"enum":["sql","mysql","mariadb","postgresql","sqlite","transactsql","bigquery","snowflake","redshift","db2","db2i","plsql","hive","spark","trino","n1ql","tidb","singlestoredb","duckdb","clickhouse"],"description":"Dialect"},"keywordCase":{"enum":["upper","lower","preserve"],"description":"Keyword Case"},"indentSize":{"type":"number","description":"Indent Size","minimum":1,"maximum":8},"useTabs":{"type":"boolean","description":"Use Tabs Instead of Spaces"}},"required":[]},"examples":{"select_with_join_where_group_by_order_by_standard_sql_2_space_uppercase":{"summary":"SELECT with JOIN, WHERE, GROUP BY, ORDER BY (Standard SQL, 2-space, uppercase)","value":{"sqlInput":"SELECT c.customer_id, c.name, COUNT(o.id) AS order_count, SUM(o.total) AS total_spent FROM customers c INNER JOIN orders o ON c.customer_id = o.customer_id WHERE o.status = 'completed' GROUP BY c.customer_id, c.name ORDER BY total_spent DESC LIMIT 10;","dialect":"sql","keywordCase":"upper","indentSize":"2","useTabs":""}},"same_query_mysql_dialect_4_space_indent_lowercase_keywords":{"summary":"Same query — MySQL dialect, 4-space indent, lowercase keywords","value":{"sqlInput":"SELECT c.customer_id, c.name, COUNT(o.id) AS order_count, SUM(o.total) AS total_spent FROM customers c INNER JOIN orders o ON c.customer_id = o.customer_id WHERE o.status = 'completed' GROUP BY c.customer_id, c.name ORDER BY total_spent DESC LIMIT 10;","dialect":"mysql","keywordCase":"lower","indentSize":"4","useTabs":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"select_with_join_where_group_by_order_by_standard_sql_2_space_uppercase":{"summary":"SELECT with JOIN, WHERE, GROUP BY, ORDER BY (Standard SQL, 2-space, uppercase)","value":{"tool":"sql-formatter","tool_version":"1.0.2","outputs":{"sqlOutput":"SELECT\n  c.customer_id,\n  c.name,\n  COUNT(o.id) AS order_count,\n  SUM(o.total) AS total_spent\nFROM\n  customers c\n  INNER JOIN orders o ON c.customer_id = o.customer_id\nWHERE\n  o.status = 'completed'\nGROUP BY\n  c.customer_id,\n  c.name\nORDER BY\n  total_spent DESC\nLIMIT\n  10;"},"credits_used":5,"credits_remaining":null}},"same_query_mysql_dialect_4_space_indent_lowercase_keywords":{"summary":"Same query — MySQL dialect, 4-space indent, lowercase keywords","value":{"tool":"sql-formatter","tool_version":"1.0.2","outputs":{"sqlOutput":"select\n    c.customer_id,\n    c.name,\n    COUNT(o.id) as order_count,\n    SUM(o.total) as total_spent\nfrom\n    customers c\n    inner join orders o on c.customer_id = o.customer_id\nwhere\n    o.status = 'completed'\ngroup by\n    c.customer_id,\n    c.name\norder by\n    total_spent desc\nlimit\n    10;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sqlOutput":{"type":"string","description":"Formatted SQL"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sql-minifier":{"post":{"operationId":"run_sql_minifier","summary":"SQL Minifier","tags":["Formatters"],"description":"Minify a SQL query by stripping -- / # / block comments and collapsing whitespace to single spaces, while leaving string literals and quoted identifiers byte-for-byte untouched — even ones containing '' escaped quotes or comment-like -- and /* */ sequences.\n\n[Try SQL Minifier in your browser →](https://iotools.cloud/tool/sql-minifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sqlInput":{"type":"string","description":"SQL Input"}},"required":[]},"examples":{"comments_and_a_string_containing_and_it_s":{"summary":"Comments and a string containing '--' and \"it's\"","value":{"sqlInput":"SELECT\n  u.id,\n  u.name -- the display name\nFROM users u\n/* only completed orders */\nWHERE u.bio = 'it''s a --test-- value'\n  AND u.status = 'active';"}},"block_comment_beside_a_literal_containing":{"summary":"Block comment beside a literal containing /* */","value":{"sqlInput":"SELECT * FROM logs\nWHERE message = 'a /* not a comment */ b'\n  /* drop this real comment */\n  AND level = 'error';"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"comments_and_a_string_containing_and_it_s":{"summary":"Comments and a string containing '--' and \"it's\"","value":{"tool":"sql-minifier","tool_version":"1.0.2","outputs":{"sqlOutput":"SELECT u.id, u.name FROM users u WHERE u.bio = 'it''s a --test-- value' AND u.status = 'active';","sizeStats":[{"property":"Original Size","value":"150 B"},{"property":"Minified Size","value":"96 B"},{"property":"Reduction","value":"36.0%"},{"property":"Bytes Saved","value":"54 B"}]},"credits_used":5,"credits_remaining":null}},"block_comment_beside_a_literal_containing":{"summary":"Block comment beside a literal containing /* */","value":{"tool":"sql-minifier","tool_version":"1.0.2","outputs":{"sqlOutput":"SELECT * FROM logs WHERE message = 'a /* not a comment */ b' AND level = 'error';","sizeStats":[{"property":"Original Size","value":"114 B"},{"property":"Minified Size","value":"81 B"},{"property":"Reduction","value":"28.9%"},{"property":"Bytes Saved","value":"33 B"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sqlOutput":{"type":"string","description":"Minified SQL"},"sizeStats":{"type":"array","description":"Size Stats","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/terraform-formatter":{"post":{"operationId":"run_terraform_formatter","summary":"Terraform Formatter","tags":["Formatters"],"description":"Format and beautify HCL (HashiCorp Configuration Language) source — the same spirit as `terraform fmt`: align `=` signs within blocks, normalize indentation, reorder meta-arguments (count/for_each first, lifecycle/provisioner last), and optionally sort attributes alphabetically. Includes basic syntax validation. Runs entirely in your browser.\n\n[Try Terraform Formatter in your browser →](https://iotools.cloud/tool/terraform-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"terraformInput":{"type":"string","description":"Terraform Input"},"sortAttributes":{"type":"boolean","description":"Sort Attributes Alphabetically"}},"required":[]},"examples":{"resource_with_count_meta_argument_lifecycle_block_and_misaligned_map":{"summary":"Resource with count meta-argument, lifecycle block, and misaligned map","value":{"terraformInput":"resource \"aws_instance\" \"web\" {\ncount         = 2\nami           = data.aws_ami.ubuntu.id\ninstance_type = var.instance_type\nlifecycle {\ncreate_before_destroy = true\n}\ntags = {\nName = \"web\"\nEnv  = \"prod\"\n}\n}","sortAttributes":""}},"unary_minus_not_stay_tight_stays_a_single_tight_operator_the_bug_fixes":{"summary":"Unary minus/not stay tight; && stays a single tight operator (the bug fixes)","value":{"terraformInput":"variable \"offset\" {\ndefault = -1\nenabled = !var.flag\ncondition = var.a && var.b || var.c\n}","sortAttributes":""}},"sort_attributes_alphabetically":{"summary":"Sort attributes alphabetically","value":{"terraformInput":"locals {\n  zebra = 1\n  alpha = 2\n  mike  = 3\n}","sortAttributes":"true"}},"unbalanced_braces":{"summary":"Unbalanced braces","value":{"terraformInput":"resource \"aws_instance\" \"web\" {\n  ami = \"x\"\n","sortAttributes":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"resource_with_count_meta_argument_lifecycle_block_and_misaligned_map":{"summary":"Resource with count meta-argument, lifecycle block, and misaligned map","value":{"tool":"terraform-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid HCL — No syntax errors detected"}],"formattedOutput":"resource \"aws_instance\" \"web\" {\n  count         = 2\n  ami           = data.aws_ami.ubuntu.id\n  instance_type = var.instance_type\n  tags          = {\n    Name = \"web\"\n    Env  = \"prod\"\n  }\n\n  lifecycle {\n    create_before_destroy = true\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"unary_minus_not_stay_tight_stays_a_single_tight_operator_the_bug_fixes":{"summary":"Unary minus/not stay tight; && stays a single tight operator (the bug fixes)","value":{"tool":"terraform-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid HCL — No syntax errors detected"}],"formattedOutput":"variable \"offset\" {\n  default   = -1\n  enabled   = !var.flag\n  condition = var.a && var.b || var.c\n}\n"},"credits_used":5,"credits_remaining":null}},"sort_attributes_alphabetically":{"summary":"Sort attributes alphabetically","value":{"tool":"terraform-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Valid HCL — No syntax errors detected"}],"formattedOutput":"locals {\n  alpha = 2\n  mike  = 3\n  zebra = 1\n}\n"},"credits_used":5,"credits_remaining":null}},"unbalanced_braces":{"summary":"Unbalanced braces","value":{"tool":"terraform-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Missing 1 closing brace(s) \"}\""},{"issue":"Expected RBRACE but got EOF (\"\") at position 43"}],"formattedOutput":"resource \"aws_instance\" \"web\" {\n  ami = \"x\"\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]},"formattedOutput":{"type":"string","description":"Formatted Terraform"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-validator":{"post":{"operationId":"run_xml_validator","summary":"XML Validator","tags":["Formatters"],"description":"Check whether pasted XML is well-formed — matching open/close tags (case-sensitive), a single root element, correctly quoted attribute syntax, no duplicate attributes, and properly escaped special characters — with the exact line and column of every problem. Runs entirely in your browser.\n\n[Try XML Validator in your browser →](https://iotools.cloud/tool/xml-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlInput":{"type":"string","description":"XML Input"}},"required":[]},"examples":{"well_formed_document_no_issues":{"summary":"Well-formed document (no issues)","value":{"xmlInput":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bookstore>\n  <book category=\"fiction\">\n    <title lang=\"en\">The Great Gatsby</title>\n    <author>F. Scott Fitzgerald</author>\n    <year>1925</year>\n    <price>10.99</price>\n  </book>\n  <book category=\"non-fiction\">\n    <title lang=\"en\">A Brief History of Time</title>\n    <author>Stephen Hawking</author>\n    <year>1988</year>\n    <price>15.50</price>\n  </book>\n</bookstore>"}},"unclosed_root_element":{"summary":"Unclosed root element","value":{"xmlInput":"<library>\n  <book>\n    <title>XML Guide</title>\n  </book>"}},"unquoted_attribute_value":{"summary":"Unquoted attribute value","value":{"xmlInput":"<config>\n  <setting name=timeout>30</setting>\n</config>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"well_formed_document_no_issues":{"summary":"Well-formed document (no issues)","value":{"tool":"xml-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Well-formed"},{"metric":"Errors","value":"0"},{"metric":"Lines","value":"15"}],"issues":[]},"credits_used":5,"credits_remaining":null}},"unclosed_root_element":{"summary":"Unclosed root element","value":{"tool":"xml-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Not well-formed"},{"metric":"Errors","value":"1"},{"metric":"Lines","value":"4"}],"issues":[{"line":"1","column":"1","message":"Unclosed <library> tag (never closed)"}]},"credits_used":5,"credits_remaining":null}},"unquoted_attribute_value":{"summary":"Unquoted attribute value","value":{"tool":"xml-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Not well-formed"},{"metric":"Errors","value":"1"},{"metric":"Lines","value":"3"}],"issues":[{"line":"2","column":"17","message":"Attribute value for \"name\" must be wrapped in quotes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"issues":{"type":"array","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"column":{"type":"string","description":"Column"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","column","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-formatter":{"post":{"operationId":"run_yaml_formatter","summary":"YAML Formatter","tags":["Formatters"],"description":"Clean up and beautify YAML: re-indent to a consistent 2- or 4-space step, wrap or unwrap long lines, optionally sort keys alphabetically, switch between block and compact flow style, and strip comments — while preserving quoting, block scalars and (by default) comments. Handles multi-document (---) files. Runs entirely in your browser; nothing is uploaded.\n\n[Try YAML Formatter in your browser →](https://iotools.cloud/tool/yaml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"YAML Input"},"indentSize":{"enum":["2","4"],"description":"Indent Size"},"collectionStyle":{"enum":["preserve","block","flow"],"description":"Collection Style"},"lineWidth":{"type":"number","description":"Line Width","minimum":0,"maximum":200},"sortKeys":{"type":"boolean","description":"Sort keys alphabetically"},"stripComments":{"type":"boolean","description":"Strip comments"}},"required":[]},"examples":{"beautify_messy_yaml_2_space_indent":{"summary":"Beautify messy YAML (2-space indent)","value":{"inputYaml":"# Server configuration\napp:\n    name:   My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n      host: 0.0.0.0\n      port: 8080\n      features: [auth, logging, caching]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n","indentSize":"2","collectionStyle":"preserve","lineWidth":"80","sortKeys":"","stripComments":""}},"4_space_indent":{"summary":"4-space indent","value":{"inputYaml":"# Server configuration\napp:\n    name:   My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n      host: 0.0.0.0\n      port: 8080\n      features: [auth, logging, caching]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n","indentSize":"4","collectionStyle":"preserve","lineWidth":"80","sortKeys":"","stripComments":""}},"sort_keys_alphabetically":{"summary":"Sort keys alphabetically","value":{"inputYaml":"# Server configuration\napp:\n    name:   My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n      host: 0.0.0.0\n      port: 8080\n      features: [auth, logging, caching]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n","indentSize":"2","collectionStyle":"preserve","lineWidth":"80","sortKeys":"true","stripComments":""}},"compact_flow_style_minify":{"summary":"Compact flow style (minify)","value":{"inputYaml":"# Server configuration\napp:\n    name:   My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n      host: 0.0.0.0\n      port: 8080\n      features: [auth, logging, caching]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n","indentSize":"2","collectionStyle":"flow","lineWidth":"80","sortKeys":"","stripComments":""}},"strip_comments":{"summary":"Strip comments","value":{"inputYaml":"# Server configuration\napp:\n    name:   My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n      host: 0.0.0.0\n      port: 8080\n      features: [auth, logging, caching]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n","indentSize":"2","collectionStyle":"preserve","lineWidth":"80","sortKeys":"","stripComments":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"beautify_messy_yaml_2_space_indent":{"summary":"Beautify messy YAML (2-space indent)","value":{"tool":"yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"# Server configuration\napp:\n  name: My Web App\n  version: \"2.1.0\"\n  debug: false\nserver:\n  host: 0.0.0.0\n  port: 8080\n  features: [ auth, logging, caching ]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n"},"credits_used":5,"credits_remaining":null}},"4_space_indent":{"summary":"4-space indent","value":{"tool":"yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"# Server configuration\napp:\n    name: My Web App\n    version: \"2.1.0\"\n    debug: false\nserver:\n    host: 0.0.0.0\n    port: 8080\n    features: [ auth, logging, caching ]\ndatabase:\n    hosts:\n        - db1.example.com\n        - db2.example.com\n    credentials:\n        user: admin\n        password: \"s3cret\"\n"},"credits_used":5,"credits_remaining":null}},"sort_keys_alphabetically":{"summary":"Sort keys alphabetically","value":{"tool":"yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"# Server configuration\napp:\n  debug: false\n  name: My Web App\n  version: \"2.1.0\"\ndatabase:\n  credentials:\n    password: \"s3cret\"\n    user: admin\n  hosts:\n    - db1.example.com\n    - db2.example.com\nserver:\n  features: [ auth, logging, caching ]\n  host: 0.0.0.0\n  port: 8080\n"},"credits_used":5,"credits_remaining":null}},"compact_flow_style_minify":{"summary":"Compact flow style (minify)","value":{"tool":"yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"{\n  # Server configuration\n  app: { name: My Web App, version: \"2.1.0\", debug: false },\n  server: { host: 0.0.0.0, port: 8080, features: [ auth, logging, caching ] },\n  database:\n    {\n      hosts: [ db1.example.com, db2.example.com ],\n      credentials: { user: admin, password: \"s3cret\" }\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"strip_comments":{"summary":"Strip comments","value":{"tool":"yaml-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"app:\n  name: My Web App\n  version: \"2.1.0\"\n  debug: false\nserver:\n  host: 0.0.0.0\n  port: 8080\n  features: [ auth, logging, caching ]\ndatabase:\n  hosts:\n    - db1.example.com\n    - db2.example.com\n  credentials:\n    user: admin\n    password: \"s3cret\"\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted YAML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-validator":{"post":{"operationId":"run_yaml_validator","summary":"YAML Validator","tags":["Formatters"],"description":"Check whether pasted YAML is syntactically valid. Invalid input is reported error-by-error with the exact line, column and reason; valid input gets a structural summary — document count, top-level type (mapping/sequence/scalar) and key/item counts. Runs entirely in your browser.\n\n[Try YAML Validator in your browser →](https://iotools.cloud/tool/yaml-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"YAML"}},"required":[]},"examples":{"valid_configuration":{"summary":"Valid configuration","value":{"inputYaml":"name: my-app\nversion: 1.2.0\ntags:\n  - web\n  - api"}},"multiple_documents":{"summary":"Multiple documents","value":{"inputYaml":"a: 1\n---\n- x\n- y\n---\nhello"}},"invalid_indentation":{"summary":"Invalid indentation","value":{"inputYaml":"app:\n  name: test\n bad: indent"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_configuration":{"summary":"Valid configuration","value":{"tool":"yaml-validator","tool_version":"1.0.2","outputs":{"status":"Valid YAML — no syntax errors found.\n1 document · top-level mapping (3 keys) · 5 lines","errors":[]},"credits_used":5,"credits_remaining":null}},"multiple_documents":{"summary":"Multiple documents","value":{"tool":"yaml-validator","tool_version":"1.0.2","outputs":{"status":"Valid YAML — no syntax errors found.\n3 documents · 6 lines\nDocument 1: mapping (1 key)\nDocument 2: sequence (2 items)\nDocument 3: scalar","errors":[]},"credits_used":5,"credits_remaining":null}},"invalid_indentation":{"summary":"Invalid indentation","value":{"tool":"yaml-validator","tool_version":"1.0.2","outputs":{"status":"Invalid YAML — 1 error found.","errors":[{"line":"3","column":"1","message":"All mapping items must start at the same column"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"errors":{"type":"array","description":"Errors","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"column":{"type":"string","description":"Column"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","column","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-viewer":{"post":{"operationId":"run_yaml_viewer","summary":"YAML Viewer","tags":["Formatters"],"description":"Paste YAML and view it as clean, canonically re-indented YAML alongside an equivalent JSON preview — a quick way to see a config file's actual data shape. Runs entirely in your browser.\n\n[Try YAML Viewer in your browser →](https://iotools.cloud/tool/yaml-viewer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"yamlInput":{"type":"string","description":"YAML Content"}},"required":[]},"examples":{"single_document":{"summary":"Single document","value":{"yamlInput":"name: my-app\nversion: 1.2.0\ntags:\n  - web\n  - api\nconfig:\n  debug: false\n  port: 8080"}},"multiple_documents":{"summary":"Multiple documents","value":{"yamlInput":"a: 1\n---\n- x\n- y\n---\nhello"}},"invalid_indentation":{"summary":"Invalid indentation","value":{"yamlInput":"app:\n  name: test\n bad: indent"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_document":{"summary":"Single document","value":{"tool":"yaml-viewer","tool_version":"1.0.2","outputs":{"jsonPreview":"{\n  \"name\": \"my-app\",\n  \"version\": \"1.2.0\",\n  \"tags\": [\n    \"web\",\n    \"api\"\n  ],\n  \"config\": {\n    \"debug\": false,\n    \"port\": 8080\n  }\n}","formattedYaml":"name: my-app\nversion: 1.2.0\ntags:\n  - web\n  - api\nconfig:\n  debug: false\n  port: 8080\n"},"credits_used":5,"credits_remaining":null}},"multiple_documents":{"summary":"Multiple documents","value":{"tool":"yaml-viewer","tool_version":"1.0.2","outputs":{"jsonPreview":"[\n  {\n    \"a\": 1\n  },\n  [\n    \"x\",\n    \"y\"\n  ],\n  \"hello\"\n]","formattedYaml":"a: 1\n---\n- x\n- y\n---\nhello\n"},"credits_used":5,"credits_remaining":null}},"invalid_indentation":{"summary":"Invalid indentation","value":{"tool":"yaml-viewer","tool_version":"1.0.2","outputs":{"jsonPreview":"Error: Line 3, column 1: All mapping items must start at the same column","formattedYaml":"Error: Line 3, column 1: All mapping items must start at the same column"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedYaml":{"type":"string","description":"Formatted YAML"},"jsonPreview":{"type":"string","description":"JSON Preview"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-formatter":{"post":{"operationId":"run_xml_formatter","summary":"XML Formatter","tags":["Formatters"],"description":"Pretty-print and validate XML instantly. Indent with 2 spaces, 4 spaces or tabs, collapse text content onto one line, self-close empty tags, strip comments, and get a clear message when the markup is malformed.\n\n[Try XML Formatter in your browser →](https://iotools.cloud/tool/xml-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlSource":{"type":"string","description":"XML input"},"indentation":{"enum":["2","4","tab"],"description":"Indentation"},"collapseContent":{"type":"boolean","description":"Collapse content"},"forceSelfClosingForEmptyTag":{"type":"boolean","description":"Self-closing for empty tags"},"removeComments":{"type":"boolean","description":"Remove comments"}},"required":[]},"examples":{"pretty_print_2_spaces":{"summary":"Pretty-print (2 spaces)","value":{"xmlSource":"<!-- This is a comment --><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>\n</note>","indentation":"2","collapseContent":"","forceSelfClosingForEmptyTag":"","removeComments":""}},"tab_indent_self_closing_empty_tags":{"summary":"Tab indent, self-closing empty tags","value":{"xmlSource":"<?xml version=\"1.0\"?><catalog><book id=\"1\"><title>XML Basics</title><notes></notes></book></catalog>","indentation":"tab","collapseContent":"","forceSelfClosingForEmptyTag":"true","removeComments":""}},"collapse_mixed_content_remove_comments_4_spaces":{"summary":"Collapse mixed content, remove comments (4 spaces)","value":{"xmlSource":"<doc><!-- draft --><p>Hello <b>world</b>, welcome.</p><meta><author>Jani</author></meta></doc>","indentation":"4","collapseContent":"true","forceSelfClosingForEmptyTag":"","removeComments":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pretty_print_2_spaces":{"summary":"Pretty-print (2 spaces)","value":{"tool":"xml-formatter","tool_version":"1.0.2","outputs":{"formattedXml":"<!-- This is a comment -->\n<note>\n  <to>Tove</to>\n  <from>Jani</from>\n  <heading>Reminder</heading>\n  <body>Don't forget me this weekend!</body>\n</note>"},"credits_used":5,"credits_remaining":null}},"tab_indent_self_closing_empty_tags":{"summary":"Tab indent, self-closing empty tags","value":{"tool":"xml-formatter","tool_version":"1.0.2","outputs":{"formattedXml":"<?xml version=\"1.0\"?>\n<catalog>\n\t<book id=\"1\">\n\t\t<title>XML Basics</title>\n\t\t<notes/>\n\t</book>\n</catalog>"},"credits_used":5,"credits_remaining":null}},"collapse_mixed_content_remove_comments_4_spaces":{"summary":"Collapse mixed content, remove comments (4 spaces)","value":{"tool":"xml-formatter","tool_version":"1.0.2","outputs":{"formattedXml":"<doc>\n    <p>Hello <b>world</b>, welcome.</p>\n    <meta>\n        <author>Jani</author>\n    </meta>\n</doc>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedXml":{"type":"string","description":"Formatted XML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/zig-language-formatter":{"post":{"operationId":"run_zig_language_formatter","summary":"Zig Language Formatter","tags":["Formatters"],"description":"Format and beautify Zig source code — brace placement, operator/comma spacing (leaving strings, character literals, and comments untouched), block-depth indentation, and optional trailing commas on multi-line lists, matching zig fmt conventions. Includes basic bracket-balance validation. Runs entirely in your browser.\n\n[Try Zig Language Formatter in your browser →](https://iotools.cloud/tool/zig-language-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"zigInput":{"type":"string","description":"Zig Source Code"},"indentStyle":{"enum":["4spaces","2spaces","tabs"],"description":"Indentation"},"trailingComma":{"type":"boolean","description":"Add trailing commas to multi-line arg/field lists"}},"required":[]},"examples":{"struct_with_methods_arrays_and_a_while_loop_4_space_default":{"summary":"Struct with methods, arrays, and a while loop (4-space default)","value":{"zigInput":"const std=@import(\"std\");\nconst print=std.debug.print;\n\nconst Point=struct{\nx:i32,\ny:i32,\n\npub fn init(x:i32,y:i32) Point{\nreturn Point{.x=x,.y=y};\n}\n\npub fn distance(self:Point,other:Point) f64{\nconst dx=@as(f64,@floatFromInt(self.x-other.x));\nconst dy=@as(f64,@floatFromInt(self.y-other.y));\nreturn @sqrt(dx*dx+dy*dy);\n}\n};\n\npub fn main() !void{\nconst allocator=std.heap.page_allocator;\nvar list=std.ArrayList(Point).init(allocator);\ndefer list.deinit();\n\nconst points=[_]Point{\nPoint.init(0,0),\nPoint.init(3,4),\nPoint.init(6,8)\n};\n\nfor(points)|p|{\ntry list.append(p);\nprint(\"Point({d},{d})\\n\",.{p.x,p.y});\n}\n\nvar i:usize=1;\nwhile(i<list.items.len):(i+=1){\nconst d=list.items[0].distance(list.items[i]);\nprint(\"dist 0->{d}={d:.2}\\n\",.{i,d});\n}\n}","indentStyle":"4spaces","trailingComma":"true"}},"2_space_indent_no_trailing_commas":{"summary":"2-space indent, no trailing commas","value":{"zigInput":"const Vec2=struct{\nx:f32,\ny:f32\n};","indentStyle":"2spaces","trailingComma":""}},"unbalanced_braces":{"summary":"Unbalanced braces","value":{"zigInput":"const Point = struct {\nx: i32,\n","indentStyle":"4spaces","trailingComma":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"struct_with_methods_arrays_and_a_while_loop_4_space_default":{"summary":"Struct with methods, arrays, and a while loop (4-space default)","value":{"tool":"zig-language-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Looks valid — no obvious bracket mismatches"}],"formattedOutput":"const std = @import(\"std\");\nconst print = std.debug.print;\n\nconst Point = struct {\n    x: i32,\n    y: i32,\n\n    pub fn init(x: i32, y: i32) Point {\n        return Point{.x = x, .y = y};\n    }\n\n    pub fn distance(self: Point, other: Point) f64 {\n        const dx = @as(f64, @floatFromInt(self.x - other.x));\n        const dy = @as(f64, @floatFromInt(self.y - other.y));\n        return @sqrt(dx * dx + dy * dy);\n    }\n};\n\npub fn main() !void {\n    const allocator = std.heap.page_allocator;\n    var list = std.ArrayList(Point).init(allocator);\n    defer list.deinit();\n\n    const points = [_]Point{\n        Point.init(0, 0),\n        Point.init(3, 4),\n        Point.init(6, 8),\n    };\n\n    for (points) |p| {\n        try list.append(p);\n        print(\"Point({d},{d})\\n\", .{p.x, p.y});\n    }\n\n    var i: usize = 1;\n    while (i < list.items.len):(i += 1) {\n        const d = list.items[0].distance(list.items[i]);\n        print(\"dist 0->{d}={d:.2}\\n\", .{i, d});\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"2_space_indent_no_trailing_commas":{"summary":"2-space indent, no trailing commas","value":{"tool":"zig-language-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Looks valid — no obvious bracket mismatches"}],"formattedOutput":"const Vec2 = struct {\n  x: f32,\n  y: f32\n};\n"},"credits_used":5,"credits_remaining":null}},"unbalanced_braces":{"summary":"Unbalanced braces","value":{"tool":"zig-language-formatter","tool_version":"1.0.2","outputs":{"validation":[{"issue":"Missing 1 closing brace(s) \"}\""}],"formattedOutput":"const Point = struct {\n    x: i32,\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]},"formattedOutput":{"type":"string","description":"Formatted Zig Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/empty-lines-remover":{"post":{"operationId":"run_empty_lines_remover","summary":"Empty Lines Remover","tags":["Formatters"],"description":"Remove every blank line from a block of text, keeping the remaining lines in order. Runs entirely in your browser.\n\n[Try Empty Lines Remover in your browser →](https://iotools.cloud/tool/empty-lines-remover/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Original Text"}},"required":[]},"examples":{"mixed_blank_lines":{"summary":"Mixed blank lines","value":{"originalText":"Lorem ipsum dolor sit amet,\n\nConsectetur adipiscing elit.\n\n\nSed do eiusmod tempor"}},"whitespace_only_lines":{"summary":"Whitespace-only lines","value":{"originalText":"First\n   \nSecond\n\t\nThird"}},"empty_input":{"summary":"Empty input","value":{"originalText":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_blank_lines":{"summary":"Mixed blank lines","value":{"tool":"empty-lines-remover","tool_version":"1.0.2","outputs":{"updatedText":"Lorem ipsum dolor sit amet,\nConsectetur adipiscing elit.\nSed do eiusmod tempor"},"credits_used":5,"credits_remaining":null}},"whitespace_only_lines":{"summary":"Whitespace-only lines","value":{"tool":"empty-lines-remover","tool_version":"1.0.2","outputs":{"updatedText":"First\nSecond\nThird"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"empty-lines-remover","tool_version":"1.0.2","outputs":{"updatedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"updatedText":{"type":"string","description":"Updated Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/line-break-remover":{"post":{"operationId":"run_line_break_remover","summary":"Line Break Remover","tags":["Formatters"],"description":"Remove line breaks from text and join the lines back together — space-separated by default, with paragraphs (double line breaks) preserved. Optionally strip HTML tags, capitalize each paragraph, and normalize spacing.\n\n[Try Line Break Remover in your browser →](https://iotools.cloud/tool/line-break-remover/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Original Text"},"removeAllLineBreaks":{"type":"boolean","description":"Remove all line breaks"},"capitalizeParagraph":{"type":"boolean","description":"Capitalize first letter of paragraphs"},"removeHtmlTags":{"type":"boolean","description":"Remove HTML tags"},"joinLinesWith":{"enum":[" ","",".",",",";","-","_","/","|"],"description":"Join lines with"},"normalizeSpacing":{"enum":["none","single","remove"],"description":"Normalize spacing"}},"required":[]},"examples":{"preserve_paragraphs_join_with_space":{"summary":"Preserve paragraphs, join with space","value":{"originalText":"Line one\nLine two\n\nSecond paragraph line","removeAllLineBreaks":"","capitalizeParagraph":"","removeHtmlTags":"","joinLinesWith":" ","normalizeSpacing":"none"}},"remove_all_line_breaks_join_with_dash":{"summary":"Remove all line breaks, join with dash","value":{"originalText":"Line one\nLine two\n\nSecond paragraph line","removeAllLineBreaks":"true","capitalizeParagraph":"","removeHtmlTags":"","joinLinesWith":"-","normalizeSpacing":"none"}},"strip_html_capitalize_paragraphs_normalize_spacing":{"summary":"Strip HTML, capitalize paragraphs, normalize spacing","value":{"originalText":"<b>hello</b>   world\n\nsecond   paragraph","removeAllLineBreaks":"","capitalizeParagraph":"true","removeHtmlTags":"true","joinLinesWith":" ","normalizeSpacing":"single"}},"empty_input":{"summary":"Empty input","value":{"originalText":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"preserve_paragraphs_join_with_space":{"summary":"Preserve paragraphs, join with space","value":{"tool":"line-break-remover","tool_version":"1.0.2","outputs":{"updatedText":"Line one Line two\n\nSecond paragraph line"},"credits_used":5,"credits_remaining":null}},"remove_all_line_breaks_join_with_dash":{"summary":"Remove all line breaks, join with dash","value":{"tool":"line-break-remover","tool_version":"1.0.2","outputs":{"updatedText":"Line one-Line two--Second paragraph line"},"credits_used":5,"credits_remaining":null}},"strip_html_capitalize_paragraphs_normalize_spacing":{"summary":"Strip HTML, capitalize paragraphs, normalize spacing","value":{"tool":"line-break-remover","tool_version":"1.0.2","outputs":{"updatedText":"Hello world\n\nSecond paragraph"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"line-break-remover","tool_version":"1.0.2","outputs":{"updatedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"updatedText":{"type":"string","description":"Processed Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-merger":{"post":{"operationId":"run_text_merger","summary":"Text Merger","tags":["Formatters"],"description":"Join multiple lines of text into a single string. Remove line breaks, normalize spacing, and customize your text output.\n\n[Try Text Merger in your browser →](https://iotools.cloud/tool/text-merger/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Text to Merge"},"removeAllLineBreaks":{"type":"boolean","description":"Remove all line breaks"},"capitalizeParagraph":{"type":"boolean","description":"Capitalize first letter of paragraphs"},"removeHtmlTags":{"type":"boolean","description":"Remove HTML tags"},"joinLinesWith":{"enum":[" ","",".",",",";","-","_","/","|"],"description":"Join lines with"},"normalizeSpacing":{"enum":["none","single","remove"],"description":"Normalize spacing"}},"required":[]},"examples":{"preserve_paragraphs_join_with_space":{"summary":"Preserve paragraphs, join with space","value":{"originalText":"Line one\nLine two\n\nSecond paragraph line","removeAllLineBreaks":"","capitalizeParagraph":"","removeHtmlTags":"","joinLinesWith":" ","normalizeSpacing":"none"}},"remove_all_line_breaks_join_with_dash":{"summary":"Remove all line breaks, join with dash","value":{"originalText":"Line one\nLine two\n\nSecond paragraph line","removeAllLineBreaks":"true","capitalizeParagraph":"","removeHtmlTags":"","joinLinesWith":"-","normalizeSpacing":"none"}},"strip_html_capitalize_paragraphs_normalize_spacing":{"summary":"Strip HTML, capitalize paragraphs, normalize spacing","value":{"originalText":"<b>hello</b>   world\n\nsecond   paragraph","removeAllLineBreaks":"","capitalizeParagraph":"true","removeHtmlTags":"true","joinLinesWith":" ","normalizeSpacing":"single"}},"empty_input":{"summary":"Empty input","value":{"originalText":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"preserve_paragraphs_join_with_space":{"summary":"Preserve paragraphs, join with space","value":{"tool":"text-merger","tool_version":"1.0.2","outputs":{"updatedText":"Line one Line two\n\nSecond paragraph line"},"credits_used":5,"credits_remaining":null}},"remove_all_line_breaks_join_with_dash":{"summary":"Remove all line breaks, join with dash","value":{"tool":"text-merger","tool_version":"1.0.2","outputs":{"updatedText":"Line one-Line two--Second paragraph line"},"credits_used":5,"credits_remaining":null}},"strip_html_capitalize_paragraphs_normalize_spacing":{"summary":"Strip HTML, capitalize paragraphs, normalize spacing","value":{"tool":"text-merger","tool_version":"1.0.2","outputs":{"updatedText":"Hello world\n\nSecond paragraph"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"text-merger","tool_version":"1.0.2","outputs":{"updatedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"updatedText":{"type":"string","description":"Merged Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/whitespace-trimmer":{"post":{"operationId":"run_whitespace_trimmer","summary":"Whitespace Trimmer","tags":["Formatters"],"description":"Collapse repeated tabs or spaces down to a single one, or remove them entirely, anywhere in a block of text. Runs entirely in your browser.\n\n[Try Whitespace Trimmer in your browser →](https://iotools.cloud/tool/whitespace-trimmer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Original Text"},"consideredAsWhitespace":{"enum":["\t"," ","all"],"description":"Considered As Whitespace"},"removeWhitespaces":{"enum":["duplicate-whitespaces","all-whitespaces"],"description":"Removal mode"}},"required":[]},"examples":{"collapse_duplicate_spaces":{"summary":"Collapse duplicate spaces","value":{"originalText":"Hello    World\nHow   are    you?","consideredAsWhitespace":" ","removeWhitespaces":"duplicate-whitespaces"}},"remove_all_spaces_and_tabs":{"summary":"Remove all spaces and tabs","value":{"originalText":"Hello \t World","consideredAsWhitespace":"all","removeWhitespaces":"all-whitespaces"}},"collapse_duplicate_tabs_only_spaces_untouched":{"summary":"Collapse duplicate tabs only (spaces untouched)","value":{"originalText":"a\t\t\tb  c","consideredAsWhitespace":"\t","removeWhitespaces":"duplicate-whitespaces"}},"empty_input":{"summary":"Empty input","value":{"originalText":"","consideredAsWhitespace":" ","removeWhitespaces":"duplicate-whitespaces"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"collapse_duplicate_spaces":{"summary":"Collapse duplicate spaces","value":{"tool":"whitespace-trimmer","tool_version":"1.0.2","outputs":{"whitespaceRemovedText":"Hello World\nHow are you?"},"credits_used":5,"credits_remaining":null}},"remove_all_spaces_and_tabs":{"summary":"Remove all spaces and tabs","value":{"tool":"whitespace-trimmer","tool_version":"1.0.2","outputs":{"whitespaceRemovedText":"HelloWorld"},"credits_used":5,"credits_remaining":null}},"collapse_duplicate_tabs_only_spaces_untouched":{"summary":"Collapse duplicate tabs only (spaces untouched)","value":{"tool":"whitespace-trimmer","tool_version":"1.0.2","outputs":{"whitespaceRemovedText":"a\tb  c"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"whitespace-trimmer","tool_version":"1.0.2","outputs":{"whitespaceRemovedText":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"whitespaceRemovedText":{"type":"string","description":"Whitespace-removed Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/time-duration-formatter":{"post":{"operationId":"run_time_duration_formatter","summary":"Time Duration Formatter","tags":["Formatters"],"description":"Format a time duration every common way at once: verbose (2 hours, 15 minutes), short (2h 15m 30s), ISO 8601 (PT2H15M30S), clock (02:15:30), approximate, total milliseconds and seconds, plus a full days/hours/minutes/seconds breakdown. Enter the duration in seconds, milliseconds or clock format.\n\n[Try Time Duration Formatter in your browser →](https://iotools.cloud/tool/time-duration-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["seconds","milliseconds","clock"],"description":"Input Mode"},"seconds":{"type":"string","description":"Duration"},"milliseconds":{"type":"string","description":"Duration"},"clockInput":{"type":"string","description":"Duration"}},"required":[]},"examples":{"2_hours_seconds":{"summary":"2 hours (seconds)","value":{"inputMode":"seconds","seconds":"7200"}},"all_units_clock_with_milliseconds":{"summary":"All units (clock, with milliseconds)","value":{"inputMode":"clock","clockInput":"26:03:04.500"}},"45_seconds_sub_minute":{"summary":"45 seconds (sub-minute)","value":{"inputMode":"seconds","seconds":"45"}},"multi_day_milliseconds":{"summary":"Multi-day (milliseconds)","value":{"inputMode":"milliseconds","milliseconds":"200000000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_hours_seconds":{"summary":"2 hours (seconds)","value":{"tool":"time-duration-formatter","tool_version":"1.0.2","outputs":{"verbose":"2 hours","short":"2h","iso8601":"PT2H","clock":"2:00:00","approximate":"about 2 hours","totalMs":"7200000 ms","totalSeconds":"7200 s","breakdownTable":[{"unit":"Years","value":"0"},{"unit":"Days","value":"0"},{"unit":"Hours","value":"2"},{"unit":"Minutes","value":"0"},{"unit":"Seconds","value":"0"},{"unit":"Milliseconds","value":"0"}]},"credits_used":5,"credits_remaining":null}},"all_units_clock_with_milliseconds":{"summary":"All units (clock, with milliseconds)","value":{"tool":"time-duration-formatter","tool_version":"1.0.2","outputs":{"verbose":"1 day, 2 hours, 3 minutes, 4.500 seconds","short":"1d 2h 3m 4.500s","iso8601":"P1DT2H3M4.500S","clock":"26:03:04.500","approximate":"about 1 day","totalMs":"93784500 ms","totalSeconds":"93784.5 s","breakdownTable":[{"unit":"Years","value":"0"},{"unit":"Days","value":"1"},{"unit":"Hours","value":"2"},{"unit":"Minutes","value":"3"},{"unit":"Seconds","value":"4"},{"unit":"Milliseconds","value":"500"}]},"credits_used":5,"credits_remaining":null}},"45_seconds_sub_minute":{"summary":"45 seconds (sub-minute)","value":{"tool":"time-duration-formatter","tool_version":"1.0.2","outputs":{"verbose":"45 seconds","short":"45s","iso8601":"PT45S","clock":"0:00:45","approximate":"about 45 seconds","totalMs":"45000 ms","totalSeconds":"45 s","breakdownTable":[{"unit":"Years","value":"0"},{"unit":"Days","value":"0"},{"unit":"Hours","value":"0"},{"unit":"Minutes","value":"0"},{"unit":"Seconds","value":"45"},{"unit":"Milliseconds","value":"0"}]},"credits_used":5,"credits_remaining":null}},"multi_day_milliseconds":{"summary":"Multi-day (milliseconds)","value":{"tool":"time-duration-formatter","tool_version":"1.0.2","outputs":{"verbose":"2 days, 7 hours, 33 minutes, 20 seconds","short":"2d 7h 33m 20s","iso8601":"P2DT7H33M20S","clock":"55:33:20","approximate":"about 2 days","totalMs":"200000000 ms","totalSeconds":"200000 s","breakdownTable":[{"unit":"Years","value":"0"},{"unit":"Days","value":"2"},{"unit":"Hours","value":"7"},{"unit":"Minutes","value":"33"},{"unit":"Seconds","value":"20"},{"unit":"Milliseconds","value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verbose":{"type":"string","description":"Verbose"},"short":{"type":"string","description":"Short"},"iso8601":{"type":"string","description":"ISO 8601"},"clock":{"type":"string","description":"Clock"},"approximate":{"type":"string","description":"Approximate"},"totalMs":{"type":"string","description":"Milliseconds"},"totalSeconds":{"type":"string","description":"Total Seconds"},"breakdownTable":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/shell-script-formatter":{"post":{"operationId":"run_shell_script_formatter","summary":"Shell Script Formatter","tags":["Formatters"],"description":"Format and beautify Bash, sh, and Zsh shell scripts. Re-indent if/then/fi, for/while loops, case statements, and functions; choose 2/4 spaces or tabs, position binary operators, and space redirect operators.\n\n[Try Shell Script Formatter in your browser →](https://iotools.cloud/tool/shell-script-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shellInput":{"type":"string","description":"Shell Script"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent Style"},"binaryOpPosition":{"enum":["end","start"],"description":"Binary Operators"},"switchCaseIndent":{"type":"boolean","description":"Indent case bodies in switch/case"},"keepPadding":{"type":"boolean","description":"Keep alignment padding (skip re-indentation)"},"spaceRedirects":{"type":"boolean","description":"Space after redirect operators (>, >>)"}},"required":[]},"examples":{"re_indent_a_messy_if_for_script":{"summary":"Re-indent a messy if/for script","value":{"shellInput":"#!/bin/bash\n# A messy shell script example\n   if [ -z \"$1\" ]; then\necho \"Usage: $0 <filename>\"\n    exit 1\nfi\n\nFILE=$1\nfor line in $(cat \"$FILE\"); do\nif echo \"$line\" | grep -q \"error\"; then\nCOUNT=$((COUNT+1))\necho \"Found error: $line\" >/tmp/out.log\nfi\ndone","indentStyle":"2","binaryOpPosition":"end","switchCaseIndent":"true","keepPadding":"","spaceRedirects":"true"}},"case_statement_with_tabs_and_no_redirect_spacing":{"summary":"Case statement with tabs and no redirect spacing","value":{"shellInput":"case \"$FILE\" in\n*.log)\necho \"log\"\n;;\n*.txt)\necho \"text\" >>out.txt\n;;\nesac","indentStyle":"tab","binaryOpPosition":"end","switchCaseIndent":"true","keepPadding":"","spaceRedirects":""}},"binary_operators_at_start_of_next_line":{"summary":"Binary operators at start of next line","value":{"shellInput":"test -f foo.txt &&\ncat foo.txt |\ngrep bar","indentStyle":"2","binaryOpPosition":"start","switchCaseIndent":"true","keepPadding":"","spaceRedirects":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"re_indent_a_messy_if_for_script":{"summary":"Re-indent a messy if/for script","value":{"tool":"shell-script-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"#!/bin/bash\n# A messy shell script example\nif [ -z \"$1\" ]; then\n  echo \"Usage: $0 <filename>\"\n  exit 1\nfi\n\nFILE=$1\nfor line in $(cat \"$FILE\"); do\n  if echo \"$line\" | grep -q \"error\"; then\n    COUNT=$((COUNT+1))\n    echo \"Found error: $line\" > /tmp/out.log\n  fi\ndone\n"},"credits_used":5,"credits_remaining":null}},"case_statement_with_tabs_and_no_redirect_spacing":{"summary":"Case statement with tabs and no redirect spacing","value":{"tool":"shell-script-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"case \"$FILE\" in\n\t*.log)\n\t\techo \"log\"\n\t;;\n\t*.txt)\n\t\techo \"text\" >>out.txt\n\t;;\nesac\n"},"credits_used":5,"credits_remaining":null}},"binary_operators_at_start_of_next_line":{"summary":"Binary operators at start of next line","value":{"tool":"shell-script-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"test -f foo.txt\n&& cat foo.txt\n| grep bar\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted Script"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/solidity-code-formatter":{"post":{"operationId":"run_solidity_code_formatter","summary":"Solidity Code Formatter","tags":["Formatters"],"description":"Format and beautify Solidity smart-contract source: re-indent by brace depth, normalize spacing around operators and punctuation, reorder function visibility/mutability modifiers, sort the pragma/import header, and normalize NatSpec comments — all in your browser.\n\n[Try Solidity Code Formatter in your browser →](https://iotools.cloud/tool/solidity-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solidityInput":{"type":"string","description":"Solidity Code"},"solidityVersion":{"enum":["keep","^0.8.30","^0.8.26","^0.8.24","^0.8.20","^0.8.0"],"description":"Solidity Version"},"indentStyle":{"enum":["4","2","tab"],"description":"Indentation"},"braceStyle":{"enum":["attach","allman"],"description":"Brace Style"},"printWidth":{"type":"number","description":"Column Limit","minimum":60,"maximum":200},"sortModifiers":{"type":"boolean","description":"Reorder function modifiers (visibility → mutability → virtual → override)"},"sortPragmasImports":{"type":"boolean","description":"Pragmas first, then imports sorted alphabetically"},"normalizeNatspec":{"type":"boolean","description":"Normalize NatSpec /// comments (single space after slashes)"},"collapseBlankLines":{"type":"boolean","description":"Collapse 2+ blank lines into a single blank line"}},"required":[]},"examples":{"format_an_erc20_vault_contract_4_spaces_k_r_braces":{"summary":"Format an ERC20 vault contract (4 spaces, K&R braces)","value":{"solidityInput":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/// @title  Vault\n/// @notice Simple ERC20 vault with a fee on withdrawals.\ncontract Vault is ERC20,Ownable{\nuint256 public constant FEE_BPS=25;\nmapping(address=>uint256) public deposits;\n\nevent Deposited(address indexed user,uint256 amount);\nevent Withdrawn(address indexed user,uint256 amount,uint256 fee);\n\nconstructor()ERC20(\"Vault Share\",\"VS\"){}\n\nfunction deposit()external payable{\nrequire(msg.value>0,\"zero value\");\ndeposits[msg.sender]+=msg.value;\n_mint(msg.sender,msg.value);\nemit Deposited(msg.sender,msg.value);\n}\n\nfunction withdraw(uint256 amount)public virtual{\nrequire(deposits[msg.sender]>=amount,\"insufficient\");\nuint256 fee=amount*FEE_BPS/10_000;\nuint256 payout=amount-fee;\ndeposits[msg.sender]-=amount;\n_burn(msg.sender,amount);\n(bool ok,)=msg.sender.call{value:payout}(\"\");\nrequire(ok,\"transfer failed\");\nemit Withdrawn(msg.sender,amount,fee);\n}\n\nfunction feeBps()public pure returns(uint256){return FEE_BPS;}\n}","solidityVersion":"keep","indentStyle":"4","braceStyle":"attach","printWidth":"120","sortModifiers":"true","sortPragmasImports":"true","normalizeNatspec":"true","collapseBlankLines":"true"}},"reorder_function_modifiers_into_canonical_order_2_spaces":{"summary":"Reorder function modifiers into canonical order (2 spaces)","value":{"solidityInput":"contract A{\nfunction f() onlyOwner view virtual external returns (uint256){\nreturn 1;\n}\n}","solidityVersion":"keep","indentStyle":"2","braceStyle":"attach","printWidth":"120","sortModifiers":"true","sortPragmasImports":"true","normalizeNatspec":"true","collapseBlankLines":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_an_erc20_vault_contract_4_spaces_k_r_braces":{"summary":"Format an ERC20 vault contract (4 spaces, K&R braces)","value":{"tool":"solidity-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\n/// @title  Vault\n/// @notice Simple ERC20 vault with a fee on withdrawals.\ncontract Vault is ERC20, Ownable {\n    uint256 public constant FEE_BPS = 25;\n    mapping(address => uint256) public deposits;\n\n    event Deposited(address indexed user, uint256 amount);\n    event Withdrawn(address indexed user, uint256 amount, uint256 fee);\n\n    constructor() ERC20(\"Vault Share\", \"VS\") {\n    }\n\n    function deposit() external payable {\n        require(msg.value > 0, \"zero value\");\n        deposits[msg.sender] += msg.value;\n        _mint(msg.sender, msg.value);\n        emit Deposited(msg.sender, msg.value);\n    }\n\n    function withdraw(uint256 amount) public virtual {\n        require(deposits[msg.sender] >= amount, \"insufficient\");\n        uint256 fee = amount * FEE_BPS / 10_000;\n        uint256 payout = amount - fee;\n        deposits[msg.sender] -= amount;\n        _burn(msg.sender, amount);\n        (bool ok,) = msg.sender.call{ value: payout }(\"\");\n        require(ok, \"transfer failed\");\n        emit Withdrawn(msg.sender, amount, fee);\n    }\n\n    function feeBps() public pure returns (uint256) {\n        return FEE_BPS;\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"reorder_function_modifiers_into_canonical_order_2_spaces":{"summary":"Reorder function modifiers into canonical order (2 spaces)","value":{"tool":"solidity-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"contract A {\n  function f() external view virtual onlyOwner returns (uint256) {\n    return 1;\n  }\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/stack-trace-formatter":{"post":{"operationId":"run_stack_trace_formatter","summary":"Stack Trace Formatter","tags":["Formatters"],"description":"Clean up and reformat a raw exception stack trace into a tidy Markdown block. Detects the language (JavaScript, Python, Java, Ruby, Go, .NET, PHP), extracts the exception type and message, numbers the frames, and optionally collapses noisy framework/vendor frames.\n\n[Try Stack Trace Formatter in your browser →](https://iotools.cloud/tool/stack-trace-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"stackTrace":{"type":"string","description":"Stack Trace"},"language":{"enum":["auto","javascript","python","java","ruby","go","dotnet","php"],"description":"Language"},"collapseVendor":{"type":"boolean","description":"Collapse framework / vendor frames"},"showFrameIndex":{"type":"boolean","description":"Show frame numbers"}},"required":[]},"examples":{"java_collapse_vendor_frames":{"summary":"Java (collapse vendor frames)","value":{"stackTrace":"java.lang.NullPointerException: Cannot invoke \"String.length()\" because \"name\" is null\n\tat com.example.users.UserService.greet(UserService.java:42)\n\tat com.example.users.UserController.handle(UserController.java:18)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:622)\nCaused by: java.lang.IllegalStateException: User repo not initialised\n\tat com.example.users.UserService.init(UserService.java:24)\n\t... 5 more","language":"auto","collapseVendor":"true","showFrameIndex":"true"}},"javascript_keep_all_frames_no_numbers":{"summary":"JavaScript (keep all frames, no numbers)","value":{"stackTrace":"TypeError: Cannot read properties of undefined (reading 'name')\n    at formatUser (/app/src/utils/format.js:14:22)\n    at renderProfile (/app/src/components/Profile.js:42:18)\n    at HTMLButtonElement.<anonymous> (/app/node_modules/react-dom/cjs/react-dom.development.js:4164:42)\n    at Module._compile (node:internal/modules/cjs/loader:1198:14)","language":"javascript","collapseVendor":"","showFrameIndex":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"java_collapse_vendor_frames":{"summary":"Java (collapse vendor frames)","value":{"tool":"stack-trace-formatter","tool_version":"1.0.2","outputs":{"markdownOutput":"### Stack Trace — Java\n\n**Exception:** java.lang.NullPointerException: Cannot invoke \"String.length()\" because \"name\" is null\n\n```text\n#0 com.example.users.UserService.greet  (UserService.java:42)\n#1 com.example.users.UserController.handle  (UserController.java:18)\n... 4 framework/vendor frames collapsed ...\n\nCaused by: java.lang.IllegalStateException: User repo not initialised\n#0 com.example.users.UserService.init  (UserService.java:24)\n```\n"},"credits_used":5,"credits_remaining":null}},"javascript_keep_all_frames_no_numbers":{"summary":"JavaScript (keep all frames, no numbers)","value":{"tool":"stack-trace-formatter","tool_version":"1.0.2","outputs":{"markdownOutput":"### Stack Trace — JavaScript\n\n**Exception:** TypeError: Cannot read properties of undefined (reading 'name')\n\n```text\nformatUser  (/app/src/utils/format.js:14:22)\nrenderProfile  (/app/src/components/Profile.js:42:18)\nHTMLButtonElement.<anonymous>  (/app/node_modules/react-dom/cjs/react-dom.development.js:4164:42)\nModule._compile  (node:internal/modules/cjs/loader:1198:14)\n```\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"markdownOutput":{"type":"string","description":"Cleaned Stack (Markdown)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/swift-code-formatter":{"post":{"operationId":"run_swift_code_formatter","summary":"Swift Code Formatter","tags":["Formatters"],"description":"Format and beautify Swift source: re-indent by brace depth, normalize spacing around operators and punctuation, strip redundant semicolons, add trailing commas to multi-line lists, and sort import statements — all in your browser.\n\n[Try Swift Code Formatter in your browser →](https://iotools.cloud/tool/swift-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"swiftInput":{"type":"string","description":"Swift Code"},"indentSize":{"enum":["4","2","tab"],"description":"Indent Size"},"sortImports":{"type":"boolean","description":"Sort imports alphabetically"},"trailingCommas":{"type":"boolean","description":"Add trailing commas in multi-line lists"},"stripSemicolons":{"type":"boolean","description":"Remove redundant semicolons at end of lines"}},"required":[]},"examples":{"format_a_user_repository_4_spaces_all_options_on":{"summary":"Format a user repository (4 spaces, all options on)","value":{"swiftInput":"import Foundation\nimport SwiftUI\nimport Combine\n\n/**\n * A sample value type representing a user profile.\n */\nstruct User:Identifiable,Codable {\nlet id:UUID\nlet name:String\nlet email:String?\nlet tags:[String]\n}\n\nprotocol UserStoring{\nfunc find(id:UUID) async throws->User?\nfunc upsert(_ user:User) async throws->User\n}\n\nfinal class UserRepository:UserStoring{\nprivate let logger:(String)->Void\n\ninit(logger:@escaping (String)->Void = {print($0)}){\nself.logger=logger\n}\n\nfunc find(id:UUID) async throws->User?{\nlogger(\"Looking up user \\(id)\")\nguard id.uuidString.count>0 else{return nil}\nreturn User(id:id,name:\"Anon\",email:nil,tags:[])\n}\n\nfunc upsert(_ user:User) async throws->User{\nif user.name.isEmpty{\nthrow NSError(domain:\"User\",code:1)\n}\nreturn user\n}\n}\n\n@main\nstruct App{\nstatic func main() async{\nlet repo=UserRepository()\nlet id=UUID()\nlet user=try? await repo.find(id:id)\nprint(\"Found: \\(user?.name ?? \"nobody\")\")\n}\n}","indentSize":"4","sortImports":"true","trailingCommas":"true","stripSemicolons":"true"}},"format_a_struct_2_spaces_strip_semicolons":{"summary":"Format a struct (2 spaces, strip semicolons)","value":{"swiftInput":"struct Point{\nlet x:Int\nlet y:Int\nfunc distance()->Double{\nreturn Double(x*x+y*y).squareRoot();\n}\n}","indentSize":"2","sortImports":"true","trailingCommas":"true","stripSemicolons":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"format_a_user_repository_4_spaces_all_options_on":{"summary":"Format a user repository (4 spaces, all options on)","value":{"tool":"swift-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"import Combine\nimport Foundation\nimport SwiftUI\n/**\n * A sample value type representing a user profile.\n */\nstruct User: Identifiable, Codable {\n    let id: UUID\n    let name: String\n    let email: String?\n    let tags: [String]\n}\n\nprotocol UserStoring {\n    func find(id: UUID) async throws -> User?\n    func upsert(_ user: User) async throws -> User\n}\n\nfinal class UserRepository: UserStoring {\n    private let logger: (String) -> Void\n\n    init(logger: @escaping (String) -> Void = {print($0)}) {\n        self.logger = logger\n    }\n\n    func find(id: UUID) async throws -> User? {\n        logger(\"Looking up user \\(id)\")\n        guard id.uuidString.count>0 else {return nil}\n        return User(id: id, name:\"Anon\", email: nil, tags: [])\n    }\n\n    func upsert(_ user: User) async throws -> User {\n        if user.name.isEmpty {\n            throw NSError(domain:\"User\", code: 1)\n        }\n        return user\n    }\n}\n\n@main\nstruct App {\n    static func main() async {\n        let repo = UserRepository()\n        let id = UUID()\n        let user = try? await repo.find(id: id)\n        print(\"Found: \\(user?.name ?? \"nobody\")\")\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"format_a_struct_2_spaces_strip_semicolons":{"summary":"Format a struct (2 spaces, strip semicolons)","value":{"tool":"swift-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"struct Point {\n  let x: Int\n  let y: Int\n  func distance() -> Double {\n    return Double(x*x+y*y).squareRoot()\n  }\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-column-aligner":{"post":{"operationId":"run_text_column_aligner","summary":"Text Column Aligner","tags":["Formatters"],"description":"Align multi-line text into neat columns by padding spaces so a chosen delimiter (=, :, //, =>, |, comma, tab, and more) lines up across every row — like the Unix column -t command, right in your browser.\n\n[Try Text Column Aligner in your browser →](https://iotools.cloud/tool/text-column-aligner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Input Text"},"alignTrigger":{"enum":["=",":","//","=>","->","|",",",";","\t"," ","custom"],"description":"Align By"},"customDelimiter":{"type":"string","description":"Custom Delimiter"},"alignAllOccurrences":{"type":"boolean","description":"Align Every Occurrence"},"preserveIndent":{"type":"boolean","description":"Preserve Leading Indentation"},"stripTrailing":{"type":"boolean","description":"Strip Trailing Whitespace"},"spacesBefore":{"type":"number","description":"Spaces Before Delimiter","minimum":0,"maximum":10},"spacesAfter":{"type":"number","description":"Spaces After Delimiter","minimum":0,"maximum":10}},"required":[]},"examples":{"align_config_by":{"summary":"Align config by =","value":{"originalText":"name = \"Thor\"\nemail = \"thor@theru.io\"\nage = 33\nrole = \"Engineer\"\nactive = true","alignTrigger":"=","spacesBefore":"1","spacesAfter":"1","preserveIndent":"true","stripTrailing":"true"}},"table_style_by_pipe":{"summary":"Table style by pipe","value":{"originalText":"Name|Age|City\nBob|42|NYC\nAlice|7|LA","alignTrigger":"|","alignAllOccurrences":"true","spacesBefore":"1","spacesAfter":"1","preserveIndent":"true","stripTrailing":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"align_config_by":{"summary":"Align config by =","value":{"tool":"text-column-aligner","tool_version":"1.0.2","outputs":{"alignedText":"name   = \"Thor\"\nemail  = \"thor@theru.io\"\nage    = 33\nrole   = \"Engineer\"\nactive = true"},"credits_used":5,"credits_remaining":null}},"table_style_by_pipe":{"summary":"Table style by pipe","value":{"tool":"text-column-aligner","tool_version":"1.0.2","outputs":{"alignedText":"Name  | Age | City\nBob   | 42  | NYC\nAlice | 7   | LA"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"alignedText":{"type":"string","description":"Aligned Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-minifier":{"post":{"operationId":"run_xml_minifier","summary":"XML Minifier","tags":["Formatters"],"description":"Minify XML instantly — strip whitespace between tags, collapse extra spaces inside text content, and optionally remove comments, while leaving attribute values and CDATA sections untouched. Runs entirely in your browser.\n\n[Try XML Minifier in your browser →](https://iotools.cloud/tool/xml-minifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlSource":{"type":"string","description":"XML input"},"removeComments":{"type":"boolean","description":"Remove comments"}},"required":[]},"examples":{"strip_whitespace_between_tags_remove_comments_default":{"summary":"Strip whitespace between tags, remove comments (default)","value":{"xmlSource":"<!-- This is a comment --><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>\n</note>","removeComments":"true"}},"keep_comments":{"summary":"Keep comments","value":{"xmlSource":"<!-- This is a comment --><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body>\n</note>","removeComments":""}},"attribute_values_and_mixed_content_preserved":{"summary":"Attribute values and mixed content preserved","value":{"xmlSource":"<?xml version=\"1.0\"?>\n<catalog>\n  <book id=\"1\" title=\"XML  Basics\">\n    <price>9.99</price>\n    <notes></notes>\n  </book>\n</catalog>","removeComments":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"strip_whitespace_between_tags_remove_comments_default":{"summary":"Strip whitespace between tags, remove comments (default)","value":{"tool":"xml-minifier","tool_version":"1.0.2","outputs":{"minifiedXml":"<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"},"credits_used":5,"credits_remaining":null}},"keep_comments":{"summary":"Keep comments","value":{"tool":"xml-minifier","tool_version":"1.0.2","outputs":{"minifiedXml":"<!-- This is a comment --><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"},"credits_used":5,"credits_remaining":null}},"attribute_values_and_mixed_content_preserved":{"summary":"Attribute values and mixed content preserved","value":{"tool":"xml-minifier","tool_version":"1.0.2","outputs":{"minifiedXml":"<?xml version=\"1.0\"?><catalog><book id=\"1\" title=\"XML  Basics\"><price>9.99</price><notes></notes></book></catalog>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"minifiedXml":{"type":"string","description":"Minified XML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/haskell-code-formatter":{"post":{"operationId":"run_haskell_code_formatter","summary":"Haskell Code Formatter","tags":["Formatters"],"description":"Format and pretty-print Haskell source — consistent operator spacing, sorted/deduplicated LANGUAGE pragmas, sorted import blocks, and blank-line collapsing, approximating Fourmolu/Ormolu conventions. Includes basic syntax validation and a long-line report. Runs entirely in your browser.\n\n[Try Haskell Code Formatter in your browser →](https://iotools.cloud/tool/haskell-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"haskellInput":{"type":"string","description":"Haskell source code"},"indentSize":{"enum":["2","4"],"description":"Indent size"},"maxLineLength":{"type":"number","description":"Max line length","minimum":60,"maximum":200},"sortImports":{"type":"boolean","description":"Sort import statements within each block"},"sortPragmas":{"type":"boolean","description":"Sort and deduplicate LANGUAGE pragmas at the top"},"collapseBlankLines":{"type":"boolean","description":"Collapse 3+ consecutive blank lines into one"}},"required":[]},"examples":{"module_with_pragmas_imports_records_guards_and_a_where_clause":{"summary":"Module with pragmas, imports, records, guards and a where clause","value":{"haskellInput":"{-# LANGUAGE ScopedTypeVariables #-}\n{-# LANGUAGE OverloadedStrings #-}\n{-# LANGUAGE TupleSections #-}\nmodule Main where\n\nimport qualified Data.Map.Strict as Map\nimport Data.List(sort,nub)\nimport Data.Maybe(fromMaybe,catMaybes)\nimport qualified Data.Text as T\nimport System.IO\nimport Control.Monad(forM_,when,unless)\n\n-- A simple Person record\ndata Person=Person{personName::String,personAge::Int,personEmail::Maybe String}deriving(Show,Eq)\n\ndefaultAge::Int\ndefaultAge=18\n\ngreet::String->String\ngreet name=\"Hello, \"++name++\"!\"\n\ncategorize::Int->String\ncategorize age\n  |age<13=\"child\"\n  |age<20=\"teen\"\n  |age<65=\"adult\"\n  |otherwise=\"senior\"\n\nprocessPeople::[Person]->Map.Map String Int\nprocessPeople ps=foldr step Map.empty ps\n  where\n    step p acc=Map.insertWith (+) (categorize (personAge p)) 1 acc\n\nmain::IO ()\nmain=do\n  let people=[Person \"Alice\" 30 (Just \"alice@example.com\"),Person \"Bob\" 12 Nothing,Person \"Carol\" 67 (Just \"carol@example.com\")]\n  forM_ people$\\p->putStrLn(greet(personName p))\n  let summary=processPeople people\n  mapM_ print(Map.toList summary)\n","indentSize":"2","maxLineLength":"100","sortImports":"true","sortPragmas":"true","collapseBlankLines":"true"}},"cons_operator_and_operator_section_spacing_bug_fixes":{"summary":"Cons operator and operator section spacing (bug fixes)","value":{"haskellInput":"xs@(x:_) = [1,2,3]\nrightSection = filter (<5) [1,2,3]","indentSize":"2","maxLineLength":"100","sortImports":"false","sortPragmas":"false","collapseBlankLines":"false"}},"unbalanced_parenthesis_is_flagged":{"summary":"Unbalanced parenthesis is flagged","value":{"haskellInput":"f :: Int -> Int\nf x = (x + 1\n","indentSize":"2","maxLineLength":"100","sortImports":"false","sortPragmas":"false","collapseBlankLines":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"module_with_pragmas_imports_records_guards_and_a_where_clause":{"summary":"Module with pragmas, imports, records, guards and a where clause","value":{"tool":"haskell-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"{-# LANGUAGE OverloadedStrings #-}\n{-# LANGUAGE ScopedTypeVariables #-}\n{-# LANGUAGE TupleSections #-}\n\nmodule Main where\n\nimport Control.Monad (forM_, when, unless)\nimport Data.List (sort, nub)\nimport Data.Maybe (fromMaybe, catMaybes)\nimport System.IO\nimport qualified Data.Map.Strict as Map\nimport qualified Data.Text as T\n\n-- A simple Person record\ndata Person = Person {personName :: String, personAge :: Int, personEmail :: Maybe String} deriving (Show, Eq)\n\ndefaultAge :: Int\ndefaultAge = 18\n\ngreet :: String -> String\ngreet name = \"Hello, \" ++ name ++ \"!\"\n\ncategorize :: Int -> String\ncategorize age\n  | age < 13 = \"child\"\n  | age < 20 = \"teen\"\n  | age < 65 = \"adult\"\n  | otherwise = \"senior\"\n\nprocessPeople :: [Person] -> Map.Map String Int\nprocessPeople ps = foldr step Map.empty ps\n  where\n    step p acc = Map.insertWith (+) (categorize (personAge p)) 1 acc\n\nmain :: IO ()\nmain = do\n  let people = [Person \"Alice\" 30 (Just \"alice@example.com\"), Person \"Bob\" 12 Nothing, Person \"Carol\" 67 (Just \"carol@example.com\")]\n  forM_ people $ \\p -> putStrLn (greet (personName p))\n  let summary = processPeople people\n  mapM_ print (Map.toList summary)\n","validation":[{"issue":"Valid Haskell — 2 line(s) exceed 100 chars: line 15 (110 chars), line 37 (132 chars)"}]},"credits_used":5,"credits_remaining":null}},"cons_operator_and_operator_section_spacing_bug_fixes":{"summary":"Cons operator and operator section spacing (bug fixes)","value":{"tool":"haskell-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"xs@(x : _) = [1, 2, 3]\nrightSection = filter (< 5) [1, 2, 3]\n","validation":[{"issue":"Valid Haskell — no syntax errors detected."}]},"credits_used":5,"credits_remaining":null}},"unbalanced_parenthesis_is_flagged":{"summary":"Unbalanced parenthesis is flagged","value":{"tool":"haskell-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"f :: Int -> Int\nf x = (x + 1\n","validation":[{"issue":"Missing 1 closing parenthesis(es) \")\""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted Haskell"},"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/r-code-formatter":{"post":{"operationId":"run_r_code_formatter","summary":"R Code Formatter","tags":["Formatters"],"description":"Format and pretty-print R source — consistent operator spacing, bracket-depth indentation, optional = → &lt;- assignment conversion, and blank-line normalization, approximating styler/tidyverse conventions. Includes basic syntax validation and a long-line report. Runs entirely in your browser.\n\n[Try R Code Formatter in your browser →](https://iotools.cloud/tool/r-code-formatter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rInput":{"type":"string","description":"R source code"},"indentSize":{"enum":["2","4"],"description":"Indent width"},"maxLineLength":{"type":"number","description":"Max line length","minimum":40,"maximum":200},"preferArrow":{"type":"boolean","description":"Convert top-level = assignment to &lt;- (tidyverse style)"}},"required":[]},"examples":{"dplyr_pipe_chain_with_a_plotting_helper":{"summary":"dplyr pipe chain with a plotting helper","value":{"rInput":"library(dplyr)\nlibrary(ggplot2)\n\n# Summarise penguin body measurements by species\nsummarise_penguins=function(data,group_col=\"species\"){\ndata%>%\ngroup_by(.data[[group_col]])%>%\nsummarise(\nn=n(),\nmean_mass=mean(body_mass_g,na.rm=TRUE),\nmean_flipper=mean(flipper_length_mm,na.rm=TRUE),\n.groups=\"drop\"\n)\n}\n\n# Plot helper\nplot_penguins=function(data,x=\"flipper_length_mm\",y=\"body_mass_g\"){\nggplot(data,aes(x=.data[[x]],y=.data[[y]],colour=species))+\ngeom_point(alpha=0.7)+\nlabs(title=\"Palmer Penguins\",x=x,y=y)+\ntheme_minimal()\n}\n\n# Filter mature penguins, then summarise\nresult=palmerpenguins::penguins%>%\nfilter(!is.na(body_mass_g))%>%\nsummarise_penguins()\n\nprint(result)","indentSize":"2","maxLineLength":"80","preferArrow":"true"}},"backtick_identifier_containing_an_apostrophe_bug_fix":{"summary":"Backtick identifier containing an apostrophe (bug fix)","value":{"rInput":"df$`Player's Score` <- 10","indentSize":"2","maxLineLength":"80","preferArrow":"false"}},"unbalanced_closing_bracket_is_flagged":{"summary":"Unbalanced closing bracket is flagged","value":{"rInput":"x <- c(1, 2))","indentSize":"2","maxLineLength":"80","preferArrow":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"dplyr_pipe_chain_with_a_plotting_helper":{"summary":"dplyr pipe chain with a plotting helper","value":{"tool":"r-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"library(dplyr)\nlibrary(ggplot2)\n\n# Summarise penguin body measurements by species\nsummarise_penguins <- function(data, group_col = \"species\") {\n  data %>%\n  group_by(.data[[group_col]]) %>%\n  summarise(\n    n = n(),\n    mean_mass = mean(body_mass_g, na.rm = TRUE),\n    mean_flipper = mean(flipper_length_mm, na.rm = TRUE),\n    .groups = \"drop\"\n  )\n}\n\n# Plot helper\nplot_penguins <- function(data, x = \"flipper_length_mm\", y = \"body_mass_g\") {\n  ggplot(data, aes(x = .data[[x]], y = .data[[y]], colour = species)) +\n  geom_point(alpha = 0.7) +\n  labs(title = \"Palmer Penguins\", x = x, y = y) +\n  theme_minimal()\n}\n\n# Filter mature penguins, then summarise\nresult <- palmerpenguins::penguins %>%\nfilter(!is.na(body_mass_g)) %>%\nsummarise_penguins()\n\nprint(result)\n","validation":[{"issue":"Valid R — no syntax errors detected."}]},"credits_used":5,"credits_remaining":null}},"backtick_identifier_containing_an_apostrophe_bug_fix":{"summary":"Backtick identifier containing an apostrophe (bug fix)","value":{"tool":"r-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"df$`Player's Score` <- 10\n","validation":[{"issue":"Valid R — no syntax errors detected."}]},"credits_used":5,"credits_remaining":null}},"unbalanced_closing_bracket_is_flagged":{"summary":"Unbalanced closing bracket is flagged","value":{"tool":"r-code-formatter","tool_version":"1.0.2","outputs":{"formattedOutput":"x <- c(1, 2))\n","validation":[{"issue":"Line 1: Unexpected closing parenthesis \")\""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formattedOutput":{"type":"string","description":"Formatted R code"},"validation":{"type":"array","description":"Validation","items":{"type":"object","properties":{"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/aes-key-generator":{"post":{"operationId":"run_aes_key_generator","summary":"AES Key Generator","tags":["Generators"],"description":"Generate a cryptographically random AES encryption key — 128, 192, or 256-bit, output as hex or Base64. Generated entirely in your browser and never transmitted.\n\n[Try AES Key Generator in your browser →](https://iotools.cloud/tool/aes-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keySize":{"enum":["128","192","256"],"description":"Key size"},"outputFormat":{"enum":["hex","base64"],"description":"Output format"}},"required":[]},"examples":{"aes_256_key_hex":{"summary":"AES-256 key, hex","value":{"keySize":"256","outputFormat":"hex"}},"aes_128_key_base64":{"summary":"AES-128 key, Base64","value":{"keySize":"128","outputFormat":"base64"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"key":{"type":"string","description":"Generated key"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-image-generator":{"post":{"operationId":"run_ai_image_generator","summary":"AI Image Generator","tags":["Generators"],"description":"Generate an image from a text description with AI — describe what you want, pick an optional style preset, and get a downloadable image.\n\n[Try AI Image Generator in your browser →](https://iotools.cloud/tool/ai-image-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":640,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Describe the image"},"preset":{"enum":["none","photorealistic","digital-art","anime","3d-render","watercolor","oil-painting","pencil-sketch","pixel-art","cyberpunk","fantasy-art","minimalist","vintage-photo","pop-art","comic-book","low-poly","isometric","claymation","stained-glass","line-art","synthwave","steampunk","ukiyo-e","art-nouveau"],"description":"Style preset"}},"required":["prompt"]},"examples":{"default":{"summary":"Default","value":{"prompt":"A lighthouse on a rocky cliff at sunset, dramatic clouds, ocean waves","preset":"photorealistic"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer":{"post":{"operationId":"run_ai_writer","summary":"AI Writer","tags":["Generators"],"description":"Generate original written content with AI — a bio, a summary, a message, a description. Describe what you need in your own words and get a ready-to-use draft.\n\n[Try AI Writer in your browser →](https://iotools.cloud/tool/ai-writer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a friendly \"about me\" bio for my personal portfolio site — I'm a freelance graphic designer"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/answers":{"post":{"operationId":"run_ai_writer_answers","summary":"Answer Generator","tags":["Generators"],"description":"Generate a comprehensive, well-supported answer to any question with AI — clear, direct, and backed by relevant detail.\n\n[Try Answer Generator in your browser →](https://iotools.cloud/tool/ai-writer/answers/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"What are the health benefits of drinking green tea?"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/article-generator":{"post":{"operationId":"run_ai_writer_article_generator","summary":"Article Generator","tags":["Generators"],"description":"Generate a full, structured article with AI from a topic or keyword — title, intro, headed body sections and a conclusion, ready to edit and publish.\n\n[Try Article Generator in your browser →](https://iotools.cloud/tool/ai-writer/article-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customLength":{"enum":["","Short (~400 words)","Medium (~800 words)","Long (~1500 words)"],"description":"Target Length"},"customTone":{"enum":["","Informative","Conversational","Professional","Persuasive","Enthusiastic"],"description":"Tone"},"customAudience":{"type":"string","description":"Target Audience"},"customPointsToCover":{"type":"string","description":"Points to Cover"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"the benefits of a four-day work week for small businesses"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/backstory":{"post":{"operationId":"run_ai_writer_backstory","summary":"Backstory Generator","tags":["Generators"],"description":"Generate a rich character backstory with AI — history, motivations and key events, for a story, a game character or a D&D campaign.\n\n[Try Backstory Generator in your browser →](https://iotools.cloud/tool/ai-writer/backstory/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a retired space smuggler who now runs a quiet noodle shop on a moon colony"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/baddie-comebacks":{"post":{"operationId":"run_ai_writer_baddie_comebacks","summary":"Baddie Comebacks Generator","tags":["Generators"],"description":"Generate sharp, witty comebacks with AI — five clever roasts for any situation, each with a quick note on why it lands.\n\n[Try Baddie Comebacks Generator in your browser →](https://iotools.cloud/tool/ai-writer/baddie-comebacks/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"someone at work keeps taking credit for my ideas in meetings"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/business-name-generator":{"post":{"operationId":"run_ai_writer_business_name_generator","summary":"Business Name Generator","tags":["Generators"],"description":"Generate business and brand name ideas with AI — a batch of options, each with a short reason it fits, from a description of what your business does.\n\n[Try Business Name Generator in your browser →](https://iotools.cloud/tool/ai-writer/business-name-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customStyle":{"enum":["","Modern","Playful","Classic","Bold","Minimalist","Luxury"],"description":"Style"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"an eco-friendly reusable water bottle brand aimed at outdoor enthusiasts"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/email":{"post":{"operationId":"run_ai_writer_email","summary":"Email Generator","tags":["Generators"],"description":"Generate a well-structured email with AI — clear, on-tone, and ready to send, from a subject line to a closing sign-off.\n\n[Try Email Generator in your browser →](https://iotools.cloud/tool/ai-writer/email/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"asking my manager for two days off next week for a family event"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/email-signature":{"post":{"operationId":"run_ai_writer_email_signature","summary":"Simple Email Signature Generator","tags":["Generators"],"description":"Generate professional email signature layouts with AI — five ready-to-use options with name, title and contact details.\n\n[Try Simple Email Signature Generator in your browser →](https://iotools.cloud/tool/ai-writer/email-signature/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"Alex Rivera, Senior Product Designer at Northwind Studio, alex@northwindstudio.com, +1 555-0142"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/haiku":{"post":{"operationId":"run_ai_writer_haiku","summary":"Haiku Generator","tags":["Generators"],"description":"Generate traditional 5-7-5 haiku on any topic with AI — each with a short note on what it means.\n\n[Try Haiku Generator in your browser →](https://iotools.cloud/tool/ai-writer/haiku/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"the first snowfall of winter"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/happy-monday-quotes":{"post":{"operationId":"run_ai_writer_happy_monday_quotes","summary":"Happy Monday Quotes Generator","tags":["Generators"],"description":"Generate motivational Monday quotes with AI — work-friendly one-liners for a fresh start to the week.\n\n[Try Happy Monday Quotes Generator in your browser →](https://iotools.cloud/tool/ai-writer/happy-monday-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"for a small marketing team kicking off a new product launch"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/happy-thursday-quotes":{"post":{"operationId":"run_ai_writer_happy_thursday_quotes","summary":"Happy Thursday Quotes Generator","tags":["Generators"],"description":"Generate motivational Thursday quotes with AI — short, memorable one-liners for the final push before the weekend.\n\n[Try Happy Thursday Quotes Generator in your browser →](https://iotools.cloud/tool/ai-writer/happy-thursday-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"for an office Slack channel, upbeat but not corny"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/happy-wednesday-quotes":{"post":{"operationId":"run_ai_writer_happy_wednesday_quotes","summary":"Happy Wednesday Quotes Generator","tags":["Generators"],"description":"Generate motivational Wednesday quotes with AI — short, memorable one-liners to beat the midweek slump.\n\n[Try Happy Wednesday Quotes Generator in your browser →](https://iotools.cloud/tool/ai-writer/happy-wednesday-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"for a retail team pushing through a busy midweek shift"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/letter":{"post":{"operationId":"run_ai_writer_letter","summary":"Letter Writer","tags":["Generators"],"description":"Generate a complete letter with AI — a clear introduction, purposeful body and a strong closing, for any occasion.\n\n[Try Letter Writer in your browser →](https://iotools.cloud/tool/ai-writer/letter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a thank-you letter to a mentor who helped me land my first job"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/linkedin-summary":{"post":{"operationId":"run_ai_writer_linkedin_summary","summary":"LinkedIn Summary Generator","tags":["Generators"],"description":"Generate a professional LinkedIn summary with AI — highlight your skills, achievements and experience, tuned to the tone and format you pick.\n\n[Try LinkedIn Summary Generator in your browser →](https://iotools.cloud/tool/ai-writer/linkedin-summary/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customLength":{"enum":["","Short","Medium","Long"],"description":"Length"},"customTone":{"type":"string","description":"Tone"},"customFocusAreas":{"type":"string","description":"Focus Areas"},"customFormatting":{"type":"string","description":"Formatting"},"customStylePreference":{"enum":["","First Person","Third Person","Active Voice","Passive Voice"],"description":"Style Preference"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"10 years in backend engineering, led a team that scaled a payments platform to 5M users, now moving into engineering management"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/meta-description-generator":{"post":{"operationId":"run_ai_writer_meta_description_generator","summary":"Meta Description Generator","tags":["Generators"],"description":"Generate SEO meta description options with AI — three search-ready variants under 155 characters, from a page topic or a pasted draft.\n\n[Try Meta Description Generator in your browser →](https://iotools.cloud/tool/ai-writer/meta-description-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customTargetKeyword":{"type":"string","description":"Target Keyword"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a blog post reviewing the best waterproof hiking boots for beginners in 2026"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/nda-generator":{"post":{"operationId":"run_ai_writer_nda_generator","summary":"NDA Generator","tags":["Generators"],"description":"Generate a complete Non-Disclosure Agreement (NDA) with AI — confidentiality obligations, term, exclusions and more, tailored to your deal.\n\n[Try NDA Generator in your browser →](https://iotools.cloud/tool/ai-writer/nda-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customAgreementType":{"enum":["","One-Way (Unilateral)","Mutual (Two-Way)"],"description":"Agreement Type"},"customDisclosingParty":{"type":"string","description":"Disclosing Party"},"customReceivingParty":{"type":"string","description":"Receiving Party"},"customEffectiveDate":{"type":"string","description":"Effective Date"},"customTerm":{"type":"string","description":"Term"},"customGoverningLaw":{"type":"string","description":"Governing Law"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"A software startup (Acme Inc.) sharing its source code, financials and product roadmap with a potential investor (Jane Doe) to evaluate a funding round"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/paragraph":{"post":{"operationId":"run_ai_writer_paragraph","summary":"Paragraph Writer","tags":["Generators"],"description":"Generate a well-written paragraph on any topic with AI — coherent, on-tone and ready to drop into an essay, email or post.\n\n[Try Paragraph Writer in your browser →](https://iotools.cloud/tool/ai-writer/paragraph/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"why remote work improves employee productivity"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/privacy-policy-generator":{"post":{"operationId":"run_ai_writer_privacy_policy_generator","summary":"Privacy Policy Generator","tags":["Generators"],"description":"Generate a complete Privacy Policy document with AI — data collection, cookies, user rights and more, tailored to your business.\n\n[Try Privacy Policy Generator in your browser →](https://iotools.cloud/tool/ai-writer/privacy-policy-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customBusinessType":{"enum":["","Website","Mobile App","SaaS / Online Service","E-commerce Store","Marketplace","Blog / Content Site"],"description":"Business Type"},"customDataCollected":{"type":"string","description":"Data Collected"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a mobile fitness app that tracks workouts and syncs with wearable devices"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/random-topics":{"post":{"operationId":"run_ai_writer_random_topics","summary":"Random Topic Generator","tags":["Generators"],"description":"Generate random, thought-provoking topics with AI — five diverse ideas, each with a short explanation, for writing prompts, debates or icebreakers.\n\n[Try Random Topic Generator in your browser →](https://iotools.cloud/tool/ai-writer/random-topics/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"conversation starters for a first date"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/rap-lyrics":{"post":{"operationId":"run_ai_writer_rap_lyrics","summary":"Rap Lyrics Generator","tags":["Generators"],"description":"Generate original rap lyrics with AI — a catchy hook, verses on your topic, and a flow to match your style.\n\n[Try Rap Lyrics Generator in your browser →](https://iotools.cloud/tool/ai-writer/rap-lyrics/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"grinding through a low-budget startup and refusing to give up"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/response":{"post":{"operationId":"run_ai_writer_response","summary":"Response Generator","tags":["Generators"],"description":"Generate a thoughtful, well-tailored response with AI — for a message, a review, or any situation that needs a considered reply.\n\n[Try Response Generator in your browser →](https://iotools.cloud/tool/ai-writer/response/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a customer left a 1-star review complaining about a late delivery"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/sentence-expander":{"post":{"operationId":"run_ai_writer_sentence_expander","summary":"Sentence Expander","tags":["Generators"],"description":"Expand a short sentence or phrase into a detailed, vivid passage with AI — same meaning and tone, with more description and flow.\n\n[Try Sentence Expander in your browser →](https://iotools.cloud/tool/ai-writer/sentence-expander/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"The old house stood at the end of the street."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/sentence-rewriter":{"post":{"operationId":"run_ai_writer_sentence_rewriter","summary":"Sentence Rewriter","tags":["Generators"],"description":"Rewrite a sentence with AI to improve its clarity, tone, or style — same meaning, better phrasing.\n\n[Try Sentence Rewriter in your browser →](https://iotools.cloud/tool/ai-writer/sentence-rewriter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"The meeting has been postponed due to unforeseen circumstances that arose."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/serene-saturday-quotes":{"post":{"operationId":"run_ai_writer_serene_saturday_quotes","summary":"Serene Saturday Quote Generator","tags":["Generators"],"description":"Generate uplifting Saturday quotes with AI — casual, original one-liners celebrating the weekend.\n\n[Try Serene Saturday Quote Generator in your browser →](https://iotools.cloud/tool/ai-writer/serene-saturday-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"for a coffee shop's Saturday morning Instagram post"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/speech-writer":{"post":{"operationId":"run_ai_writer_speech_writer","summary":"Speech Writer","tags":["Generators"],"description":"Generate a persuasive, memorable speech with AI — a strong opening, clear key points and a closing that lands.\n\n[Try Speech Writer in your browser →](https://iotools.cloud/tool/ai-writer/speech-writer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a best man speech for my older brother's wedding"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/story":{"post":{"operationId":"run_ai_writer_story","summary":"Story Generator","tags":["Generators"],"description":"Generate a captivating short story with AI — characters, plot and a satisfying ending, from whatever premise you give it.\n\n[Try Story Generator in your browser →](https://iotools.cloud/tool/ai-writer/story/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a lighthouse keeper who discovers a message in a bottle from the future"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/story-plot":{"post":{"operationId":"run_ai_writer_story_plot","summary":"Story Plot Generator","tags":["Generators"],"description":"Generate an original story plot with AI — conflict, characters and key twists, ready to outline a story or a scene.\n\n[Try Story Plot Generator in your browser →](https://iotools.cloud/tool/ai-writer/story-plot/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a heist story where the crew's plan starts falling apart from the inside"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/terms-and-conditions-generator":{"post":{"operationId":"run_ai_writer_terms_and_conditions_generator","summary":"Terms and Conditions Generator","tags":["Generators"],"description":"Generate a complete Terms and Conditions (Terms of Service) document with AI — acceptance of terms, user conduct, liability and more, tailored to your business.\n\n[Try Terms and Conditions Generator in your browser →](https://iotools.cloud/tool/ai-writer/terms-and-conditions-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"},"customBusinessType":{"enum":["","Website","Mobile App","SaaS / Online Service","E-commerce Store","Marketplace","Blog / Content Site"],"description":"Business Type"},"customGoverningLaw":{"type":"string","description":"Governing Law"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a subscription-based online course platform"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/thoughtful-tuesday-quotes":{"post":{"operationId":"run_ai_writer_thoughtful_tuesday_quotes","summary":"Thoughtful Tuesday Quotes Generator","tags":["Generators"],"description":"Generate reflective, motivational Tuesday quotes with AI — original one-liners for personal growth and midweek momentum.\n\n[Try Thoughtful Tuesday Quotes Generator in your browser →](https://iotools.cloud/tool/ai-writer/thoughtful-tuesday-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"for a wellness newsletter aimed at busy professionals"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"items":{"type":"array","description":"Generated Content","items":{"type":"object","properties":{"title":{"type":"string","description":"Title"},"content":{"type":"string","description":"Content"}}},"x-iotools-columns":["title","content"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-writer/topic-sentence":{"post":{"operationId":"run_ai_writer_topic_sentence","summary":"Topic Sentence Generator","tags":["Generators"],"description":"Generate a clear, engaging topic sentence with AI — the opening line that introduces a paragraph's main idea, with a brief explanation.\n\n[Try Topic Sentence Generator in your browser →](https://iotools.cloud/tool/ai-writer/topic-sentence/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":"Extra instructions"}},"required":[]},"examples":{"with_extra_instructions":{"summary":"With extra instructions","value":{"context":"a paragraph arguing that public libraries are essential to communities"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/anagram-generator":{"post":{"operationId":"run_anagram_generator","summary":"Anagram Generator","tags":["Generators"],"description":"Find dictionary-word anagrams of a word or phrase — single-word matches or combinations of up to 3 words, using a bundled ~8,100-word English dictionary.\n\n[Try Anagram Generator in your browser →](https://iotools.cloud/tool/anagram-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputPhrase":{"type":"string","description":"Word or Phrase"},"maxWords":{"enum":["1","2","3"],"description":"Max Words"},"minWordLength":{"type":"number","description":"Min Word Length","minimum":2,"maximum":10},"allowRepeats":{"type":"boolean","description":"Allow repeated words"},"maxResults":{"type":"number","description":"Max Results","minimum":10,"maximum":5000}},"required":[]},"examples":{"single_word_anagrams_of_listen":{"summary":"Single-word anagrams of \"listen\"","value":{"inputPhrase":"listen","maxWords":"1","minWordLength":"3","allowRepeats":"","maxResults":"500"}},"two_word_anagrams_of_listen":{"summary":"Two-word anagrams of \"listen\"","value":{"inputPhrase":"listen","maxWords":"2","minWordLength":"3","allowRepeats":"","maxResults":"500"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_word_anagrams_of_listen":{"summary":"Single-word anagrams of \"listen\"","value":{"tool":"anagram-generator","tool_version":"1.0.2","outputs":{"status":"2 anagrams found.","anagramOutput":"listen\nsilent"},"credits_used":5,"credits_remaining":null}},"two_word_anagrams_of_listen":{"summary":"Two-word anagrams of \"listen\"","value":{"tool":"anagram-generator","tool_version":"1.0.2","outputs":{"status":"9 anagrams found.","anagramOutput":"listen\nsilent\nins let\nins tel\nlet sin\nlit sen\nnil set\nsen til\nsin tel"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"anagramOutput":{"type":"string","description":"Anagrams"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ansi-terminal-color-code-generator":{"post":{"operationId":"run_ansi_terminal_color_code_generator","summary":"ANSI Terminal Color Code Generator","tags":["Generators"],"description":"Generate ANSI/VT100 terminal escape codes for colored, styled text — pick a foreground/background color and style attributes (bold, underline, blink, etc.) and get the escape sequence plus a ready-to-run shell printf command.\n\n[Try ANSI Terminal Color Code Generator in your browser →](https://iotools.cloud/tool/ansi-terminal-color-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Sample Text"},"foreground":{"enum":["","30","31","32","33","34","35","36","37","90","91","92","93","94","95","96","97"],"description":"Foreground Color"},"background":{"enum":["","40","41","42","43","44","45","46","47","100","101","102","103","104","105","106","107"],"description":"Background Color"},"bold":{"type":"boolean","description":"Bold (1)"},"dim":{"type":"boolean","description":"Dim / Faint (2)"},"italic":{"type":"boolean","description":"Italic (3)"},"underline":{"type":"boolean","description":"Underline (4)"},"blink":{"type":"boolean","description":"Blink (5)"},"reverse":{"type":"boolean","description":"Reverse video (7)"},"strike":{"type":"boolean","description":"Strikethrough (9)"}},"required":[]},"examples":{"bold_red_foreground":{"summary":"Bold red foreground","value":{"text":"Hello","foreground":"31","background":"","bold":"true","dim":"","italic":"","underline":"","blink":"","reverse":"","strike":""}},"underlined_yellow_background":{"summary":"Underlined yellow background","value":{"text":"Alert","foreground":"","background":"43","bold":"","dim":"","italic":"","underline":"true","blink":"","reverse":"","strike":""}},"plain_text_no_styling":{"summary":"Plain text (no styling)","value":{"text":"Plain","foreground":"","background":"","bold":"","dim":"","italic":"","underline":"","blink":"","reverse":"","strike":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bold_red_foreground":{"summary":"Bold red foreground","value":{"tool":"ansi-terminal-color-code-generator","tool_version":"1.0.2","outputs":{"escapeCode":"\\x1b[1;31mHello\\x1b[0m","shellCommand":"printf '\\x1b[1;31m%s\\x1b[0m\\n' 'Hello'"},"credits_used":5,"credits_remaining":null}},"underlined_yellow_background":{"summary":"Underlined yellow background","value":{"tool":"ansi-terminal-color-code-generator","tool_version":"1.0.2","outputs":{"escapeCode":"\\x1b[4;43mAlert\\x1b[0m","shellCommand":"printf '\\x1b[4;43m%s\\x1b[0m\\n' 'Alert'"},"credits_used":5,"credits_remaining":null}},"plain_text_no_styling":{"summary":"Plain text (no styling)","value":{"tool":"ansi-terminal-color-code-generator","tool_version":"1.0.2","outputs":{"escapeCode":"Plain","shellCommand":"printf '%s\\n' 'Plain'"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"escapeCode":{"type":"string","description":"Escape Sequence"},"shellCommand":{"type":"string","description":"Shell Command"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/api-signature-generator":{"post":{"operationId":"run_api_signature_generator","summary":"API Signature Generator","tags":["Generators"],"description":"Generate an HMAC-SHA256 signature from a message and secret key — the canonical-string signing pattern used by AWS-style and generic API request-authentication schemes. Output as hex or Base64.\n\n[Try API Signature Generator in your browser →](https://iotools.cloud/tool/api-signature-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"String to sign"},"secretKey":{"type":"string","description":"Secret key"},"outputFormat":{"enum":["hex","base64"],"description":"Output format"}},"required":[]},"examples":{"hmac_sha256_hex":{"summary":"HMAC-SHA256, hex","value":{"message":"message","secretKey":"key","outputFormat":"hex"}},"hmac_sha256_base64":{"summary":"HMAC-SHA256, Base64","value":{"message":"GET\n/api/v1/users\nhost:api.example.com\ntimestamp:1700000000","secretKey":"secret-key-123","outputFormat":"base64"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hmac_sha256_hex":{"summary":"HMAC-SHA256, hex","value":{"tool":"api-signature-generator","tool_version":"1.0.2","outputs":{"signature":"6e9ef29b75fffc5b7abae527d58fdadb2fe42e7219011976917343065f58ed4a"},"credits_used":5,"credits_remaining":null}},"hmac_sha256_base64":{"summary":"HMAC-SHA256, Base64","value":{"tool":"api-signature-generator","tool_version":"1.0.2","outputs":{"signature":"WgeUIU8tnxI0vbJKLsD/qPvaCHvhp4kC3lHkjRzpl8U="},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"signature":{"type":"string","description":"Signature"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/argon2-hash-generator":{"post":{"operationId":"run_argon2_hash_generator","summary":"Argon2 Hash Generator","tags":["Generators"],"description":"Generate a real RFC 9106 Argon2id, Argon2i, or Argon2d hash from a password or message, with configurable memory cost, iterations, and parallelism. Runs entirely in your browser — nothing is sent to a server.\n\n[Try Argon2 Hash Generator in your browser →](https://iotools.cloud/tool/argon2-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password / message to hash"},"variant":{"enum":["argon2id","argon2i","argon2d"],"description":"Variant"},"memoryCost":{"type":"number","description":"Memory cost (m, KiB)","minimum":8,"maximum":65536},"iterations":{"type":"number","description":"Iterations (t)","minimum":1,"maximum":10},"parallelism":{"type":"number","description":"Parallelism (p)","minimum":1,"maximum":8},"hashLength":{"type":"number","description":"Hash length (bytes)","minimum":4,"maximum":128},"saltMode":{"enum":["auto","custom"],"description":"Salt"},"customSalt":{"type":"string","description":"Custom salt"},"outputFormat":{"enum":["encoded","hex","base64"],"description":"Output format"}},"required":["password"]},"examples":{"argon2id_phc_encoded":{"summary":"Argon2id, PHC encoded","value":{"password":"correct horse battery staple","variant":"argon2id","memoryCost":"19456","iterations":"2","parallelism":"1","hashLength":"32","saltMode":"custom","customSalt":"argon2-tool-salt","outputFormat":"encoded"}},"argon2i_hex_output":{"summary":"Argon2i, hex output","value":{"password":"Tr0ub4dour&3","variant":"argon2i","memoryCost":"19456","iterations":"3","parallelism":"2","hashLength":"64","saltMode":"custom","customSalt":"hex-format-example","outputFormat":"hex"}},"argon2d_auto_generated_salt":{"summary":"Argon2d, auto-generated salt","value":{"password":"My$ecretP@ssw0rd!","variant":"argon2d","memoryCost":"19456","iterations":"2","parallelism":"1","hashLength":"32","saltMode":"auto","customSalt":"","outputFormat":"base64"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"argon2id_phc_encoded":{"summary":"Argon2id, PHC encoded","value":{"tool":"argon2-hash-generator","tool_version":"1.0.2","outputs":{"hashResult":"$argon2id$v=19$m=19456,t=2,p=1$YXJnb24yLXRvb2wtc2FsdA$oQRm5GVxqPX0QEGjBELyYYdfCGyIJY8TslVykp7zosE","saltUsed":"6172676f6e322d746f6f6c2d73616c74"},"credits_used":5,"credits_remaining":null}},"argon2i_hex_output":{"summary":"Argon2i, hex output","value":{"tool":"argon2-hash-generator","tool_version":"1.0.2","outputs":{"hashResult":"54c36f462ebcd2772768962752c3e09a55c3399f91e02d7ca4bfa05062197b437ffa123241b83a8e3153028be415fcc8813efc2030c2f77e11db9d6e2fb60d83","saltUsed":"6865782d666f726d61742d6578616d706c65"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hashResult":{"type":"string","description":"Hash"},"saltUsed":{"type":"string","description":"Salt (hex)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ascii-box-table-generator":{"post":{"operationId":"run_ascii_box_table_generator","summary":"ASCII Box & Table Generator","tags":["Generators"],"description":"Turn CSV or tab-separated rows into an aligned ASCII table, drawn with Unicode box-drawing characters (┌─┬─┐) or plain ASCII (+, -, |). Auto-detects the delimiter and pads every column to a common width.\n\n[Try ASCII Box & Table Generator in your browser →](https://iotools.cloud/tool/ascii-box-table-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Data (CSV or TSV)"},"delimiter":{"enum":["auto","comma","tab"],"description":"Delimiter"},"borderStyle":{"enum":["unicode","ascii"],"description":"Border Style"}},"required":[]},"examples":{"unicode_box_drawing":{"summary":"Unicode box-drawing","value":{"inputText":"Name,Age\nAlice,30\nBob,7","delimiter":"auto","borderStyle":"unicode"}},"plain_ascii_borders":{"summary":"Plain ASCII borders","value":{"inputText":"Name,Age\nAlice,30\nBob,7","delimiter":"auto","borderStyle":"ascii"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"unicode_box_drawing":{"summary":"Unicode box-drawing","value":{"tool":"ascii-box-table-generator","tool_version":"1.0.2","outputs":{"output":"┌───────┬─────┐\n│ Name  │ Age │\n├───────┼─────┤\n│ Alice │ 30  │\n│ Bob   │ 7   │\n└───────┴─────┘"},"credits_used":5,"credits_remaining":null}},"plain_ascii_borders":{"summary":"Plain ASCII borders","value":{"tool":"ascii-box-table-generator","tool_version":"1.0.2","outputs":{"output":"+-------+-----+\n| Name  | Age |\n+-------+-----+\n| Alice | 30  |\n| Bob   | 7   |\n+-------+-----+"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"ASCII Table"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ascii-text-art-generator":{"post":{"operationId":"run_ascii_text_art_generator","summary":"ASCII Text Art Generator","tags":["Generators"],"description":"Turn short text into large ASCII-art banner letters using a built-in 5x5 block font. Supports A-Z and 0-9 (input is uppercased); unsupported characters render as blank space.\n\n[Try ASCII Text Art Generator in your browser →](https://iotools.cloud/tool/ascii-text-art-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"}},"required":[]},"examples":{"hi":{"summary":"HI","value":{"inputText":"HI"}},"single_letter":{"summary":"Single letter","value":{"inputText":"A"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hi":{"summary":"HI","value":{"tool":"ascii-text-art-generator","tool_version":"1.0.2","outputs":{"output":"#   # #####\n#   #   #  \n#####   #  \n#   #   #  \n#   # #####"},"credits_used":5,"credits_remaining":null}},"single_letter":{"summary":"Single letter","value":{"tool":"ascii-text-art-generator","tool_version":"1.0.2","outputs":{"output":" ### \n#   #\n#####\n#   #\n#   #"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Text Art"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/babel-config-generator":{"post":{"operationId":"run_babel_config_generator","summary":"Babel Config Generator","tags":["Generators"],"description":"Generate a babel.config.json or .babelrc from form fields: @babel/preset-env (targets, modules, useBuiltIns/corejs), preset-react (runtime, development), preset-typescript, preset-flow, common syntax/transform plugins, a decorators toggle (legacy or current proposal), and env overrides for tests (Jest) and production (strip console.*). Also shows the matching npm install command.\n\n[Try Babel Config Generator in your browser →](https://iotools.cloud/tool/babel-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"outputFormat":{"enum":["babel.config.json",".babelrc"],"description":"Config file"},"presetEnv":{"type":"boolean","description":"@babel/preset-env — compile modern JS down to your targets"},"envTargets":{"type":"string","description":"targets"},"envModules":{"enum":["auto","false","commonjs"],"description":"modules"},"envUseBuiltIns":{"enum":["false","usage","entry"],"description":"useBuiltIns"},"envCorejs":{"type":"string","description":"corejs version"},"presetReact":{"type":"boolean","description":"@babel/preset-react — compile JSX"},"reactRuntime":{"enum":["automatic","classic"],"description":"runtime"},"reactDevelopment":{"type":"boolean","description":"development — extra warnings + component stack traces"},"presetTypescript":{"type":"boolean","description":"@babel/preset-typescript — strip TS types"},"tsAllExtensions":{"type":"boolean","description":"Allow TSX syntax in .ts files (isTSX + allExtensions)"},"presetFlow":{"type":"boolean","description":"@babel/preset-flow — strip Flow types"},"plugins":{"type":"array","items":{"enum":["@babel/plugin-transform-runtime","@babel/plugin-transform-class-properties","@babel/plugin-transform-private-methods","@babel/plugin-transform-private-property-in-object","@babel/plugin-syntax-dynamic-import","@babel/plugin-proposal-export-default-from"]},"description":"Syntax / transform plugins"},"pluginDecorators":{"type":"boolean","description":"@babel/plugin-proposal-decorators"},"decoratorsLegacy":{"type":"boolean","description":"Use legacy decorators (older Angular/MobX/TypeORM-style @decorator)"},"envTestNodeCurrent":{"type":"boolean","description":"Test env: target the current Node version (common Jest setup)"},"envProdRemoveConsole":{"type":"boolean","description":"Production env: strip console.* calls (babel-plugin-transform-remove-console)"},"includeComments":{"type":"boolean","description":"Include section comments"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"}},"required":[]},"examples":{"react_typescript_app_browserslist_targets_decorators_jest_remove_console_envs":{"summary":"React + TypeScript app — browserslist targets, decorators, Jest + remove-console envs","value":{"outputFormat":"babel.config.json","presetEnv":"true","envTargets":"> 0.25%, not dead","envModules":"auto","envUseBuiltIns":"usage","envCorejs":"3.38","presetReact":"true","reactRuntime":"automatic","reactDevelopment":"","presetTypescript":"true","tsAllExtensions":"","presetFlow":"","plugins":"[\"@babel/plugin-transform-runtime\",\"@babel/plugin-transform-class-properties\"]","pluginDecorators":"true","decoratorsLegacy":"","envTestNodeCurrent":"true","envProdRemoveConsole":"true","includeComments":"true","includeHeader":"true"}},"minimal_node_js_library_babelrc_no_comments":{"summary":"Minimal Node.js library (.babelrc, no comments)","value":{"outputFormat":".babelrc","presetEnv":"true","envTargets":"","envModules":"auto","envUseBuiltIns":"false","envCorejs":"3.38","presetReact":"","reactRuntime":"automatic","reactDevelopment":"","presetTypescript":"","tsAllExtensions":"","presetFlow":"","plugins":"[]","pluginDecorators":"","decoratorsLegacy":"","envTestNodeCurrent":"","envProdRemoveConsole":"","includeComments":"","includeHeader":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"react_typescript_app_browserslist_targets_decorators_jest_remove_console_envs":{"summary":"React + TypeScript app — browserslist targets, decorators, Jest + remove-console envs","value":{"tool":"babel-config-generator","tool_version":"1.0.2","outputs":{"output":"// babel.config.json — Babel configuration\n// Generated with iotools.cloud\n// Docs: https://babeljs.io/docs/configuration\n{\n  // Presets to compile your JS/JSX/TS/Flow syntax\n  \"presets\": [\n    [\n      \"@babel/preset-env\",\n      {\n        \"targets\": \"> 0.25%, not dead\",\n        \"useBuiltIns\": \"usage\",\n        \"corejs\": \"3.38\"\n      }\n    ],\n    [\n      \"@babel/preset-react\",\n      {\n        \"runtime\": \"automatic\"\n      }\n    ],\n    \"@babel/preset-typescript\"\n  ],\n  // Extra syntax/transform plugins\n  \"plugins\": [\n    [\n      \"@babel/plugin-proposal-decorators\",\n      {\n        \"version\": \"2023-05\"\n      }\n    ],\n    \"@babel/plugin-transform-runtime\",\n    \"@babel/plugin-transform-class-properties\"\n  ],\n  // Per-NODE_ENV overrides (test, production, ...)\n  \"env\": {\n    \"test\": {\n      \"presets\": [\n        [\n          \"@babel/preset-env\",\n          {\n            \"targets\": {\n              \"node\": \"current\"\n            }\n          }\n        ]\n      ]\n    },\n    \"production\": {\n      \"plugins\": [\n        \"transform-remove-console\"\n      ]\n    }\n  }\n}\n","installCommand":"npm install -D @babel/core @babel/preset-env @babel/preset-react @babel/preset-typescript @babel/plugin-proposal-decorators babel-plugin-transform-remove-console @babel/plugin-transform-runtime @babel/plugin-transform-class-properties\nnpm install @babel/runtime\n"},"credits_used":5,"credits_remaining":null}},"minimal_node_js_library_babelrc_no_comments":{"summary":"Minimal Node.js library (.babelrc, no comments)","value":{"tool":"babel-config-generator","tool_version":"1.0.2","outputs":{"output":"// .babelrc — Babel configuration\n// Generated with iotools.cloud\n// Docs: https://babeljs.io/docs/configuration\n{\n  \"presets\": [\n    \"@babel/preset-env\"\n  ]\n}\n","installCommand":"npm install -D @babel/core @babel/preset-env\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Config"},"installCommand":{"type":"string","description":"Install command"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/barcode-generator":{"post":{"operationId":"run_barcode_generator","summary":"Barcode Generator","tags":["Generators"],"description":"Generate a scannable 1D barcode — EAN-13, EAN-8, UPC-A or Code 128 — as a crisp, scalable SVG with a correctly computed check digit. Runs entirely in your browser.\n\n[Try Barcode Generator in your browser →](https://iotools.cloud/tool/barcode-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"barcodeFormat":{"enum":["ean13","upca","ean8","code128"],"description":"Format"},"barcodeData":{"type":"string","description":"Barcode Data"},"showText":{"type":"boolean","description":"Show human-readable text"},"barColor":{"type":"string","description":"Bar color"},"bgColor":{"type":"string","description":"Background"}},"required":[]},"examples":{"ean_13_4006381333931_real_published_test_symbol":{"summary":"EAN-13 — 4006381333931 (real published test symbol)","value":{"barcodeFormat":"ean13","barcodeData":"4006381333931","showText":"true","barColor":"#000000","bgColor":"#ffffff"}},"upc_a_036000291452_wrigley_s_gum_real_test_symbol":{"summary":"UPC-A — 036000291452 (Wrigley's gum, real test symbol)","value":{"barcodeFormat":"upca","barcodeData":"036000291452","showText":"true","barColor":"#000000","bgColor":"#ffffff"}},"ean_8_9638507_check_digit_computed":{"summary":"EAN-8 — 9638507 (check digit computed)","value":{"barcodeFormat":"ean8","barcodeData":"9638507","showText":"true","barColor":"#000000","bgColor":"#ffffff"}},"code_128_alphanumeric_text":{"summary":"Code 128 — alphanumeric text","value":{"barcodeFormat":"code128","barcodeData":"IOTOOLS-128","showText":"true","barColor":"#000000","bgColor":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ean_13_4006381333931_real_published_test_symbol":{"summary":"EAN-13 — 4006381333931 (real published test symbol)","value":{"tool":"barcode-generator","tool_version":"1.0.2","outputs":{"barcodeValue":"4006381333931","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"230\" height=\"160\" viewBox=\"0 0 115 80\" shape-rendering=\"crispEdges\"><rect width=\"115\" height=\"80\" fill=\"#ffffff\"/><g fill=\"#000000\"><rect x=\"10\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"12\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"16\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"19\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"21\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"24\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"28\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"30\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"35\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"40\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"44\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"47\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"49\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"53\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"56\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"58\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"60\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"65\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"67\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"72\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"74\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"79\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"81\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"85\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"88\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"93\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"95\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"99\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"102\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"104\" y=\"6\" width=\"1\" height=\"58\"/></g><g fill=\"#000000\"><text x=\"8\" y=\"74\" text-anchor=\"end\" font-family=\"monospace\" font-size=\"8\">4</text><text x=\"34\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">006381</text><text x=\"81\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">333931</text></g></svg>"},"credits_used":5,"credits_remaining":null}},"upc_a_036000291452_wrigley_s_gum_real_test_symbol":{"summary":"UPC-A — 036000291452 (Wrigley's gum, real test symbol)","value":{"tool":"barcode-generator","tool_version":"1.0.2","outputs":{"barcodeValue":"036000291452","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"230\" height=\"160\" viewBox=\"0 0 115 80\" shape-rendering=\"crispEdges\"><rect width=\"115\" height=\"80\" fill=\"#ffffff\"/><g fill=\"#000000\"><rect x=\"10\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"12\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"16\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"19\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"21\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"26\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"28\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"30\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"37\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"40\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"44\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"47\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"51\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"54\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"56\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"58\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"60\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"63\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"67\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"71\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"74\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"78\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"81\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"83\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"88\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"91\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"95\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"98\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"102\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"104\" y=\"6\" width=\"1\" height=\"58\"/></g><g fill=\"#000000\"><text x=\"8\" y=\"74\" text-anchor=\"end\" font-family=\"monospace\" font-size=\"8\">0</text><text x=\"37.5\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">36000</text><text x=\"77.5\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">29145</text><text x=\"107\" y=\"74\" text-anchor=\"start\" font-family=\"monospace\" font-size=\"8\">2</text></g></svg>"},"credits_used":5,"credits_remaining":null}},"ean_8_9638507_check_digit_computed":{"summary":"EAN-8 — 9638507 (check digit computed)","value":{"tool":"barcode-generator","tool_version":"1.0.2","outputs":{"barcodeValue":"96385074","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"174\" height=\"160\" viewBox=\"0 0 87 80\" shape-rendering=\"crispEdges\"><rect width=\"87\" height=\"80\" fill=\"#ffffff\"/><g fill=\"#000000\"><rect x=\"10\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"12\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"16\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"18\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"21\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"23\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"28\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"33\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"35\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"38\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"42\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"44\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"46\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"49\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"53\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"58\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"60\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"64\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"67\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"69\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"74\" y=\"6\" width=\"1\" height=\"58\"/><rect x=\"76\" y=\"6\" width=\"1\" height=\"58\"/></g><g fill=\"#000000\"><text x=\"27\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">9638</text><text x=\"60\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">5074</text></g></svg>"},"credits_used":5,"credits_remaining":null}},"code_128_alphanumeric_text":{"summary":"Code 128 — alphanumeric text","value":{"tool":"barcode-generator","tool_version":"1.0.2","outputs":{"barcodeValue":"IOTOOLS-128","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"352\" height=\"160\" viewBox=\"0 0 176 80\" shape-rendering=\"crispEdges\"><rect width=\"176\" height=\"80\" fill=\"#ffffff\"/><g fill=\"#000000\"><rect x=\"10\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"13\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"16\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"21\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"26\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"30\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"32\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"36\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"40\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"43\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"46\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"52\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"54\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"58\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"62\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"65\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"69\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"73\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"76\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"80\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"83\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"87\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"90\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"94\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"98\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"101\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"104\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"109\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"112\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"117\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"120\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"124\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"129\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"131\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"135\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"138\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"142\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"144\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"147\" y=\"6\" width=\"4\" height=\"50\"/><rect x=\"153\" y=\"6\" width=\"2\" height=\"50\"/><rect x=\"158\" y=\"6\" width=\"3\" height=\"50\"/><rect x=\"162\" y=\"6\" width=\"1\" height=\"50\"/><rect x=\"164\" y=\"6\" width=\"2\" height=\"50\"/></g><g fill=\"#000000\"><text x=\"88\" y=\"74\" text-anchor=\"middle\" font-family=\"monospace\" font-size=\"8\">IOTOOLS-128</text></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"barcodeValue":{"type":"string","description":"Encoded Value"},"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/basic-auth-generator":{"post":{"operationId":"run_basic_auth_generator","summary":"Basic Auth Generator","tags":["Generators"],"description":"Generate an HTTP Basic Authentication header from a username and password — get both the Base64 token and the ready-to-use Authorization header line.\n\n[Try Basic Auth Generator in your browser →](https://iotools.cloud/tool/basic-auth-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Username"},"password":{"type":"string","description":"Password"}},"required":[]},"examples":{"rfc_7617_example":{"summary":"RFC 7617 example","value":{"username":"Aladdin","password":"open sesame"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rfc_7617_example":{"summary":"RFC 7617 example","value":{"tool":"basic-auth-generator","tool_version":"1.0.2","outputs":{"authHeader":"Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==","encodedCredentials":"QWxhZGRpbjpvcGVuIHNlc2FtZQ=="},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"authHeader":{"type":"string","description":"Authorization header"},"encodedCredentials":{"type":"string","description":"Base64 token (username:password)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bcrypt-hash-generator":{"post":{"operationId":"run_bcrypt_hash_generator","summary":"Bcrypt Hash Generator","tags":["Generators"],"description":"Generate a bcrypt password hash with a configurable cost factor, and optionally check it against an existing hash. Runs entirely in your browser — nothing is sent to a server.\n\n[Try Bcrypt Hash Generator in your browser →](https://iotools.cloud/tool/bcrypt-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messageToHash":{"type":"string","description":"Password / message to hash"},"saltRounds":{"type":"number","description":"Cost factor (salt rounds)","minimum":4,"maximum":14},"expectedHash":{"type":"string","description":"Compare with existing hash (optional)"}},"required":["messageToHash"]},"examples":{"hash_a_password":{"summary":"Hash a password","value":{"messageToHash":"correct horse battery staple","saltRounds":"10","expectedHash":""}},"check_against_an_existing_hash":{"summary":"Check against an existing hash","value":{"messageToHash":"secret","saltRounds":"10","expectedHash":"$2b$10$YbAk4sINDiyc8OCPrk/uQ.mJDLjA8niJ0MGFTim8LZzXjausbpYWS"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hashResult":{"type":"string","description":"Computed hash"},"match":{"type":"string","description":"Matches compared hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bip39-mnemonic-converter":{"post":{"operationId":"run_bip39_mnemonic_converter","summary":"BIP39 Mnemonic Converter","tags":["Generators"],"description":"Generate a random BIP39 mnemonic seed phrase, or validate an existing one and derive its entropy and seed.\n\n[Try BIP39 Mnemonic Converter in your browser →](https://iotools.cloud/tool/bip39-mnemonic-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate","convert"],"description":"Mode"},"wordCount":{"enum":["12","15","18","21","24"],"description":"Word Count"},"mnemonicInput":{"type":"string","description":"Mnemonic Phrase"},"passphrase":{"type":"string","description":"Passphrase (optional)"}},"required":[]},"examples":{"convert_standard_test_vector":{"summary":"Convert standard test vector","value":{"mode":"convert","mnemonicInput":"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about","passphrase":""}},"generate_a_24_word_mnemonic":{"summary":"Generate a 24-word mnemonic","value":{"mode":"generate","wordCount":"24","passphrase":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"convert_standard_test_vector":{"summary":"Convert standard test vector","value":{"tool":"bip39-mnemonic-converter","tool_version":"1.0.2","outputs":{"mnemonicOutput":"abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about","checksumStatus":"Valid ✓","entropy":"00000000000000000000000000000000","seed":"5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mnemonicOutput":{"type":"string","description":"Mnemonic Phrase"},"checksumStatus":{"type":"string","description":"Status"},"entropy":{"type":"string","description":"Entropy (Hex)"},"seed":{"type":"string","description":"Seed (Hex, 512-bit)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/border-radius-generator":{"post":{"operationId":"run_border_radius_generator","summary":"Border Radius Generator","tags":["Generators"],"description":"Generate a CSS border-radius declaration from one shared value or four independent corner values (top-left, top-right, bottom-right, bottom-left) in px, %, em, or rem — collapsed to the shortest valid shorthand.\n\n[Try Border Radius Generator in your browser →](https://iotools.cloud/tool/border-radius-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"linked":{"type":"boolean","description":"Same for all corners"},"unit":{"enum":["px","%","em","rem"],"description":"Unit"},"topLeft":{"type":"number","description":"Top Left","minimum":0,"maximum":200},"topRight":{"type":"number","description":"Top Right","minimum":0,"maximum":200},"bottomRight":{"type":"number","description":"Bottom Right","minimum":0,"maximum":200},"bottomLeft":{"type":"number","description":"Bottom Left","minimum":0,"maximum":200}},"required":[]},"examples":{"uniform_radius":{"summary":"Uniform radius","value":{"linked":"true","unit":"px","topLeft":"10","topRight":"0","bottomRight":"0","bottomLeft":"0"}},"four_independent_corners":{"summary":"Four independent corners","value":{"linked":"","unit":"px","topLeft":"10","topRight":"20","bottomRight":"30","bottomLeft":"40"}},"circle_percent_unit":{"summary":"Circle (percent unit)","value":{"linked":"true","unit":"%","topLeft":"50","topRight":"0","bottomRight":"0","bottomLeft":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"uniform_radius":{"summary":"Uniform radius","value":{"tool":"border-radius-generator","tool_version":"1.0.2","outputs":{"cssCode":"border-radius: 10px;"},"credits_used":5,"credits_remaining":null}},"four_independent_corners":{"summary":"Four independent corners","value":{"tool":"border-radius-generator","tool_version":"1.0.2","outputs":{"cssCode":"border-radius: 10px 20px 30px 40px;"},"credits_used":5,"credits_remaining":null}},"circle_percent_unit":{"summary":"Circle (percent unit)","value":{"tool":"border-radius-generator","tool_version":"1.0.2","outputs":{"cssCode":"border-radius: 50%;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/brand-name-generator":{"post":{"operationId":"run_brand_name_generator","summary":"Brand Name Generator","tags":["Generators"],"description":"Generate brandable business names from your keywords — compound words, portmanteaus, Latin roots, playful blends and more, filtered by industry and naming style.\n\n[Try Brand Name Generator in your browser →](https://iotools.cloud/tool/brand-name-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keywords":{"type":"string","description":"Keywords"},"industry":{"enum":["general","technology","health","food","fashion","finance","education","travel","gaming","eco"],"description":"Industry"},"style":{"enum":["all","modern","compound","portmanteau","latin","playful","minimalist","nature","abstract"],"description":"Name style"},"count":{"type":"number","description":"Names to generate","minimum":3,"maximum":30}},"required":["keywords"]},"examples":{"tech_startup_names":{"summary":"Tech startup names","value":{"keywords":"cloud, tech, fast","industry":"technology","style":"all","count":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Generated names","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/business-lorem-ipsum-generator":{"post":{"operationId":"run_business_lorem_ipsum_generator","summary":"Business Lorem Ipsum Generator","tags":["Generators"],"description":"Generate corporate-buzzword filler text — an alternative to classic lorem ipsum built from business jargon like \"leverage synergistic paradigms\" and \"streamline core competencies\". Choose paragraph count, sentences per paragraph, and optional bullet points.\n\n[Try Business Lorem Ipsum Generator in your browser →](https://iotools.cloud/tool/business-lorem-ipsum-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"paragraphCount":{"type":"number","description":"Number of Paragraphs","minimum":1,"maximum":20},"sentenceCount":{"type":"number","description":"Sentences per Paragraph","minimum":1,"maximum":10},"startWithLorem":{"type":"boolean","description":"Start with \"Lorem ipsum\""},"includeBullets":{"type":"boolean","description":"Include Bullet Points"}},"required":[]},"examples":{"5_paragraphs":{"summary":"5 paragraphs","value":{"paragraphCount":"5","sentenceCount":"5","startWithLorem":"","includeBullets":""}},"with_bullets_starts_with_lorem_ipsum":{"summary":"With bullets, starts with Lorem ipsum","value":{"paragraphCount":"3","sentenceCount":"4","startWithLorem":"true","includeBullets":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Business Ipsum"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cache-control-header-builder":{"post":{"operationId":"run_cache_control_header_builder","summary":"HTTP Cache-Control Header Builder","tags":["Generators"],"description":"Assemble a valid HTTP Cache-Control response header from its cacheability, freshness and revalidation directives — pick a context preset or toggle directives individually, with a plain-English explanation of each and warnings for combinations that are contradictory or partly redundant, like no-store alongside max-age.\n\n[Try HTTP Cache-Control Header Builder in your browser →](https://iotools.cloud/tool/cache-control-header-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"enum":["custom","api","staticAsset","htmlPage","privateData"],"description":"Context Preset"},"public":{"type":"boolean","description":"public"},"private":{"type":"boolean","description":"private"},"noCache":{"type":"boolean","description":"no-cache"},"noStore":{"type":"boolean","description":"no-store"},"maxAge":{"type":"number","description":"max-age (seconds)","minimum":0},"sMaxage":{"type":"number","description":"s-maxage (seconds)","minimum":0},"staleWhileRevalidate":{"type":"number","description":"stale-while-revalidate (seconds)","minimum":0},"staleIfError":{"type":"number","description":"stale-if-error (seconds)","minimum":0},"mustRevalidate":{"type":"boolean","description":"must-revalidate"},"proxyRevalidate":{"type":"boolean","description":"proxy-revalidate"},"immutable":{"type":"boolean","description":"immutable"},"noTransform":{"type":"boolean","description":"no-transform"},"mustUnderstand":{"type":"boolean","description":"must-understand"}},"required":[]},"examples":{"static_asset_cache_forever":{"summary":"Static asset — cache forever","value":{"preset":"staticAsset"}},"private_data_revalidate_every_time":{"summary":"Private data — revalidate every time","value":{"preset":"privateData"}},"custom_no_store_makes_other_directives_moot":{"summary":"Custom — no-store makes other directives moot","value":{"preset":"custom","public":"","private":"","noCache":"","noStore":"true","maxAge":"3600","mustRevalidate":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"static_asset_cache_forever":{"summary":"Static asset — cache forever","value":{"tool":"cache-control-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Cache-Control: public, max-age=31536000, immutable","explanation":[{"directive":"public","effect":"Any cache — the browser or a shared cache like a CDN — may store this response, even one that would normally be treated as non-cacheable (e.g. an authenticated response)."},{"directive":"max-age=31536000","effect":"The response is considered fresh for 1 year after it's received — applies to both browser and shared caches, unless s-maxage overrides it for shared caches."},{"directive":"immutable","effect":"Tells the browser the response body will never change while it's fresh, so it should skip conditional revalidation entirely — even on a user-triggered reload."}],"warnings":"No conflicting or redundant directives detected."},"credits_used":5,"credits_remaining":null}},"private_data_revalidate_every_time":{"summary":"Private data — revalidate every time","value":{"tool":"cache-control-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Cache-Control: private, max-age=0, must-revalidate","explanation":[{"directive":"private","effect":"Only the requesting browser may cache this response; shared caches (CDNs, corporate proxies) must not store it."},{"directive":"max-age=0","effect":"The response is considered fresh for 0 seconds after it's received — applies to both browser and shared caches, unless s-maxage overrides it for shared caches."},{"directive":"must-revalidate","effect":"Once the response goes stale, caches must revalidate with the origin before reuse — they may not serve stale data even if the origin can't be reached."}],"warnings":"No conflicting or redundant directives detected."},"credits_used":5,"credits_remaining":null}},"custom_no_store_makes_other_directives_moot":{"summary":"Custom — no-store makes other directives moot","value":{"tool":"cache-control-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Cache-Control: no-store, max-age=3600, must-revalidate","explanation":[{"directive":"no-store","effect":"No cache of any kind may store any part of this response, or the request that produced it — the strictest cacheability directive."},{"directive":"max-age=3600","effect":"The response is considered fresh for 1 hour after it's received — applies to both browser and shared caches, unless s-maxage overrides it for shared caches."},{"directive":"must-revalidate","effect":"Once the response goes stale, caches must revalidate with the origin before reuse — they may not serve stale data even if the origin can't be reached."}],"warnings":"no-store prevents any storage at all, so must-revalidate, max-age — which only matter for a response that IS stored somewhere — have no effect here."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"headerOutput":{"type":"string","description":"Cache-Control Header"},"explanation":{"type":"array","description":"What Each Directive Does","items":{"type":"object","properties":{"directive":{"type":"string","description":"Directive"},"effect":{"type":"string","description":"Effect"}}},"x-iotools-columns":["directive","effect"]},"warnings":{"type":"string","description":"Warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/campaign-url-builder":{"post":{"operationId":"run_campaign_url_builder","summary":"Campaign URL Builder","tags":["Generators"],"description":"Build a campaign tracking URL by appending UTM parameters (utm_source, utm_medium, utm_campaign, utm_term, utm_content) to a website URL, correctly URL-encoded for Google Analytics and other marketing platforms.\n\n[Try Campaign URL Builder in your browser →](https://iotools.cloud/tool/campaign-url-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"websiteUrl":{"type":"string","description":"Website URL"},"source":{"type":"string","description":"Campaign Source"},"medium":{"type":"string","description":"Campaign Medium"},"campaign":{"type":"string","description":"Campaign Name"},"term":{"type":"string","description":"Campaign Term"},"content":{"type":"string","description":"Campaign Content"}},"required":["websiteUrl","source","medium","campaign"]},"examples":{"newsletter_campaign":{"summary":"Newsletter campaign","value":{"websiteUrl":"https://example.com/page","source":"newsletter","medium":"email","campaign":"spring sale","term":"","content":""}},"existing_query_string_special_characters":{"summary":"Existing query string + special characters","value":{"websiteUrl":"https://example.com/landing?ref=abc","source":"google","medium":"cpc","campaign":"spring & summer","term":"running shoes","content":"logo/link"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"newsletter_campaign":{"summary":"Newsletter campaign","value":{"tool":"campaign-url-builder","tool_version":"1.0.2","outputs":{"campaignUrl":"https://example.com/page?utm_source=newsletter&utm_medium=email&utm_campaign=spring%20sale"},"credits_used":5,"credits_remaining":null}},"existing_query_string_special_characters":{"summary":"Existing query string + special characters","value":{"tool":"campaign-url-builder","tool_version":"1.0.2","outputs":{"campaignUrl":"https://example.com/landing?ref=abc&utm_source=google&utm_medium=cpc&utm_campaign=spring%20%26%20summer&utm_term=running%20shoes&utm_content=logo%2Flink"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"campaignUrl":{"type":"string","description":"Campaign URL"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/chacha20-key-generator":{"post":{"operationId":"run_chacha20_key_generator","summary":"ChaCha20 Key Generator","tags":["Generators"],"description":"Generate a cryptographically random ChaCha20 encryption key — a fixed 256-bit key, optionally with a 96-bit nonce, output as hex or Base64. Generated entirely in your browser and never transmitted.\n\n[Try ChaCha20 Key Generator in your browser →](https://iotools.cloud/tool/chacha20-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"outputFormat":{"enum":["hex","base64"],"description":"Output format"},"includeNonce":{"type":"boolean","description":"Also generate a nonce (96-bit)"}},"required":[]},"examples":{"chacha20_key_nonce_hex":{"summary":"ChaCha20 key + nonce, hex","value":{"outputFormat":"hex","includeNonce":"true"}},"chacha20_key_only_base64":{"summary":"ChaCha20 key only, Base64","value":{"outputFormat":"base64","includeNonce":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"key":{"type":"string","description":"Generated key (256-bit)"},"nonce":{"type":"string","description":"Generated nonce (96-bit)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/chart-maker":{"post":{"operationId":"run_chart_maker","summary":"Chart Maker","tags":["Generators"],"description":"Turn a list of labels and values into a bar, line, area, pie or donut chart — a downloadable, self-contained SVG built entirely in your browser, no signup or upload required.\n\n[Try Chart Maker in your browser →](https://iotools.cloud/tool/chart-maker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"string","description":"Chart data"},"chartType":{"enum":["bar","horizontal-bar","line","area","pie","donut"],"description":"Chart type"},"title":{"type":"string","description":"Chart title"},"canvasSize":{"enum":["small","medium","large","wide"],"description":"Canvas size"},"palette":{"enum":["vibrant","pastel","ocean","sunset","forest","monochrome","grayscale"],"description":"Color palette"},"sortOrder":{"enum":["none","ascending","descending"],"description":"Sort by value"},"showValues":{"type":"boolean","description":"Show value labels"},"valueLabel":{"enum":["value","percent"],"description":"Value label format"},"showLegend":{"type":"boolean","description":"Show legend"},"showGridLines":{"type":"boolean","description":"Show gridlines"},"bgColor":{"type":"string","description":"Background"}},"required":["data"]},"examples":{"monthly_sales_vertical_bar":{"summary":"Monthly sales, vertical bar","value":{"data":"Jan, 420\nFeb, 380\nMar, 510\nApr, 460\nMay, 590","chartType":"bar","title":"Monthly Sales","canvasSize":"medium","palette":"vibrant","sortOrder":"none","showValues":"true","valueLabel":"value","showLegend":"","showGridLines":"true","bgColor":"#ffffff"}},"market_share_donut_with_legend":{"summary":"Market share, donut with legend","value":{"data":"Chrome, 65\nSafari, 18\nFirefox, 8\nEdge, 6\nOther, 3","chartType":"donut","title":"Browser Market Share","canvasSize":"medium","palette":"ocean","sortOrder":"descending","showValues":"true","valueLabel":"percent","showLegend":"true","showGridLines":"true","bgColor":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"monthly_sales_vertical_bar":{"summary":"Monthly sales, vertical bar","value":{"tool":"chart-maker","tool_version":"1.0.2","outputs":{"svg":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"700\" height=\"460\" viewBox=\"0 0 700 460\">\n<rect width=\"700\" height=\"460\" fill=\"#ffffff\"/>\n<text x=\"350.00\" y=\"24\" font-family=\"Inter, Arial, sans-serif\" font-size=\"18\" font-weight=\"700\" fill=\"#111827\" text-anchor=\"middle\">Monthly Sales</text>\n<line x1=\"50\" y1=\"46.00\" x2=\"680.00\" y2=\"46.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/>\n<line x1=\"50\" y1=\"139.50\" x2=\"680.00\" y2=\"139.50\" stroke=\"#e5e7eb\" stroke-width=\"1\"/>\n<line x1=\"50\" y1=\"233.00\" x2=\"680.00\" y2=\"233.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/>\n<line x1=\"50\" y1=\"326.50\" x2=\"680.00\" y2=\"326.50\" stroke=\"#e5e7eb\" stroke-width=\"1\"/>\n<line x1=\"50\" y1=\"420.00\" x2=\"680.00\" y2=\"420.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/>\n<line x1=\"50\" y1=\"420.00\" x2=\"680.00\" y2=\"420.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/>\n<rect x=\"75.20\" y=\"153.76\" width=\"75.60\" height=\"266.24\" fill=\"#464aff\"/>\n<text x=\"113.00\" y=\"436.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" text-anchor=\"middle\">Jan</text>\n<text x=\"113.00\" y=\"147.76\" font-family=\"Inter, Arial, sans-serif\" font-size=\"11\" fill=\"#111827\" text-anchor=\"middle\">420</text>\n<rect x=\"201.20\" y=\"179.12\" width=\"75.60\" height=\"240.88\" fill=\"#ef4444\"/>\n<text x=\"239.00\" y=\"436.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" text-anchor=\"middle\">Feb</text>\n<text x=\"239.00\" y=\"173.12\" font-family=\"Inter, Arial, sans-serif\" font-size=\"11\" fill=\"#111827\" text-anchor=\"middle\">380</text>\n<rect x=\"327.20\" y=\"96.71\" width=\"75.60\" height=\"323.29\" fill=\"#f59e0b\"/>\n<text x=\"365.00\" y=\"436.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" text-anchor=\"middle\">Mar</text>\n<text x=\"365.00\" y=\"90.71\" font-family=\"Inter, Arial, sans-serif\" font-size=\"11\" fill=\"#111827\" text-anchor=\"middle\">510</text>\n<rect x=\"453.20\" y=\"128.41\" width=\"75.60\" height=\"291.59\" fill=\"#10b981\"/>\n<text x=\"491.00\" y=\"436.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" text-anchor=\"middle\">Apr</text>\n<text x=\"491.00\" y=\"122.41\" font-family=\"Inter, Arial, sans-serif\" font-size=\"11\" fill=\"#111827\" text-anchor=\"middle\">460</text>\n<rect x=\"579.20\" y=\"46.00\" width=\"75.60\" height=\"374.00\" fill=\"#8b5cf6\"/>\n<text x=\"617.00\" y=\"436.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" text-anchor=\"middle\">May</text>\n<text x=\"617.00\" y=\"40.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"11\" fill=\"#111827\" text-anchor=\"middle\">590</text>\n</svg>","summary":[{"metric":"Data points","value":"5"},{"metric":"Total","value":"2,360"},{"metric":"Average","value":"472"},{"metric":"Highest","value":"May (590)"},{"metric":"Lowest","value":"Feb (380)"}]},"credits_used":5,"credits_remaining":null}},"market_share_donut_with_legend":{"summary":"Market share, donut with legend","value":{"tool":"chart-maker","tool_version":"1.0.2","outputs":{"svg":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"700\" height=\"460\" viewBox=\"0 0 700 460\">\n<rect width=\"700\" height=\"460\" fill=\"#ffffff\"/>\n<text x=\"350.00\" y=\"24\" font-family=\"Inter, Arial, sans-serif\" font-size=\"18\" font-weight=\"700\" fill=\"#111827\" text-anchor=\"middle\">Browser Market Share</text>\n<path d=\"M 350.00 212.00 L 350.00 66.00 A 146.00 146.00 0 1 1 231.88 297.82 Z\" fill=\"#0c4a6e\" stroke=\"#ffffff\" stroke-width=\"1.5\"/>\n<text x=\"434.56\" y=\"255.08\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">65%</text>\n<path d=\"M 350.00 212.00 L 231.88 297.82 A 146.00 146.00 0 0 1 222.06 141.66 Z\" fill=\"#0369a1\" stroke=\"#ffffff\" stroke-width=\"1.5\"/>\n<text x=\"255.29\" y=\"217.96\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">18%</text>\n<path d=\"M 350.00 212.00 L 222.06 141.66 A 146.00 146.00 0 0 1 271.77 88.73 Z\" fill=\"#0284c7\" stroke=\"#ffffff\" stroke-width=\"1.5\"/>\n<text x=\"280.82\" y=\"147.04\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">8%</text>\n<path d=\"M 350.00 212.00 L 271.77 88.73 A 146.00 146.00 0 0 1 322.64 68.59 Z\" fill=\"#0ea5e9\" stroke=\"#ffffff\" stroke-width=\"1.5\"/>\n<text x=\"315.06\" y=\"123.76\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">6%</text>\n<path d=\"M 350.00 212.00 L 322.64 68.59 A 146.00 146.00 0 0 1 350.00 66.00 Z\" fill=\"#38bdf8\" stroke=\"#ffffff\" stroke-width=\"1.5\"/>\n<text x=\"341.07\" y=\"117.52\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\" text-anchor=\"middle\" dominant-baseline=\"central\">3%</text>\n<circle cx=\"350.00\" cy=\"212.00\" r=\"80.30\" fill=\"#ffffff\"/>\n<rect x=\"40.00\" y=\"389.00\" width=\"12\" height=\"12\" rx=\"2\" fill=\"#0c4a6e\"/>\n<text x=\"58.00\" y=\"398.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" dominant-baseline=\"central\">Chrome</text>\n<rect x=\"195.00\" y=\"389.00\" width=\"12\" height=\"12\" rx=\"2\" fill=\"#0369a1\"/>\n<text x=\"213.00\" y=\"398.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" dominant-baseline=\"central\">Safari</text>\n<rect x=\"350.00\" y=\"389.00\" width=\"12\" height=\"12\" rx=\"2\" fill=\"#0284c7\"/>\n<text x=\"368.00\" y=\"398.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" dominant-baseline=\"central\">Firefox</text>\n<rect x=\"505.00\" y=\"389.00\" width=\"12\" height=\"12\" rx=\"2\" fill=\"#0ea5e9\"/>\n<text x=\"523.00\" y=\"398.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" dominant-baseline=\"central\">Edge</text>\n<rect x=\"40.00\" y=\"415.00\" width=\"12\" height=\"12\" rx=\"2\" fill=\"#38bdf8\"/>\n<text x=\"58.00\" y=\"424.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"12\" fill=\"#374151\" dominant-baseline=\"central\">Other</text>\n</svg>","summary":[{"metric":"Data points","value":"5"},{"metric":"Total","value":"100"},{"metric":"Average","value":"20"},{"metric":"Highest","value":"Chrome (65)"},{"metric":"Lowest","value":"Other (3)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/citation-generator":{"post":{"operationId":"run_citation_generator","summary":"Citation Generator","tags":["Generators"],"description":"Generate a properly formatted APA, MLA, or Chicago style bibliographic citation for a website, book, or article from author, title, publisher, year, URL and access date.\n\n[Try Citation Generator in your browser →](https://iotools.cloud/tool/citation-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"style":{"enum":["apa","mla","chicago"],"description":"Citation Style"},"authorLast":{"type":"string","description":"Author Last Name"},"authorFirst":{"type":"string","description":"Author First Name"},"title":{"type":"string","description":"Title of Work"},"siteName":{"type":"string","description":"Publisher / Site Name"},"year":{"type":"string","description":"Year Published"},"url":{"type":"string","description":"URL"},"accessDate":{"type":"string","description":"Access Date"}},"required":["title"]},"examples":{"website_apa":{"summary":"Website — APA","value":{"style":"apa","authorLast":"Smith","authorFirst":"Jane","title":"How Search Engines Rank Web Pages","siteName":"TechCrunch","year":"2023","url":"https://example.com/how-search-engines-rank-web-pages"}},"website_mla":{"summary":"Website — MLA","value":{"style":"mla","authorLast":"Smith","authorFirst":"Jane","title":"How Search Engines Rank Web Pages","siteName":"TechCrunch","year":"2023","url":"https://example.com/how-search-engines-rank-web-pages"}},"website_chicago":{"summary":"Website — Chicago","value":{"style":"chicago","authorLast":"Smith","authorFirst":"Jane","title":"How Search Engines Rank Web Pages","siteName":"TechCrunch","url":"https://example.com/how-search-engines-rank-web-pages","accessDate":"2024-01-15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"website_apa":{"summary":"Website — APA","value":{"tool":"citation-generator","tool_version":"1.0.2","outputs":{"citation":"Smith, J. (2023). How Search Engines Rank Web Pages. TechCrunch. https://example.com/how-search-engines-rank-web-pages"},"credits_used":5,"credits_remaining":null}},"website_mla":{"summary":"Website — MLA","value":{"tool":"citation-generator","tool_version":"1.0.2","outputs":{"citation":"Smith, Jane. \"How Search Engines Rank Web Pages.\" TechCrunch, 2023, https://example.com/how-search-engines-rank-web-pages."},"credits_used":5,"credits_remaining":null}},"website_chicago":{"summary":"Website — Chicago","value":{"tool":"citation-generator","tool_version":"1.0.2","outputs":{"citation":"Smith, Jane. \"How Search Engines Rank Web Pages.\" TechCrunch. Accessed January 15, 2024. https://example.com/how-search-engines-rank-web-pages."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"citation":{"type":"string","description":"Formatted Citation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/collage-maker":{"post":{"operationId":"run_collage_maker","summary":"Photo Collage Maker","tags":["Generators"],"description":"Arrange 2-9 photos into a grid collage — pick a layout, adjust spacing and corner rounding, and download a clean SVG. Runs entirely in your browser, no signup or upload to a server.\n\n[Try Photo Collage Maker in your browser →](https://iotools.cloud/tool/collage-maker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"images":{"type":"array","items":{"type":"string","contentEncoding":"base64"},"description":"Photos"},"layout":{"enum":["auto-grid","columns-2","columns-3","rows","stack"],"description":"Grid layout"},"cellSize":{"type":"number","description":"Cell size (px)","minimum":80,"maximum":400},"spacing":{"type":"number","description":"Spacing (px)","minimum":0,"maximum":40},"cornerRadius":{"type":"number","description":"Corner radius (px)","minimum":0,"maximum":40},"backgroundColor":{"type":"string","description":"Background"}},"required":["images"]},"examples":{"two_photos_2_column_grid":{"summary":"Two photos, 2-column grid","value":{"images":"[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\",\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\"]","layout":"columns-2","cellSize":"200","spacing":"8","cornerRadius":"0","backgroundColor":"#ffffff"}},"four_photos_auto_grid_rounded_corners":{"summary":"Four photos, auto grid, rounded corners","value":{"images":"[\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\",\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\",\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\",\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\"]","layout":"auto-grid","cellSize":"150","spacing":"12","cornerRadius":"16","backgroundColor":"#f3f4f6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_photos_2_column_grid":{"summary":"Two photos, 2-column grid","value":{"tool":"collage-maker","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 408 200\" width=\"408\" height=\"200\"><rect width=\"408\" height=\"200\" fill=\"#ffffff\"/><image href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\" x=\"0\" y=\"0\" width=\"200\" height=\"200\" preserveAspectRatio=\"xMidYMid slice\"/><image href=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\" x=\"208\" y=\"0\" width=\"200\" height=\"200\" preserveAspectRatio=\"xMidYMid slice\"/></svg>"},"credits_used":5,"credits_remaining":null}},"four_photos_auto_grid_rounded_corners":{"summary":"Four photos, auto grid, rounded corners","value":{"tool":"collage-maker","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 312 312\" width=\"312\" height=\"312\"><defs><clipPath id=\"collage-clip-0\"><rect x=\"0\" y=\"0\" width=\"150\" height=\"150\" rx=\"16\"/></clipPath><clipPath id=\"collage-clip-1\"><rect x=\"162\" y=\"0\" width=\"150\" height=\"150\" rx=\"16\"/></clipPath><clipPath id=\"collage-clip-2\"><rect x=\"0\" y=\"162\" width=\"150\" height=\"150\" rx=\"16\"/></clipPath><clipPath id=\"collage-clip-3\"><rect x=\"162\" y=\"162\" width=\"150\" height=\"150\" rx=\"16\"/></clipPath></defs><rect width=\"312\" height=\"312\" fill=\"#f3f4f6\"/><image href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\" x=\"0\" y=\"0\" width=\"150\" height=\"150\" preserveAspectRatio=\"xMidYMid slice\" clip-path=\"url(#collage-clip-0)\"/><image href=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\" x=\"162\" y=\"0\" width=\"150\" height=\"150\" preserveAspectRatio=\"xMidYMid slice\" clip-path=\"url(#collage-clip-1)\"/><image href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYPj/HwADAgH/5ncLrgAAAABJRU5ErkJggg==\" x=\"0\" y=\"162\" width=\"150\" height=\"150\" preserveAspectRatio=\"xMidYMid slice\" clip-path=\"url(#collage-clip-2)\"/><image href=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAAA//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAD8AfwD/2Q==\" x=\"162\" y=\"162\" width=\"150\" height=\"150\" preserveAspectRatio=\"xMidYMid slice\" clip-path=\"url(#collage-clip-3)\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-mixer":{"post":{"operationId":"run_color_mixer","summary":"Color Mixer","tags":["Generators"],"description":"Mix two colors and get the blend plus every step between them in HEX, RGB and HSL. Choose sRGB, linear-RGB or perceptual OKLab mixing, set per-color opacity, and copy the matching CSS gradient.\n\n[Try Color Mixer in your browser →](https://iotools.cloud/tool/color-mixer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"startColor":{"type":"string","description":"Start Color"},"startOpacity":{"type":"number","description":"Start Opacity (%)","minimum":0,"maximum":100},"endColor":{"type":"string","description":"End Color"},"endOpacity":{"type":"number","description":"End Opacity (%)","minimum":0,"maximum":100},"steps":{"type":"number","description":"Steps in Between","minimum":1,"maximum":15},"colorSpace":{"enum":["srgb","linear","oklab"],"description":"Mixing Color Space"}},"required":[]},"examples":{"blue_to_amber_3_steps":{"summary":"Blue to amber, 3 steps","value":{"startColor":"#2563eb","startOpacity":"100","endColor":"#f59e0b","endOpacity":"100","steps":"3","colorSpace":"srgb"}},"blue_to_amber_in_oklab":{"summary":"Blue to amber in OKLab","value":{"startColor":"#2563eb","startOpacity":"100","endColor":"#f59e0b","endOpacity":"100","steps":"3","colorSpace":"oklab"}},"translucent_red_over_teal":{"summary":"Translucent red over teal","value":{"startColor":"#ef4444","startOpacity":"20","endColor":"#0d9488","endOpacity":"100","steps":"2","colorSpace":"linear"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"blue_to_amber_3_steps":{"summary":"Blue to amber, 3 steps","value":{"tool":"color-mixer","tool_version":"1.0.2","outputs":{"mixedColor":"#8D817B","mixTable":[{"position":"0%","hex":"#2563EB","rgb":"rgb(37, 99, 235)","hsl":"hsl(221, 83%, 53%)"},{"position":"25%","hex":"#5972B3","rgb":"rgb(89, 114, 179)","hsl":"hsl(223, 37%, 53%)"},{"position":"50%","hex":"#8D817B","rgb":"rgb(141, 129, 123)","hsl":"hsl(20, 7%, 52%)"},{"position":"75%","hex":"#C18F43","rgb":"rgb(193, 143, 67)","hsl":"hsl(36, 50%, 51%)"},{"position":"100%","hex":"#F59E0B","rgb":"rgb(245, 158, 11)","hsl":"hsl(38, 92%, 50%)"}],"gradientCss":"background: linear-gradient(90deg, #2563eb 0%, #5972b3 25%, #8d817b 50%, #c18f43 75%, #f59e0b 100%);"},"credits_used":5,"credits_remaining":null}},"blue_to_amber_in_oklab":{"summary":"Blue to amber in OKLab","value":{"tool":"color-mixer","tool_version":"1.0.2","outputs":{"mixedColor":"#938EA4","mixTable":[{"position":"0%","hex":"#2563EB","rgb":"rgb(37, 99, 235)","hsl":"hsl(221, 83%, 53%)"},{"position":"25%","hex":"#607DC9","rgb":"rgb(96, 125, 201)","hsl":"hsl(223, 49%, 58%)"},{"position":"50%","hex":"#938EA4","rgb":"rgb(147, 142, 164)","hsl":"hsl(254, 11%, 60%)"},{"position":"75%","hex":"#C49874","rgb":"rgb(196, 152, 116)","hsl":"hsl(27, 40%, 61%)"},{"position":"100%","hex":"#F59E0B","rgb":"rgb(245, 158, 11)","hsl":"hsl(38, 92%, 50%)"}],"gradientCss":"background: linear-gradient(90deg, #2563eb 0%, #607dc9 25%, #938ea4 50%, #c49874 75%, #f59e0b 100%);"},"credits_used":5,"credits_remaining":null}},"translucent_red_over_teal":{"summary":"Translucent red over teal","value":{"tool":"color-mixer","tool_version":"1.0.2","outputs":{"mixedColor":"#B0756D99","mixTable":[{"position":"0%","hex":"#EF444433","rgb":"rgba(239, 68, 68, 0.2)","hsl":"hsla(0, 84%, 60%, 0.2)"},{"position":"33%","hex":"#C8686177","rgb":"rgba(200, 104, 97, 0.47)","hsl":"hsla(4, 48%, 58%, 0.47)"},{"position":"67%","hex":"#938077BB","rgb":"rgba(147, 128, 119, 0.73)","hsl":"hsla(19, 11%, 52%, 0.73)"},{"position":"100%","hex":"#0D9488","rgb":"rgb(13, 148, 136)","hsl":"hsl(175, 84%, 32%)"}],"gradientCss":"background: linear-gradient(90deg, #ef444433 0%, #c8686177 33%, #938077bb 67%, #0d9488 100%);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mixedColor":{"type":"string","description":"50/50 Mix"},"mixTable":{"type":"array","description":"Blend Steps","items":{"type":"object","properties":{"position":{"type":"string","description":"Position"},"hex":{"type":"string","description":"Hex"},"rgb":{"type":"string","description":"RGB"},"hsl":{"type":"string","description":"HSL"}}},"x-iotools-columns":["position","hex","rgb","hsl"]},"gradientCss":{"type":"string","description":"CSS Gradient"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/identicon-generator":{"post":{"operationId":"run_identicon_generator","summary":"Identicon / Avatar Generator","tags":["Generators"],"description":"Generate a unique, deterministic avatar from any seed string — a username, email, or ID. The same seed always produces the same symmetric pixel-grid identicon, GitHub-style, as a scalable SVG.\n\n[Try Identicon / Avatar Generator in your browser →](https://iotools.cloud/tool/identicon-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"seed":{"type":"string","description":"Seed Text"},"gridSize":{"enum":["5","7","9"],"description":"Grid Size"},"cellStyle":{"enum":["square","rounded"],"description":"Cell Style"},"colorMode":{"enum":["auto","custom"],"description":"Foreground Color"},"foregroundColor":{"type":"string","description":"Custom Foreground Color"},"backgroundColor":{"type":"string","description":"Background Color"},"size":{"type":"number","description":"Output Size (px)","minimum":64,"maximum":512}},"required":[]},"examples":{"default_auto_colour_5_5_square":{"summary":"Default (auto colour, 5×5, square)","value":{"seed":"user@example.com","gridSize":"5","cellStyle":"square","colorMode":"auto","foregroundColor":"#464aff","backgroundColor":"#f0f0f0","size":"256"}},"custom_colour_7_7_rounded_cells":{"summary":"Custom colour, 7×7, rounded cells","value":{"seed":"jane.doe","gridSize":"7","cellStyle":"rounded","colorMode":"custom","foregroundColor":"#e2461f","backgroundColor":"#ffffff","size":"224"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_auto_colour_5_5_square":{"summary":"Default (auto colour, 5×5, square)","value":{"tool":"identicon-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"256\" viewBox=\"0 0 256 256\" shape-rendering=\"crispEdges\"><rect width=\"256\" height=\"256\" fill=\"#f0f0f0\" /><rect x=\"0\" y=\"0\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"51.2\" y=\"0\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"102.4\" y=\"0\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"153.6\" y=\"0\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"204.8\" y=\"0\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"0\" y=\"51.2\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"102.4\" y=\"51.2\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"204.8\" y=\"51.2\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"0\" y=\"102.4\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"102.4\" y=\"102.4\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"204.8\" y=\"102.4\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"102.4\" y=\"153.6\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"0\" y=\"204.8\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"51.2\" y=\"204.8\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"102.4\" y=\"204.8\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"153.6\" y=\"204.8\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /><rect x=\"204.8\" y=\"204.8\" width=\"51.2\" height=\"51.2\" fill=\"#5f7ad1\" /></svg>"},"credits_used":5,"credits_remaining":null}},"custom_colour_7_7_rounded_cells":{"summary":"Custom colour, 7×7, rounded cells","value":{"tool":"identicon-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"224\" viewBox=\"0 0 224 224\"><rect width=\"224\" height=\"224\" fill=\"#ffffff\" /><rect x=\"64\" y=\"0\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"96\" y=\"0\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"0\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"64\" y=\"32\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"96\" y=\"32\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"32\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"0\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"32\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"64\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"160\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"192\" y=\"64\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"64\" y=\"96\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"96\" y=\"96\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"96\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"0\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"32\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"64\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"160\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"192\" y=\"128\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"0\" y=\"160\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"64\" y=\"160\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"96\" y=\"160\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"128\" y=\"160\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /><rect x=\"192\" y=\"160\" width=\"32\" height=\"32\" rx=\"7.04\" fill=\"#e2461f\" /></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG Markup"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-swatch-sheet-generator":{"post":{"operationId":"run_color_swatch_sheet_generator","summary":"Color Swatch Sheet Generator","tags":["Generators"],"description":"Turn a list of hex colors (optionally named) into one combined, scalable SVG swatch sheet — a labelled grid you can copy or download as a single file. Runs entirely in your browser.\n\n[Try Color Swatch Sheet Generator in your browser →](https://iotools.cloud/tool/color-swatch-sheet-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colorList":{"type":"string","description":"Colors (one per line)"},"columns":{"type":"number","description":"Swatches per row","minimum":1,"maximum":10},"swatchSize":{"type":"number","description":"Swatch size (px)","minimum":60,"maximum":320},"cornerStyle":{"enum":["square","rounded","pill"],"description":"Corner style"},"showHex":{"type":"boolean","description":"Show hex value"},"showRgb":{"type":"boolean","description":"Show RGB value"},"showName":{"type":"boolean","description":"Show name (when given)"}},"required":[]},"examples":{"named_unnamed_hex_colors":{"summary":"Named + unnamed hex colors","value":{"colorList":"Ocean: #3B82F6\n#F97316\nForest: #16A34A","columns":"4","swatchSize":"140","cornerStyle":"rounded","showHex":"true","showRgb":"","showName":"true"}},"3_digit_hex_square_corners_rgb_shown":{"summary":"3-digit hex, square corners, RGB shown","value":{"colorList":"#3bf\n#f00","columns":"2","swatchSize":"100","cornerStyle":"square","showHex":"true","showRgb":"true","showName":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"named_unnamed_hex_colors":{"summary":"Named + unnamed hex colors","value":{"tool":"color-swatch-sheet-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"492\" height=\"180\" viewBox=\"0 0 492 180\"><rect width=\"492\" height=\"180\" fill=\"#ffffff\"/><rect x=\"20\" y=\"20\" width=\"140\" height=\"140\" rx=\"12\" ry=\"12\" fill=\"rgb(59, 130, 246)\"/><text x=\"90\" y=\"80.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"15\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">Ocean</text><text x=\"90\" y=\"99.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"15\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">#3B82F6</text><rect x=\"176\" y=\"20\" width=\"140\" height=\"140\" rx=\"12\" ry=\"12\" fill=\"rgb(249, 115, 22)\"/><text x=\"246\" y=\"90\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"15\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">#F97316</text><rect x=\"332\" y=\"20\" width=\"140\" height=\"140\" rx=\"12\" ry=\"12\" fill=\"rgb(22, 163, 74)\"/><text x=\"402\" y=\"80.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"15\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">Forest</text><text x=\"402\" y=\"99.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"15\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">#16A34A</text></svg>","table":[{"name":"Ocean","hex":"#3B82F6","rgb":"rgb(59, 130, 246)","text-color":"#000000"},{"name":"","hex":"#F97316","rgb":"rgb(249, 115, 22)","text-color":"#000000"},{"name":"Forest","hex":"#16A34A","rgb":"rgb(22, 163, 74)","text-color":"#000000"}]},"credits_used":5,"credits_remaining":null}},"3_digit_hex_square_corners_rgb_shown":{"summary":"3-digit hex, square corners, RGB shown","value":{"tool":"color-swatch-sheet-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"256\" height=\"140\" viewBox=\"0 0 256 140\"><rect width=\"256\" height=\"140\" fill=\"#ffffff\"/><rect x=\"20\" y=\"20\" width=\"100\" height=\"100\" rx=\"0\" ry=\"0\" fill=\"rgb(51, 187, 255)\"/><text x=\"70\" y=\"62.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"11\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">#33BBFF</text><text x=\"70\" y=\"77.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"11\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">rgb(51, 187, 255)</text><rect x=\"136\" y=\"20\" width=\"100\" height=\"100\" rx=\"0\" ry=\"0\" fill=\"rgb(255, 0, 0)\"/><text x=\"186\" y=\"62.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"11\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">#FF0000</text><text x=\"186\" y=\"77.5\" font-family=\"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace\" font-size=\"11\" fill=\"#000000\" text-anchor=\"middle\" dominant-baseline=\"middle\">rgb(255, 0, 0)</text></svg>","table":[{"name":"","hex":"#33BBFF","rgb":"rgb(51, 187, 255)","text-color":"#000000"},{"name":"","hex":"#FF0000","rgb":"rgb(255, 0, 0)","text-color":"#000000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"},"table":{"type":"array","description":"Parsed colors","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"hex":{"type":"string","description":"Hex"},"rgb":{"type":"string","description":"RGB"},"text-color":{"type":"string","description":"Text color"}}},"x-iotools-columns":["name","hex","rgb","text-color"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-scheme-generator":{"post":{"operationId":"run_color_scheme_generator","summary":"Color Scheme Generator","tags":["Generators"],"description":"Generate a harmonious color palette from a base color — complementary, analogous, triadic, tetradic, split-complementary, or monochromatic — using HSL hue rotation. Get hex and HSL values for every color.\n\n[Try Color Scheme Generator in your browser →](https://iotools.cloud/tool/color-scheme-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseColor":{"type":"string","description":"Base Color"},"schemeType":{"enum":["complementary","analogous","triadic","split-complementary","tetradic","monochromatic"],"description":"Scheme Type"}},"required":[]},"examples":{"complementary_scheme_from_red":{"summary":"Complementary scheme from red","value":{"baseColor":"#FF0000","schemeType":"complementary"}},"triadic_scheme_with_hue_wraparound":{"summary":"Triadic scheme with hue wraparound","value":{"baseColor":"#FF8000","schemeType":"triadic"}},"monochromatic_scheme":{"summary":"Monochromatic scheme","value":{"baseColor":"#464AFF","schemeType":"monochromatic"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"complementary_scheme_from_red":{"summary":"Complementary scheme from red","value":{"tool":"color-scheme-generator","tool_version":"1.0.2","outputs":{"colorTable":[{"color":"Base","hex":"#FF0000","hsl":"hsl(0, 100%, 50%)"},{"color":"Complementary","hex":"#00FFFF","hsl":"hsl(180, 100%, 50%)"}]},"credits_used":5,"credits_remaining":null}},"triadic_scheme_with_hue_wraparound":{"summary":"Triadic scheme with hue wraparound","value":{"tool":"color-scheme-generator","tool_version":"1.0.2","outputs":{"colorTable":[{"color":"Base","hex":"#FF8000","hsl":"hsl(30, 100%, 50%)"},{"color":"Triadic +120°","hex":"#00FF80","hsl":"hsl(150, 100%, 50%)"},{"color":"Triadic +240°","hex":"#7F00FF","hsl":"hsl(270, 100%, 50%)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"colorTable":{"type":"array","description":"Color Palette","items":{"type":"object","properties":{"color":{"type":"string","description":"Color"},"hex":{"type":"string","description":"Hex"},"hsl":{"type":"string","description":"HSL"}}},"x-iotools-columns":["color","hex","hsl"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-tint-shade-generator":{"post":{"operationId":"run_color_tint_shade_generator","summary":"Color Tint & Shade Generator","tags":["Generators"],"description":"Generate a strip of tints (mixed toward white) and shades (mixed toward black) of a base color, with exact hex values for design systems and UI states.\n\n[Try Color Tint & Shade Generator in your browser →](https://iotools.cloud/tool/color-tint-shade-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseColor":{"type":"string","description":"Base Color"},"steps":{"type":"number","description":"Steps","minimum":3,"maximum":9}},"required":[]},"examples":{"mid_gray_5_steps":{"summary":"Mid-gray, 5 steps","value":{"baseColor":"#808080","steps":"5"}},"brand_accent_3_steps":{"summary":"Brand accent, 3 steps","value":{"baseColor":"#464AFF","steps":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mid_gray_5_steps":{"summary":"Mid-gray, 5 steps","value":{"tool":"color-tint-shade-generator","tool_version":"1.0.2","outputs":{"tintShadeTable":[{"percentage":"17%","tint-hex":"#969696","shade-hex":"#6A6A6A"},{"percentage":"33%","tint-hex":"#AAAAAA","shade-hex":"#565656"},{"percentage":"50%","tint-hex":"#C0C0C0","shade-hex":"#404040"},{"percentage":"67%","tint-hex":"#D5D5D5","shade-hex":"#2A2A2A"},{"percentage":"83%","tint-hex":"#E9E9E9","shade-hex":"#161616"}]},"credits_used":5,"credits_remaining":null}},"brand_accent_3_steps":{"summary":"Brand accent, 3 steps","value":{"tool":"color-tint-shade-generator","tool_version":"1.0.2","outputs":{"tintShadeTable":[{"percentage":"25%","tint-hex":"#7477FF","shade-hex":"#3538BF"},{"percentage":"50%","tint-hex":"#A3A5FF","shade-hex":"#232580"},{"percentage":"75%","tint-hex":"#D1D2FF","shade-hex":"#121340"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tintShadeTable":{"type":"array","description":"Tints & Shades","items":{"type":"object","properties":{"percentage":{"type":"string","description":"Percentage"},"tint-hex":{"type":"string","description":"Tint Hex"},"shade-hex":{"type":"string","description":"Shade Hex"}}},"x-iotools-columns":["percentage","tint-hex","shade-hex"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cookie-builder":{"post":{"operationId":"run_cookie_builder","summary":"Cookie Builder","tags":["Generators"],"description":"Build a Set-Cookie HTTP header string from a cookie name, value, domain, path, max-age, and security flags (Secure, HttpOnly, SameSite) per RFC 6265.\n\n[Try Cookie Builder in your browser →](https://iotools.cloud/tool/cookie-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Cookie Name"},"value":{"type":"string","description":"Cookie Value"},"domain":{"type":"string","description":"Domain"},"path":{"type":"string","description":"Path"},"maxAge":{"type":"number","description":"Max-Age (seconds)","minimum":0},"secure":{"type":"boolean","description":"Secure (HTTPS only)"},"httpOnly":{"type":"boolean","description":"HttpOnly (blocks JavaScript access)"},"sameSite":{"enum":["","Strict","Lax","None"],"description":"SameSite"}},"required":["name","value"]},"examples":{"secure_session_cookie":{"summary":"Secure session cookie","value":{"name":"session_id","value":"abc123","domain":"example.com","path":"/","maxAge":"3600","secure":"true","httpOnly":"true","sameSite":"Lax"}},"minimal_session_cookie":{"summary":"Minimal session cookie","value":{"name":"cart_id","value":"9f2c8a","domain":"","path":"","maxAge":"","secure":"","httpOnly":"","sameSite":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"secure_session_cookie":{"summary":"Secure session cookie","value":{"tool":"cookie-builder","tool_version":"1.0.2","outputs":{"cookieHeader":"session_id=abc123; Domain=example.com; Path=/; Max-Age=3600; Secure; HttpOnly; SameSite=Lax"},"credits_used":5,"credits_remaining":null}},"minimal_session_cookie":{"summary":"Minimal session cookie","value":{"tool":"cookie-builder","tool_version":"1.0.2","outputs":{"cookieHeader":"cart_id=9f2c8a"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cookieHeader":{"type":"string","description":"Set-Cookie Header"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cors-headers-builder":{"post":{"operationId":"run_cors_headers_builder","summary":"CORS Headers Builder","tags":["Generators"],"description":"Build the standard CORS response headers — Access-Control-Allow-Origin, -Methods, -Headers, -Credentials, -Max-Age and -Expose-Headers — from structured fields, ready to paste into a server response.\n\n[Try CORS Headers Builder in your browser →](https://iotools.cloud/tool/cors-headers-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"origin":{"type":"string","description":"Allowed Origin"},"methods":{"type":"string","description":"Allowed Methods"},"headers":{"type":"string","description":"Allowed Headers"},"allowCredentials":{"type":"boolean","description":"Allow Credentials (cookies, authorization headers)"},"maxAge":{"type":"number","description":"Max-Age (seconds)","minimum":0},"exposeHeaders":{"type":"string","description":"Expose Headers"}},"required":[]},"examples":{"specific_origin_with_credentials":{"summary":"Specific origin with credentials","value":{"origin":"https://example.com","methods":"GET, POST","headers":"Content-Type, Authorization","allowCredentials":"true","maxAge":"86400","exposeHeaders":""}},"public_wildcard_api":{"summary":"Public wildcard API","value":{"origin":"*","methods":"GET","headers":"","allowCredentials":"","maxAge":"","exposeHeaders":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"specific_origin_with_credentials":{"summary":"Specific origin with credentials","value":{"tool":"cors-headers-builder","tool_version":"1.0.2","outputs":{"headersOutput":"Access-Control-Allow-Origin: https://example.com\nAccess-Control-Allow-Methods: GET, POST\nAccess-Control-Allow-Headers: Content-Type, Authorization\nAccess-Control-Allow-Credentials: true\nAccess-Control-Max-Age: 86400"},"credits_used":5,"credits_remaining":null}},"public_wildcard_api":{"summary":"Public wildcard API","value":{"tool":"cors-headers-builder","tool_version":"1.0.2","outputs":{"headersOutput":"Access-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"headersOutput":{"type":"string","description":"Generated CORS Headers"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crc-checksum-calculator":{"post":{"operationId":"run_crc_checksum_calculator","summary":"CRC Checksum Calculator","tags":["Generators"],"description":"Calculate the CRC-32 or CRC-16/CCITT-FALSE checksum of any text — the same error-detection checksum used by ZIP, PNG, and Ethernet frames.\n\n[Try CRC Checksum Calculator in your browser →](https://iotools.cloud/tool/crc-checksum-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"algorithm":{"enum":["crc32","crc16"],"description":"CRC Algorithm"}},"required":[]},"examples":{"crc_32_check_value":{"summary":"CRC-32 check value","value":{"inputText":"123456789","algorithm":"crc32"}},"crc_16_ccitt_false_check_value":{"summary":"CRC-16/CCITT-FALSE check value","value":{"inputText":"123456789","algorithm":"crc16"}},"empty_input":{"summary":"Empty input","value":{"inputText":"","algorithm":"crc32"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"crc_32_check_value":{"summary":"CRC-32 check value","value":{"tool":"crc-checksum-calculator","tool_version":"1.0.2","outputs":{"checksum":"0xCBF43926"},"credits_used":5,"credits_remaining":null}},"crc_16_ccitt_false_check_value":{"summary":"CRC-16/CCITT-FALSE check value","value":{"tool":"crc-checksum-calculator","tool_version":"1.0.2","outputs":{"checksum":"0x29B1"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"crc-checksum-calculator","tool_version":"1.0.2","outputs":{"checksum":"0x00000000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"checksum":{"type":"string","description":"Checksum (HEX)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/credit-cards-generator":{"post":{"operationId":"run_credit_cards_generator","summary":"Credit Cards Generator","tags":["Generators"],"description":"Generate fake, Luhn-valid credit card numbers (with a made-up expiry and CVV) for testing payment forms and checkout flows — Visa, Mastercard, American Express and Discover. Not real payment credentials.\n\n[Try Credit Cards Generator in your browser →](https://iotools.cloud/tool/credit-cards-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cardNetwork":{"enum":["visa","mastercard","amex","discover"],"description":"Card Network"},"count":{"type":"number","description":"How many to generate","minimum":1,"maximum":20}},"required":[]},"examples":{"5_visa_test_cards":{"summary":"5 Visa test cards","value":{"cardNetwork":"visa","count":"5"}},"3_mastercard_test_cards":{"summary":"3 Mastercard test cards","value":{"cardNetwork":"mastercard","count":"3"}},"1_american_express_test_card":{"summary":"1 American Express test card","value":{"cardNetwork":"amex","count":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cards":{"type":"string","description":"Generated Test Cards"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cron-expression-generator":{"post":{"operationId":"run_cron_expression_generator","summary":"Cron Expression Generator","tags":["Generators"],"description":"Build a valid 5-field cron expression by pasting one directly, or switch to simple schedule presets — every N minutes, daily, weekly, or monthly — without needing to know cron syntax. A plain-English description shows exactly what the expression runs.\n\n[Try Cron Expression Generator in your browser →](https://iotools.cloud/tool/cron-expression-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"scheduleType":{"enum":["every-minutes","daily","weekly","monthly","custom"],"description":"Schedule Type"},"minuteInterval":{"type":"number","description":"Every N Minutes","minimum":1,"maximum":59},"hour":{"type":"number","description":"Hour (0–23)","minimum":0,"maximum":23},"minute":{"type":"number","description":"Minute (0–59)","minimum":0,"maximum":59},"dayOfWeek":{"enum":["0","1","2","3","4","5","6"],"description":"Day of Week"},"dayOfMonth":{"type":"number","description":"Day of Month (1–31)","minimum":1,"maximum":31},"rawCronExpression":{"type":"string","description":"Full Cron Expression"}},"required":[]},"examples":{"custom_advanced_every_2_hours_on_weekdays":{"summary":"Custom (advanced): every 2 hours on weekdays","value":{"scheduleType":"custom","rawCronExpression":"0 */2 * * 1-5"}},"every_15_minutes":{"summary":"Every 15 minutes","value":{"scheduleType":"every-minutes","minuteInterval":"15"}},"daily_at_09_30":{"summary":"Daily at 09:30","value":{"scheduleType":"daily","hour":"9","minute":"30"}},"weekly_on_monday_at_08_00":{"summary":"Weekly on Monday at 08:00","value":{"scheduleType":"weekly","hour":"8","minute":"0","dayOfWeek":"1"}},"monthly_on_day_1_at_midnight":{"summary":"Monthly on day 1 at midnight","value":{"scheduleType":"monthly","hour":"0","minute":"0","dayOfMonth":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"custom_advanced_every_2_hours_on_weekdays":{"summary":"Custom (advanced): every 2 hours on weekdays","value":{"tool":"cron-expression-generator","tool_version":"1.0.2","outputs":{"cronExpression":"0 */2 * * 1-5","cronDescription":"Runs at minute 0 past every 2 hours, on day-of-week \"1-5\"."},"credits_used":5,"credits_remaining":null}},"every_15_minutes":{"summary":"Every 15 minutes","value":{"tool":"cron-expression-generator","tool_version":"1.0.2","outputs":{"cronExpression":"*/15 * * * *","cronDescription":"Runs every 15 minutes, every day."},"credits_used":5,"credits_remaining":null}},"daily_at_09_30":{"summary":"Daily at 09:30","value":{"tool":"cron-expression-generator","tool_version":"1.0.2","outputs":{"cronExpression":"30 9 * * *","cronDescription":"Runs at 09:30, every day."},"credits_used":5,"credits_remaining":null}},"weekly_on_monday_at_08_00":{"summary":"Weekly on Monday at 08:00","value":{"tool":"cron-expression-generator","tool_version":"1.0.2","outputs":{"cronExpression":"0 8 * * 1","cronDescription":"Runs at 08:00, on Monday."},"credits_used":5,"credits_remaining":null}},"monthly_on_day_1_at_midnight":{"summary":"Monthly on day 1 at midnight","value":{"tool":"cron-expression-generator","tool_version":"1.0.2","outputs":{"cronExpression":"0 0 1 * *","cronDescription":"Runs at 00:00, on day 1 of the month."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cronExpression":{"type":"string","description":"Cron Expression"},"cronDescription":{"type":"string","description":"What This Means"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crc32-checksum-generator":{"post":{"operationId":"run_crc32_checksum_generator","summary":"CRC32 Checksum Generator","tags":["Generators"],"description":"Compute the CRC-32 (IEEE 802.3) checksum of any text or uploaded file — the same algorithm used by zip, gzip and PNG — as an 8-digit uppercase hex value.\n\n[Try CRC32 Checksum Generator in your browser →](https://iotools.cloud/tool/crc32-checksum-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to checksum"}},"required":[]},"examples":{"known_test_vector_123456789":{"summary":"Known test vector — \"123456789\"","value":{"inputText":"123456789"}},"empty_string":{"summary":"Empty string","value":{"inputText":""}},"sample_greeting":{"summary":"Sample greeting","value":{"inputText":"Hello, World!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"known_test_vector_123456789":{"summary":"Known test vector — \"123456789\"","value":{"tool":"crc32-checksum-generator","tool_version":"1.0.2","outputs":{"checksum":"CBF43926"},"credits_used":5,"credits_remaining":null}},"empty_string":{"summary":"Empty string","value":{"tool":"crc32-checksum-generator","tool_version":"1.0.2","outputs":{"checksum":"00000000"},"credits_used":5,"credits_remaining":null}},"sample_greeting":{"summary":"Sample greeting","value":{"tool":"crc32-checksum-generator","tool_version":"1.0.2","outputs":{"checksum":"EC4AC3D0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"checksum":{"type":"string","description":"CRC32 checksum"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csr-generator":{"post":{"operationId":"run_csr_generator","summary":"CSR (Certificate Signing Request) Generator","tags":["Generators"],"description":"Generate an RSA private key (PEM) and a signed PKCS#10 Certificate Signing Request (CSR) to submit to a Certificate Authority. Set the subject (CN, O, OU, L, ST, C, email) and Subject Alternative Names (DNS/IP/email/URI); choose RSA 2048/3072/4096 and a SHA-2 signature hash. Generated entirely in your browser — the private key never leaves the page.\n\n[Try CSR (Certificate Signing Request) Generator in your browser →](https://iotools.cloud/tool/csr-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commonName":{"type":"string","description":"Common Name (CN)"},"organization":{"type":"string","description":"Organization (O)"},"organizationalUnit":{"type":"string","description":"Organizational Unit (OU)"},"locality":{"type":"string","description":"City / Locality (L)"},"state":{"type":"string","description":"State / Province (ST)"},"country":{"type":"string","description":"Country (C)"},"email":{"type":"string","description":"Email Address"},"sans":{"type":"string","description":"Subject Alternative Names (SANs)"},"keyBits":{"enum":["2048","3072","4096"],"description":"RSA Key Size"},"signatureHash":{"enum":["sha256","sha384","sha512"],"description":"Signature Hash"}},"required":["commonName"]},"examples":{"minimal_common_name_only":{"summary":"Minimal — Common Name only","value":{"commonName":"example.com","keyBits":"2048","signatureHash":"sha256"}},"full_subject_sans_4096_bit_key":{"summary":"Full subject + SANs, 4096-bit key","value":{"commonName":"example.com","organization":"Example Inc.","organizationalUnit":"IT Department","locality":"San Francisco","state":"California","country":"US","email":"admin@example.com","sans":"www.example.com\napi.example.com\nexample.org","keyBits":"4096","signatureHash":"sha384"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"privateKey":{"type":"string","description":"Private Key (PEM)"},"csr":{"type":"string","description":"Certificate Signing Request (PEM)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csp-generator":{"post":{"operationId":"run_csp_generator","summary":"CSP Generator","tags":["Generators"],"description":"Build a Content-Security-Policy header value from structured directive fields (default-src, script-src, style-src, img-src and more) plus a ready-to-paste HTML meta tag.\n\n[Try CSP Generator in your browser →](https://iotools.cloud/tool/csp-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"defaultSrc":{"type":"string","description":"default-src"},"scriptSrc":{"type":"string","description":"script-src"},"styleSrc":{"type":"string","description":"style-src"},"imgSrc":{"type":"string","description":"img-src"},"fontSrc":{"type":"string","description":"font-src"},"connectSrc":{"type":"string","description":"connect-src"},"frameSrc":{"type":"string","description":"frame-src"},"objectSrc":{"type":"string","description":"object-src"},"mediaSrc":{"type":"string","description":"media-src"},"frameAncestors":{"type":"string","description":"frame-ancestors"},"baseUri":{"type":"string","description":"base-uri"},"formAction":{"type":"string","description":"form-action"},"upgradeInsecure":{"type":"boolean","description":"upgrade-insecure-requests"}},"required":[]},"examples":{"basic_policy":{"summary":"Basic policy","value":{"defaultSrc":"'self'","scriptSrc":"'self' https://cdn.example.com","styleSrc":"","imgSrc":"'self' data:","fontSrc":"","connectSrc":"","frameSrc":"","objectSrc":"","mediaSrc":"","frameAncestors":"","baseUri":"","formAction":"","upgradeInsecure":""}},"strict_policy":{"summary":"Strict policy","value":{"defaultSrc":"'none'","scriptSrc":"'self'","styleSrc":"'self'","imgSrc":"'self'","fontSrc":"'self'","connectSrc":"'self'","frameSrc":"'none'","objectSrc":"'none'","mediaSrc":"","frameAncestors":"'none'","baseUri":"'self'","formAction":"'self'","upgradeInsecure":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_policy":{"summary":"Basic policy","value":{"tool":"csp-generator","tool_version":"1.0.2","outputs":{"cspHeader":"default-src 'self'; script-src 'self' https://cdn.example.com; img-src 'self' data:","metaTag":"<meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'self'; script-src 'self' https://cdn.example.com; img-src 'self' data:\">"},"credits_used":5,"credits_remaining":null}},"strict_policy":{"summary":"Strict policy","value":{"tool":"csp-generator","tool_version":"1.0.2","outputs":{"cspHeader":"default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests","metaTag":"<meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; frame-src 'none'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cspHeader":{"type":"string","description":"Generated CSP Header Value"},"metaTag":{"type":"string","description":"Meta Tag"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-border-style-generator":{"post":{"operationId":"run_css_border_style_generator","summary":"CSS Border Style Generator","tags":["Generators"],"description":"Generate decorative CSS border edges — zigzag, wavy, or scalloped — that plain border-radius can't produce, with independent style, size and depth per side (top/right/bottom/left) via mask-image and repeating gradients.\n\n[Try CSS Border Style Generator in your browser →](https://iotools.cloud/tool/css-border-style-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bgColor":{"type":"string","description":"Box background"},"edgeColor":{"type":"string","description":"Edge color"},"topEnabled":{"type":"boolean","description":"Enable top edge"},"topStyle":{"enum":["zigzag","wavy","scallop"],"description":"Style"},"topSize":{"type":"number","description":"Size (period)","minimum":8,"maximum":120},"topAmplitude":{"type":"number","description":"Amplitude (depth)","minimum":2,"maximum":60},"rightEnabled":{"type":"boolean","description":"Enable right edge"},"rightStyle":{"enum":["zigzag","wavy","scallop"],"description":"Style"},"rightSize":{"type":"number","description":"Size (period)","minimum":8,"maximum":120},"rightAmplitude":{"type":"number","description":"Amplitude (depth)","minimum":2,"maximum":60},"bottomEnabled":{"type":"boolean","description":"Enable bottom edge"},"bottomStyle":{"enum":["zigzag","wavy","scallop"],"description":"Style"},"bottomSize":{"type":"number","description":"Size (period)","minimum":8,"maximum":120},"bottomAmplitude":{"type":"number","description":"Amplitude (depth)","minimum":2,"maximum":60},"leftEnabled":{"type":"boolean","description":"Enable left edge"},"leftStyle":{"enum":["zigzag","wavy","scallop"],"description":"Style"},"leftSize":{"type":"number","description":"Size (period)","minimum":8,"maximum":120},"leftAmplitude":{"type":"number","description":"Amplitude (depth)","minimum":2,"maximum":60},"className":{"type":"string","description":"Class name"}},"required":[]},"examples":{"default_zigzag_top_bottom":{"summary":"Default (zigzag top & bottom)","value":{"bgColor":"#ffffff","edgeColor":"#6366f1","topEnabled":"true","topStyle":"zigzag","topSize":"24","topAmplitude":"12","rightEnabled":"","rightStyle":"wavy","rightSize":"24","rightAmplitude":"12","bottomEnabled":"true","bottomStyle":"zigzag","bottomSize":"24","bottomAmplitude":"12","leftEnabled":"","leftStyle":"wavy","leftSize":"24","leftAmplitude":"12","className":"io-border-box"}},"scalloped_bottom_only":{"summary":"Scalloped bottom only","value":{"bgColor":"#fef3c7","edgeColor":"#d97706","topEnabled":"","topStyle":"zigzag","topSize":"24","topAmplitude":"12","rightEnabled":"","rightStyle":"wavy","rightSize":"24","rightAmplitude":"12","bottomEnabled":"true","bottomStyle":"scallop","bottomSize":"30","bottomAmplitude":"15","leftEnabled":"","leftStyle":"wavy","leftSize":"24","leftAmplitude":"12","className":"ticket"}},"wavy_on_all_four_sides":{"summary":"Wavy on all four sides","value":{"bgColor":"#f0fdfa","edgeColor":"#0d9488","topEnabled":"true","topStyle":"wavy","topSize":"20","topAmplitude":"8","rightEnabled":"true","rightStyle":"wavy","rightSize":"20","rightAmplitude":"8","bottomEnabled":"true","bottomStyle":"wavy","bottomSize":"20","bottomAmplitude":"8","leftEnabled":"true","leftStyle":"wavy","leftSize":"20","leftAmplitude":"8","className":"wavy-card"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_zigzag_top_bottom":{"summary":"Default (zigzag top & bottom)","value":{"tool":"css-border-style-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-border-box {\n  position: relative;\n  overflow: hidden;\n  background: #ffffff;\n}\n\n.io-border-box__top {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 12px;\n  background: #6366f1;\n  -webkit-mask-image: linear-gradient(to bottom right, #000 50%, transparent 50%), linear-gradient(to bottom left, #000 50%, transparent 50%);\n  mask-image: linear-gradient(to bottom right, #000 50%, transparent 50%), linear-gradient(to bottom left, #000 50%, transparent 50%);\n  -webkit-mask-size: 12px 12px, 12px 12px;\n  mask-size: 12px 12px, 12px 12px;\n  -webkit-mask-repeat: repeat-x;\n  mask-repeat: repeat-x;\n  -webkit-mask-position: 0px 0px, 12px 0px;\n  mask-position: 0px 0px, 12px 0px;\n}\n\n.io-border-box__bottom {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  height: 12px;\n  background: #6366f1;\n  -webkit-mask-image: linear-gradient(to top right, #000 50%, transparent 50%), linear-gradient(to top left, #000 50%, transparent 50%);\n  mask-image: linear-gradient(to top right, #000 50%, transparent 50%), linear-gradient(to top left, #000 50%, transparent 50%);\n  -webkit-mask-size: 12px 12px, 12px 12px;\n  mask-size: 12px 12px, 12px 12px;\n  -webkit-mask-repeat: repeat-x;\n  mask-repeat: repeat-x;\n  -webkit-mask-position: 0px 0px, 12px 0px;\n  mask-position: 0px 0px, 12px 0px;\n}","htmlCode":"<div class=\"io-border-box\">\n  <div class=\"io-border-box__top\"></div>\n  <div class=\"io-border-box__bottom\"></div>\n</div>","previewHtml":"<div style=\"position:relative;overflow:hidden;width:260px;height:180px;background:#ffffff;\"><div style=\"position:absolute;top:0;right:0;left:0;height:12px;background:#6366f1;-webkit-mask-image:linear-gradient(to bottom right, #000 50%, transparent 50%), linear-gradient(to bottom left, #000 50%, transparent 50%);mask-image:linear-gradient(to bottom right, #000 50%, transparent 50%), linear-gradient(to bottom left, #000 50%, transparent 50%);-webkit-mask-size:12px 12px, 12px 12px;mask-size:12px 12px, 12px 12px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-position:0px 0px, 12px 0px;mask-position:0px 0px, 12px 0px;\"></div><div style=\"position:absolute;right:0;bottom:0;left:0;height:12px;background:#6366f1;-webkit-mask-image:linear-gradient(to top right, #000 50%, transparent 50%), linear-gradient(to top left, #000 50%, transparent 50%);mask-image:linear-gradient(to top right, #000 50%, transparent 50%), linear-gradient(to top left, #000 50%, transparent 50%);-webkit-mask-size:12px 12px, 12px 12px;mask-size:12px 12px, 12px 12px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-position:0px 0px, 12px 0px;mask-position:0px 0px, 12px 0px;\"></div></div>"},"credits_used":5,"credits_remaining":null}},"scalloped_bottom_only":{"summary":"Scalloped bottom only","value":{"tool":"css-border-style-generator","tool_version":"1.0.2","outputs":{"cssCode":".ticket {\n  position: relative;\n  overflow: hidden;\n  background: #fef3c7;\n}\n\n.ticket__bottom {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  height: 15px;\n  background: #d97706;\n  -webkit-mask-image: radial-gradient(circle at 50% 0%, #000 15px, transparent calc(15px + 1px));\n  mask-image: radial-gradient(circle at 50% 0%, #000 15px, transparent calc(15px + 1px));\n  -webkit-mask-size: 30px 15px;\n  mask-size: 30px 15px;\n  -webkit-mask-repeat: repeat-x;\n  mask-repeat: repeat-x;\n  -webkit-mask-position: 0px 0px;\n  mask-position: 0px 0px;\n}","htmlCode":"<div class=\"ticket\">\n  <div class=\"ticket__bottom\"></div>\n</div>","previewHtml":"<div style=\"position:relative;overflow:hidden;width:260px;height:180px;background:#fef3c7;\"><div style=\"position:absolute;right:0;bottom:0;left:0;height:15px;background:#d97706;-webkit-mask-image:radial-gradient(circle at 50% 0%, #000 15px, transparent calc(15px + 1px));mask-image:radial-gradient(circle at 50% 0%, #000 15px, transparent calc(15px + 1px));-webkit-mask-size:30px 15px;mask-size:30px 15px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-position:0px 0px;mask-position:0px 0px;\"></div></div>"},"credits_used":5,"credits_remaining":null}},"wavy_on_all_four_sides":{"summary":"Wavy on all four sides","value":{"tool":"css-border-style-generator","tool_version":"1.0.2","outputs":{"cssCode":".wavy-card {\n  position: relative;\n  overflow: hidden;\n  background: #f0fdfa;\n}\n\n.wavy-card__top {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 8px;\n  background: #0d9488;\n  -webkit-mask-image: radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));\n  mask-image: radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));\n  -webkit-mask-size: 10px 8px, 10px 8px;\n  mask-size: 10px 8px, 10px 8px;\n  -webkit-mask-repeat: repeat-x;\n  mask-repeat: repeat-x;\n  -webkit-mask-position: 0px 0px, 10px 0px;\n  mask-position: 0px 0px, 10px 0px;\n}\n\n.wavy-card__right {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  width: 8px;\n  background: #0d9488;\n  -webkit-mask-image: radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px));\n  mask-image: radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px));\n  -webkit-mask-size: 8px 10px, 8px 10px;\n  mask-size: 8px 10px, 8px 10px;\n  -webkit-mask-repeat: repeat-y;\n  mask-repeat: repeat-y;\n  -webkit-mask-position: 0px 0px, 0px 10px;\n  mask-position: 0px 0px, 0px 10px;\n}\n\n.wavy-card__bottom {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  height: 8px;\n  background: #0d9488;\n  -webkit-mask-image: radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px));\n  mask-image: radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px));\n  -webkit-mask-size: 10px 8px, 10px 8px;\n  mask-size: 10px 8px, 10px 8px;\n  -webkit-mask-repeat: repeat-x;\n  mask-repeat: repeat-x;\n  -webkit-mask-position: 0px 0px, 10px 0px;\n  mask-position: 0px 0px, 10px 0px;\n}\n\n.wavy-card__left {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 8px;\n  background: #0d9488;\n  -webkit-mask-image: radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));\n  mask-image: radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));\n  -webkit-mask-size: 8px 10px, 8px 10px;\n  mask-size: 8px 10px, 8px 10px;\n  -webkit-mask-repeat: repeat-y;\n  mask-repeat: repeat-y;\n  -webkit-mask-position: 0px 0px, 0px 10px;\n  mask-position: 0px 0px, 0px 10px;\n}","htmlCode":"<div class=\"wavy-card\">\n  <div class=\"wavy-card__top\"></div>\n  <div class=\"wavy-card__right\"></div>\n  <div class=\"wavy-card__bottom\"></div>\n  <div class=\"wavy-card__left\"></div>\n</div>","previewHtml":"<div style=\"position:relative;overflow:hidden;width:260px;height:180px;background:#f0fdfa;\"><div style=\"position:absolute;top:0;right:0;left:0;height:8px;background:#0d9488;-webkit-mask-image:radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));mask-image:radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));-webkit-mask-size:10px 8px, 10px 8px;mask-size:10px 8px, 10px 8px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-position:0px 0px, 10px 0px;mask-position:0px 0px, 10px 0px;\"></div><div style=\"position:absolute;top:0;right:0;bottom:0;width:8px;background:#0d9488;-webkit-mask-image:radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px));mask-image:radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 100% 0%, transparent 8px, #000 calc(8px + 1px));-webkit-mask-size:8px 10px, 8px 10px;mask-size:8px 10px, 8px 10px;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-position:0px 0px, 0px 10px;mask-position:0px 0px, 0px 10px;\"></div><div style=\"position:absolute;right:0;bottom:0;left:0;height:8px;background:#0d9488;-webkit-mask-image:radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px));mask-image:radial-gradient(circle at 100% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px));-webkit-mask-size:10px 8px, 10px 8px;mask-size:10px 8px, 10px 8px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-position:0px 0px, 10px 0px;mask-position:0px 0px, 10px 0px;\"></div><div style=\"position:absolute;top:0;bottom:0;left:0;width:8px;background:#0d9488;-webkit-mask-image:radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));mask-image:radial-gradient(circle at 0% 100%, transparent 8px, #000 calc(8px + 1px)), radial-gradient(circle at 0% 0%, transparent 8px, #000 calc(8px + 1px));-webkit-mask-size:8px 10px, 8px 10px;mask-size:8px 10px, 8px 10px;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-position:0px 0px, 0px 10px;mask-position:0px 0px, 0px 10px;\"></div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML snippet"},"previewHtml":{"type":"string","description":"Preview markup (inline styles)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-box-shadow-generator":{"post":{"operationId":"run_css_box_shadow_generator","summary":"CSS Box Shadow Generator","tags":["Generators"],"description":"Generate a CSS box-shadow declaration from offset, blur, spread, color and opacity values, with optional inset — copy the ready-made rgba() shadow into your stylesheet.\n\n[Try CSS Box Shadow Generator in your browser →](https://iotools.cloud/tool/css-box-shadow-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"offsetX":{"type":"number","description":"Horizontal Offset (px)","minimum":-200,"maximum":200},"offsetY":{"type":"number","description":"Vertical Offset (px)","minimum":-200,"maximum":200},"blurRadius":{"type":"number","description":"Blur Radius (px)","minimum":0,"maximum":100},"spreadRadius":{"type":"number","description":"Spread Radius (px)","minimum":-50,"maximum":50},"color":{"type":"string","description":"Shadow Color"},"opacity":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"inset":{"type":"boolean","description":"Inset shadow"}},"required":[]},"examples":{"soft_drop_shadow":{"summary":"Soft drop shadow","value":{"offsetX":"4","offsetY":"4","blurRadius":"10","spreadRadius":"0","color":"#000000","opacity":"25","inset":""}},"inset_pressed_shadow":{"summary":"Inset pressed shadow","value":{"offsetX":"0","offsetY":"2","blurRadius":"6","spreadRadius":"0","color":"#000000","opacity":"20","inset":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"soft_drop_shadow":{"summary":"Soft drop shadow","value":{"tool":"css-box-shadow-generator","tool_version":"1.0.2","outputs":{"cssCode":"box-shadow: 4px 4px 10px 0px rgba(0, 0, 0, 0.25);"},"credits_used":5,"credits_remaining":null}},"inset_pressed_shadow":{"summary":"Inset pressed shadow","value":{"tool":"css-box-shadow-generator","tool_version":"1.0.2","outputs":{"cssCode":"box-shadow: inset 0px 2px 6px 0px rgba(0, 0, 0, 0.20);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-checkbox-generator":{"post":{"operationId":"run_css_checkbox_generator","summary":"CSS Checkbox Generator","tags":["Generators"],"description":"Generate a custom-styled CSS checkbox or toggle switch — pick a style, colors, size, corner radius and animation speed, and copy the ready-made CSS + HTML. Pure CSS, keyboard-accessible, no JavaScript.\n\n[Try CSS Checkbox Generator in your browser →](https://iotools.cloud/tool/css-checkbox-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"style":{"enum":["filled","outline","circle","toggle","jelly","cross"],"description":"Checkbox Style"},"size":{"type":"number","description":"Size (px)","minimum":14,"maximum":48},"accentColor":{"type":"string","description":"Accent Color"},"borderColor":{"type":"string","description":"Unchecked Color"},"checkColor":{"type":"string","description":"Check Mark Color"},"radius":{"type":"number","description":"Corner Radius (px)","minimum":0,"maximum":24},"duration":{"type":"number","description":"Animation Duration (seconds)","minimum":0.05,"maximum":1},"labelText":{"type":"string","description":"Label Text"},"classPrefix":{"type":"string","description":"Class Prefix"}},"required":[]},"examples":{"filled_square":{"summary":"Filled square","value":{"style":"filled","size":"24","accentColor":"#2563eb","borderColor":"#9ca3af","checkColor":"#ffffff","radius":"6","duration":"0.2","labelText":"I agree to the terms","classPrefix":"io"}},"toggle_switch":{"summary":"Toggle switch","value":{"style":"toggle","size":"28","accentColor":"#16a34a","borderColor":"#d1d5db","checkColor":"#ffffff","radius":"6","duration":"0.25","labelText":"Email notifications","classPrefix":"ui"}},"jelly_bounce":{"summary":"Jelly bounce","value":{"style":"jelly","size":"26","accentColor":"#db2777","borderColor":"#9ca3af","checkColor":"#ffffff","radius":"8","duration":"0.3","labelText":"Remember me","classPrefix":"io"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"filled_square":{"summary":"Filled square","value":{"tool":"css-checkbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-checkbox {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  font: inherit;\n  line-height: 1.4;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.io-checkbox input[type=\"checkbox\"] {\n  appearance: none;\n  -webkit-appearance: none;\n  position: relative;\n  flex: 0 0 auto;\n  margin: 0;\n  box-sizing: border-box;\n  cursor: pointer;\n  width: 24px;\n  height: 24px;\n  border: 2px solid #9ca3af;\n  border-radius: 6px;\n  background-color: transparent;\n  transition: background-color 0.2s ease, border-color 0.2s ease;\n}\n\n.io-checkbox input[type=\"checkbox\"]::after {\n  content: \"\";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 7px;\n  height: 12px;\n  border: solid #ffffff;\n  border-width: 0 2px 2px 0;\n  transform: translate(-50%, -60%) rotate(45deg) scale(0);\n  transition: transform 0.2s ease;\n}\n\n.io-checkbox input[type=\"checkbox\"]:checked::after {\n  transform: translate(-50%, -60%) rotate(45deg) scale(1);\n}\n\n.io-checkbox input[type=\"checkbox\"]:checked {\n  background-color: #2563eb;\n  border-color: #2563eb;\n}\n\n.io-checkbox input[type=\"checkbox\"]:focus-visible {\n  outline: 2px solid #2563eb;\n  outline-offset: 2px;\n}\n\n.io-checkbox input[type=\"checkbox\"]:disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n.io-checkbox:has(input:disabled) {\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-checkbox input[type=\"checkbox\"],\n  .io-checkbox input[type=\"checkbox\"]::after {\n    transition: none;\n    animation: none;\n  }\n}","htmlCode":"<label class=\"io-checkbox\">\n  <input type=\"checkbox\" checked>\n  <span>I agree to the terms</span>\n</label>"},"credits_used":5,"credits_remaining":null}},"toggle_switch":{"summary":"Toggle switch","value":{"tool":"css-checkbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".ui-checkbox {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  font: inherit;\n  line-height: 1.4;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.ui-checkbox input[type=\"checkbox\"] {\n  appearance: none;\n  -webkit-appearance: none;\n  position: relative;\n  flex: 0 0 auto;\n  margin: 0;\n  box-sizing: border-box;\n  cursor: pointer;\n  width: 50px;\n  height: 28px;\n  border: 0;\n  border-radius: 999px;\n  background-color: #d1d5db;\n  transition: background-color 0.25s ease;\n}\n\n.ui-checkbox input[type=\"checkbox\"]::after {\n  content: \"\";\n  position: absolute;\n  top: 3px;\n  left: 3px;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  background-color: #ffffff;\n  transition: transform 0.25s ease;\n}\n\n.ui-checkbox input[type=\"checkbox\"]:checked {\n  background-color: #16a34a;\n}\n\n.ui-checkbox input[type=\"checkbox\"]:checked::after {\n  transform: translateX(22px);\n}\n\n.ui-checkbox input[type=\"checkbox\"]:focus-visible {\n  outline: 2px solid #16a34a;\n  outline-offset: 2px;\n}\n\n.ui-checkbox input[type=\"checkbox\"]:disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n.ui-checkbox:has(input:disabled) {\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .ui-checkbox input[type=\"checkbox\"],\n  .ui-checkbox input[type=\"checkbox\"]::after {\n    transition: none;\n    animation: none;\n  }\n}","htmlCode":"<label class=\"ui-checkbox\">\n  <input type=\"checkbox\" checked>\n  <span>Email notifications</span>\n</label>"},"credits_used":5,"credits_remaining":null}},"jelly_bounce":{"summary":"Jelly bounce","value":{"tool":"css-checkbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-checkbox {\n  display: inline-flex;\n  align-items: center;\n  gap: 9px;\n  font: inherit;\n  line-height: 1.4;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.io-checkbox input[type=\"checkbox\"] {\n  appearance: none;\n  -webkit-appearance: none;\n  position: relative;\n  flex: 0 0 auto;\n  margin: 0;\n  box-sizing: border-box;\n  cursor: pointer;\n  width: 26px;\n  height: 26px;\n  border: 3px solid #9ca3af;\n  border-radius: 8px;\n  background-color: transparent;\n  transition: background-color 0.3s ease, border-color 0.3s ease;\n}\n\n.io-checkbox input[type=\"checkbox\"]::after {\n  content: \"\";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 7px;\n  height: 13px;\n  border: solid #ffffff;\n  border-width: 0 3px 3px 0;\n  transform: translate(-50%, -60%) rotate(45deg) scale(0);\n  transition: transform 0.3s ease;\n}\n\n.io-checkbox input[type=\"checkbox\"]:checked::after {\n  transform: translate(-50%, -60%) rotate(45deg) scale(1);\n}\n\n.io-checkbox input[type=\"checkbox\"]:checked {\n  background-color: #db2777;\n  border-color: #db2777;\n  animation: io-checkbox-jelly 0.6s ease;\n}\n\n@keyframes io-checkbox-jelly {\n  0% {\n    transform: scale(1);\n  }\n  35% {\n    transform: scale(0.82, 1.18);\n  }\n  55% {\n    transform: scale(1.16, 0.84);\n  }\n  75% {\n    transform: scale(0.94, 1.06);\n  }\n  100% {\n    transform: scale(1);\n  }\n}\n\n.io-checkbox input[type=\"checkbox\"]:focus-visible {\n  outline: 2px solid #db2777;\n  outline-offset: 2px;\n}\n\n.io-checkbox input[type=\"checkbox\"]:disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n.io-checkbox:has(input:disabled) {\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-checkbox input[type=\"checkbox\"],\n  .io-checkbox input[type=\"checkbox\"]::after,\n  .io-checkbox input[type=\"checkbox\"]:checked {\n    transition: none;\n    animation: none;\n  }\n}","htmlCode":"<label class=\"io-checkbox\">\n  <input type=\"checkbox\" checked>\n  <span>Remember me</span>\n</label>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-clip-path-generator":{"post":{"operationId":"run_css_clip_path_generator","summary":"CSS Clip-Path Generator","tags":["Generators"],"description":"Generate a CSS clip-path declaration — circle, ellipse, inset, or a polygon shape (triangle, hexagon, star, arrow, and more) with a hand-editable custom point list — with a live preview of the clipped shape.\n\n[Try CSS Clip-Path Generator in your browser →](https://iotools.cloud/tool/css-clip-path-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shapeType":{"enum":["circle","ellipse","inset","triangle","rhombus","pentagon","hexagon","octagon","star","message","arrow","cross","chevron","parallelogram","trapezoid","custom-polygon"],"description":"Shape"},"circleRadius":{"type":"number","description":"Radius %","minimum":1,"maximum":100},"circleCx":{"type":"number","description":"Center X %","minimum":0,"maximum":100},"circleCy":{"type":"number","description":"Center Y %","minimum":0,"maximum":100},"ellipseRx":{"type":"number","description":"Radius X %","minimum":1,"maximum":100},"ellipseRy":{"type":"number","description":"Radius Y %","minimum":1,"maximum":100},"ellipseCx":{"type":"number","description":"Center X %","minimum":0,"maximum":100},"ellipseCy":{"type":"number","description":"Center Y %","minimum":0,"maximum":100},"insetTop":{"type":"number","description":"Top %","minimum":0,"maximum":100},"insetRight":{"type":"number","description":"Right %","minimum":0,"maximum":100},"insetBottom":{"type":"number","description":"Bottom %","minimum":0,"maximum":100},"insetLeft":{"type":"number","description":"Left %","minimum":0,"maximum":100},"insetRound":{"type":"number","description":"Corner Radius %","minimum":0,"maximum":50},"polygonPoints":{"type":"string","description":"Polygon Points"}},"required":[]},"examples":{"circle":{"summary":"Circle","value":{"shapeType":"circle","circleRadius":"50","circleCx":"50","circleCy":"50"}},"ellipse_off_center":{"summary":"Ellipse (off-center)","value":{"shapeType":"ellipse","ellipseRx":"40","ellipseRy":"30","ellipseCx":"60","ellipseCy":"50"}},"inset_with_rounded_corners":{"summary":"Inset with rounded corners","value":{"shapeType":"inset","insetTop":"10","insetRight":"10","insetBottom":"10","insetLeft":"10","insetRound":"20"}},"hexagon_preset":{"summary":"Hexagon preset","value":{"shapeType":"hexagon"}},"star_preset":{"summary":"Star preset","value":{"shapeType":"star"}},"custom_polygon_hand_edited_points":{"summary":"Custom polygon (hand-edited points)","value":{"shapeType":"custom-polygon","polygonPoints":"20% 20%, 80% 20%, 80% 80%, 20% 80%"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"circle":{"summary":"Circle","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: circle(50% at 50% 50%);\n-webkit-clip-path: circle(50% at 50% 50%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:circle(50% at 50% 50%);-webkit-clip-path:circle(50% at 50% 50%);\"></div>"},"credits_used":5,"credits_remaining":null}},"ellipse_off_center":{"summary":"Ellipse (off-center)","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: ellipse(40% 30% at 60% 50%);\n-webkit-clip-path: ellipse(40% 30% at 60% 50%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:ellipse(40% 30% at 60% 50%);-webkit-clip-path:ellipse(40% 30% at 60% 50%);\"></div>"},"credits_used":5,"credits_remaining":null}},"inset_with_rounded_corners":{"summary":"Inset with rounded corners","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: inset(10% 10% 10% 10% round 20%);\n-webkit-clip-path: inset(10% 10% 10% 10% round 20%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:inset(10% 10% 10% 10% round 20%);-webkit-clip-path:inset(10% 10% 10% 10% round 20%);\"></div>"},"credits_used":5,"credits_remaining":null}},"hexagon_preset":{"summary":"Hexagon preset","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);\n-webkit-clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);-webkit-clip-path:polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%);\"></div>"},"credits_used":5,"credits_remaining":null}},"star_preset":{"summary":"Star preset","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);\n-webkit-clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);-webkit-clip-path:polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);\"></div>"},"credits_used":5,"credits_remaining":null}},"custom_polygon_hand_edited_points":{"summary":"Custom polygon (hand-edited points)","value":{"tool":"css-clip-path-generator","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%);\n-webkit-clip-path: polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%);","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%);-webkit-clip-path:polygon(20% 20%, 80% 20%, 80% 80%, 20% 80%);\"></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML Snippet (preview)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-container-query-generator":{"post":{"operationId":"run_css_container_query_generator","summary":"CSS Container Query Generator","tags":["Generators"],"description":"Generate an @container CSS rule — size, inline-size or style query — from a named container, a breakpoint or custom-property condition, and the styles to apply. Includes a live, drag-to-resize preview.\n\n[Try CSS Container Query Generator in your browser →](https://iotools.cloud/tool/css-container-query-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"containerName":{"type":"string","description":"Container name (optional)"},"containerType":{"enum":["inline-size","size","style"],"description":"Container Type"},"conditionType":{"enum":["min-width","max-width","range"],"description":"Condition"},"minWidthPx":{"type":"number","description":"Min width (px)","minimum":0,"maximum":10000},"maxWidthPx":{"type":"number","description":"Max width (px)","minimum":0,"maximum":10000},"styleProperty":{"type":"string","description":"Custom property"},"styleValue":{"type":"string","description":"Matches when equal to"},"declarations":{"type":"string","description":"Styles applied when the condition matches"}},"required":[]},"examples":{"inline_size_min_width":{"summary":"Inline-size, min-width","value":{"containerName":"sidebar","containerType":"inline-size","conditionType":"min-width","minWidthPx":"400","maxWidthPx":"700","styleProperty":"--theme","styleValue":"dark","declarations":"display: flex;\n  flex-direction: row;\n  gap: 1rem;"}},"size_range_condition_anonymous_container":{"summary":"Size, range condition, anonymous container","value":{"containerName":"","containerType":"size","conditionType":"range","minWidthPx":"300","maxWidthPx":"600","styleProperty":"--theme","styleValue":"dark","declarations":"flex-direction: column;"}},"style_query":{"summary":"Style query","value":{"containerName":"theme-box","containerType":"style","conditionType":"min-width","minWidthPx":"400","maxWidthPx":"700","styleProperty":"--theme","styleValue":"dark","declarations":"background: #111827;\n  color: #f9fafb;"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"inline_size_min_width":{"summary":"Inline-size, min-width","value":{"tool":"css-container-query-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  container-type: inline-size;\n  container-name: sidebar;\n}\n\n@container sidebar (min-width: 400px) {\n  .card {\n    display: flex;\n    flex-direction: row;\n    gap: 1rem;\n  }\n}","htmlCode":"<div class=\"container\" style=\"resize: horizontal; overflow: auto; width: 320px; min-width: 160px; max-width: 100%; padding: 8px; border: 1px dashed #94a3b8; border-radius: 8px;\">\n  <div class=\"card\">\n      <strong>Card title</strong>\n      <p style=\"margin: 4px 0 0;\">Drag the container's bottom-right handle to resize it.</p>\n    </div>\n</div>","previewCss":".card {\n  padding: 12px;\n  border-radius: 8px;\n  background: #eef2ff;\n  border: 1px solid #c7d2fe;\n}\n\n.container {\n  container-type: inline-size;\n  container-name: sidebar;\n}\n\n@container sidebar (min-width: 400px) {\n  .card {\n    display: flex;\n    flex-direction: row;\n    gap: 1rem;\n  }\n}"},"credits_used":5,"credits_remaining":null}},"size_range_condition_anonymous_container":{"summary":"Size, range condition, anonymous container","value":{"tool":"css-container-query-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  container-type: size;\n}\n\n@container (min-width: 300px) and (max-width: 600px) {\n  .card {\n    flex-direction: column;\n  }\n}","htmlCode":"<div class=\"container\" style=\"resize: both; overflow: auto; width: 320px; min-width: 160px; max-width: 100%; height: 140px; padding: 8px; border: 1px dashed #94a3b8; border-radius: 8px;\">\n  <div class=\"card\">\n      <strong>Card title</strong>\n      <p style=\"margin: 4px 0 0;\">Drag the container's bottom-right handle to resize it.</p>\n    </div>\n</div>","previewCss":".card {\n  padding: 12px;\n  border-radius: 8px;\n  background: #eef2ff;\n  border: 1px solid #c7d2fe;\n}\n\n.container {\n  container-type: size;\n}\n\n@container (min-width: 300px) and (max-width: 600px) {\n  .card {\n    flex-direction: column;\n  }\n}"},"credits_used":5,"credits_remaining":null}},"style_query":{"summary":"Style query","value":{"tool":"css-container-query-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  container-type: normal;\n  container-name: theme-box;\n}\n\n@container theme-box style(--theme: dark) {\n  .card {\n    background: #111827;\n    color: #f9fafb;\n  }\n}","htmlCode":"<div class=\"cq-demo\">\n  <label style=\"display: flex; align-items: center; gap: 6px; margin-bottom: 8px; font-size: 13px; cursor: pointer;\">\n    <input type=\"checkbox\" class=\"cq-toggle\" />\n    Toggle \"--theme: dark\"\n  </label>\n  <div class=\"container\">\n    <div class=\"card\">\n      <strong>Card title</strong>\n      <p style=\"margin: 4px 0 0;\">Check the box above to flip the custom property.</p>\n    </div>\n  </div>\n</div>","previewCss":".card {\n  padding: 12px;\n  border-radius: 8px;\n  background: #eef2ff;\n  border: 1px solid #c7d2fe;\n}\n\n.container {\n  container-type: normal;\n  container-name: theme-box;\n}\n\n@container theme-box style(--theme: dark) {\n  .card {\n    background: #111827;\n    color: #f9fafb;\n  }\n}\n\n.cq-demo:has(.cq-toggle:checked) .container {\n  --theme: dark;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"Demo markup"},"previewCss":{"type":"string","description":"Preview stylesheet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-corner-cutter":{"post":{"operationId":"run_css_corner_cutter","summary":"CSS Corner Cutter","tags":["Generators"],"description":"Generate a CSS clip-path/mask declaration that bevels, notches, or scoops each corner of a box independently — per-corner or one linked style and size, in px or %, with a live preview.\n\n[Try CSS Corner Cutter in your browser →](https://iotools.cloud/tool/css-corner-cutter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["px","%"],"description":"Unit"},"linked":{"type":"boolean","description":"Same for all corners"},"allStyle":{"enum":["bevel","notch","scoop"],"description":"All Corners Style"},"allSize":{"type":"number","description":"All Corners Size","minimum":0,"maximum":100},"tlStyle":{"enum":["bevel","notch","scoop"],"description":"Top Left Style"},"tlSize":{"type":"number","description":"Top Left Size","minimum":0,"maximum":100},"trStyle":{"enum":["bevel","notch","scoop"],"description":"Top Right Style"},"trSize":{"type":"number","description":"Top Right Size","minimum":0,"maximum":100},"brStyle":{"enum":["bevel","notch","scoop"],"description":"Bottom Right Style"},"brSize":{"type":"number","description":"Bottom Right Size","minimum":0,"maximum":100},"blStyle":{"enum":["bevel","notch","scoop"],"description":"Bottom Left Style"},"blSize":{"type":"number","description":"Bottom Left Size","minimum":0,"maximum":100}},"required":[]},"examples":{"bevel_all_corners_linked":{"summary":"Bevel, all corners linked","value":{"unit":"px","linked":"true","allStyle":"bevel","allSize":"24"}},"notch_bevel_independent_corners":{"summary":"Notch + bevel, independent corners","value":{"unit":"px","linked":"","tlStyle":"notch","tlSize":"16","trStyle":"bevel","trSize":"0","brStyle":"notch","brSize":"24","blStyle":"bevel","blSize":"12"}},"scoop_all_corners_mask":{"summary":"Scoop, all corners (mask)","value":{"unit":"px","linked":"true","allStyle":"scoop","allSize":"30"}},"percent_sized_ticket_notch_mixed_styles":{"summary":"Percent-sized ticket notch (mixed styles)","value":{"unit":"%","linked":"","tlStyle":"scoop","tlSize":"20","trStyle":"scoop","trSize":"20","brStyle":"bevel","brSize":"10","blStyle":"bevel","blSize":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bevel_all_corners_linked":{"summary":"Bevel, all corners linked","value":{"tool":"css-corner-cutter","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(0 24px, 24px 0, calc(100% - 24px) 0, 100% 24px, 100% calc(100% - 24px), calc(100% - 24px) 100%, 24px 100%, 0 calc(100% - 24px));\n-webkit-clip-path: polygon(0 24px, 24px 0, calc(100% - 24px) 0, 100% 24px, 100% calc(100% - 24px), calc(100% - 24px) 100%, 24px 100%, 0 calc(100% - 24px));","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(0 24px, 24px 0, calc(100% - 24px) 0, 100% 24px, 100% calc(100% - 24px), calc(100% - 24px) 100%, 24px 100%, 0 calc(100% - 24px));-webkit-clip-path:polygon(0 24px, 24px 0, calc(100% - 24px) 0, 100% 24px, 100% calc(100% - 24px), calc(100% - 24px) 100%, 24px 100%, 0 calc(100% - 24px));\"></div>"},"credits_used":5,"credits_remaining":null}},"notch_bevel_independent_corners":{"summary":"Notch + bevel, independent corners","value":{"tool":"css-corner-cutter","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(0 16px, 16px 16px, 16px 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) calc(100% - 24px), calc(100% - 24px) 100%, 12px 100%, 0 calc(100% - 12px));\n-webkit-clip-path: polygon(0 16px, 16px 16px, 16px 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) calc(100% - 24px), calc(100% - 24px) 100%, 12px 100%, 0 calc(100% - 12px));","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(0 16px, 16px 16px, 16px 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) calc(100% - 24px), calc(100% - 24px) 100%, 12px 100%, 0 calc(100% - 12px));-webkit-clip-path:polygon(0 16px, 16px 16px, 16px 0, 100% 0, 100% calc(100% - 24px), calc(100% - 24px) calc(100% - 24px), calc(100% - 24px) 100%, 12px 100%, 0 calc(100% - 12px));\"></div>"},"credits_used":5,"credits_remaining":null}},"scoop_all_corners_mask":{"summary":"Scoop, all corners (mask)","value":{"tool":"css-corner-cutter","tool_version":"1.0.2","outputs":{"cssCode":"mask-image:\n  radial-gradient(ellipse 30px 30px at top left, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at top right, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at bottom right, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at bottom left, transparent 100%, #000 100%);\nmask-position: top left, top right, bottom right, bottom left;\nmask-size: 50% 50%;\nmask-repeat: no-repeat;\n-webkit-mask-image:\n  radial-gradient(ellipse 30px 30px at top left, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at top right, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at bottom right, transparent 100%, #000 100%),\n  radial-gradient(ellipse 30px 30px at bottom left, transparent 100%, #000 100%);\n-webkit-mask-position: top left, top right, bottom right, bottom left;\n-webkit-mask-size: 50% 50%;\n-webkit-mask-repeat: no-repeat;","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);mask-image:radial-gradient(ellipse 30px 30px at top left, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at top right, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at bottom right, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at bottom left, transparent 100%, #000 100%);mask-position:top left, top right, bottom right, bottom left;mask-size:50% 50%;mask-repeat:no-repeat;-webkit-mask-image:radial-gradient(ellipse 30px 30px at top left, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at top right, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at bottom right, transparent 100%, #000 100%), radial-gradient(ellipse 30px 30px at bottom left, transparent 100%, #000 100%);-webkit-mask-position:top left, top right, bottom right, bottom left;-webkit-mask-size:50% 50%;-webkit-mask-repeat:no-repeat;\"></div>"},"credits_used":5,"credits_remaining":null}},"percent_sized_ticket_notch_mixed_styles":{"summary":"Percent-sized ticket notch (mixed styles)","value":{"tool":"css-corner-cutter","tool_version":"1.0.2","outputs":{"cssCode":"clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10%), calc(100% - 10%) 100%, 10% 100%, 0 calc(100% - 10%));\n-webkit-clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10%), calc(100% - 10%) 100%, 10% 100%, 0 calc(100% - 10%));\n\nmask-image:\n  radial-gradient(ellipse 40% 40% at top left, transparent 100%, #000 100%),\n  radial-gradient(ellipse 40% 40% at top right, transparent 100%, #000 100%),\n  linear-gradient(#000, #000),\n  linear-gradient(#000, #000);\nmask-position: top left, top right, bottom right, bottom left;\nmask-size: 50% 50%;\nmask-repeat: no-repeat;\n-webkit-mask-image:\n  radial-gradient(ellipse 40% 40% at top left, transparent 100%, #000 100%),\n  radial-gradient(ellipse 40% 40% at top right, transparent 100%, #000 100%),\n  linear-gradient(#000, #000),\n  linear-gradient(#000, #000);\n-webkit-mask-position: top left, top right, bottom right, bottom left;\n-webkit-mask-size: 50% 50%;\n-webkit-mask-repeat: no-repeat;","previewHtml":"<div style=\"width:200px;height:200px;background:linear-gradient(135deg, #6366f1, #22d3ee);clip-path:polygon(0 0, 100% 0, 100% calc(100% - 10%), calc(100% - 10%) 100%, 10% 100%, 0 calc(100% - 10%));-webkit-clip-path:polygon(0 0, 100% 0, 100% calc(100% - 10%), calc(100% - 10%) 100%, 10% 100%, 0 calc(100% - 10%));mask-image:radial-gradient(ellipse 40% 40% at top left, transparent 100%, #000 100%), radial-gradient(ellipse 40% 40% at top right, transparent 100%, #000 100%), linear-gradient(#000, #000), linear-gradient(#000, #000);mask-position:top left, top right, bottom right, bottom left;mask-size:50% 50%;mask-repeat:no-repeat;-webkit-mask-image:radial-gradient(ellipse 40% 40% at top left, transparent 100%, #000 100%), radial-gradient(ellipse 40% 40% at top right, transparent 100%, #000 100%), linear-gradient(#000, #000), linear-gradient(#000, #000);-webkit-mask-position:top left, top right, bottom right, bottom left;-webkit-mask-size:50% 50%;-webkit-mask-repeat:no-repeat;\"></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML Snippet (preview)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-cubic-bezier-generator":{"post":{"operationId":"run_css_cubic_bezier_generator","summary":"CSS Cubic Bezier Generator","tags":["Generators"],"description":"Build a CSS cubic-bezier() timing function from named easing presets (ease, ease-in-out, Material-style sine/quad/cubic/back curves…) or your own X1/Y1/X2/Y2 control points, with a live SVG curve preview. Runs entirely in your browser.\n\n[Try CSS Cubic Bezier Generator in your browser →](https://iotools.cloud/tool/css-cubic-bezier-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"enum":["custom","linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ","ease-in-back","ease-out-back","ease-in-out-back"],"description":"Preset"},"x1":{"type":"number","description":"X1","minimum":0,"maximum":1},"y1":{"type":"number","description":"Y1"},"x2":{"type":"number","description":"X2","minimum":0,"maximum":1},"y2":{"type":"number","description":"Y2"},"duration":{"type":"number","description":"Duration (seconds)","minimum":0.1,"maximum":10}},"required":[]},"examples":{"ease_default":{"summary":"Ease (default)","value":{"preset":"ease","x1":"0.25","y1":"0.1","x2":"0.25","y2":"1","duration":"1"}},"ease_in_back_overshoot":{"summary":"Ease In Back (overshoot)","value":{"preset":"ease-in-back","x1":"0.25","y1":"0.1","x2":"0.25","y2":"1","duration":"0.6"}},"custom_curve":{"summary":"Custom curve","value":{"preset":"custom","x1":"0.17","y1":"0.67","x2":"0.83","y2":"0.67","duration":"1.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ease_default":{"summary":"Ease (default)","value":{"tool":"css-cubic-bezier-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Preset: Ease — cubic-bezier(0.25, 0.1, 0.25, 1) */\ntransition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);\nanimation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);\n\n/* Example usage */\ntransition: all 1s cubic-bezier(0.25, 0.1, 0.25, 1);","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"300\" height=\"300\" viewBox=\"0 0 300 300\"><rect width=\"300\" height=\"300\" fill=\"#ffffff\"/><rect x=\"30.00\" y=\"53.23\" width=\"240.00\" height=\"193.55\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\"/><line x1=\"30.00\" y1=\"246.77\" x2=\"90.00\" y2=\"227.42\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><line x1=\"270.00\" y1=\"53.23\" x2=\"90.00\" y2=\"53.23\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><path d=\"M 30.00 246.77 C 90.00 227.42, 90.00 53.23, 270.00 53.23\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"3\" stroke-linecap=\"round\"/><circle cx=\"30.00\" cy=\"246.77\" r=\"5\" fill=\"#666666\"/><circle cx=\"270.00\" cy=\"53.23\" r=\"5\" fill=\"#666666\"/><circle cx=\"90.00\" cy=\"227.42\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/><circle cx=\"90.00\" cy=\"53.23\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/></svg>","curveInfo":[{"property":"cubic-bezier()","value":"cubic-bezier(0.25, 0.1, 0.25, 1)"},{"property":"Preset","value":"Ease"},{"property":"Behavior","value":"Standard eased curve — stays within the 0–1 range"}]},"credits_used":5,"credits_remaining":null}},"ease_in_back_overshoot":{"summary":"Ease In Back (overshoot)","value":{"tool":"css-cubic-bezier-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Preset: Ease In Back — cubic-bezier(0.36, 0, 0.66, -0.56) */\ntransition-timing-function: cubic-bezier(0.36, 0, 0.66, -0.56);\nanimation-timing-function: cubic-bezier(0.36, 0, 0.66, -0.56);\n\n/* Example usage */\ntransition: all 0.6s cubic-bezier(0.36, 0, 0.66, -0.56);","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"300\" height=\"300\" viewBox=\"0 0 300 300\"><rect width=\"300\" height=\"300\" fill=\"#ffffff\"/><rect x=\"30.00\" y=\"53.23\" width=\"240.00\" height=\"124.07\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\"/><line x1=\"30.00\" y1=\"177.30\" x2=\"116.40\" y2=\"177.30\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><line x1=\"270.00\" y1=\"53.23\" x2=\"188.40\" y2=\"246.77\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><path d=\"M 30.00 177.30 C 116.40 177.30, 188.40 246.77, 270.00 53.23\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"3\" stroke-linecap=\"round\"/><circle cx=\"30.00\" cy=\"177.30\" r=\"5\" fill=\"#666666\"/><circle cx=\"270.00\" cy=\"53.23\" r=\"5\" fill=\"#666666\"/><circle cx=\"116.40\" cy=\"177.30\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/><circle cx=\"188.40\" cy=\"246.77\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/></svg>","curveInfo":[{"property":"cubic-bezier()","value":"cubic-bezier(0.36, 0, 0.66, -0.56)"},{"property":"Preset","value":"Ease In Back"},{"property":"Behavior","value":"Overshoot — the curve leaves the 0–1 range"}]},"credits_used":5,"credits_remaining":null}},"custom_curve":{"summary":"Custom curve","value":{"tool":"css-cubic-bezier-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Custom curve — cubic-bezier(0.17, 0.67, 0.83, 0.67) */\ntransition-timing-function: cubic-bezier(0.17, 0.67, 0.83, 0.67);\nanimation-timing-function: cubic-bezier(0.17, 0.67, 0.83, 0.67);\n\n/* Example usage */\ntransition: all 1.5s cubic-bezier(0.17, 0.67, 0.83, 0.67);","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"300\" height=\"300\" viewBox=\"0 0 300 300\"><rect width=\"300\" height=\"300\" fill=\"#ffffff\"/><rect x=\"30.00\" y=\"53.23\" width=\"240.00\" height=\"193.55\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\"/><line x1=\"30.00\" y1=\"246.77\" x2=\"70.80\" y2=\"117.10\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><line x1=\"270.00\" y1=\"53.23\" x2=\"229.20\" y2=\"117.10\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4 4\"/><path d=\"M 30.00 246.77 C 70.80 117.10, 229.20 117.10, 270.00 53.23\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"3\" stroke-linecap=\"round\"/><circle cx=\"30.00\" cy=\"246.77\" r=\"5\" fill=\"#666666\"/><circle cx=\"270.00\" cy=\"53.23\" r=\"5\" fill=\"#666666\"/><circle cx=\"70.80\" cy=\"117.10\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/><circle cx=\"229.20\" cy=\"117.10\" r=\"7\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"2\"/></svg>","curveInfo":[{"property":"cubic-bezier()","value":"cubic-bezier(0.17, 0.67, 0.83, 0.67)"},{"property":"Preset","value":"Custom"},{"property":"Behavior","value":"Standard eased curve — stays within the 0–1 range"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS Code"},"svg":{"type":"string","description":"SVG source"},"curveInfo":{"type":"array","description":"Curve details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-design-token-generator":{"post":{"operationId":"run_css_design_token_generator","summary":"CSS Design Token Generator","tags":["Generators"],"description":"Generate a full 50-950 OKLCH color palette plus semantic CSS custom properties — primary, surface, border, ring, and more, with an optional dark-mode variant — from a single brand hex color.\n\n[Try CSS Design Token Generator in your browser →](https://iotools.cloud/tool/css-design-token-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"brandColor":{"type":"string","description":"Brand Color"},"tokenName":{"type":"string","description":"Token Name"},"colorFormat":{"enum":["oklch","hex"],"description":"Format"},"includeDarkMode":{"type":"boolean","description":"Include dark mode variant"},"darkSelector":{"enum":[".dark","[data-theme=\"dark\"]","media"],"description":"Dark selector"},"chromaBoost":{"type":"number","description":"Chroma","minimum":0,"maximum":150}},"required":[]},"examples":{"default_brand_palette_oklch_dark_mode":{"summary":"Default brand palette (OKLCH, dark mode)","value":{"brandColor":"#464aff","tokenName":"brand","colorFormat":"oklch","includeDarkMode":"true","darkSelector":".dark","chromaBoost":"100"}},"hex_format_no_dark_mode":{"summary":"Hex format, no dark mode","value":{"brandColor":"#22c55e","tokenName":"success","colorFormat":"hex","includeDarkMode":"","darkSelector":".dark","chromaBoost":"100"}},"media_query_dark_mode_reduced_chroma":{"summary":"Media-query dark mode, reduced chroma","value":{"brandColor":"#e11d48","tokenName":"danger","colorFormat":"oklch","includeDarkMode":"true","darkSelector":"media","chromaBoost":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_brand_palette_oklch_dark_mode":{"summary":"Default brand palette (OKLCH, dark mode)","value":{"tool":"css-design-token-generator","tool_version":"1.0.2","outputs":{"cssTokens":"/* Brand palette: 50-950 raw scale */\n:root {\n  --color-brand-50: oklch(98.50% 0.007 272.51);\n  --color-brand-100: oklch(96.70% 0.016 272.51);\n  --color-brand-200: oklch(92.20% 0.037 272.51);\n  --color-brand-300: oklch(85.50% 0.071 272.51);\n  --color-brand-400: oklch(72.70% 0.141 272.51);\n  --color-brand-500: oklch(60.00% 0.218 272.51);\n  --color-brand-600: oklch(51.20% 0.259 272.51);\n  --color-brand-700: oklch(43.00% 0.238 272.51);\n  --color-brand-800: oklch(35.00% 0.202 272.51);\n  --color-brand-900: oklch(27.00% 0.155 272.51);\n  --color-brand-950: oklch(18.00% 0.109 272.51);\n\n  /* Semantic tokens (light) */\n  --color-primary: var(--color-brand-600);\n  --color-primary-hover: var(--color-brand-700);\n  --color-primary-active: var(--color-brand-800);\n  --color-primary-muted: var(--color-brand-100);\n  --color-on-primary: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-muted: var(--color-brand-50);\n  --color-surface-raised: #ffffff;\n  --color-on-surface: var(--color-brand-950);\n  --color-on-surface-muted: var(--color-brand-700);\n  --color-border: var(--color-brand-200);\n  --color-border-strong: var(--color-brand-300);\n  --color-ring: var(--color-brand-400);\n  --color-accent: var(--color-brand-500);\n}\n\n/* Semantic tokens (dark) */\n.dark {\n  --color-primary: var(--color-brand-400);\n  --color-primary-hover: var(--color-brand-300);\n  --color-primary-active: var(--color-brand-200);\n  --color-primary-muted: var(--color-brand-900);\n  --color-on-primary: #0b0b0f;\n  --color-surface: var(--color-brand-950);\n  --color-surface-muted: var(--color-brand-900);\n  --color-surface-raised: var(--color-brand-900);\n  --color-on-surface: #f8fafc;\n  --color-on-surface-muted: var(--color-brand-400);\n  --color-border: var(--color-brand-800);\n  --color-border-strong: var(--color-brand-700);\n  --color-ring: var(--color-brand-500);\n  --color-accent: var(--color-brand-400);\n}"},"credits_used":5,"credits_remaining":null}},"hex_format_no_dark_mode":{"summary":"Hex format, no dark mode","value":{"tool":"css-design-token-generator","tool_version":"1.0.2","outputs":{"cssTokens":"/* Brand palette: 50-950 raw scale */\n:root {\n  --color-success-50: #f0fff2;\n  --color-success-100: #e1fde5;\n  --color-success-200: #c2f4ca;\n  --color-success-300: #95e5a5;\n  --color-success-400: #4bc26c;\n  --color-success-500: #009a44;\n  --color-success-600: #007c35;\n  --color-success-700: #006128;\n  --color-success-800: #00481b;\n  --color-success-900: #00300f;\n  --color-success-950: #001804;\n\n  /* Semantic tokens (light) */\n  --color-primary: var(--color-success-600);\n  --color-primary-hover: var(--color-success-700);\n  --color-primary-active: var(--color-success-800);\n  --color-primary-muted: var(--color-success-100);\n  --color-on-primary: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-muted: var(--color-success-50);\n  --color-surface-raised: #ffffff;\n  --color-on-surface: var(--color-success-950);\n  --color-on-surface-muted: var(--color-success-700);\n  --color-border: var(--color-success-200);\n  --color-border-strong: var(--color-success-300);\n  --color-ring: var(--color-success-400);\n  --color-accent: var(--color-success-500);\n}"},"credits_used":5,"credits_remaining":null}},"media_query_dark_mode_reduced_chroma":{"summary":"Media-query dark mode, reduced chroma","value":{"tool":"css-design-token-generator","tool_version":"1.0.2","outputs":{"cssTokens":"/* Brand palette: 50-950 raw scale */\n:root {\n  --color-danger-50: oklch(98.50% 0.007 17.58);\n  --color-danger-100: oklch(96.70% 0.016 17.58);\n  --color-danger-200: oklch(92.20% 0.040 17.58);\n  --color-danger-300: oklch(85.50% 0.079 17.58);\n  --color-danger-400: oklch(72.70% 0.113 17.58);\n  --color-danger-500: oklch(60.00% 0.133 17.58);\n  --color-danger-600: oklch(51.20% 0.133 17.58);\n  --color-danger-700: oklch(43.00% 0.123 17.58);\n  --color-danger-800: oklch(35.00% 0.104 17.58);\n  --color-danger-900: oklch(27.00% 0.080 17.58);\n  --color-danger-950: oklch(18.00% 0.056 17.58);\n\n  /* Semantic tokens (light) */\n  --color-primary: var(--color-danger-600);\n  --color-primary-hover: var(--color-danger-700);\n  --color-primary-active: var(--color-danger-800);\n  --color-primary-muted: var(--color-danger-100);\n  --color-on-primary: #ffffff;\n  --color-surface: #ffffff;\n  --color-surface-muted: var(--color-danger-50);\n  --color-surface-raised: #ffffff;\n  --color-on-surface: var(--color-danger-950);\n  --color-on-surface-muted: var(--color-danger-700);\n  --color-border: var(--color-danger-200);\n  --color-border-strong: var(--color-danger-300);\n  --color-ring: var(--color-danger-400);\n  --color-accent: var(--color-danger-500);\n}\n\n/* Semantic tokens (dark) */\n@media (prefers-color-scheme: dark) {\n  :root {\n    --color-primary: var(--color-danger-400);\n    --color-primary-hover: var(--color-danger-300);\n    --color-primary-active: var(--color-danger-200);\n    --color-primary-muted: var(--color-danger-900);\n    --color-on-primary: #0b0b0f;\n    --color-surface: var(--color-danger-950);\n    --color-surface-muted: var(--color-danger-900);\n    --color-surface-raised: var(--color-danger-900);\n    --color-on-surface: #f8fafc;\n    --color-on-surface-muted: var(--color-danger-400);\n    --color-border: var(--color-danger-800);\n    --color-border-strong: var(--color-danger-700);\n    --color-ring: var(--color-danger-500);\n    --color-accent: var(--color-danger-400);\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssTokens":{"type":"string","description":"CSS Tokens"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-filter-generator":{"post":{"operationId":"run_css_filter_generator","summary":"CSS Filter Generator","tags":["Generators"],"description":"Build a CSS filter declaration by combining blur, brightness, contrast, grayscale, hue-rotate, invert, opacity, saturate, and sepia sliders into a single chained filter property.\n\n[Try CSS Filter Generator in your browser →](https://iotools.cloud/tool/css-filter-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"blur":{"type":"number","description":"Blur (px)","minimum":0,"maximum":20},"brightness":{"type":"number","description":"Brightness (%)","minimum":0,"maximum":200},"contrast":{"type":"number","description":"Contrast (%)","minimum":0,"maximum":200},"grayscale":{"type":"number","description":"Grayscale (%)","minimum":0,"maximum":100},"hueRotate":{"type":"number","description":"Hue Rotate (deg)","minimum":0,"maximum":360},"invert":{"type":"number","description":"Invert (%)","minimum":0,"maximum":100},"opacity":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"saturate":{"type":"number","description":"Saturate (%)","minimum":0,"maximum":200},"sepia":{"type":"number","description":"Sepia (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"blur_brightness_grayscale":{"summary":"Blur, brightness & grayscale","value":{"blur":"2","brightness":"110","contrast":"100","grayscale":"50","hueRotate":"0","invert":"0","opacity":"100","saturate":"100","sepia":"0"}},"all_defaults_no_op":{"summary":"All defaults (no-op)","value":{"blur":"0","brightness":"100","contrast":"100","grayscale":"0","hueRotate":"0","invert":"0","opacity":"100","saturate":"100","sepia":"0"}},"sepia_tone":{"summary":"Sepia tone","value":{"blur":"0","brightness":"95","contrast":"100","grayscale":"0","hueRotate":"0","invert":"0","opacity":"100","saturate":"100","sepia":"80"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"blur_brightness_grayscale":{"summary":"Blur, brightness & grayscale","value":{"tool":"css-filter-generator","tool_version":"1.0.2","outputs":{"cssCode":"filter: blur(2px) brightness(110%) grayscale(50%);"},"credits_used":5,"credits_remaining":null}},"all_defaults_no_op":{"summary":"All defaults (no-op)","value":{"tool":"css-filter-generator","tool_version":"1.0.2","outputs":{"cssCode":"filter: none;"},"credits_used":5,"credits_remaining":null}},"sepia_tone":{"summary":"Sepia tone","value":{"tool":"css-filter-generator","tool_version":"1.0.2","outputs":{"cssCode":"filter: brightness(95%) sepia(80%);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-flexbox-generator":{"post":{"operationId":"run_css_flexbox_generator","summary":"CSS Flexbox Generator","tags":["Generators"],"description":"Build a CSS flexbox container rule from flex-direction, flex-wrap, justify-content, align-items, align-content, and gap controls — copy the ready-made .container {} block into your stylesheet.\n\n[Try CSS Flexbox Generator in your browser →](https://iotools.cloud/tool/css-flexbox-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"flexDirection":{"enum":["row","row-reverse","column","column-reverse"],"description":"flex-direction"},"justifyContent":{"enum":["flex-start","flex-end","center","space-between","space-around","space-evenly"],"description":"justify-content"},"alignItems":{"enum":["stretch","flex-start","flex-end","center","baseline"],"description":"align-items"},"flexWrap":{"enum":["nowrap","wrap","wrap-reverse"],"description":"flex-wrap"},"alignContent":{"enum":["stretch","flex-start","flex-end","center","space-between","space-around","space-evenly"],"description":"align-content"},"gap":{"type":"number","description":"Gap (px)","minimum":0,"maximum":100}},"required":[]},"examples":{"wrapping_row_space_between":{"summary":"Wrapping row, space-between","value":{"flexDirection":"row","justifyContent":"space-between","alignItems":"center","flexWrap":"wrap","alignContent":"stretch","gap":"16"}},"single_line_column_align_content_omitted":{"summary":"Single-line column (align-content omitted)","value":{"flexDirection":"column","justifyContent":"center","alignItems":"flex-start","flexWrap":"nowrap","alignContent":"center","gap":"0"}},"all_defaults":{"summary":"All defaults","value":{"flexDirection":"row","justifyContent":"flex-start","alignItems":"stretch","flexWrap":"nowrap","alignContent":"stretch","gap":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"wrapping_row_space_between":{"summary":"Wrapping row, space-between","value":{"tool":"css-flexbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  align-items: center;\n  flex-wrap: wrap;\n  align-content: stretch;\n  gap: 16px;\n}"},"credits_used":5,"credits_remaining":null}},"single_line_column_align_content_omitted":{"summary":"Single-line column (align-content omitted)","value":{"tool":"css-flexbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: flex-start;\n  flex-wrap: nowrap;\n  gap: 0px;\n}"},"credits_used":5,"credits_remaining":null}},"all_defaults":{"summary":"All defaults","value":{"tool":"css-flexbox-generator","tool_version":"1.0.2","outputs":{"cssCode":".container {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-start;\n  align-items: stretch;\n  flex-wrap: nowrap;\n  gap: 10px;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-fluid-typography-generator":{"post":{"operationId":"run_css_fluid_typography_generator","summary":"CSS Fluid Typography Generator","tags":["Generators"],"description":"Generate a CSS clamp() type scale (XS to 4XL) that interpolates font size smoothly between a min and max viewport width, with a live resizable preview and the underlying slope/interpolation math shown. Runs entirely in your browser.\n\n[Try CSS Fluid Typography Generator in your browser →](https://iotools.cloud/tool/css-fluid-typography-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"minFontSize":{"type":"number","description":"Min font size (px)","minimum":8,"maximum":40},"maxFontSize":{"type":"number","description":"Max font size (px)","minimum":8,"maximum":72},"minViewport":{"type":"number","description":"Min viewport width (px)","minimum":280,"maximum":768},"maxViewport":{"type":"number","description":"Max viewport width (px)","minimum":768,"maximum":2560},"minRatio":{"enum":["1.067","1.125","1.2","1.25","1.333","1.414","1.5","1.618"],"description":"Scale ratio at min viewport"},"maxRatio":{"enum":["1.067","1.125","1.2","1.25","1.333","1.414","1.5","1.618"],"description":"Scale ratio at max viewport"},"outputUnit":{"enum":["rem","px"],"description":"Output unit"},"asCustomProperties":{"type":"boolean","description":"Output as CSS custom properties"}},"required":[]},"examples":{"default_rem_custom_properties":{"summary":"Default (rem, custom properties)","value":{"minFontSize":"16","maxFontSize":"20","minViewport":"320","maxViewport":"1200","minRatio":"1.2","maxRatio":"1.25","outputUnit":"rem","asCustomProperties":"true"}},"utility_classes_px":{"summary":"Utility classes (px)","value":{"minFontSize":"14","maxFontSize":"18","minViewport":"375","maxViewport":"1440","minRatio":"1.125","maxRatio":"1.333","outputUnit":"px","asCustomProperties":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_rem_custom_properties":{"summary":"Default (rem, custom properties)","value":{"tool":"css-fluid-typography-generator","tool_version":"1.0.2","outputs":{"cssCode":":root {\n  --font-xs: clamp(0.6944rem, 0.6561rem + 0.1919vw, 0.8rem);\n  --font-sm: clamp(0.8333rem, 0.7727rem + 0.303vw, 1rem);\n  --font-base: clamp(1rem, 0.9091rem + 0.4545vw, 1.25rem);\n  --font-lg: clamp(1.2rem, 1.0682rem + 0.6591vw, 1.5625rem);\n  --font-xl: clamp(1.44rem, 1.2534rem + 0.933vw, 1.9531rem);\n  --font-2xl: clamp(1.728rem, 1.4686rem + 1.2971vw, 2.4414rem);\n  --font-3xl: clamp(2.0736rem, 1.7179rem + 1.7785vw, 3.0518rem);\n  --font-4xl: clamp(2.4883rem, 2.006rem + 2.4116vw, 3.8147rem);\n}\n\n/* Usage */\nh1 { font-size: var(--font-3xl); }\np  { font-size: var(--font-base); }","scaleTable":[{"step":"XS","min":"0.6944rem","max":"0.8rem","clamp":"clamp(0.6944rem, 0.6561rem + 0.1919vw, 0.8rem)"},{"step":"SM","min":"0.8333rem","max":"1rem","clamp":"clamp(0.8333rem, 0.7727rem + 0.303vw, 1rem)"},{"step":"Base","min":"1rem","max":"1.25rem","clamp":"clamp(1rem, 0.9091rem + 0.4545vw, 1.25rem)"},{"step":"LG","min":"1.2rem","max":"1.5625rem","clamp":"clamp(1.2rem, 1.0682rem + 0.6591vw, 1.5625rem)"},{"step":"XL","min":"1.44rem","max":"1.9531rem","clamp":"clamp(1.44rem, 1.2534rem + 0.933vw, 1.9531rem)"},{"step":"2XL","min":"1.728rem","max":"2.4414rem","clamp":"clamp(1.728rem, 1.4686rem + 1.2971vw, 2.4414rem)"},{"step":"3XL","min":"2.0736rem","max":"3.0518rem","clamp":"clamp(2.0736rem, 1.7179rem + 1.7785vw, 3.0518rem)"},{"step":"4XL","min":"2.4883rem","max":"3.8147rem","clamp":"clamp(2.4883rem, 2.006rem + 2.4116vw, 3.8147rem)"}],"previewHtml":"<div class=\"io-ftg-demo\"><p class=\"io-ftg-xs\">The quick brown fox — XS</p><p class=\"io-ftg-sm\">The quick brown fox — SM</p><p class=\"io-ftg-base\">The quick brown fox — Base</p><p class=\"io-ftg-lg\">The quick brown fox — LG</p><p class=\"io-ftg-xl\">The quick brown fox — XL</p><p class=\"io-ftg-2xl\">The quick brown fox — 2XL</p><p class=\"io-ftg-3xl\">The quick brown fox — 3XL</p><p class=\"io-ftg-4xl\">The quick brown fox — 4XL</p></div>","previewCss":".io-ftg-demo { font-family: system-ui, sans-serif; color: #1a1a2e; }\n.io-ftg-demo p { margin: 0 0 0.5em 0; line-height: 1.3; }\n.io-ftg-xs { font-size: clamp(0.6944rem, 0.6561rem + 0.1919vw, 0.8rem); }\n.io-ftg-sm { font-size: clamp(0.8333rem, 0.7727rem + 0.303vw, 1rem); }\n.io-ftg-base { font-size: clamp(1rem, 0.9091rem + 0.4545vw, 1.25rem); }\n.io-ftg-lg { font-size: clamp(1.2rem, 1.0682rem + 0.6591vw, 1.5625rem); }\n.io-ftg-xl { font-size: clamp(1.44rem, 1.2534rem + 0.933vw, 1.9531rem); }\n.io-ftg-2xl { font-size: clamp(1.728rem, 1.4686rem + 1.2971vw, 2.4414rem); }\n.io-ftg-3xl { font-size: clamp(2.0736rem, 1.7179rem + 1.7785vw, 3.0518rem); }\n.io-ftg-4xl { font-size: clamp(2.4883rem, 2.006rem + 2.4116vw, 3.8147rem); }"},"credits_used":5,"credits_remaining":null}},"utility_classes_px":{"summary":"Utility classes (px)","value":{"tool":"css-fluid-typography-generator","tool_version":"1.0.2","outputs":{"cssCode":".text-xs {\n  font-size: clamp(10.13px, 11.39px + -0.0875vw, 11.06px);\n}\n\n.text-sm {\n  font-size: clamp(12.44px, 12.07px + 0.0994vw, 13.5px);\n}\n\n.text-base {\n  font-size: clamp(14px, 12.59px + 0.3756vw, 18px);\n}\n\n.text-lg {\n  font-size: clamp(15.75px, 12.85px + 0.7741vw, 23.99px);\n}\n\n.text-xl {\n  font-size: clamp(17.72px, 12.7px + 1.3395vw, 31.98px);\n}\n\n.text-2xl {\n  font-size: clamp(19.93px, 11.94px + 2.1316vw, 42.63px);\n}\n\n.text-3xl {\n  font-size: clamp(22.43px, 10.31px + 3.2307vw, 56.83px);\n}\n\n.text-4xl {\n  font-size: clamp(25.23px, 7.44px + 4.7445vw, 75.76px);\n}","scaleTable":[{"step":"XS","min":"11.06px","max":"10.13px","clamp":"clamp(10.13px, 11.39px + -0.0875vw, 11.06px)"},{"step":"SM","min":"12.44px","max":"13.5px","clamp":"clamp(12.44px, 12.07px + 0.0994vw, 13.5px)"},{"step":"Base","min":"14px","max":"18px","clamp":"clamp(14px, 12.59px + 0.3756vw, 18px)"},{"step":"LG","min":"15.75px","max":"23.99px","clamp":"clamp(15.75px, 12.85px + 0.7741vw, 23.99px)"},{"step":"XL","min":"17.72px","max":"31.98px","clamp":"clamp(17.72px, 12.7px + 1.3395vw, 31.98px)"},{"step":"2XL","min":"19.93px","max":"42.63px","clamp":"clamp(19.93px, 11.94px + 2.1316vw, 42.63px)"},{"step":"3XL","min":"22.43px","max":"56.83px","clamp":"clamp(22.43px, 10.31px + 3.2307vw, 56.83px)"},{"step":"4XL","min":"25.23px","max":"75.76px","clamp":"clamp(25.23px, 7.44px + 4.7445vw, 75.76px)"}],"previewHtml":"<div class=\"io-ftg-demo\"><p class=\"io-ftg-xs\">The quick brown fox — XS</p><p class=\"io-ftg-sm\">The quick brown fox — SM</p><p class=\"io-ftg-base\">The quick brown fox — Base</p><p class=\"io-ftg-lg\">The quick brown fox — LG</p><p class=\"io-ftg-xl\">The quick brown fox — XL</p><p class=\"io-ftg-2xl\">The quick brown fox — 2XL</p><p class=\"io-ftg-3xl\">The quick brown fox — 3XL</p><p class=\"io-ftg-4xl\">The quick brown fox — 4XL</p></div>","previewCss":".io-ftg-demo { font-family: system-ui, sans-serif; color: #1a1a2e; }\n.io-ftg-demo p { margin: 0 0 0.5em 0; line-height: 1.3; }\n.io-ftg-xs { font-size: clamp(10.13px, 11.39px + -0.0875vw, 11.06px); }\n.io-ftg-sm { font-size: clamp(12.44px, 12.07px + 0.0994vw, 13.5px); }\n.io-ftg-base { font-size: clamp(14px, 12.59px + 0.3756vw, 18px); }\n.io-ftg-lg { font-size: clamp(15.75px, 12.85px + 0.7741vw, 23.99px); }\n.io-ftg-xl { font-size: clamp(17.72px, 12.7px + 1.3395vw, 31.98px); }\n.io-ftg-2xl { font-size: clamp(19.93px, 11.94px + 2.1316vw, 42.63px); }\n.io-ftg-3xl { font-size: clamp(22.43px, 10.31px + 3.2307vw, 56.83px); }\n.io-ftg-4xl { font-size: clamp(25.23px, 7.44px + 4.7445vw, 75.76px); }"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS output"},"scaleTable":{"type":"array","description":"Type scale breakdown","items":{"type":"object","properties":{"step":{"type":"string","description":"Step"},"min":{"type":"string","description":"Min"},"max":{"type":"string","description":"Max"},"clamp":{"type":"string","description":"clamp()"}}},"x-iotools-columns":["step","min","max","clamp"]},"previewHtml":{"type":"string","description":"Preview HTML"},"previewCss":{"type":"string","description":"Preview CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-glassmorphism-generator":{"post":{"operationId":"run_css_glassmorphism_generator","summary":"CSS Glassmorphism Generator","tags":["Generators"],"description":"Generate a frosted-glass CSS block — translucent rgba() background, backdrop-filter blur (with -webkit- prefix), a soft white border and a subtle shadow — from a color, opacity, blur and radius.\n\n[Try CSS Glassmorphism Generator in your browser →](https://iotools.cloud/tool/css-glassmorphism-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"backgroundColor":{"type":"string","description":"Background Color"},"backgroundOpacity":{"type":"number","description":"Background Opacity (%)","minimum":0,"maximum":100},"blurAmount":{"type":"number","description":"Blur (px)","minimum":0,"maximum":40},"borderRadius":{"type":"number","description":"Border Radius (px)","minimum":0,"maximum":50},"borderOpacity":{"type":"number","description":"Border Opacity (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"frosted_glass_card":{"summary":"Frosted glass card","value":{"backgroundColor":"#ffffff","backgroundOpacity":"20","blurAmount":"10","borderRadius":"16","borderOpacity":"30"}},"dark_glass_panel":{"summary":"Dark glass panel","value":{"backgroundColor":"#000000","backgroundOpacity":"40","blurAmount":"16","borderRadius":"20","borderOpacity":"15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"frosted_glass_card":{"summary":"Frosted glass card","value":{"tool":"css-glassmorphism-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: rgba(255, 255, 255, 0.20);\nbackdrop-filter: blur(10px);\n-webkit-backdrop-filter: blur(10px);\nborder: 1px solid rgba(255, 255, 255, 0.30);\nborder-radius: 16px;\nbox-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.10);"},"credits_used":5,"credits_remaining":null}},"dark_glass_panel":{"summary":"Dark glass panel","value":{"tool":"css-glassmorphism-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: rgba(0, 0, 0, 0.40);\nbackdrop-filter: blur(16px);\n-webkit-backdrop-filter: blur(16px);\nborder: 1px solid rgba(255, 255, 255, 0.15);\nborder-radius: 20px;\nbox-shadow: 0px 4px 30px 0px rgba(0, 0, 0, 0.10);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-glitch-text-generator":{"post":{"operationId":"run_css_glitch_text_generator","summary":"CSS Glitch Text Effect Generator","tags":["Generators"],"description":"Generate an animated CSS glitch text effect — chromatic RGB split, clipped bands, jitter or flicker — with your own text, colors, size, intensity and speed. Copy the ready-made CSS + HTML.\n\n[Try CSS Glitch Text Effect Generator in your browser →](https://iotools.cloud/tool/css-glitch-text-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"effect":{"enum":["chromatic","clip","jitter","flicker"],"description":"Glitch Effect"},"fontSize":{"type":"number","description":"Font Size (px)","minimum":16,"maximum":160},"fontFamily":{"enum":["mono","sans","serif"],"description":"Font"},"textColor":{"type":"string","description":"Text Color"},"bgColor":{"type":"string","description":"Background Color"},"glitchColor1":{"type":"string","description":"Glitch Color 1"},"glitchColor2":{"type":"string","description":"Glitch Color 2"},"intensity":{"type":"number","description":"Intensity","minimum":1,"maximum":12},"duration":{"type":"number","description":"Loop Duration (seconds)","minimum":0.2,"maximum":5}},"required":[]},"examples":{"chromatic_split":{"summary":"Chromatic split","value":{"text":"GLITCH","effect":"chromatic","fontSize":"80","fontFamily":"mono","textColor":"#ffffff","bgColor":"#222222","glitchColor1":"#00ffff","glitchColor2":"#ff00ff","intensity":"4","duration":"1.5"}},"clipped_bands":{"summary":"Clipped bands","value":{"text":"SYSTEM ERROR","effect":"clip","fontSize":"64","fontFamily":"mono","textColor":"#f5f5f5","bgColor":"#0b0b0f","glitchColor1":"#00ffff","glitchColor2":"#ff2965","intensity":"5","duration":"2"}},"jitter_skew":{"summary":"Jitter & skew","value":{"text":"404","effect":"jitter","fontSize":"120","fontFamily":"sans","textColor":"#ffffff","bgColor":"#111111","glitchColor1":"#39ff14","glitchColor2":"#ff00ff","intensity":"6","duration":"1"}},"flicker":{"summary":"Flicker","value":{"text":"NEON","effect":"flicker","fontSize":"96","fontFamily":"serif","textColor":"#fff6d5","bgColor":"#1a1020","glitchColor1":"#ff8a00","glitchColor2":"#00c2ff","intensity":"3","duration":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"chromatic_split":{"summary":"Chromatic split","value":{"tool":"css-glitch-text-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-glitch {\n  position: relative;\n  display: inline-block;\n  margin: 0;\n  padding: 0.2em 0.4em;\n  background-color: #222222;\n  color: #ffffff;\n  font-family: \"SFMono-Regular\", ui-monospace, \"Courier New\", monospace;\n  font-size: 80px;\n  font-weight: 700;\n  letter-spacing: 0.04em;\n  line-height: 1.1;\n  animation: io-glitch-chromatic 1.5s infinite linear alternate-reverse;\n}\n\n@keyframes io-glitch-chromatic {\n  0% {\n    text-shadow: 4px 0 #00ffff, -4px 0 #ff00ff;\n  }\n  20% {\n    text-shadow: -2px 0 #00ffff, 2px 0 #ff00ff;\n  }\n  40% {\n    text-shadow: 4px 0 #00ffff, -2px 0 #ff00ff;\n  }\n  60% {\n    text-shadow: -4px 0 #00ffff, 4px 0 #ff00ff;\n  }\n  80% {\n    text-shadow: 2px 0 #00ffff, -4px 0 #ff00ff;\n  }\n  100% {\n    text-shadow: 4px 0 #00ffff, -4px 0 #ff00ff;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-glitch {\n    animation: none;\n  }\n}","htmlCode":"<div class=\"io-glitch\" data-text=\"GLITCH\">GLITCH</div>"},"credits_used":5,"credits_remaining":null}},"clipped_bands":{"summary":"Clipped bands","value":{"tool":"css-glitch-text-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-glitch {\n  position: relative;\n  display: inline-block;\n  margin: 0;\n  padding: 0.2em 0.4em;\n  background-color: #0b0b0f;\n  color: #f5f5f5;\n  font-family: \"SFMono-Regular\", ui-monospace, \"Courier New\", monospace;\n  font-size: 64px;\n  font-weight: 700;\n  letter-spacing: 0.04em;\n  line-height: 1.1;\n}\n\n.io-glitch::before, .io-glitch::after {\n  content: attr(data-text);\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  padding: inherit;\n  box-sizing: border-box;\n  background-color: #0b0b0f;\n  overflow: hidden;\n}\n\n.io-glitch::before {\n  left: 5px;\n  text-shadow: -5px 0 #00ffff;\n  animation: io-glitch-clip-a 2s infinite linear alternate-reverse;\n}\n\n.io-glitch::after {\n  left: -5px;\n  text-shadow: 5px 0 #ff2965;\n  animation: io-glitch-clip-b 1.6s infinite linear alternate-reverse;\n}\n\n@keyframes io-glitch-clip-a {\n  0% {\n    clip-path: inset(12% 0 62% 0);\n  }\n  20% {\n    clip-path: inset(44% 0 30% 0);\n  }\n  40% {\n    clip-path: inset(8% 0 74% 0);\n  }\n  60% {\n    clip-path: inset(66% 0 14% 0);\n  }\n  80% {\n    clip-path: inset(26% 0 52% 0);\n  }\n  100% {\n    clip-path: inset(12% 0 62% 0);\n  }\n}\n\n@keyframes io-glitch-clip-b {\n  0% {\n    clip-path: inset(62% 0 12% 0);\n  }\n  20% {\n    clip-path: inset(30% 0 44% 0);\n  }\n  40% {\n    clip-path: inset(74% 0 8% 0);\n  }\n  60% {\n    clip-path: inset(14% 0 66% 0);\n  }\n  80% {\n    clip-path: inset(52% 0 26% 0);\n  }\n  100% {\n    clip-path: inset(62% 0 12% 0);\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-glitch::before,\n  .io-glitch::after {\n    animation: none;\n  }\n}","htmlCode":"<div class=\"io-glitch\" data-text=\"SYSTEM ERROR\">SYSTEM ERROR</div>"},"credits_used":5,"credits_remaining":null}},"jitter_skew":{"summary":"Jitter & skew","value":{"tool":"css-glitch-text-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-glitch {\n  position: relative;\n  display: inline-block;\n  margin: 0;\n  padding: 0.2em 0.4em;\n  background-color: #111111;\n  color: #ffffff;\n  font-family: \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 120px;\n  font-weight: 700;\n  letter-spacing: 0.04em;\n  line-height: 1.1;\n  animation: io-glitch-jitter 1s infinite linear alternate-reverse;\n}\n\n@keyframes io-glitch-jitter {\n  0%, 100% {\n    transform: translate(0px, 0) skewX(0deg);\n    text-shadow: 0px 0 #39ff14, 0px 0 #ff00ff;\n  }\n  10% {\n    transform: translate(-6px, 0) skewX(-3deg);\n    text-shadow: 3px 0 #39ff14, -3px 0 #ff00ff;\n  }\n  20% {\n    transform: translate(3px, 0) skewX(2deg);\n    text-shadow: -6px 0 #39ff14, 6px 0 #ff00ff;\n  }\n  30% {\n    transform: translate(0px, 0) skewX(0deg);\n    text-shadow: 0px 0 #39ff14, 0px 0 #ff00ff;\n  }\n  45% {\n    transform: translate(6px, 0) skewX(4deg);\n    text-shadow: -3px 0 #39ff14, 3px 0 #ff00ff;\n  }\n  55% {\n    transform: translate(-3px, 0) skewX(-2deg);\n    text-shadow: 6px 0 #39ff14, -6px 0 #ff00ff;\n  }\n  70% {\n    transform: translate(0px, 0) skewX(0deg);\n    text-shadow: 0px 0 #39ff14, 0px 0 #ff00ff;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-glitch {\n    animation: none;\n  }\n}","htmlCode":"<div class=\"io-glitch\" data-text=\"404\">404</div>"},"credits_used":5,"credits_remaining":null}},"flicker":{"summary":"Flicker","value":{"tool":"css-glitch-text-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-glitch {\n  position: relative;\n  display: inline-block;\n  margin: 0;\n  padding: 0.2em 0.4em;\n  background-color: #1a1020;\n  color: #fff6d5;\n  font-family: Georgia, \"Times New Roman\", serif;\n  font-size: 96px;\n  font-weight: 700;\n  letter-spacing: 0.04em;\n  line-height: 1.1;\n  animation: io-glitch-flicker 3s infinite linear alternate-reverse;\n}\n\n@keyframes io-glitch-flicker {\n  0%, 18%, 22%, 60%, 64%, 100% {\n    opacity: 1;\n    text-shadow: 3px 0 #ff8a00, -3px 0 #00c2ff;\n  }\n  19%, 21% {\n    opacity: 0.35;\n    text-shadow: none;\n  }\n  61%, 63% {\n    opacity: 0.35;\n    text-shadow: none;\n  }\n  80% {\n    opacity: 0.7;\n    text-shadow: -3px 0 #ff8a00, 3px 0 #00c2ff;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-glitch {\n    animation: none;\n  }\n}","htmlCode":"<div class=\"io-glitch\" data-text=\"NEON\">NEON</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-text-shadow-generator":{"post":{"operationId":"run_css_text_shadow_generator","summary":"CSS Text Shadow Generator","tags":["Generators"],"description":"Build a multi-layer CSS text-shadow — up to four layers of offset, blur, color and opacity — with a live preview on your own text, then copy the declaration, full CSS rule and HTML.\n\n[Try CSS Text Shadow Generator in your browser →](https://iotools.cloud/tool/css-text-shadow-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Sample Text"},"layers":{"type":"number","description":"Shadow Layers","minimum":1,"maximum":4},"fontSize":{"type":"number","description":"Font Size (px)","minimum":16,"maximum":160},"fontFamily":{"enum":["sans","serif","mono","display"],"description":"Font"},"fontWeight":{"enum":["400","700","900"],"description":"Font Weight"},"textColor":{"type":"string","description":"Text Color"},"bgColor":{"type":"string","description":"Background Color"},"offsetX1":{"type":"number","description":"Horizontal Offset (px)","minimum":-50,"maximum":50},"offsetY1":{"type":"number","description":"Vertical Offset (px)","minimum":-50,"maximum":50},"blur1":{"type":"number","description":"Blur Radius (px)","minimum":0,"maximum":60},"color1":{"type":"string","description":"Shadow Color"},"opacity1":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"offsetX2":{"type":"number","description":"Horizontal Offset (px)","minimum":-50,"maximum":50},"offsetY2":{"type":"number","description":"Vertical Offset (px)","minimum":-50,"maximum":50},"blur2":{"type":"number","description":"Blur Radius (px)","minimum":0,"maximum":60},"color2":{"type":"string","description":"Shadow Color"},"opacity2":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"offsetX3":{"type":"number","description":"Horizontal Offset (px)","minimum":-50,"maximum":50},"offsetY3":{"type":"number","description":"Vertical Offset (px)","minimum":-50,"maximum":50},"blur3":{"type":"number","description":"Blur Radius (px)","minimum":0,"maximum":60},"color3":{"type":"string","description":"Shadow Color"},"opacity3":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"offsetX4":{"type":"number","description":"Horizontal Offset (px)","minimum":-50,"maximum":50},"offsetY4":{"type":"number","description":"Vertical Offset (px)","minimum":-50,"maximum":50},"blur4":{"type":"number","description":"Blur Radius (px)","minimum":0,"maximum":60},"color4":{"type":"string","description":"Shadow Color"},"opacity4":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"neon_glow":{"summary":"Neon glow","value":{"text":"NEON","fontSize":"96","fontFamily":"sans","fontWeight":"400","textColor":"#ffffff","bgColor":"#0b0b1a","layers":"4","offsetX1":"0","offsetY1":"0","blur1":"4","color1":"#ffffff","opacity1":"100","offsetX2":"0","offsetY2":"0","blur2":"10","color2":"#ff00de","opacity2":"100","offsetX3":"0","offsetY3":"0","blur3":"20","color3":"#ff00de","opacity3":"100","offsetX4":"0","offsetY4":"0","blur4":"40","color4":"#ff00de","opacity4":"100"}},"soft_drop_shadow":{"summary":"Soft drop shadow","value":{"text":"Text Shadow","fontSize":"72","fontFamily":"sans","fontWeight":"700","textColor":"#1f2937","bgColor":"#f8fafc","layers":"1","offsetX1":"2","offsetY1":"2","blur1":"4","color1":"#000000","opacity1":"35"}},"retro_3d":{"summary":"Retro 3D","value":{"text":"RETRO","fontSize":"96","fontFamily":"display","fontWeight":"400","textColor":"#f97316","bgColor":"#fef3c7","layers":"4","offsetX1":"2","offsetY1":"2","blur1":"0","color1":"#c2410c","opacity1":"100","offsetX2":"4","offsetY2":"4","blur2":"0","color2":"#9a3412","opacity2":"100","offsetX3":"6","offsetY3":"6","blur3":"0","color3":"#7c2d12","opacity3":"100","offsetX4":"10","offsetY4":"10","blur4":"8","color4":"#000000","opacity4":"30"}},"text_outline":{"summary":"Text outline","value":{"text":"OUTLINE","fontSize":"80","fontFamily":"sans","fontWeight":"900","textColor":"#ffffff","bgColor":"#3b82f6","layers":"4","offsetX1":"-2","offsetY1":"-2","blur1":"0","color1":"#111827","opacity1":"100","offsetX2":"2","offsetY2":"-2","blur2":"0","color2":"#111827","opacity2":"100","offsetX3":"-2","offsetY3":"2","blur3":"0","color3":"#111827","opacity3":"100","offsetX4":"2","offsetY4":"2","blur4":"0","color4":"#111827","opacity4":"100"}},"letterpress":{"summary":"Letterpress","value":{"text":"Letterpress","fontSize":"64","fontFamily":"serif","fontWeight":"700","textColor":"#6b7280","bgColor":"#e5e7eb","layers":"2","offsetX1":"0","offsetY1":"1","blur1":"0","color1":"#ffffff","opacity1":"80","offsetX2":"0","offsetY2":"-1","blur2":"0","color2":"#000000","opacity2":"20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"neon_glow":{"summary":"Neon glow","value":{"tool":"css-text-shadow-generator","tool_version":"1.0.2","outputs":{"textShadow":"text-shadow: 0 0 4px #ffffff, 0 0 10px #ff00de, 0 0 20px #ff00de, 0 0 40px #ff00de;","cssCode":".text-shadow-box {\n  background-color: #0b0b1a;\n  padding: 32px 40px;\n}\n\n.text-shadow {\n  margin: 0;\n  color: #ffffff;\n  font-family: \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 96px;\n  font-weight: 400;\n  line-height: 1.2;\n  overflow-wrap: anywhere;\n  text-shadow:\n    0 0 4px #ffffff,\n    0 0 10px #ff00de,\n    0 0 20px #ff00de,\n    0 0 40px #ff00de;\n}","htmlCode":"<div class=\"text-shadow-box\">\n  <p class=\"text-shadow\">NEON</p>\n</div>"},"credits_used":5,"credits_remaining":null}},"soft_drop_shadow":{"summary":"Soft drop shadow","value":{"tool":"css-text-shadow-generator","tool_version":"1.0.2","outputs":{"textShadow":"text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.35);","cssCode":".text-shadow-box {\n  background-color: #f8fafc;\n  padding: 32px 40px;\n}\n\n.text-shadow {\n  margin: 0;\n  color: #1f2937;\n  font-family: \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 72px;\n  font-weight: 700;\n  line-height: 1.2;\n  overflow-wrap: anywhere;\n  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.35);\n}","htmlCode":"<div class=\"text-shadow-box\">\n  <p class=\"text-shadow\">Text Shadow</p>\n</div>"},"credits_used":5,"credits_remaining":null}},"retro_3d":{"summary":"Retro 3D","value":{"tool":"css-text-shadow-generator","tool_version":"1.0.2","outputs":{"textShadow":"text-shadow: 2px 2px 0 #c2410c, 4px 4px 0 #9a3412, 6px 6px 0 #7c2d12, 10px 10px 8px rgba(0, 0, 0, 0.3);","cssCode":".text-shadow-box {\n  background-color: #fef3c7;\n  padding: 32px 40px;\n}\n\n.text-shadow {\n  margin: 0;\n  color: #f97316;\n  font-family: Impact, \"Arial Black\", sans-serif;\n  font-size: 96px;\n  font-weight: 400;\n  line-height: 1.2;\n  overflow-wrap: anywhere;\n  text-shadow:\n    2px 2px 0 #c2410c,\n    4px 4px 0 #9a3412,\n    6px 6px 0 #7c2d12,\n    10px 10px 8px rgba(0, 0, 0, 0.3);\n}","htmlCode":"<div class=\"text-shadow-box\">\n  <p class=\"text-shadow\">RETRO</p>\n</div>"},"credits_used":5,"credits_remaining":null}},"text_outline":{"summary":"Text outline","value":{"tool":"css-text-shadow-generator","tool_version":"1.0.2","outputs":{"textShadow":"text-shadow: -2px -2px 0 #111827, 2px -2px 0 #111827, -2px 2px 0 #111827, 2px 2px 0 #111827;","cssCode":".text-shadow-box {\n  background-color: #3b82f6;\n  padding: 32px 40px;\n}\n\n.text-shadow {\n  margin: 0;\n  color: #ffffff;\n  font-family: \"Helvetica Neue\", Arial, sans-serif;\n  font-size: 80px;\n  font-weight: 900;\n  line-height: 1.2;\n  overflow-wrap: anywhere;\n  text-shadow:\n    -2px -2px 0 #111827,\n    2px -2px 0 #111827,\n    -2px 2px 0 #111827,\n    2px 2px 0 #111827;\n}","htmlCode":"<div class=\"text-shadow-box\">\n  <p class=\"text-shadow\">OUTLINE</p>\n</div>"},"credits_used":5,"credits_remaining":null}},"letterpress":{"summary":"Letterpress","value":{"tool":"css-text-shadow-generator","tool_version":"1.0.2","outputs":{"textShadow":"text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8), 0 -1px 0 rgba(0, 0, 0, 0.2);","cssCode":".text-shadow-box {\n  background-color: #e5e7eb;\n  padding: 32px 40px;\n}\n\n.text-shadow {\n  margin: 0;\n  color: #6b7280;\n  font-family: Georgia, \"Times New Roman\", serif;\n  font-size: 64px;\n  font-weight: 700;\n  line-height: 1.2;\n  overflow-wrap: anywhere;\n  text-shadow:\n    0 1px 0 rgba(255, 255, 255, 0.8),\n    0 -1px 0 rgba(0, 0, 0, 0.2);\n}","htmlCode":"<div class=\"text-shadow-box\">\n  <p class=\"text-shadow\">Letterpress</p>\n</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"textShadow":{"type":"string","description":"text-shadow declaration"},"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-gradient-generator":{"post":{"operationId":"run_css_gradient_generator","summary":"CSS Gradient Generator","tags":["Generators"],"description":"Generate a CSS linear, radial, or conic gradient declaration from a set of color stops — copy the ready-made background CSS into your stylesheet.\n\n[Try CSS Gradient Generator in your browser →](https://iotools.cloud/tool/css-gradient-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"gradientType":{"enum":["linear","radial","conic"],"description":"Gradient Type"},"angle":{"type":"number","description":"Angle (deg)","minimum":0,"maximum":360},"color1":{"type":"string","description":"Color 1"},"position1":{"type":"number","description":"Position 1 (%)","minimum":0,"maximum":100},"color2":{"type":"string","description":"Color 2"},"position2":{"type":"number","description":"Position 2 (%)","minimum":0,"maximum":100},"useColor3":{"type":"boolean","description":"Add a third color stop"},"color3":{"type":"string","description":"Color 3"},"position3":{"type":"number","description":"Position 3 (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"linear_two_stops":{"summary":"Linear, two stops","value":{"gradientType":"linear","angle":"90","color1":"#ff0000","position1":"0","color2":"#0000ff","position2":"100","useColor3":"","color3":"#ff6b6b","position3":"50"}},"radial_two_stops":{"summary":"Radial, two stops","value":{"gradientType":"radial","angle":"90","color1":"#464aff","position1":"0","color2":"#00d4ff","position2":"100","useColor3":"","color3":"#ff6b6b","position3":"50"}},"conic_three_stops":{"summary":"Conic, three stops","value":{"gradientType":"conic","angle":"45","color1":"#ff0000","position1":"0","color2":"#00ff00","position2":"50","useColor3":"true","color3":"#0000ff","position3":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"linear_two_stops":{"summary":"Linear, two stops","value":{"tool":"css-gradient-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: linear-gradient(90deg, #ff0000 0%, #0000ff 100%);"},"credits_used":5,"credits_remaining":null}},"radial_two_stops":{"summary":"Radial, two stops","value":{"tool":"css-gradient-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: radial-gradient(#464aff 0%, #00d4ff 100%);"},"credits_used":5,"credits_remaining":null}},"conic_three_stops":{"summary":"Conic, three stops","value":{"tool":"css-gradient-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: conic-gradient(from 45deg, #ff0000 0%, #00ff00 50%, #0000ff 100%);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-aurora-blob-generator":{"post":{"operationId":"run_css_aurora_blob_generator","summary":"Aurora / Gradient Blob CSS Background Generator","tags":["Generators"],"description":"Generate a soft, blurred 'aurora' CSS background from 2-5 colored radial-gradient blobs, with adjustable blur, positions and sizes, plus an optional drifting @keyframes animation. Copy the CSS or preview it live.\n\n[Try Aurora / Gradient Blob CSS Background Generator in your browser →](https://iotools.cloud/tool/css-aurora-blob-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseColor":{"type":"string","description":"Base Color"},"blur":{"type":"number","description":"Blur (px)","minimum":0,"maximum":150},"blobCount":{"enum":["2","3","4","5"],"description":"Number of Blobs"},"blob1Color":{"type":"string","description":"Color"},"blob1X":{"type":"number","description":"Position X %","minimum":0,"maximum":100},"blob1Y":{"type":"number","description":"Position Y %","minimum":0,"maximum":100},"blob1Size":{"type":"number","description":"Size %","minimum":10,"maximum":150},"blob2Color":{"type":"string","description":"Color"},"blob2X":{"type":"number","description":"Position X %","minimum":0,"maximum":100},"blob2Y":{"type":"number","description":"Position Y %","minimum":0,"maximum":100},"blob2Size":{"type":"number","description":"Size %","minimum":10,"maximum":150},"blob3Color":{"type":"string","description":"Color"},"blob3X":{"type":"number","description":"Position X %","minimum":0,"maximum":100},"blob3Y":{"type":"number","description":"Position Y %","minimum":0,"maximum":100},"blob3Size":{"type":"number","description":"Size %","minimum":10,"maximum":150},"blob4Color":{"type":"string","description":"Color"},"blob4X":{"type":"number","description":"Position X %","minimum":0,"maximum":100},"blob4Y":{"type":"number","description":"Position Y %","minimum":0,"maximum":100},"blob4Size":{"type":"number","description":"Size %","minimum":10,"maximum":150},"blob5Color":{"type":"string","description":"Color"},"blob5X":{"type":"number","description":"Position X %","minimum":0,"maximum":100},"blob5Y":{"type":"number","description":"Position Y %","minimum":0,"maximum":100},"blob5Size":{"type":"number","description":"Size %","minimum":10,"maximum":150},"animate":{"type":"boolean","description":"Animate (drift blobs slowly)"},"animationDuration":{"type":"number","description":"Animation Duration (s)","minimum":5,"maximum":60}},"required":[]},"examples":{"two_blob_static_aurora":{"summary":"Two-blob static aurora","value":{"baseColor":"#0f0f1e","blur":"60","blobCount":"2","blob1Color":"#ff4d8a","blob1X":"20","blob1Y":"30","blob1Size":"60","blob2Color":"#5a3dff","blob2X":"75","blob2Y":"25","blob2Size":"55","animate":"","animationDuration":"20"}},"three_blob_animated_aurora":{"summary":"Three-blob animated aurora","value":{"baseColor":"#0f0f1e","blur":"60","blobCount":"3","blob1Color":"#ff4d8a","blob1X":"20","blob1Y":"30","blob1Size":"60","blob2Color":"#5a3dff","blob2X":"75","blob2Y":"25","blob2Size":"55","blob3Color":"#22d3ee","blob3X":"65","blob3Y":"75","blob3Size":"50","animate":"true","animationDuration":"20"}},"custom_four_blob_palette_mixed_hex_formats":{"summary":"Custom four-blob palette (mixed hex formats)","value":{"baseColor":"#101014","blur":"40","blobCount":"4","blob1Color":"#FF00AA","blob1X":"10","blob1Y":"15","blob1Size":"80","blob2Color":"00ffcc","blob2X":"90","blob2Y":"10","blob2Size":"70","blob3Color":"#abc","blob3X":"50","blob3Y":"90","blob3Size":"65","blob4Color":"#204060","blob4X":"20","blob4Y":"70","blob4Size":"55","animate":"","animationDuration":"20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_blob_static_aurora":{"summary":"Two-blob static aurora","value":{"tool":"css-aurora-blob-generator","tool_version":"1.0.2","outputs":{"cssCode":".aurora-bg {\n  position: relative;\n  background-color: #0f0f1e;\n  overflow: hidden;\n  isolation: isolate;\n}\n\n.aurora-bg::before {\n  content: \"\";\n  position: absolute;\n  inset: -20%;\n  z-index: -1;\n  filter: blur(60px);\n  background-image:\n    radial-gradient(circle, #ff4d8a 0%, transparent 70%),\n    radial-gradient(circle, #5a3dff 0%, transparent 70%);\n  background-repeat: no-repeat;\n  background-position: 20% 30%, 75% 25%;\n  background-size: 60% 60%, 55% 55%;\n}","previewHtml":"<div style=\"position:relative;width:100%;height:220px;overflow:hidden;border-radius:12px;background-color:#0f0f1e;isolation:isolate;\"><div style=\"position:absolute;inset:-20%;filter:blur(60px);background-image:radial-gradient(circle, #ff4d8a 0%, transparent 70%), radial-gradient(circle, #5a3dff 0%, transparent 70%);background-repeat:no-repeat;background-position:20% 30%, 75% 25%;background-size:60% 60%, 55% 55%;\"></div></div>"},"credits_used":5,"credits_remaining":null}},"three_blob_animated_aurora":{"summary":"Three-blob animated aurora","value":{"tool":"css-aurora-blob-generator","tool_version":"1.0.2","outputs":{"cssCode":".aurora-bg {\n  position: relative;\n  background-color: #0f0f1e;\n  overflow: hidden;\n  isolation: isolate;\n}\n\n.aurora-bg::before {\n  content: \"\";\n  position: absolute;\n  inset: -20%;\n  z-index: -1;\n  filter: blur(60px);\n  background-image:\n    radial-gradient(circle, #ff4d8a 0%, transparent 70%),\n    radial-gradient(circle, #5a3dff 0%, transparent 70%),\n    radial-gradient(circle, #22d3ee 0%, transparent 70%);\n  background-repeat: no-repeat;\n  background-position: 20% 30%, 75% 25%, 65% 75%;\n  background-size: 60% 60%, 55% 55%, 50% 50%;\n  animation: aurora-drift 20s ease-in-out infinite;\n}\n\n@keyframes aurora-drift {\n  0%, 100% {\n    background-position: 20% 30%, 75% 25%, 65% 75%;\n  }\n  50% {\n    background-position: 34% 18%, 59% 38%, 77% 60%;\n  }\n}","previewHtml":"<div style=\"position:relative;width:100%;height:220px;overflow:hidden;border-radius:12px;background-color:#0f0f1e;isolation:isolate;\"><div style=\"position:absolute;inset:-20%;filter:blur(60px);background-image:radial-gradient(circle, #ff4d8a 0%, transparent 70%), radial-gradient(circle, #5a3dff 0%, transparent 70%), radial-gradient(circle, #22d3ee 0%, transparent 70%);background-repeat:no-repeat;background-position:20% 30%, 75% 25%, 65% 75%;background-size:60% 60%, 55% 55%, 50% 50%;\"></div></div>"},"credits_used":5,"credits_remaining":null}},"custom_four_blob_palette_mixed_hex_formats":{"summary":"Custom four-blob palette (mixed hex formats)","value":{"tool":"css-aurora-blob-generator","tool_version":"1.0.2","outputs":{"cssCode":".aurora-bg {\n  position: relative;\n  background-color: #101014;\n  overflow: hidden;\n  isolation: isolate;\n}\n\n.aurora-bg::before {\n  content: \"\";\n  position: absolute;\n  inset: -20%;\n  z-index: -1;\n  filter: blur(40px);\n  background-image:\n    radial-gradient(circle, #ff00aa 0%, transparent 70%),\n    radial-gradient(circle, #00ffcc 0%, transparent 70%),\n    radial-gradient(circle, #aabbcc 0%, transparent 70%),\n    radial-gradient(circle, #204060 0%, transparent 70%);\n  background-repeat: no-repeat;\n  background-position: 10% 15%, 90% 10%, 50% 90%, 20% 70%;\n  background-size: 80% 80%, 70% 70%, 65% 65%, 55% 55%;\n}","previewHtml":"<div style=\"position:relative;width:100%;height:220px;overflow:hidden;border-radius:12px;background-color:#101014;isolation:isolate;\"><div style=\"position:absolute;inset:-20%;filter:blur(40px);background-image:radial-gradient(circle, #ff00aa 0%, transparent 70%), radial-gradient(circle, #00ffcc 0%, transparent 70%), radial-gradient(circle, #aabbcc 0%, transparent 70%), radial-gradient(circle, #204060 0%, transparent 70%);background-repeat:no-repeat;background-position:10% 15%, 90% 10%, 50% 90%, 20% 70%;background-size:80% 80%, 70% 70%, 65% 65%, 55% 55%;\"></div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML Snippet (static preview)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-background-pattern-generator":{"post":{"operationId":"run_css_background_pattern_generator","summary":"CSS Background Pattern Generator","tags":["Generators"],"description":"Generate a seamless repeating background pattern in pure CSS — dots, grids, stripes, checkerboards, waves and 3D cubes — with your own colors, scale and opacity. Copy the ready-made CSS rule and HTML snippet, no image file needed.\n\n[Try CSS Background Pattern Generator in your browser →](https://iotools.cloud/tool/css-background-pattern-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pattern":{"enum":["dots","dots-offset","grid","graph","stripes-h","stripes-v","stripes-d","crosshatch","isometric","checkerboard","diamonds","triangles","zigzag","waves","cubes"],"description":"Pattern"},"color":{"type":"string","description":"Pattern color"},"bgColor":{"type":"string","description":"Background color"},"opacity":{"type":"number","description":"Pattern opacity","minimum":5,"maximum":100},"size":{"type":"number","description":"Pattern size","minimum":4,"maximum":160},"weight":{"type":"number","description":"Line weight","minimum":1,"maximum":24},"className":{"type":"string","description":"Class name"}},"required":[]},"examples":{"polka_dots":{"summary":"Polka dots","value":{"pattern":"dots","color":"#6366f1","bgColor":"#ffffff","opacity":"100","size":"32","weight":"3","className":"io-pattern"}},"faint_blueprint_grid":{"summary":"Faint blueprint grid","value":{"pattern":"grid","color":"#0ea5e9","bgColor":"#0f172a","opacity":"35","size":"24","weight":"1","className":"blueprint"}},"diagonal_stripes":{"summary":"Diagonal stripes","value":{"pattern":"stripes-d","color":"#f59e0b","bgColor":"#fffbeb","opacity":"100","size":"20","weight":"6","className":"stripes"}},"checkerboard":{"summary":"Checkerboard","value":{"pattern":"checkerboard","color":"#111827","bgColor":"#f3f4f6","opacity":"100","size":"16","weight":"3","className":"checkers"}},"wave_lines":{"summary":"Wave lines","value":{"pattern":"waves","color":"#0d9488","bgColor":"#ffffff","opacity":"100","size":"40","weight":"3","className":"waves"}},"isometric_cubes":{"summary":"Isometric cubes","value":{"pattern":"cubes","color":"#8b5cf6","bgColor":"#faf5ff","opacity":"100","size":"40","weight":"3","className":"cubes"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"polka_dots":{"summary":"Polka dots","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".io-pattern {\n  background-color: #ffffff;\n  background-image: radial-gradient(circle, #6366f1 3px, transparent 4px);\n  background-size: 32px 32px;\n}","html":"<div class=\"io-pattern\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}},"faint_blueprint_grid":{"summary":"Faint blueprint grid","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".blueprint {\n  background-color: #0f172a;\n  background-image:\n    linear-gradient(to right, rgba(14, 165, 233, 0.35) 1px, transparent 1px),\n    linear-gradient(to bottom, rgba(14, 165, 233, 0.35) 1px, transparent 1px);\n  background-size: 24px 24px;\n}","html":"<div class=\"blueprint\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}},"diagonal_stripes":{"summary":"Diagonal stripes","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".stripes {\n  background-color: #fffbeb;\n  background-image: repeating-linear-gradient(45deg, #f59e0b 0 6px, transparent 6px 20px);\n}","html":"<div class=\"stripes\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}},"checkerboard":{"summary":"Checkerboard","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".checkers {\n  background-color: #f3f4f6;\n  background-image:\n    linear-gradient(45deg, #111827 25%, transparent 25%, transparent 75%, #111827 75%, #111827),\n    linear-gradient(45deg, #111827 25%, transparent 25%, transparent 75%, #111827 75%, #111827);\n  background-size: 32px 32px;\n  background-position:\n    0 0,\n    16px 16px;\n}","html":"<div class=\"checkers\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}},"wave_lines":{"summary":"Wave lines","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".waves {\n  background-color: #ffffff;\n  background-image:\n    radial-gradient(circle at 50% 0, transparent 17px, #0d9488 17px, #0d9488 20px, transparent 20px),\n    radial-gradient(circle at 50% 100%, transparent 17px, #0d9488 17px, #0d9488 20px, transparent 20px);\n  background-size: 40px 40px;\n  background-position:\n    0 0,\n    20px 0;\n}","html":"<div class=\"waves\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}},"isometric_cubes":{"summary":"Isometric cubes","value":{"tool":"css-background-pattern-generator","tool_version":"1.0.2","outputs":{"css":".cubes {\n  background-color: #faf5ff;\n  background-image:\n    linear-gradient(30deg, #8b5cf6 12%, transparent 12.5%, transparent 87%, #8b5cf6 87.5%, #8b5cf6),\n    linear-gradient(150deg, #8b5cf6 12%, transparent 12.5%, transparent 87%, #8b5cf6 87.5%, #8b5cf6),\n    linear-gradient(30deg, #8b5cf6 12%, transparent 12.5%, transparent 87%, #8b5cf6 87.5%, #8b5cf6),\n    linear-gradient(150deg, #8b5cf6 12%, transparent 12.5%, transparent 87%, #8b5cf6 87.5%, #8b5cf6),\n    linear-gradient(60deg, rgba(139, 92, 246, 0.45) 25%, transparent 25.5%, transparent 75%, rgba(139, 92, 246, 0.45) 75%, rgba(139, 92, 246, 0.45)),\n    linear-gradient(60deg, rgba(139, 92, 246, 0.45) 25%, transparent 25.5%, transparent 75%, rgba(139, 92, 246, 0.45) 75%, rgba(139, 92, 246, 0.45));\n  background-size: 80px 140px;\n  background-position:\n    0 0,\n    0 0,\n    40px 70px,\n    40px 70px,\n    0 0,\n    40px 70px;\n}","html":"<div class=\"cubes\" style=\"min-height: 260px\"></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"css":{"type":"string","description":"CSS"},"html":{"type":"string","description":"HTML snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-gradient-mesh-generator":{"post":{"operationId":"run_css_gradient_mesh_generator","summary":"CSS Gradient Mesh Generator","tags":["Generators"],"description":"Generate a soft, multi-color \"mesh gradient\" CSS background from four corner colors layered as radial-gradients over a base color (or the same shape as SVG), with adjustable blend size, falloff, and an optional grain overlay.\n\n[Try CSS Gradient Mesh Generator in your browser →](https://iotools.cloud/tool/css-gradient-mesh-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colorTopLeft":{"type":"string","description":"Top Left"},"colorTopRight":{"type":"string","description":"Top Right"},"colorBottomLeft":{"type":"string","description":"Bottom Left"},"colorBottomRight":{"type":"string","description":"Bottom Right"},"colorBase":{"type":"string","description":"Base"},"blendSize":{"type":"number","description":"Blend Size %","minimum":20,"maximum":100},"falloff":{"type":"number","description":"Falloff %","minimum":0,"maximum":100},"enableGrain":{"type":"boolean","description":"Add Grain Overlay"},"grainIntensity":{"type":"number","description":"Grain Intensity %","minimum":5,"maximum":80},"outputFormat":{"enum":["css","svg"],"description":"Output Format"}},"required":[]},"examples":{"default_sunset_mesh_css":{"summary":"Default sunset mesh (CSS)","value":{"colorTopLeft":"#ff6b6b","colorTopRight":"#feca57","colorBottomLeft":"#48dbfb","colorBottomRight":"#5f27cd","colorBase":"#1a1a2e","blendSize":"60","falloff":"50","enableGrain":"","grainIntensity":"25","outputFormat":"css"}},"sharper_blobs_with_grain_overlay":{"summary":"Sharper blobs with grain overlay","value":{"colorTopLeft":"#ff6b6b","colorTopRight":"#feca57","colorBottomLeft":"#48dbfb","colorBottomRight":"#5f27cd","colorBase":"#1a1a2e","blendSize":"40","falloff":"20","enableGrain":"true","grainIntensity":"25","outputFormat":"css"}},"svg_output":{"summary":"SVG output","value":{"colorTopLeft":"#ff6b6b","colorTopRight":"#feca57","colorBottomLeft":"#48dbfb","colorBottomRight":"#5f27cd","colorBase":"#1a1a2e","blendSize":"60","falloff":"50","enableGrain":"","grainIntensity":"25","outputFormat":"svg"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_sunset_mesh_css":{"summary":"Default sunset mesh (CSS)","value":{"tool":"css-gradient-mesh-generator","tool_version":"1.0.2","outputs":{"meshCode":"background-color: #1a1a2e;\nbackground-image:\n  radial-gradient(at 0% 0%, #ff6b6b 10%, transparent 60%),\n  radial-gradient(at 100% 0%, #feca57 10%, transparent 60%),\n  radial-gradient(at 0% 100%, #48dbfb 10%, transparent 60%),\n  radial-gradient(at 100% 100%, #5f27cd 10%, transparent 60%);"},"credits_used":5,"credits_remaining":null}},"sharper_blobs_with_grain_overlay":{"summary":"Sharper blobs with grain overlay","value":{"tool":"css-gradient-mesh-generator","tool_version":"1.0.2","outputs":{"meshCode":"background-color: #1a1a2e;\nbackground-image:\n  radial-gradient(at 0% 0%, #ff6b6b 4%, transparent 40%),\n  radial-gradient(at 100% 0%, #feca57 4%, transparent 40%),\n  radial-gradient(at 0% 100%, #48dbfb 4%, transparent 40%),\n  radial-gradient(at 100% 100%, #5f27cd 4%, transparent 40%);\n\n/* Optional grain overlay — apply to a positioned child element */\n.mesh-grain {\n  position: absolute;\n  inset: 0;\n  pointer-events: none;\n  mix-blend-mode: overlay;\n  background-image: url(\"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20200%20200%22%3E%3Cfilter%20id%3D%22n%22%3E%3CfeTurbulence%20type%3D%22fractalNoise%22%20baseFrequency%3D%220.9%22%20numOctaves%3D%222%22%20stitchTiles%3D%22stitch%22%2F%3E%3CfeColorMatrix%20values%3D%220%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.25%200%22%2F%3E%3C%2Ffilter%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20filter%3D%22url(%23n)%22%2F%3E%3C%2Fsvg%3E\");\n}"},"credits_used":5,"credits_remaining":null}},"svg_output":{"summary":"SVG output","value":{"tool":"css-gradient-mesh-generator","tool_version":"1.0.2","outputs":{"meshCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 600\" preserveAspectRatio=\"none\">\n  <defs>\n  <radialGradient id=\"g0\" cx=\"0%\" cy=\"0%\" r=\"60%\"><stop offset=\"10%\" stop-color=\"#ff6b6b\" stop-opacity=\"1\"/><stop offset=\"100%\" stop-color=\"#ff6b6b\" stop-opacity=\"0\"/></radialGradient>\n  <radialGradient id=\"g1\" cx=\"100%\" cy=\"0%\" r=\"60%\"><stop offset=\"10%\" stop-color=\"#feca57\" stop-opacity=\"1\"/><stop offset=\"100%\" stop-color=\"#feca57\" stop-opacity=\"0\"/></radialGradient>\n  <radialGradient id=\"g2\" cx=\"0%\" cy=\"100%\" r=\"60%\"><stop offset=\"10%\" stop-color=\"#48dbfb\" stop-opacity=\"1\"/><stop offset=\"100%\" stop-color=\"#48dbfb\" stop-opacity=\"0\"/></radialGradient>\n  <radialGradient id=\"g3\" cx=\"100%\" cy=\"100%\" r=\"60%\"><stop offset=\"10%\" stop-color=\"#5f27cd\" stop-opacity=\"1\"/><stop offset=\"100%\" stop-color=\"#5f27cd\" stop-opacity=\"0\"/></radialGradient>\n  </defs>\n  <rect width=\"100%\" height=\"100%\" fill=\"#1a1a2e\"/>\n  <rect width=\"100%\" height=\"100%\" fill=\"url(#g0)\"/>\n  <rect width=\"100%\" height=\"100%\" fill=\"url(#g1)\"/>\n  <rect width=\"100%\" height=\"100%\" fill=\"url(#g2)\"/>\n  <rect width=\"100%\" height=\"100%\" fill=\"url(#g3)\"/>\n</svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"meshCode":{"type":"string","description":"Generated Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-gradient-shadow-generator":{"post":{"operationId":"run_css_gradient_shadow_generator","summary":"CSS Gradient Shadow Generator","tags":["Generators"],"description":"Generate a blurred, colorful gradient glow that sits behind an element using a ::before pseudo-element and filter: blur() — plain box-shadow can't render a gradient. Copy the ready-made CSS.\n\n[Try CSS Gradient Shadow Generator in your browser →](https://iotools.cloud/tool/css-gradient-shadow-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"gradientType":{"enum":["linear","radial","conic"],"description":"Gradient Type"},"angle":{"type":"number","description":"Angle (deg)","minimum":0,"maximum":360},"color1":{"type":"string","description":"Color 1"},"position1":{"type":"number","description":"Position 1 (%)","minimum":0,"maximum":100},"color2":{"type":"string","description":"Color 2"},"position2":{"type":"number","description":"Position 2 (%)","minimum":0,"maximum":100},"useColor3":{"type":"boolean","description":"Add a third color stop"},"color3":{"type":"string","description":"Color 3"},"position3":{"type":"number","description":"Position 3 (%)","minimum":0,"maximum":100},"useColor4":{"type":"boolean","description":"Add a fourth color stop"},"color4":{"type":"string","description":"Color 4"},"position4":{"type":"number","description":"Position 4 (%)","minimum":0,"maximum":100},"blur":{"type":"number","description":"Blur (px)","minimum":0,"maximum":100},"spread":{"type":"number","description":"Spread (px)","minimum":0,"maximum":100},"opacity":{"type":"number","description":"Opacity (%)","minimum":0,"maximum":100},"borderRadius":{"type":"number","description":"Border Radius (px)","minimum":0,"maximum":100}},"required":[]},"examples":{"linear_glow_two_stops":{"summary":"Linear glow, two stops","value":{"gradientType":"linear","angle":"135","color1":"#ff5f6d","position1":"0","color2":"#a855f7","position2":"50","useColor3":"","color3":"#00d4ff","position3":"100","useColor4":"","color4":"#facc15","position4":"100","blur":"40","spread":"20","opacity":"80","borderRadius":"16"}},"radial_glow_three_stops":{"summary":"Radial glow, three stops","value":{"gradientType":"radial","angle":"135","color1":"#ff5f6d","position1":"0","color2":"#a855f7","position2":"50","useColor3":"true","color3":"#00d4ff","position3":"100","useColor4":"","color4":"#facc15","position4":"100","blur":"60","spread":"30","opacity":"100","borderRadius":"50"}},"conic_glow_four_stops":{"summary":"Conic glow, four stops","value":{"gradientType":"conic","angle":"0","color1":"#ff5f6d","position1":"0","color2":"#a855f7","position2":"33","useColor3":"true","color3":"#00d4ff","position3":"66","useColor4":"true","color4":"#facc15","position4":"100","blur":"25","spread":"10","opacity":"65","borderRadius":"9999"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"linear_glow_two_stops":{"summary":"Linear glow, two stops","value":{"tool":"css-gradient-shadow-generator","tool_version":"1.0.2","outputs":{"cssCode":".glow {\n  position: relative;\n  isolation: isolate;\n}\n\n.glow::before {\n  content: \"\";\n  position: absolute;\n  inset: -20px;\n  z-index: -1;\n  border-radius: 16px;\n  opacity: 0.80;\n  filter: blur(40px);\n  background: linear-gradient(135deg, #ff5f6d 0%, #a855f7 50%);\n}","previewHtml":"<div style=\"position:relative;display:inline-block;isolation:isolate;\"><div style=\"position:absolute;inset:-20px;z-index:-1;border-radius:16px;opacity:0.80;filter:blur(40px);background:linear-gradient(135deg, #ff5f6d 0%, #a855f7 50%);\"></div><div style=\"position:relative;width:200px;height:120px;border-radius:16px;background:#18181b;display:flex;align-items:center;justify-content:center;color:#fff;font:600 14px system-ui, sans-serif;\">Your content</div></div>"},"credits_used":5,"credits_remaining":null}},"radial_glow_three_stops":{"summary":"Radial glow, three stops","value":{"tool":"css-gradient-shadow-generator","tool_version":"1.0.2","outputs":{"cssCode":".glow {\n  position: relative;\n  isolation: isolate;\n}\n\n.glow::before {\n  content: \"\";\n  position: absolute;\n  inset: -30px;\n  z-index: -1;\n  border-radius: 50px;\n  opacity: 1.00;\n  filter: blur(60px);\n  background: radial-gradient(#ff5f6d 0%, #a855f7 50%, #00d4ff 100%);\n}","previewHtml":"<div style=\"position:relative;display:inline-block;isolation:isolate;\"><div style=\"position:absolute;inset:-30px;z-index:-1;border-radius:50px;opacity:1.00;filter:blur(60px);background:radial-gradient(#ff5f6d 0%, #a855f7 50%, #00d4ff 100%);\"></div><div style=\"position:relative;width:200px;height:120px;border-radius:50px;background:#18181b;display:flex;align-items:center;justify-content:center;color:#fff;font:600 14px system-ui, sans-serif;\">Your content</div></div>"},"credits_used":5,"credits_remaining":null}},"conic_glow_four_stops":{"summary":"Conic glow, four stops","value":{"tool":"css-gradient-shadow-generator","tool_version":"1.0.2","outputs":{"cssCode":".glow {\n  position: relative;\n  isolation: isolate;\n}\n\n.glow::before {\n  content: \"\";\n  position: absolute;\n  inset: -10px;\n  z-index: -1;\n  border-radius: 9999px;\n  opacity: 0.65;\n  filter: blur(25px);\n  background: conic-gradient(from 0deg, #ff5f6d 0%, #a855f7 33%, #00d4ff 66%, #facc15 100%);\n}","previewHtml":"<div style=\"position:relative;display:inline-block;isolation:isolate;\"><div style=\"position:absolute;inset:-10px;z-index:-1;border-radius:9999px;opacity:0.65;filter:blur(25px);background:conic-gradient(from 0deg, #ff5f6d 0%, #a855f7 33%, #00d4ff 66%, #facc15 100%);\"></div><div style=\"position:relative;width:200px;height:120px;border-radius:9999px;background:#18181b;display:flex;align-items:center;justify-content:center;color:#fff;font:600 14px system-ui, sans-serif;\">Your content</div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML Snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-grid-generator":{"post":{"operationId":"run_css_grid_generator","summary":"CSS Grid Generator","tags":["Generators"],"description":"Generate a CSS Grid container declaration — display: grid with equal-width columns, equal-height rows, and a gap — from simple column/row/gap controls.\n\n[Try CSS Grid Generator in your browser →](https://iotools.cloud/tool/css-grid-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"columns":{"type":"number","description":"Columns","minimum":1,"maximum":12},"rows":{"type":"number","description":"Rows","minimum":1,"maximum":12},"gap":{"type":"number","description":"Gap (px)","minimum":0,"maximum":100}},"required":[]},"examples":{"3_columns_2_rows":{"summary":"3 columns, 2 rows","value":{"columns":"3","rows":"2","gap":"16"}},"default_3x3_grid":{"summary":"Default 3x3 grid","value":{"columns":"3","rows":"3","gap":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3_columns_2_rows":{"summary":"3 columns, 2 rows","value":{"tool":"css-grid-generator","tool_version":"1.0.2","outputs":{"cssCode":"display: grid;\ngrid-template-columns: repeat(3, 1fr);\ngrid-template-rows: repeat(2, 1fr);\ngap: 16px;"},"credits_used":5,"credits_remaining":null}},"default_3x3_grid":{"summary":"Default 3x3 grid","value":{"tool":"css-grid-generator","tool_version":"1.0.2","outputs":{"cssCode":"display: grid;\ngrid-template-columns: repeat(3, 1fr);\ngrid-template-rows: repeat(3, 1fr);\ngap: 10px;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-keyframe-animation-generator":{"post":{"operationId":"run_css_keyframe_animation_generator","summary":"CSS Keyframe Animation Generator","tags":["Generators"],"description":"Generate a CSS @keyframes animation from ready-made presets (bounce, shake, pulse, fade in, slide in, spin, swing, rubber band, flash, wobble) with duration, easing, delay, iteration count and direction — copy the keyframes plus the animation shorthand to apply it.\n\n[Try CSS Keyframe Animation Generator in your browser →](https://iotools.cloud/tool/css-keyframe-animation-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"animationType":{"enum":["bounce","shake","pulse","fadeIn","slideInLeft","spin","swing","rubberBand","flash","wobble"],"description":"Animation Preset"},"duration":{"type":"number","description":"Duration (s)"},"timingFunction":{"enum":["ease","ease-in","ease-out","ease-in-out","linear"],"description":"Timing Function"},"delay":{"type":"number","description":"Delay (s)"},"iterationCount":{"type":"string","description":"Iteration Count"},"direction":{"enum":["normal","reverse","alternate","alternate-reverse"],"description":"Direction"}},"required":[]},"examples":{"fade_in":{"summary":"Fade in","value":{"animationType":"fadeIn","duration":"1","timingFunction":"ease-in-out","delay":"0","iterationCount":"1","direction":"normal"}},"infinite_spin":{"summary":"Infinite spin","value":{"animationType":"spin","duration":"2","timingFunction":"linear","delay":"0","iterationCount":"infinite","direction":"normal"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fade_in":{"summary":"Fade in","value":{"tool":"css-keyframe-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":"@keyframes fadeIn {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n\n.animated-element {\n  animation: fadeIn 1s ease-in-out 0s 1 normal;\n}"},"credits_used":5,"credits_remaining":null}},"infinite_spin":{"summary":"Infinite spin","value":{"tool":"css-keyframe-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":"@keyframes spin {\n  0% {\n    transform: rotate(0deg);\n  }\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n.animated-element {\n  animation: spin 2s linear 0s infinite normal;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-loading-animation-generator":{"post":{"operationId":"run_css_loading_animation_generator","summary":"CSS Loading Animation Generator","tags":["Generators"],"description":"Generate a self-contained CSS+HTML loading spinner — ring or pulsing dots — with a custom color, size and speed. Pure CSS, no GIFs or JS required.\n\n[Try CSS Loading Animation Generator in your browser →](https://iotools.cloud/tool/css-loading-animation-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"loaderType":{"enum":["ring","dots"],"description":"Loader Type"},"color":{"type":"string","description":"Color"},"size":{"type":"number","description":"Size (px)","minimum":16,"maximum":256},"speed":{"type":"number","description":"Speed (seconds per cycle)","minimum":0.2,"maximum":5}},"required":[]},"examples":{"ring_spinner":{"summary":"Ring spinner","value":{"loaderType":"ring","color":"#3498db","size":"40","speed":"1"}},"pulsing_dots":{"summary":"Pulsing dots","value":{"loaderType":"dots","color":"#e74c3c","size":"48","speed":"1.2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ring_spinner":{"summary":"Ring spinner","value":{"tool":"css-loading-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-loader {\n  display: inline-block;\n  width: 40px;\n  height: 40px;\n  border: 5px solid #eee;\n  border-top: 5px solid #3498db;\n  border-radius: 50%;\n  box-sizing: border-box;\n  animation: io-spin 1s linear infinite;\n}\n\n@keyframes io-spin {\n  to {\n    transform: rotate(360deg);\n  }\n}","htmlCode":"<div class=\"io-loader\" role=\"status\" aria-label=\"Loading\"></div>"},"credits_used":5,"credits_remaining":null}},"pulsing_dots":{"summary":"Pulsing dots","value":{"tool":"css-loading-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":".io-loader {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 6px;\n  width: 48px;\n  height: 48px;\n}\n\n.io-loader span {\n  display: inline-block;\n  width: 11px;\n  height: 11px;\n  background: #e74c3c;\n  border-radius: 50%;\n  animation: io-pulse 1.2s ease-in-out infinite both;\n}\n\n.io-loader span:nth-child(2) {\n  animation-delay: 0.2s;\n}\n\n.io-loader span:nth-child(3) {\n  animation-delay: 0.4s;\n}\n\n@keyframes io-pulse {\n  0%, 80%, 100% {\n    transform: scale(0.4);\n    opacity: 0.5;\n  }\n  40% {\n    transform: scale(1);\n    opacity: 1;\n  }\n}","htmlCode":"<div class=\"io-loader\" role=\"status\" aria-label=\"Loading\">\n  <span></span>\n  <span></span>\n  <span></span>\n</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-media-query-generator":{"post":{"operationId":"run_css_media_query_generator","summary":"CSS Media Query Generator","tags":["Generators"],"description":"Generate a CSS @media query block from a breakpoint preset (or custom width) and a condition type — wraps your CSS rules in a ready-to-paste responsive block.\n\n[Try CSS Media Query Generator in your browser →](https://iotools.cloud/tool/css-media-query-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"breakpointPreset":{"enum":["mobile","tablet","laptop","desktop","custom"],"description":"Breakpoint Preset"},"customWidth":{"type":"number","description":"Custom Width (px)","minimum":0,"maximum":10000},"conditionType":{"enum":["min-width","max-width","orientation-portrait","orientation-landscape"],"description":"Condition Type"},"cssContent":{"type":"string","description":"CSS to wrap (optional)"}},"required":[]},"examples":{"tablet_min_width":{"summary":"Tablet, min-width","value":{"breakpointPreset":"tablet","customWidth":"320","conditionType":"min-width","cssContent":"color: red;"}},"laptop_max_width_empty_body":{"summary":"Laptop, max-width, empty body","value":{"breakpointPreset":"laptop","customWidth":"320","conditionType":"max-width","cssContent":""}},"custom_width_landscape_orientation":{"summary":"Custom width, landscape orientation","value":{"breakpointPreset":"custom","customWidth":"600","conditionType":"orientation-landscape","cssContent":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"tablet_min_width":{"summary":"Tablet, min-width","value":{"tool":"css-media-query-generator","tool_version":"1.0.2","outputs":{"cssCode":"@media (min-width: 768px) {\n  color: red;\n}"},"credits_used":5,"credits_remaining":null}},"laptop_max_width_empty_body":{"summary":"Laptop, max-width, empty body","value":{"tool":"css-media-query-generator","tool_version":"1.0.2","outputs":{"cssCode":"@media (max-width: 1024px) {\n  /* your styles here */\n}"},"credits_used":5,"credits_remaining":null}},"custom_width_landscape_orientation":{"summary":"Custom width, landscape orientation","value":{"tool":"css-media-query-generator","tool_version":"1.0.2","outputs":{"cssCode":"@media (orientation: landscape) {\n  /* your styles here */\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-neumorphism-generator":{"post":{"operationId":"run_css_neumorphism_generator","summary":"CSS Neumorphism Generator","tags":["Generators"],"description":"Generate soft-UI (neumorphic) CSS — a background color plus a pair of offset box-shadows, one lighter and one darker, in a raised (flat/convex) or pressed (concave) style — from a base color, distance, blur and border radius.\n\n[Try CSS Neumorphism Generator in your browser →](https://iotools.cloud/tool/css-neumorphism-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseColor":{"type":"string","description":"Background Color"},"style":{"enum":["flat","convex","concave"],"description":"Style"},"distance":{"type":"number","description":"Distance (px)","minimum":1,"maximum":80},"blur":{"type":"number","description":"Blur (px)","minimum":0,"maximum":160},"borderRadius":{"type":"number","description":"Border Radius (px)","minimum":0,"maximum":200}},"required":[]},"examples":{"flat_raised_card":{"summary":"Flat raised card","value":{"baseColor":"#e0e5ec","style":"flat","distance":"20","blur":"60","borderRadius":"50"}},"convex_bulge":{"summary":"Convex bulge","value":{"baseColor":"#e0e5ec","style":"convex","distance":"20","blur":"60","borderRadius":"50"}},"concave_pressed_panel_dark":{"summary":"Concave pressed panel (dark)","value":{"baseColor":"#2c2f36","style":"concave","distance":"24","blur":"48","borderRadius":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flat_raised_card":{"summary":"Flat raised card","value":{"tool":"css-neumorphism-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: #e0e5ec;\nborder-radius: 50px;\nbox-shadow: 20px 20px 60px #bec3c9, -20px -20px 60px #e5e9ef;"},"credits_used":5,"credits_remaining":null}},"convex_bulge":{"summary":"Convex bulge","value":{"tool":"css-neumorphism-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: linear-gradient(145deg, #e2e7ed, #cfd4da);\nborder-radius: 50px;\nbox-shadow: 20px 20px 60px #bec3c9, -20px -20px 60px #e5e9ef;"},"credits_used":5,"credits_remaining":null}},"concave_pressed_panel_dark":{"summary":"Concave pressed panel (dark)","value":{"tool":"css-neumorphism-generator","tool_version":"1.0.2","outputs":{"cssCode":"background: linear-gradient(145deg, #292b32, #3c3f45);\nborder-radius: 50px;\nbox-shadow: 24px 24px 48px #25282e, -24px -24px 48px #4c4e54;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-ribbon-generator":{"post":{"operationId":"run_css_ribbon_generator","summary":"CSS Ribbon Generator","tags":["Generators"],"description":"Generate a folded corner-ribbon banner — a diagonal 'Sale!'/'New'/'Featured' label draped across a card's corner, with an optional folded-edge shadow — as ready-to-paste CSS, with a live preview.\n\n[Try CSS Ribbon Generator in your browser →](https://iotools.cloud/tool/css-ribbon-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ribbonText":{"type":"string","description":"Ribbon Text"},"corner":{"enum":["top-left","top-right","bottom-left","bottom-right"],"description":"Corner"},"ribbonColor":{"type":"string","description":"Ribbon Color"},"textColor":{"type":"string","description":"Text Color"},"ribbonSize":{"type":"number","description":"Ribbon Size (px)","minimum":80,"maximum":220},"foldShadow":{"type":"boolean","description":"Folded-edge shadow"}},"required":[]},"examples":{"top_right_sale_ribbon_with_fold_shadow":{"summary":"Top-right Sale ribbon, with fold shadow","value":{"ribbonText":"Sale!","corner":"top-right","ribbonColor":"#e63946","textColor":"#ffffff","ribbonSize":"140","foldShadow":"true"}},"top_left_new_ribbon_no_fold_shadow":{"summary":"Top-left New ribbon, no fold shadow","value":{"ribbonText":"New","corner":"top-left","ribbonColor":"#2a9d8f","textColor":"#ffffff","ribbonSize":"120","foldShadow":""}},"bottom_right_featured_ribbon":{"summary":"Bottom-right Featured ribbon","value":{"ribbonText":"Featured","corner":"bottom-right","ribbonColor":"#7209b7","textColor":"#ffffff","ribbonSize":"160","foldShadow":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"},"previewHtml":{"type":"string","description":"HTML Snippet (preview)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-scroll-driven-animation-generator":{"post":{"operationId":"run_css_scroll_driven_animation_generator","summary":"CSS Scroll-Driven Animation Generator","tags":["Generators"],"description":"Generate a native CSS scroll-driven animation — a @keyframes block wired to animation-timeline: view() or scroll() instead of a fixed duration — from ready-made presets (fade in, slide in, scale up, rotate in, reveal clip-path) with a configurable animation range.\n\n[Try CSS Scroll-Driven Animation Generator in your browser →](https://iotools.cloud/tool/css-scroll-driven-animation-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"animationType":{"enum":["fadeIn","slideLeft","slideRight","slideBottom","scaleUp","rotateIn","revealClip"],"description":"Animation Preset"},"timelineType":{"enum":["view","scroll"],"description":"Timeline"},"animationRange":{"enum":["0% 100%","entry 0% cover 100%","entry 0% entry 100%","cover 0% cover 100%","0% 50%"],"description":"Animation Range"}},"required":[]},"examples":{"fade_in_on_view":{"summary":"Fade in on view","value":{"animationType":"fadeIn","timelineType":"view","animationRange":"entry 0% cover 100%"}},"scale_up_tied_to_page_scroll":{"summary":"Scale up tied to page scroll","value":{"animationType":"scaleUp","timelineType":"scroll","animationRange":"0% 100%"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fade_in_on_view":{"summary":"Fade in on view","value":{"tool":"css-scroll-driven-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":"@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n.scroll-animate {\n  animation-name: fadeIn;\n  animation-timeline: view();\n  animation-range: entry 0% cover 100%;\n  animation-fill-mode: both;\n}"},"credits_used":5,"credits_remaining":null}},"scale_up_tied_to_page_scroll":{"summary":"Scale up tied to page scroll","value":{"tool":"css-scroll-driven-animation-generator","tool_version":"1.0.2","outputs":{"cssCode":"@keyframes scaleUp {\n  from {\n    opacity: 0;\n    transform: scale(0.6);\n  }\n  to {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n.scroll-animate {\n  animation-name: scaleUp;\n  animation-timeline: scroll();\n  animation-range: 0% 100%;\n  animation-fill-mode: both;\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-scrollbar-style-generator":{"post":{"operationId":"run_css_scrollbar_style_generator","summary":"CSS Scrollbar Style Generator","tags":["Generators"],"description":"Generate cross-browser custom scrollbar CSS — WebKit ::-webkit-scrollbar-* rules plus Firefox's scrollbar-color/scrollbar-width — from width, track, thumb and corner settings, with a real scrollable live preview.\n\n[Try CSS Scrollbar Style Generator in your browser →](https://iotools.cloud/tool/css-scrollbar-style-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"widthPreset":{"enum":["thin","auto","custom","none"],"description":"Scrollbar Width"},"customWidth":{"type":"number","description":"Custom Width (px)","minimum":4,"maximum":24},"trackColor":{"type":"string","description":"Track Color"},"thumbColor":{"type":"string","description":"Thumb Color"},"thumbHoverColor":{"type":"string","description":"Thumb Hover Color"},"cornerColor":{"type":"string","description":"Corner Color"},"trackRadius":{"type":"number","description":"Track Radius (px)","minimum":0,"maximum":20},"thumbRadius":{"type":"number","description":"Thumb Radius (px)","minimum":0,"maximum":20},"floatingThumb":{"type":"boolean","description":"Floating thumb (border gap)"},"className":{"type":"string","description":"Class Name"}},"required":[]},"examples":{"thin_gray_scrollbar":{"summary":"Thin gray scrollbar","value":{"widthPreset":"thin","customWidth":"12","trackColor":"#f1f5f9","thumbColor":"#94a3b8","thumbHoverColor":"#64748b","cornerColor":"#f1f5f9","trackRadius":"8","thumbRadius":"8","floatingThumb":"true","className":"io-scrollbar"}},"custom_width_square_corners_no_floating_gap":{"summary":"Custom width, square corners, no floating gap","value":{"widthPreset":"custom","customWidth":"16","trackColor":"#1e293b","thumbColor":"#f97316","thumbHoverColor":"#fb923c","cornerColor":"#1e293b","trackRadius":"0","thumbRadius":"0","floatingThumb":"","className":"dark-scroll"}},"hidden_scrollbar":{"summary":"Hidden scrollbar","value":{"widthPreset":"none","customWidth":"12","trackColor":"#f1f5f9","thumbColor":"#94a3b8","thumbHoverColor":"#64748b","cornerColor":"#f1f5f9","trackRadius":"8","thumbRadius":"8","floatingThumb":"true","className":"no-scrollbar"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"thin_gray_scrollbar":{"summary":"Thin gray scrollbar","value":{"tool":"css-scrollbar-style-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<div class=\"io-scrollbar\" style=\"height: 220px; overflow-y: auto;\">\n    <p>Scroll me to see the scrollbar in action.</p>\n    <p>This box is just tall enough to overflow.</p>\n    <p>Every line here is filler text.</p>\n    <p>The scrollbar you see is the real generated CSS —</p>\n    <p>not a mockup, not a screenshot.</p>\n    <p>Keep scrolling to reach the bottom.</p>\n    <p>Almost there.</p>\n    <p>Last line — you made it.</p>\n</div>","cssCode":".io-scrollbar {\n  scrollbar-width: thin; /* Firefox: auto | thin | none */\n  scrollbar-color: #94a3b8 #f1f5f9; /* Firefox: thumb track */\n}\n\n.io-scrollbar::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n}\n\n.io-scrollbar::-webkit-scrollbar-track {\n  background: #f1f5f9;\n  border-radius: 8px;\n}\n\n.io-scrollbar::-webkit-scrollbar-thumb {\n  background: #94a3b8;\n  border-radius: 8px;\n  border: 3px solid #f1f5f9;\n  background-clip: padding-box;\n}\n\n.io-scrollbar::-webkit-scrollbar-thumb:hover {\n  background: #64748b;\n}\n\n.io-scrollbar::-webkit-scrollbar-corner {\n  background: #f1f5f9;\n}"},"credits_used":5,"credits_remaining":null}},"custom_width_square_corners_no_floating_gap":{"summary":"Custom width, square corners, no floating gap","value":{"tool":"css-scrollbar-style-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<div class=\"dark-scroll\" style=\"height: 220px; overflow-y: auto;\">\n    <p>Scroll me to see the scrollbar in action.</p>\n    <p>This box is just tall enough to overflow.</p>\n    <p>Every line here is filler text.</p>\n    <p>The scrollbar you see is the real generated CSS —</p>\n    <p>not a mockup, not a screenshot.</p>\n    <p>Keep scrolling to reach the bottom.</p>\n    <p>Almost there.</p>\n    <p>Last line — you made it.</p>\n</div>","cssCode":".dark-scroll {\n  scrollbar-width: thin; /* Firefox: auto | thin | none */\n  scrollbar-color: #f97316 #1e293b; /* Firefox: thumb track */\n}\n\n.dark-scroll::-webkit-scrollbar {\n  width: 16px;\n  height: 16px;\n}\n\n.dark-scroll::-webkit-scrollbar-track {\n  background: #1e293b;\n  border-radius: 0px;\n}\n\n.dark-scroll::-webkit-scrollbar-thumb {\n  background: #f97316;\n  border-radius: 0px;\n}\n\n.dark-scroll::-webkit-scrollbar-thumb:hover {\n  background: #fb923c;\n}\n\n.dark-scroll::-webkit-scrollbar-corner {\n  background: #1e293b;\n}"},"credits_used":5,"credits_remaining":null}},"hidden_scrollbar":{"summary":"Hidden scrollbar","value":{"tool":"css-scrollbar-style-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<div class=\"no-scrollbar\" style=\"height: 220px; overflow-y: auto;\">\n    <p>Scroll me to see the scrollbar in action.</p>\n    <p>This box is just tall enough to overflow.</p>\n    <p>Every line here is filler text.</p>\n    <p>The scrollbar you see is the real generated CSS —</p>\n    <p>not a mockup, not a screenshot.</p>\n    <p>Keep scrolling to reach the bottom.</p>\n    <p>Almost there.</p>\n    <p>Last line — you made it.</p>\n</div>","cssCode":".no-scrollbar {\n  scrollbar-width: none; /* Firefox */\n  -ms-overflow-style: none; /* legacy Edge */\n}\n\n.no-scrollbar::-webkit-scrollbar {\n  display: none; /* Chrome, Safari, Opera */\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"htmlCode":{"type":"string","description":"HTML"},"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-section-divider-generator":{"post":{"operationId":"run_css_section_divider_generator","summary":"CSS Section Divider Generator","tags":["Generators"],"description":"Generate a decorative section-edge divider — slant, curve, triangle, arrow/split, book-page curl, or scalloped clouds — from a chosen shape and colour. Copy the SVG, a CSS background-image snippet, or ready-to-paste HTML. Runs entirely in your browser.\n\n[Try CSS Section Divider Generator in your browser →](https://iotools.cloud/tool/css-section-divider-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shapeType":{"enum":["slant","curve","triangle","arrow","book-page","clouds"],"description":"Shape"},"slantDepth":{"type":"number","description":"Slant depth","minimum":10,"maximum":90},"curveDepth":{"type":"number","description":"Curve depth","minimum":20,"maximum":160},"peakPosition":{"enum":["left","center","right"],"description":"Peak position"},"peakHeight":{"type":"number","description":"Peak height","minimum":20,"maximum":200},"notchDepth":{"type":"number","description":"Notch depth","minimum":20,"maximum":200},"curlSize":{"type":"number","description":"Curl size","minimum":20,"maximum":200},"bumpCount":{"type":"number","description":"Number of bumps","minimum":3,"maximum":12},"bumpHeight":{"type":"number","description":"Bump height","minimum":10,"maximum":100},"width":{"type":"number","description":"Width","minimum":200,"maximum":3000},"height":{"type":"number","description":"Height","minimum":50,"maximum":600},"flipVertical":{"type":"boolean","description":"Flip vertical"},"flipHorizontal":{"type":"boolean","description":"Flip horizontal"},"fillColor":{"type":"string","description":"Fill colour"},"fillOpacity":{"type":"number","description":"Fill opacity","minimum":10,"maximum":100},"bgColor":{"type":"string","description":"Background colour"}},"required":[]},"examples":{"slant_divider":{"summary":"Slant divider","value":{"shapeType":"slant","slantDepth":"50","width":"1200","height":"200","fillColor":"#464aff","fillOpacity":"100","bgColor":"#f5f5f5"}},"curve_divider":{"summary":"Curve divider","value":{"shapeType":"curve","curveDepth":"70","width":"1000","height":"220","fillColor":"#0ea5e9","fillOpacity":"100","bgColor":"#ffffff"}},"book_page_curl":{"summary":"Book page curl","value":{"shapeType":"book-page","curlSize":"80","width":"1200","height":"200","fillColor":"#f97316","fillOpacity":"100","bgColor":"#fff7ed"}},"clouds_flipped":{"summary":"Clouds, flipped","value":{"shapeType":"clouds","bumpCount":"6","bumpHeight":"30","width":"800","height":"150","flipVertical":"true","fillColor":"#22c55e","fillOpacity":"100","bgColor":"#f0fdf4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"slant_divider":{"summary":"Slant divider","value":{"tool":"css-section-divider-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 200 L 0 0 L 1200 100 L 1200 200 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>","css":".section-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20200%22%20width%3D%221200%22%20height%3D%22200%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221200%22%20height%3D%22200%22%20fill%3D%22%23f5f5f5%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%20200%20L%200%200%20L%201200%20100%20L%201200%20200%20Z%22%20fill%3D%22%23464aff%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"section-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 200 L 0 0 L 1200 100 L 1200 200 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"curve_divider":{"summary":"Curve divider","value":{"tool":"css-section-divider-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 220\" width=\"1000\" height=\"220\" preserveAspectRatio=\"none\">\n  <rect width=\"1000\" height=\"220\" fill=\"#ffffff\"/>\n  <g>\n  <path d=\"M 0 220 L 0 110 Q 500 40, 1000 110 L 1000 220 Z\" fill=\"#0ea5e9\"/>\n  </g>\n</svg>","css":".section-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20220%22%20width%3D%221000%22%20height%3D%22220%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221000%22%20height%3D%22220%22%20fill%3D%22%23ffffff%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%20220%20L%200%20110%20Q%20500%2040%2C%201000%20110%20L%201000%20220%20Z%22%20fill%3D%22%230ea5e9%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"section-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 220\" width=\"1000\" height=\"220\" preserveAspectRatio=\"none\">\n  <rect width=\"1000\" height=\"220\" fill=\"#ffffff\"/>\n  <g>\n  <path d=\"M 0 220 L 0 110 Q 500 40, 1000 110 L 1000 220 Z\" fill=\"#0ea5e9\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"book_page_curl":{"summary":"Book page curl","value":{"tool":"css-section-divider-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#fff7ed\"/>\n  <g>\n  <path d=\"M 0 0 L 1200 0 L 1200 120 L 1160 160 L 1120 200 L 0 200 Z\" fill=\"#f97316\"/>\n  <path d=\"M 1120 200 L 1160 160 L 1200 120 Z\" fill=\"#bb5611\"/>\n  </g>\n</svg>","css":".section-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20200%22%20width%3D%221200%22%20height%3D%22200%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221200%22%20height%3D%22200%22%20fill%3D%22%23fff7ed%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%200%20L%201200%200%20L%201200%20120%20L%201160%20160%20L%201120%20200%20L%200%20200%20Z%22%20fill%3D%22%23f97316%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M%201120%20200%20L%201160%20160%20L%201200%20120%20Z%22%20fill%3D%22%23bb5611%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"section-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#fff7ed\"/>\n  <g>\n  <path d=\"M 0 0 L 1200 0 L 1200 120 L 1160 160 L 1120 200 L 0 200 Z\" fill=\"#f97316\"/>\n  <path d=\"M 1120 200 L 1160 160 L 1200 120 Z\" fill=\"#bb5611\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"clouds_flipped":{"summary":"Clouds, flipped","value":{"tool":"css-section-divider-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 150\" width=\"800\" height=\"150\" preserveAspectRatio=\"none\">\n  <rect width=\"800\" height=\"150\" fill=\"#f0fdf4\"/>\n  <g transform=\"translate(0,150) scale(1,-1)\">\n  <path d=\"M 0 150 L 0 82.5 A 66.67 30 0 0 1 133.33 82.5 A 66.67 30 0 0 1 266.67 82.5 A 66.67 30 0 0 1 400 82.5 A 66.67 30 0 0 1 533.33 82.5 A 66.67 30 0 0 1 666.67 82.5 A 66.67 30 0 0 1 800 82.5 L 800 150 Z\" fill=\"#22c55e\"/>\n  </g>\n</svg>","css":".section-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20150%22%20width%3D%22800%22%20height%3D%22150%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%22800%22%20height%3D%22150%22%20fill%3D%22%23f0fdf4%22%2F%3E%0A%20%20%3Cg%20transform%3D%22translate(0%2C150)%20scale(1%2C-1)%22%3E%0A%20%20%3Cpath%20d%3D%22M%200%20150%20L%200%2082.5%20A%2066.67%2030%200%200%201%20133.33%2082.5%20A%2066.67%2030%200%200%201%20266.67%2082.5%20A%2066.67%2030%200%200%201%20400%2082.5%20A%2066.67%2030%200%200%201%20533.33%2082.5%20A%2066.67%2030%200%200%201%20666.67%2082.5%20A%2066.67%2030%200%200%201%20800%2082.5%20L%20800%20150%20Z%22%20fill%3D%22%2322c55e%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"section-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 150\" width=\"800\" height=\"150\" preserveAspectRatio=\"none\">\n  <rect width=\"800\" height=\"150\" fill=\"#f0fdf4\"/>\n  <g transform=\"translate(0,150) scale(1,-1)\">\n  <path d=\"M 0 150 L 0 82.5 A 66.67 30 0 0 1 133.33 82.5 A 66.67 30 0 0 1 266.67 82.5 A 66.67 30 0 0 1 400 82.5 A 66.67 30 0 0 1 533.33 82.5 A 66.67 30 0 0 1 666.67 82.5 A 66.67 30 0 0 1 800 82.5 L 800 150 Z\" fill=\"#22c55e\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG code"},"css":{"type":"string","description":"CSS background"},"html":{"type":"string","description":"HTML snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-speech-bubble-generator":{"post":{"operationId":"run_css_speech_bubble_generator","summary":"CSS Speech Bubble / Tooltip Generator","tags":["Generators"],"description":"Generate a CSS chat-bubble / speech-bubble / tooltip shape — a rounded box with a positionable pointed tail built from the classic border-triangle technique (::after/::before), not clip-path. Set color, radius, padding, an optional outline and the tail's edge, offset and size, with a live preview and ready-to-paste CSS + HTML.\n\n[Try CSS Speech Bubble / Tooltip Generator in your browser →](https://iotools.cloud/tool/css-speech-bubble-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bubbleText":{"type":"string","description":"Bubble Text"},"className":{"type":"string","description":"Class Name"},"backgroundColor":{"type":"string","description":"Background Color"},"textColor":{"type":"string","description":"Text Color"},"borderRadius":{"type":"number","description":"Border Radius (px)","minimum":0,"maximum":50},"paddingX":{"type":"number","description":"Padding — left/right (px)","minimum":0,"maximum":60},"paddingY":{"type":"number","description":"Padding — top/bottom (px)","minimum":0,"maximum":60},"showBorder":{"type":"boolean","description":"Add a border"},"borderColor":{"type":"string","description":"Border Color"},"borderWidth":{"type":"number","description":"Border Width (px)","minimum":1,"maximum":10},"tailPosition":{"enum":["bottom","top","left","right"],"description":"Tail Edge"},"tailOffset":{"type":"number","description":"Tail Offset (%)","minimum":0,"maximum":100},"tailSize":{"type":"number","description":"Tail Size (px)","minimum":4,"maximum":40}},"required":[]},"examples":{"default_bubble_tail_at_bottom_center":{"summary":"Default bubble, tail at bottom-center","value":{"bubbleText":"Hey! Got a sec to chat? 💬","className":"bubble","backgroundColor":"#4f46e5","textColor":"#ffffff","borderRadius":"16","paddingX":"18","paddingY":"12","showBorder":"","borderColor":"#312e81","borderWidth":"2","tailPosition":"bottom","tailOffset":"50","tailSize":"14"}},"bordered_tooltip_tail_on_the_left_near_the_top":{"summary":"Bordered tooltip, tail on the left near the top","value":{"bubbleText":"Click here to continue","className":"tip","backgroundColor":"#ffffff","textColor":"#111827","borderRadius":"8","paddingX":"14","paddingY":"10","showBorder":"true","borderColor":"#1e293b","borderWidth":"2","tailPosition":"left","tailOffset":"20","tailSize":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_bubble_tail_at_bottom_center":{"summary":"Default bubble, tail at bottom-center","value":{"tool":"css-speech-bubble-generator","tool_version":"1.0.2","outputs":{"cssCode":".bubble {\n  position: relative;\n  display: inline-block;\n  box-sizing: border-box;\n  max-width: 320px;\n  background: #4f46e5;\n  color: #ffffff;\n  border-radius: 16px;\n  padding: 12px 18px;\n  font: 15px/1.5 system-ui, sans-serif;\n}\n\n.bubble::after {\n  content: \"\";\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 14px;\n  border-color: #4f46e5 transparent transparent transparent;\n  top: 100%;\n  left: 50%;\n  margin-left: -14px;\n}","htmlCode":"<div class=\"bubble\">Hey! Got a sec to chat? 💬</div>"},"credits_used":5,"credits_remaining":null}},"bordered_tooltip_tail_on_the_left_near_the_top":{"summary":"Bordered tooltip, tail on the left near the top","value":{"tool":"css-speech-bubble-generator","tool_version":"1.0.2","outputs":{"cssCode":".tip {\n  position: relative;\n  display: inline-block;\n  box-sizing: border-box;\n  max-width: 320px;\n  background: #ffffff;\n  color: #111827;\n  border-radius: 8px;\n  padding: 10px 14px;\n  font: 15px/1.5 system-ui, sans-serif;\n  border: 2px solid #1e293b;\n}\n\n.tip::after {\n  content: \"\";\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 10px;\n  border-color: transparent #ffffff transparent transparent;\n  right: 100%;\n  top: 20%;\n  margin-top: -10px;\n}\n\n.tip::before {\n  content: \"\";\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 12px;\n  border-color: transparent #1e293b transparent transparent;\n  right: 100%;\n  top: 20%;\n  margin-top: -12px;\n}","htmlCode":"<div class=\"tip\">Click here to continue</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-starburst-generator":{"post":{"operationId":"run_css_starburst_generator","summary":"CSS Starburst / Sale-Badge Generator","tags":["Generators"],"description":"Generate a many-spike starburst/sunburst clip-path shape — the classic 'sale seal' sticker look — from a spike count, inner/outer radius ratio and rotation, with a centered text label and a live preview.\n\n[Try CSS Starburst / Sale-Badge Generator in your browser →](https://iotools.cloud/tool/css-starburst-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"spikeCount":{"type":"number","description":"Number of Spikes","minimum":6,"maximum":32},"innerRadiusRatio":{"type":"number","description":"Spike Sharpness (Inner Radius %)","minimum":10,"maximum":90},"rotation":{"type":"number","description":"Rotation (deg)","minimum":0,"maximum":360},"badgeSize":{"type":"number","description":"Badge Size (px)","minimum":100,"maximum":400},"badgeColor":{"type":"string","description":"Badge Fill Color"},"labelText":{"type":"string","description":"Label Text"},"labelFontSize":{"type":"number","description":"Label Font Size (px)","minimum":10,"maximum":60},"labelTextColor":{"type":"string","description":"Label Text Color"}},"required":[]},"examples":{"classic_12_spike_sale_seal":{"summary":"Classic 12-spike sale seal","value":{"spikeCount":"12","innerRadiusRatio":"45","rotation":"0","badgeSize":"220","badgeColor":"#ef4444","labelText":"50% OFF","labelFontSize":"28","labelTextColor":"#ffffff"}},"sharp_16_spike_starburst":{"summary":"Sharp 16-spike starburst","value":{"spikeCount":"16","innerRadiusRatio":"25","rotation":"0","badgeSize":"180","badgeColor":"#f59e0b","labelText":"NEW","labelFontSize":"32","labelTextColor":"#111111"}},"8_spike_badge_rotated":{"summary":"8-spike badge, rotated","value":{"spikeCount":"8","innerRadiusRatio":"60","rotation":"15","badgeSize":"200","badgeColor":"#22c55e","labelText":"SALE","labelFontSize":"24","labelTextColor":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"classic_12_spike_sale_seal":{"summary":"Classic 12-spike sale seal","value":{"tool":"css-starburst-generator","tool_version":"1.0.2","outputs":{"cssCode":".starburst-badge {\n  width: 220px;\n  height: 220px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  background: #ef4444;\n  clip-path: polygon(50% 0%, 55.82% 28.27%, 75% 6.7%, 65.91% 34.09%, 93.3% 25%, 71.73% 44.18%, 100% 50%, 71.73% 55.82%, 93.3% 75%, 65.91% 65.91%, 75% 93.3%, 55.82% 71.73%, 50% 100%, 44.18% 71.73%, 25% 93.3%, 34.09% 65.91%, 6.7% 75%, 28.27% 55.82%, 0% 50%, 28.27% 44.18%, 6.7% 25%, 34.09% 34.09%, 25% 6.7%, 44.18% 28.27%);\n  -webkit-clip-path: polygon(50% 0%, 55.82% 28.27%, 75% 6.7%, 65.91% 34.09%, 93.3% 25%, 71.73% 44.18%, 100% 50%, 71.73% 55.82%, 93.3% 75%, 65.91% 65.91%, 75% 93.3%, 55.82% 71.73%, 50% 100%, 44.18% 71.73%, 25% 93.3%, 34.09% 65.91%, 6.7% 75%, 28.27% 55.82%, 0% 50%, 28.27% 44.18%, 6.7% 25%, 34.09% 34.09%, 25% 6.7%, 44.18% 28.27%);\n}\n\n.starburst-badge__label {\n  color: #ffffff;\n  font-size: 28px;\n  font-weight: 700;\n  line-height: 1.15;\n  max-width: 60%;\n  font-family: sans-serif;\n}","previewHtml":"<div style=\"width: 220px; height: 220px; display: flex; align-items: center; justify-content: center; text-align: center; background: #ef4444; clip-path: polygon(50% 0%, 55.82% 28.27%, 75% 6.7%, 65.91% 34.09%, 93.3% 25%, 71.73% 44.18%, 100% 50%, 71.73% 55.82%, 93.3% 75%, 65.91% 65.91%, 75% 93.3%, 55.82% 71.73%, 50% 100%, 44.18% 71.73%, 25% 93.3%, 34.09% 65.91%, 6.7% 75%, 28.27% 55.82%, 0% 50%, 28.27% 44.18%, 6.7% 25%, 34.09% 34.09%, 25% 6.7%, 44.18% 28.27%); -webkit-clip-path: polygon(50% 0%, 55.82% 28.27%, 75% 6.7%, 65.91% 34.09%, 93.3% 25%, 71.73% 44.18%, 100% 50%, 71.73% 55.82%, 93.3% 75%, 65.91% 65.91%, 75% 93.3%, 55.82% 71.73%, 50% 100%, 44.18% 71.73%, 25% 93.3%, 34.09% 65.91%, 6.7% 75%, 28.27% 55.82%, 0% 50%, 28.27% 44.18%, 6.7% 25%, 34.09% 34.09%, 25% 6.7%, 44.18% 28.27%);\"><span style=\"color: #ffffff; font-size: 28px; font-weight: 700; line-height: 1.15; max-width: 60%; font-family: sans-serif;\">50% OFF</span></div>"},"credits_used":5,"credits_remaining":null}},"sharp_16_spike_starburst":{"summary":"Sharp 16-spike starburst","value":{"tool":"css-starburst-generator","tool_version":"1.0.2","outputs":{"cssCode":".starburst-badge {\n  width: 180px;\n  height: 180px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  background: #f59e0b;\n  clip-path: polygon(50% 0%, 52.44% 37.74%, 69.13% 3.81%, 56.94% 39.61%, 85.36% 14.64%, 60.39% 43.06%, 96.19% 30.87%, 62.26% 47.56%, 100% 50%, 62.26% 52.44%, 96.19% 69.13%, 60.39% 56.94%, 85.36% 85.36%, 56.94% 60.39%, 69.13% 96.19%, 52.44% 62.26%, 50% 100%, 47.56% 62.26%, 30.87% 96.19%, 43.06% 60.39%, 14.64% 85.36%, 39.61% 56.94%, 3.81% 69.13%, 37.74% 52.44%, 0% 50%, 37.74% 47.56%, 3.81% 30.87%, 39.61% 43.06%, 14.64% 14.64%, 43.06% 39.61%, 30.87% 3.81%, 47.56% 37.74%);\n  -webkit-clip-path: polygon(50% 0%, 52.44% 37.74%, 69.13% 3.81%, 56.94% 39.61%, 85.36% 14.64%, 60.39% 43.06%, 96.19% 30.87%, 62.26% 47.56%, 100% 50%, 62.26% 52.44%, 96.19% 69.13%, 60.39% 56.94%, 85.36% 85.36%, 56.94% 60.39%, 69.13% 96.19%, 52.44% 62.26%, 50% 100%, 47.56% 62.26%, 30.87% 96.19%, 43.06% 60.39%, 14.64% 85.36%, 39.61% 56.94%, 3.81% 69.13%, 37.74% 52.44%, 0% 50%, 37.74% 47.56%, 3.81% 30.87%, 39.61% 43.06%, 14.64% 14.64%, 43.06% 39.61%, 30.87% 3.81%, 47.56% 37.74%);\n}\n\n.starburst-badge__label {\n  color: #111111;\n  font-size: 32px;\n  font-weight: 700;\n  line-height: 1.15;\n  max-width: 60%;\n  font-family: sans-serif;\n}","previewHtml":"<div style=\"width: 180px; height: 180px; display: flex; align-items: center; justify-content: center; text-align: center; background: #f59e0b; clip-path: polygon(50% 0%, 52.44% 37.74%, 69.13% 3.81%, 56.94% 39.61%, 85.36% 14.64%, 60.39% 43.06%, 96.19% 30.87%, 62.26% 47.56%, 100% 50%, 62.26% 52.44%, 96.19% 69.13%, 60.39% 56.94%, 85.36% 85.36%, 56.94% 60.39%, 69.13% 96.19%, 52.44% 62.26%, 50% 100%, 47.56% 62.26%, 30.87% 96.19%, 43.06% 60.39%, 14.64% 85.36%, 39.61% 56.94%, 3.81% 69.13%, 37.74% 52.44%, 0% 50%, 37.74% 47.56%, 3.81% 30.87%, 39.61% 43.06%, 14.64% 14.64%, 43.06% 39.61%, 30.87% 3.81%, 47.56% 37.74%); -webkit-clip-path: polygon(50% 0%, 52.44% 37.74%, 69.13% 3.81%, 56.94% 39.61%, 85.36% 14.64%, 60.39% 43.06%, 96.19% 30.87%, 62.26% 47.56%, 100% 50%, 62.26% 52.44%, 96.19% 69.13%, 60.39% 56.94%, 85.36% 85.36%, 56.94% 60.39%, 69.13% 96.19%, 52.44% 62.26%, 50% 100%, 47.56% 62.26%, 30.87% 96.19%, 43.06% 60.39%, 14.64% 85.36%, 39.61% 56.94%, 3.81% 69.13%, 37.74% 52.44%, 0% 50%, 37.74% 47.56%, 3.81% 30.87%, 39.61% 43.06%, 14.64% 14.64%, 43.06% 39.61%, 30.87% 3.81%, 47.56% 37.74%);\"><span style=\"color: #111111; font-size: 32px; font-weight: 700; line-height: 1.15; max-width: 60%; font-family: sans-serif;\">NEW</span></div>"},"credits_used":5,"credits_remaining":null}},"8_spike_badge_rotated":{"summary":"8-spike badge, rotated","value":{"tool":"css-starburst-generator","tool_version":"1.0.2","outputs":{"cssCode":".starburst-badge {\n  width: 200px;\n  height: 200px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  background: #22c55e;\n  clip-path: polygon(62.94% 1.7%, 68.26% 26.2%, 93.3% 25%, 79.74% 46.08%, 98.3% 62.94%, 73.8% 68.26%, 75% 93.3%, 53.92% 79.74%, 37.06% 98.3%, 31.74% 73.8%, 6.7% 75%, 20.26% 53.92%, 1.7% 37.06%, 26.2% 31.74%, 25% 6.7%, 46.08% 20.26%);\n  -webkit-clip-path: polygon(62.94% 1.7%, 68.26% 26.2%, 93.3% 25%, 79.74% 46.08%, 98.3% 62.94%, 73.8% 68.26%, 75% 93.3%, 53.92% 79.74%, 37.06% 98.3%, 31.74% 73.8%, 6.7% 75%, 20.26% 53.92%, 1.7% 37.06%, 26.2% 31.74%, 25% 6.7%, 46.08% 20.26%);\n}\n\n.starburst-badge__label {\n  color: #ffffff;\n  font-size: 24px;\n  font-weight: 700;\n  line-height: 1.15;\n  max-width: 60%;\n  font-family: sans-serif;\n}","previewHtml":"<div style=\"width: 200px; height: 200px; display: flex; align-items: center; justify-content: center; text-align: center; background: #22c55e; clip-path: polygon(62.94% 1.7%, 68.26% 26.2%, 93.3% 25%, 79.74% 46.08%, 98.3% 62.94%, 73.8% 68.26%, 75% 93.3%, 53.92% 79.74%, 37.06% 98.3%, 31.74% 73.8%, 6.7% 75%, 20.26% 53.92%, 1.7% 37.06%, 26.2% 31.74%, 25% 6.7%, 46.08% 20.26%); -webkit-clip-path: polygon(62.94% 1.7%, 68.26% 26.2%, 93.3% 25%, 79.74% 46.08%, 98.3% 62.94%, 73.8% 68.26%, 75% 93.3%, 53.92% 79.74%, 37.06% 98.3%, 31.74% 73.8%, 6.7% 75%, 20.26% 53.92%, 1.7% 37.06%, 26.2% 31.74%, 25% 6.7%, 46.08% 20.26%);\"><span style=\"color: #ffffff; font-size: 24px; font-weight: 700; line-height: 1.15; max-width: 60%; font-family: sans-serif;\">SALE</span></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"HTML (self-contained)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-transform-generator":{"post":{"operationId":"run_css_transform_generator","summary":"CSS Transform Generator","tags":["Generators"],"description":"Generate a CSS transform declaration combining translate, rotate, scale and skew into one ready-to-paste shorthand.\n\n[Try CSS Transform Generator in your browser →](https://iotools.cloud/tool/css-transform-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"translateX":{"type":"number","description":"Translate X (px)"},"translateY":{"type":"number","description":"Translate Y (px)"},"rotate":{"type":"number","description":"Rotate (deg)","minimum":-360,"maximum":360},"scaleX":{"type":"number","description":"Scale X"},"scaleY":{"type":"number","description":"Scale Y"},"skewX":{"type":"number","description":"Skew X (deg)","minimum":-45,"maximum":45},"skewY":{"type":"number","description":"Skew Y (deg)","minimum":-45,"maximum":45}},"required":[]},"examples":{"translate_rotate_and_scale":{"summary":"Translate, rotate and scale","value":{"translateX":"10","translateY":"20","rotate":"45","scaleX":"1.5","scaleY":"1.5","skewX":"0","skewY":"0"}},"skew_only":{"summary":"Skew only","value":{"translateX":"0","translateY":"0","rotate":"0","scaleX":"1","scaleY":"1","skewX":"10","skewY":"-5"}},"all_identity_values":{"summary":"All identity values","value":{"translateX":"0","translateY":"0","rotate":"0","scaleX":"1","scaleY":"1","skewX":"0","skewY":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"translate_rotate_and_scale":{"summary":"Translate, rotate and scale","value":{"tool":"css-transform-generator","tool_version":"1.0.2","outputs":{"cssCode":"transform: translate(10px, 20px) rotate(45deg) scale(1.5, 1.5);"},"credits_used":5,"credits_remaining":null}},"skew_only":{"summary":"Skew only","value":{"tool":"css-transform-generator","tool_version":"1.0.2","outputs":{"cssCode":"transform: skew(10deg, -5deg);"},"credits_used":5,"credits_remaining":null}},"all_identity_values":{"summary":"All identity values","value":{"tool":"css-transform-generator","tool_version":"1.0.2","outputs":{"cssCode":"transform: none;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-switch-generator":{"post":{"operationId":"run_css_switch_generator","summary":"CSS Toggle Switch Generator","tags":["Generators"],"description":"Generate a pure-CSS toggle switch — a real checkbox styled with :checked, no JavaScript. Set size, colors, radius and animation speed, pick a scoped class name, and copy accessible HTML + CSS.\n\n[Try CSS Toggle Switch Generator in your browser →](https://iotools.cloud/tool/css-switch-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"style":{"enum":["track","slim","outlined"],"description":"Switch Style"},"width":{"type":"number","description":"Width (px)","minimum":24,"maximum":160},"height":{"type":"number","description":"Height (px)","minimum":12,"maximum":80},"borderRadius":{"type":"number","description":"Border Radius (px)","minimum":0,"maximum":40},"offColor":{"type":"string","description":"Off Color"},"onColor":{"type":"string","description":"On Color"},"knobColor":{"type":"string","description":"Knob Color"},"transition":{"type":"number","description":"Animation (ms)","minimum":0,"maximum":1000},"knobShadow":{"type":"boolean","description":"Knob shadow"},"className":{"type":"string","description":"Class Name"},"labelText":{"type":"string","description":"Label Text"}},"required":[]},"examples":{"ios_style_green_pill":{"summary":"iOS-style green pill","value":{"style":"track","width":"56","height":"32","borderRadius":"40","offColor":"#cbd5e1","onColor":"#22c55e","knobColor":"#ffffff","transition":"250","knobShadow":"true","className":"io-switch","labelText":"Enable notifications"}},"slim_material_bar":{"summary":"Slim Material bar","value":{"style":"slim","width":"64","height":"28","borderRadius":"40","offColor":"#9ca3af","onColor":"#6366f1","knobColor":"#ffffff","transition":"200","knobShadow":"true","className":"toggle","labelText":"Dark mode"}},"square_outlined_switch_no_label":{"summary":"Square outlined switch, no label","value":{"style":"outlined","width":"60","height":"30","borderRadius":"4","offColor":"#94a3b8","onColor":"#0ea5e9","knobColor":"#ffffff","transition":"0","knobShadow":"","className":"sq-switch","labelText":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ios_style_green_pill":{"summary":"iOS-style green pill","value":{"tool":"css-switch-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<label class=\"io-switch\">\n  <input class=\"io-switch__input\" type=\"checkbox\" role=\"switch\" />\n  <span class=\"io-switch__track\"></span>\n  <span class=\"io-switch__label\">Enable notifications</span>\n</label>","cssCode":".io-switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.io-switch__input {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  opacity: 0;\n  pointer-events: none;\n}\n\n.io-switch__track {\n  position: relative;\n  flex: none;\n  display: block;\n  width: 56px;\n  height: 32px;\n  border-radius: 16px;\n  background: #cbd5e1;\n  transition: background-color 250ms ease, border-color 250ms ease;\n}\n\n.io-switch__track::before {\n  content: \"\";\n  position: absolute;\n  top: 4px;\n  left: 4px;\n  width: 24px;\n  height: 24px;\n  border-radius: 12px;\n  background: #ffffff;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n  transition: transform 250ms ease, background-color 250ms ease;\n}\n\n.io-switch__input:checked + .io-switch__track {\n  background: #22c55e;\n}\n\n.io-switch__input:checked + .io-switch__track::before {\n  transform: translateX(24px);\n  background: #ffffff;\n}\n\n.io-switch__input:focus-visible + .io-switch__track {\n  outline: 2px solid #22c55e;\n  outline-offset: 2px;\n}\n\n.io-switch__input:disabled + .io-switch__track {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .io-switch__track,\n  .io-switch__track::before {\n    transition: none;\n  }\n}","previewHtml":"<div style=\"display:flex;flex-wrap:wrap;align-items:center;gap:28px;padding:4px 0\"><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:56px;height:32px;border-radius:16px;background:#cbd5e1\"><span style=\"position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:12px;background:#ffffff;box-shadow:0 1px 3px rgba(0,0,0,0.3)\"></span></span><span>Enable notifications</span>\n</div><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:56px;height:32px;border-radius:16px;background:#22c55e\"><span style=\"position:absolute;top:4px;left:28px;width:24px;height:24px;border-radius:12px;background:#ffffff;box-shadow:0 1px 3px rgba(0,0,0,0.3)\"></span></span><span>Enable notifications</span>\n</div></div>"},"credits_used":5,"credits_remaining":null}},"slim_material_bar":{"summary":"Slim Material bar","value":{"tool":"css-switch-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<label class=\"toggle\">\n  <input class=\"toggle__input\" type=\"checkbox\" role=\"switch\" />\n  <span class=\"toggle__track\"></span>\n  <span class=\"toggle__label\">Dark mode</span>\n</label>","cssCode":".toggle {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.toggle__input {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  opacity: 0;\n  pointer-events: none;\n}\n\n.toggle__track {\n  position: relative;\n  flex: none;\n  display: block;\n  width: 64px;\n  height: 16px;\n  margin: 6px 0;\n  border-radius: 8px;\n  background: #9ca3af;\n  transition: background-color 200ms ease, border-color 200ms ease;\n}\n\n.toggle__track::before {\n  content: \"\";\n  position: absolute;\n  top: -6px;\n  left: 0px;\n  width: 28px;\n  height: 28px;\n  border-radius: 14px;\n  background: #ffffff;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n  transition: transform 200ms ease, background-color 200ms ease;\n}\n\n.toggle__input:checked + .toggle__track {\n  background: #6366f1;\n}\n\n.toggle__input:checked + .toggle__track::before {\n  transform: translateX(36px);\n  background: #ffffff;\n}\n\n.toggle__input:focus-visible + .toggle__track {\n  outline: 2px solid #6366f1;\n  outline-offset: 2px;\n}\n\n.toggle__input:disabled + .toggle__track {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .toggle__track,\n  .toggle__track::before {\n    transition: none;\n  }\n}","previewHtml":"<div style=\"display:flex;flex-wrap:wrap;align-items:center;gap:28px;padding:4px 0\"><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:64px;height:16px;margin:6px 0;border-radius:8px;background:#9ca3af\"><span style=\"position:absolute;top:-6px;left:0px;width:28px;height:28px;border-radius:14px;background:#ffffff;box-shadow:0 1px 3px rgba(0,0,0,0.3)\"></span></span><span>Dark mode</span>\n</div><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:64px;height:16px;margin:6px 0;border-radius:8px;background:#6366f1\"><span style=\"position:absolute;top:-6px;left:36px;width:28px;height:28px;border-radius:14px;background:#ffffff;box-shadow:0 1px 3px rgba(0,0,0,0.3)\"></span></span><span>Dark mode</span>\n</div></div>"},"credits_used":5,"credits_remaining":null}},"square_outlined_switch_no_label":{"summary":"Square outlined switch, no label","value":{"tool":"css-switch-generator","tool_version":"1.0.2","outputs":{"htmlCode":"<label class=\"sq-switch\">\n  <input class=\"sq-switch__input\" type=\"checkbox\" role=\"switch\" />\n  <span class=\"sq-switch__track\"></span>\n</label>","cssCode":".sq-switch {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  cursor: pointer;\n  -webkit-user-select: none;\n  user-select: none;\n}\n\n.sq-switch__input {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  opacity: 0;\n  pointer-events: none;\n}\n\n.sq-switch__track {\n  position: relative;\n  flex: none;\n  display: block;\n  width: 60px;\n  height: 30px;\n  border-radius: 4px;\n  background: transparent;\n  border: 2px solid #94a3b8;\n  box-sizing: border-box;\n  transition: background-color 0ms ease, border-color 0ms ease;\n}\n\n.sq-switch__track::before {\n  content: \"\";\n  position: absolute;\n  top: 4px;\n  left: 4px;\n  width: 18px;\n  height: 18px;\n  border-radius: 0px;\n  background: #94a3b8;\n  transition: transform 0ms ease, background-color 0ms ease;\n}\n\n.sq-switch__input:checked + .sq-switch__track {\n  background: transparent;\n  border: 2px solid #0ea5e9;\n}\n\n.sq-switch__input:checked + .sq-switch__track::before {\n  transform: translateX(30px);\n  background: #0ea5e9;\n}\n\n.sq-switch__input:focus-visible + .sq-switch__track {\n  outline: 2px solid #0ea5e9;\n  outline-offset: 2px;\n}\n\n.sq-switch__input:disabled + .sq-switch__track {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .sq-switch__track,\n  .sq-switch__track::before {\n    transition: none;\n  }\n}","previewHtml":"<div style=\"display:flex;flex-wrap:wrap;align-items:center;gap:28px;padding:4px 0\"><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:60px;height:30px;border-radius:4px;background:transparent;border:2px solid #94a3b8;box-sizing:border-box\"><span style=\"position:absolute;top:4px;left:4px;width:18px;height:18px;border-radius:0px;background:#94a3b8\"></span></span>\n</div><div style=\"display:inline-flex;align-items:center;gap:10px;font-size:14px\">\n  <span style=\"position:relative;display:inline-block;flex:none;width:60px;height:30px;border-radius:4px;background:transparent;border:2px solid #0ea5e9;box-sizing:border-box\"><span style=\"position:absolute;top:4px;left:34px;width:18px;height:18px;border-radius:0px;background:#0ea5e9\"></span></span>\n</div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"htmlCode":{"type":"string","description":"HTML"},"cssCode":{"type":"string","description":"CSS"},"previewHtml":{"type":"string","description":"Preview markup (static)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-triangle-generator":{"post":{"operationId":"run_css_triangle_generator","summary":"CSS Triangle Generator","tags":["Generators"],"description":"Generate a pure-CSS triangle pointing in any of 8 directions — the classic zero-size border trick or a modern clip-path polygon — with your own width, height and color, plus the HTML snippet and an SVG preview. Runs entirely in your browser.\n\n[Try CSS Triangle Generator in your browser →](https://iotools.cloud/tool/css-triangle-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["up","down","left","right","top-left","top-right","bottom-right","bottom-left"],"description":"Direction"},"technique":{"enum":["border","clip-path"],"description":"Technique"},"width":{"type":"number","description":"Width (px)","minimum":1,"maximum":500},"height":{"type":"number","description":"Height (px)","minimum":1,"maximum":500},"color":{"type":"string","description":"Triangle Color"},"className":{"type":"string","description":"CSS Class Name"}},"required":[]},"examples":{"upward_triangle_border_trick":{"summary":"Upward triangle (border trick)","value":{"direction":"up","technique":"border","width":"100","height":"100","color":"#464aff","className":"triangle"}},"top_left_corner_wedge":{"summary":"Top-left corner wedge","value":{"direction":"top-left","technique":"border","width":"120","height":"60","color":"#ff5c00","className":"corner"}},"right_pointing_arrow_clip_path":{"summary":"Right-pointing arrow (clip-path)","value":{"direction":"right","technique":"clip-path","width":"80","height":"120","color":"#0a7d46","className":"arrow"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"upward_triangle_border_trick":{"summary":"Upward triangle (border trick)","value":{"tool":"css-triangle-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Up triangle — 100×100px */\n.triangle {\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 0 50px 100px 50px;\n  border-color: transparent transparent #464aff transparent;\n}","htmlCode":"<div class=\"triangle\"></div>","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"260\" height=\"260\" viewBox=\"0 0 260 260\"><rect width=\"260\" height=\"260\" fill=\"#ffffff\"/><rect x=\"20.00\" y=\"20.00\" width=\"220.00\" height=\"220.00\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"4 4\"/><polygon points=\"130.00,20.00 20.00,240.00 240.00,240.00\" fill=\"#464aff\"/></svg>"},"credits_used":5,"credits_remaining":null}},"top_left_corner_wedge":{"summary":"Top-left corner wedge","value":{"tool":"css-triangle-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Top Left triangle — 120×60px */\n.corner {\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 60px 120px 0 0;\n  border-color: #ff5c00 transparent transparent transparent;\n}","htmlCode":"<div class=\"corner\"></div>","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"260\" height=\"260\" viewBox=\"0 0 260 260\"><rect width=\"260\" height=\"260\" fill=\"#ffffff\"/><rect x=\"20.00\" y=\"75.00\" width=\"220.00\" height=\"110.00\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"4 4\"/><polygon points=\"20.00,75.00 240.00,75.00 20.00,185.00\" fill=\"#ff5c00\"/></svg>"},"credits_used":5,"credits_remaining":null}},"right_pointing_arrow_clip_path":{"summary":"Right-pointing arrow (clip-path)","value":{"tool":"css-triangle-generator","tool_version":"1.0.2","outputs":{"cssCode":"/* Right triangle — 80×120px */\n.arrow {\n  width: 80px;\n  height: 120px;\n  background: #0a7d46;\n  clip-path: polygon(0% 0%, 0% 100%, 100% 50%);\n}","htmlCode":"<div class=\"arrow\"></div>","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"260\" height=\"260\" viewBox=\"0 0 260 260\"><rect width=\"260\" height=\"260\" fill=\"#ffffff\"/><rect x=\"56.67\" y=\"20.00\" width=\"146.67\" height=\"220.00\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"4 4\"/><polygon points=\"56.67,20.00 56.67,240.00 203.33,130.00\" fill=\"#0a7d46\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML"},"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cuid2-generator":{"post":{"operationId":"run_cuid2_generator","summary":"CUID2 Generator","tags":["Generators"],"description":"Generate collision-resistant CUID2 identifiers — lowercase letters and digits, always starting with a letter, with a configurable length and batch count. A real SHA3-512-based CUID2 implementation, computed entirely in your browser.\n\n[Try CUID2 Generator in your browser →](https://iotools.cloud/tool/cuid2-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"ID length","minimum":4,"maximum":32},"count":{"type":"number","description":"How many to generate","minimum":1,"maximum":50}},"required":[]},"examples":{"10_cuid2s_default_length_24":{"summary":"10 CUID2s, default length (24)","value":{"length":"24","count":"10"}},"5_short_cuid2s_length_10":{"summary":"5 short CUID2s (length 10)","value":{"length":"10","count":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cuids":{"type":"string","description":"Generated CUID2s"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/curl-command-builder":{"post":{"operationId":"run_curl_command_builder","summary":"cURL Command Builder","tags":["Generators"],"description":"Build a ready-to-paste curl command from a URL, HTTP method, headers, request body, Basic Auth, and common flags (-L, -k, -v, -i) — no manual shell quoting required.\n\n[Try cURL Command Builder in your browser →](https://iotools.cloud/tool/curl-command-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE","HEAD"],"description":"HTTP Method"},"headers":{"type":"string","description":"Headers"},"body":{"type":"string","description":"Request Body"},"basicAuthUser":{"type":"string","description":"Basic Auth Username"},"basicAuthPass":{"type":"string","description":"Basic Auth Password"},"followRedirects":{"type":"boolean","description":"Follow redirects (-L)"},"insecure":{"type":"boolean","description":"Skip SSL certificate verification (-k)"},"verbose":{"type":"boolean","description":"Verbose output (-v)"},"includeHeaders":{"type":"boolean","description":"Include response headers (-i)"}},"required":["url"]},"examples":{"post_with_json_body":{"summary":"POST with JSON body","value":{"url":"https://api.example.com/users","method":"POST","headers":"Content-Type: application/json\nAuthorization: Bearer abc123","body":"{\"name\":\"Jane\"}","basicAuthUser":"","basicAuthPass":"","followRedirects":"true","insecure":"","verbose":"","includeHeaders":"true"}},"simple_get":{"summary":"Simple GET","value":{"url":"https://api.example.com/status","method":"GET","headers":"","body":"","basicAuthUser":"","basicAuthPass":"","followRedirects":"","insecure":"","verbose":"","includeHeaders":""}},"put_with_basic_auth_and_insecure_flag":{"summary":"PUT with Basic Auth and insecure flag","value":{"url":"https://api.example.com/resource/42","method":"PUT","headers":"Content-Type: application/json","body":"{\"status\":\"active\"}","basicAuthUser":"admin","basicAuthPass":"s3cr3t","followRedirects":"","insecure":"true","verbose":"","includeHeaders":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"post_with_json_body":{"summary":"POST with JSON body","value":{"tool":"curl-command-builder","tool_version":"1.0.2","outputs":{"curlCommand":"curl -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer abc123' -d '{\"name\":\"Jane\"}' -L -i 'https://api.example.com/users'"},"credits_used":5,"credits_remaining":null}},"simple_get":{"summary":"Simple GET","value":{"tool":"curl-command-builder","tool_version":"1.0.2","outputs":{"curlCommand":"curl 'https://api.example.com/status'"},"credits_used":5,"credits_remaining":null}},"put_with_basic_auth_and_insecure_flag":{"summary":"PUT with Basic Auth and insecure flag","value":{"tool":"curl-command-builder","tool_version":"1.0.2","outputs":{"curlCommand":"curl -X PUT -H 'Content-Type: application/json' -d '{\"status\":\"active\"}' -u 'admin:s3cr3t' -k 'https://api.example.com/resource/42'"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"curlCommand":{"type":"string","description":"cURL Command"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/database-connection-string-builder":{"post":{"operationId":"run_database_connection_string_builder","summary":"Database Connection String Builder","tags":["Generators"],"description":"Build a database connection URI and .env-style config from host, port and credential fields — PostgreSQL, MySQL, MariaDB, MongoDB, Redis, MSSQL and SQLite. Handles URL-encoding of special characters, IPv6 hosts and Unix socket paths automatically.\n\n[Try Database Connection String Builder in your browser →](https://iotools.cloud/tool/database-connection-string-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dbType":{"enum":["postgresql","mysql","mariadb","mongodb","redis","mssql","sqlite"],"description":"Database Type"},"connectionMode":{"enum":["tcp","socket"],"description":"Connection Type"},"host":{"type":"string","description":"Host"},"socketPath":{"type":"string","description":"Socket Path"},"port":{"type":"number","description":"Port","minimum":1,"maximum":65535},"mongoSrv":{"type":"boolean","description":"Use SRV connection (mongodb+srv://)"},"database":{"type":"string","description":"Database Name"},"filePath":{"type":"string","description":"Database File Path"},"username":{"type":"string","description":"Username"},"password":{"type":"string","description":"Password"},"ssl":{"type":"boolean","description":"Use SSL/TLS"},"extraParams":{"type":"string","description":"Additional Parameters"}},"required":[]},"examples":{"postgresql_with_a_special_character_password":{"summary":"PostgreSQL with a special-character password","value":{"dbType":"postgresql","connectionMode":"tcp","host":"db.example.com","socketPath":"","port":"","mongoSrv":"","database":"myapp","filePath":"","username":"app_user","password":"p@ss:w/ord#1","ssl":"true","extraParams":""}},"mongodb_atlas_srv":{"summary":"MongoDB Atlas (SRV)","value":{"dbType":"mongodb","connectionMode":"tcp","host":"cluster0.mongodb.net","socketPath":"","port":"","mongoSrv":"true","database":"shop","filePath":"","username":"admin","password":"hunter2","ssl":"","extraParams":"retryWrites=true"}},"redis_with_tls":{"summary":"Redis with TLS","value":{"dbType":"redis","connectionMode":"tcp","host":"cache.internal","socketPath":"","port":"","mongoSrv":"","database":"0","filePath":"","username":"","password":"topsecret","ssl":"true","extraParams":""}},"postgresql_over_a_unix_socket":{"summary":"PostgreSQL over a Unix socket","value":{"dbType":"postgresql","connectionMode":"socket","host":"localhost","socketPath":"/var/run/postgresql","port":"","mongoSrv":"","database":"myapp","filePath":"","username":"app_user","password":"","ssl":"","extraParams":""}},"sqlite_file":{"summary":"SQLite file","value":{"dbType":"sqlite","connectionMode":"tcp","host":"localhost","socketPath":"","port":"","mongoSrv":"","database":"","filePath":"./data/app.db","username":"","password":"","ssl":"","extraParams":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"postgresql_with_a_special_character_password":{"summary":"PostgreSQL with a special-character password","value":{"tool":"database-connection-string-builder","tool_version":"1.0.2","outputs":{"uri":"postgresql://app_user:p%40ss%3Aw%2Ford%231@db.example.com:5432/myapp?sslmode=require","env":"DATABASE_URL=postgresql://app_user:p%40ss%3Aw%2Ford%231@db.example.com:5432/myapp?sslmode=require\n\nDB_HOST=db.example.com\nDB_PORT=5432\nDB_NAME=myapp\nDB_USER=app_user\nDB_PASSWORD=p@ss:w/ord#1\nDB_SSL=true"},"credits_used":5,"credits_remaining":null}},"mongodb_atlas_srv":{"summary":"MongoDB Atlas (SRV)","value":{"tool":"database-connection-string-builder","tool_version":"1.0.2","outputs":{"uri":"mongodb+srv://admin:hunter2@cluster0.mongodb.net/shop?retryWrites=true","env":"DATABASE_URL=mongodb+srv://admin:hunter2@cluster0.mongodb.net/shop?retryWrites=true\n\nDB_HOST=cluster0.mongodb.net\nDB_NAME=shop\nDB_USER=admin\nDB_PASSWORD=hunter2\nDB_SSL=false"},"credits_used":5,"credits_remaining":null}},"redis_with_tls":{"summary":"Redis with TLS","value":{"tool":"database-connection-string-builder","tool_version":"1.0.2","outputs":{"uri":"rediss://:topsecret@cache.internal:6379/0","env":"DATABASE_URL=rediss://:topsecret@cache.internal:6379/0\n\nDB_HOST=cache.internal\nDB_PORT=6379\nDB_NAME=0\nDB_PASSWORD=topsecret\nDB_SSL=true"},"credits_used":5,"credits_remaining":null}},"postgresql_over_a_unix_socket":{"summary":"PostgreSQL over a Unix socket","value":{"tool":"database-connection-string-builder","tool_version":"1.0.2","outputs":{"uri":"postgresql://app_user@/myapp?host=%2Fvar%2Frun%2Fpostgresql","env":"DATABASE_URL=postgresql://app_user@/myapp?host=%2Fvar%2Frun%2Fpostgresql\n\nDB_SOCKET=/var/run/postgresql\nDB_NAME=myapp\nDB_USER=app_user"},"credits_used":5,"credits_remaining":null}},"sqlite_file":{"summary":"SQLite file","value":{"tool":"database-connection-string-builder","tool_version":"1.0.2","outputs":{"uri":"sqlite:///./data/app.db","env":"DATABASE_URL=sqlite:///./data/app.db\n\nDB_PATH=./data/app.db"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"uri":{"type":"string","description":"Connection URI"},"env":{"type":"string","description":".env / Keyword-Value Format"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/date-range-generator":{"post":{"operationId":"run_date_range_generator","summary":"Date Range Generator","tags":["Generators"],"description":"Generate a list of dates (or timestamps, at hour/minute granularity) between a start and end date, stepped by a configurable interval. Useful for building test data, populating a calendar, or scripting a batch job. Runs entirely in your browser.\n\n[Try Date Range Generator in your browser →](https://iotools.cloud/tool/date-range-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startDate":{"type":"string","description":"Start Date"},"endDate":{"type":"string","description":"End Date"},"step":{"type":"number","description":"Step","minimum":1},"unit":{"enum":["days","hours","minutes"],"description":"Unit"},"reverse":{"type":"boolean","description":"List newest first"}},"required":["startDate","endDate"]},"examples":{"5_days_step_1":{"summary":"5 days, step 1","value":{"startDate":"2026-08-01","endDate":"2026-08-05","step":"1","unit":"days","reverse":""}},"every_other_day_newest_first":{"summary":"Every other day, newest first","value":{"startDate":"2026-08-01","endDate":"2026-08-09","step":"2","unit":"days","reverse":"true"}},"single_day_every_6_hours":{"summary":"Single day, every 6 hours","value":{"startDate":"2026-08-01","endDate":"2026-08-01","step":"6","unit":"hours","reverse":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_days_step_1":{"summary":"5 days, step 1","value":{"tool":"date-range-generator","tool_version":"1.0.2","outputs":{"output":"2026-08-01\n2026-08-02\n2026-08-03\n2026-08-04\n2026-08-05","count":"5 items"},"credits_used":5,"credits_remaining":null}},"every_other_day_newest_first":{"summary":"Every other day, newest first","value":{"tool":"date-range-generator","tool_version":"1.0.2","outputs":{"output":"2026-08-09\n2026-08-07\n2026-08-05\n2026-08-03\n2026-08-01","count":"5 items"},"credits_used":5,"credits_remaining":null}},"single_day_every_6_hours":{"summary":"Single day, every 6 hours","value":{"tool":"date-range-generator","tool_version":"1.0.2","outputs":{"output":"2026-08-01 00:00\n2026-08-01 06:00\n2026-08-01 12:00\n2026-08-01 18:00","count":"4 items"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Date Range"},"count":{"type":"string","description":"Total"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/deno-json-config-generator":{"post":{"operationId":"run_deno_json_config_generator","summary":"Deno.json Config Generator","tags":["Generators"],"description":"Generate a Deno deno.json config from form fields: task runner scripts, an import map, global excludes, nodeModulesDir/lock, and the lint, fmt, and compilerOptions sub-configs. Start from a preset (CLI tool, Fresh-style web app, JSR library, Node/npm-compat) or build a custom config; output is ready-to-drop JSON.\n\n[Try Deno.json Config Generator in your browser →](https://iotools.cloud/tool/deno-json-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"enum":["custom","cli","web","library","node-compat"],"description":"Preset Profile"},"includeSchema":{"type":"boolean","description":"Include $schema field (IDE autocompletion)"},"exclude":{"type":"string","description":"exclude"},"nodeModulesDir":{"enum":["","auto","manual","none"],"description":"nodeModulesDir"},"lock":{"type":"string","description":"lock"},"tasks":{"type":"string","description":"tasks"},"imports":{"type":"string","description":"imports"},"lintRecommended":{"type":"boolean","description":"Use the recommended rule tag"},"lintRuleInclude":{"type":"string","description":"Rules to force-enable"},"lintRuleExclude":{"type":"string","description":"Rules to exclude"},"lintInclude":{"type":"string","description":"lint.include"},"lintExclude":{"type":"string","description":"lint.exclude"},"fmtUseTabs":{"type":"boolean","description":"useTabs"},"fmtIndentWidth":{"type":"number","description":"indentWidth","minimum":1,"maximum":8},"fmtLineWidth":{"type":"number","description":"lineWidth","minimum":40,"maximum":200},"fmtSingleQuote":{"type":"boolean","description":"singleQuote"},"fmtSemiColons":{"type":"boolean","description":"semiColons"},"fmtProseWrap":{"enum":["always","never","preserve"],"description":"proseWrap"},"fmtInclude":{"type":"string","description":"fmt.include"},"fmtExclude":{"type":"string","description":"fmt.exclude"},"strict":{"type":"boolean","description":"strict — enable all strict type-checking options"},"jsx":{"enum":["","react-jsx","react-jsxdev","react","preserve","react-native"],"description":"jsx"},"jsxImportSource":{"type":"string","description":"jsxImportSource"},"lib":{"type":"string","description":"lib"},"types":{"type":"string","description":"types"},"checkJs":{"type":"boolean","description":"checkJs"},"allowJs":{"type":"boolean","description":"allowJs"},"noImplicitAny":{"type":"boolean","description":"noImplicitAny"},"strictNullChecks":{"type":"boolean","description":"strictNullChecks"},"noUnusedLocals":{"type":"boolean","description":"noUnusedLocals"},"noUnusedParameters":{"type":"boolean","description":"noUnusedParameters"}},"required":[]},"examples":{"cli_tool_preset":{"summary":"CLI Tool preset","value":{"preset":"cli","includeSchema":"true"}},"custom_config_with_tasks_imports_and_fmt_overrides":{"summary":"Custom config with tasks, imports, and fmt overrides","value":{"preset":"custom","includeSchema":"false","tasks":"dev=deno run --watch main.ts","imports":"@std/assert=jsr:@std/assert@^1.0.0","exclude":"dist","lintRecommended":"true","fmtSingleQuote":"true","fmtSemiColons":"false","strict":"true","noUnusedLocals":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cli_tool_preset":{"summary":"CLI Tool preset","value":{"tool":"deno-json-config-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"$schema\": \"https://raw.githubusercontent.com/denoland/deno/main/cli/schemas/config-file.v1.json\",\n  \"tasks\": {\n    \"dev\": \"deno run --watch main.ts\",\n    \"start\": \"deno run main.ts\",\n    \"test\": \"deno test -A\"\n  },\n  \"imports\": {\n    \"@std/assert\": \"jsr:@std/assert@^1.0.0\"\n  },\n  \"lint\": {\n    \"rules\": {\n      \"tags\": [\n        \"recommended\"\n      ]\n    }\n  },\n  \"compilerOptions\": {\n    \"strict\": true\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"custom_config_with_tasks_imports_and_fmt_overrides":{"summary":"Custom config with tasks, imports, and fmt overrides","value":{"tool":"deno-json-config-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"tasks\": {\n    \"dev\": \"deno run --watch main.ts\"\n  },\n  \"imports\": {\n    \"@std/assert\": \"jsr:@std/assert@^1.0.0\"\n  },\n  \"exclude\": [\n    \"dist\"\n  ],\n  \"lint\": {\n    \"rules\": {\n      \"tags\": [\n        \"recommended\"\n      ]\n    }\n  },\n  \"fmt\": {\n    \"singleQuote\": true,\n    \"semiColons\": false\n  },\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"noUnusedLocals\": true\n  }\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated deno.json"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/directory-tree-generator":{"post":{"operationId":"run_directory_tree_generator","summary":"Directory Tree Generator","tags":["Generators"],"description":"Turn an indented file list or a set of slash-separated paths into a clean ASCII directory tree. Auto-detects the input format, supports box-drawing or plain-ASCII connectors, optional 📁/📄 icons, trailing folder slashes, and a compact layout.\n\n[Try Directory Tree Generator in your browser →](https://iotools.cloud/tool/directory-tree-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Input (Indented List or Paths)"},"inputFormat":{"enum":["auto","indent","paths"],"description":"Input Format"},"treeStyle":{"enum":["box","ascii","spaces"],"description":"Tree Style"},"showIcons":{"type":"boolean","description":"Show file/folder icons"},"trailingSlash":{"type":"boolean","description":"Append trailing slash to folders"},"compactMode":{"type":"boolean","description":"Compact mode (single-line indent)"}},"required":[]},"examples":{"indented_list_box_drawing":{"summary":"Indented list, box-drawing","value":{"originalText":"my-project\n  src\n    components\n      Button.tsx\n      Card.tsx\n    utils\n      format.ts\n    index.ts\n  tests\n    button.test.ts\n  package.json\n  README.md","inputFormat":"auto","treeStyle":"box","showIcons":"","trailingSlash":"true","compactMode":""}},"slash_paths_ascii_style_with_icons":{"summary":"Slash paths, ASCII style with icons","value":{"originalText":"my-project/src/index.ts\nmy-project/src/app.ts\nmy-project/README.md","inputFormat":"auto","treeStyle":"ascii","showIcons":"true","trailingSlash":"false","compactMode":""}},"compact_box_drawing":{"summary":"Compact box-drawing","value":{"originalText":"app\n  main.py\n  lib\n    util.py\n  test.py","inputFormat":"indent","treeStyle":"box","showIcons":"","trailingSlash":"true","compactMode":"true"}},"spaces_only_indent":{"summary":"Spaces-only indent","value":{"originalText":"root\n  a\n    a1.txt\n  b.txt","inputFormat":"indent","treeStyle":"spaces","showIcons":"","trailingSlash":"true","compactMode":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"indented_list_box_drawing":{"summary":"Indented list, box-drawing","value":{"tool":"directory-tree-generator","tool_version":"1.0.2","outputs":{"generatedTree":"my-project/\n├── src/\n│   ├── components/\n│   │   ├── Button.tsx\n│   │   └── Card.tsx\n│   ├── utils/\n│   │   └── format.ts\n│   └── index.ts\n├── tests/\n│   └── button.test.ts\n├── package.json\n└── README.md"},"credits_used":5,"credits_remaining":null}},"slash_paths_ascii_style_with_icons":{"summary":"Slash paths, ASCII style with icons","value":{"tool":"directory-tree-generator","tool_version":"1.0.2","outputs":{"generatedTree":"📁 my-project\n|-- 📁 src\n|   |-- 📄 index.ts\n|   `-- 📄 app.ts\n`-- 📄 README.md"},"credits_used":5,"credits_remaining":null}},"compact_box_drawing":{"summary":"Compact box-drawing","value":{"tool":"directory-tree-generator","tool_version":"1.0.2","outputs":{"generatedTree":"app/\n├─ main.py\n├─ lib/\n│ └─ util.py\n└─ test.py"},"credits_used":5,"credits_remaining":null}},"spaces_only_indent":{"summary":"Spaces-only indent","value":{"tool":"directory-tree-generator","tool_version":"1.0.2","outputs":{"generatedTree":"root/\n    a/\n        a1.txt\n    b.txt"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"generatedTree":{"type":"string","description":"Generated Tree"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dna-rna-sequence-generator":{"post":{"operationId":"run_dna_rna_sequence_generator","summary":"DNA / RNA Sequence Generator","tags":["Generators"],"description":"Generate random DNA or RNA sequences with a target GC content, or convert an input strand — complement, reverse complement, transcribe (DNA→RNA) and reverse transcribe. Outputs plain text or FASTA with base-composition stats.\n\n[Try DNA / RNA Sequence Generator in your browser →](https://iotools.cloud/tool/dna-rna-sequence-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate-dna","generate-rna","complement","reverse-complement","transcribe","reverse-transcribe"],"description":"Operation"},"inputSequence":{"type":"string","description":"Input Sequence"},"length":{"type":"number","description":"Sequence Length (bp)","minimum":1,"maximum":10000},"gcContent":{"type":"number","description":"GC Content %","minimum":0,"maximum":100},"count":{"type":"number","description":"Number of Sequences","minimum":1,"maximum":50},"iupacCodes":{"type":"boolean","description":"Include IUPAC ambiguity codes (R, Y, S, W, K, M, N)"},"format":{"enum":["plain","fasta"],"description":"Output Format"},"fastaHeader":{"type":"string","description":"FASTA Header Prefix"},"lineWrap":{"type":"number","description":"Line Wrap (chars)","minimum":0,"maximum":200}},"required":[]},"examples":{"random_dna_60_gc":{"summary":"Random DNA, 60% GC","value":{"mode":"generate-dna","length":"120","gcContent":"60","count":"1","iupacCodes":"","format":"fasta","fastaHeader":"seq","lineWrap":"60"}},"complement_of_a_dna_strand":{"summary":"Complement of a DNA strand","value":{"mode":"complement","inputSequence":"ATGC","format":"plain","lineWrap":"60"}},"reverse_complement":{"summary":"Reverse complement","value":{"mode":"reverse-complement","inputSequence":"ATGCGT","format":"plain","lineWrap":"60"}},"transcribe_dna_to_rna":{"summary":"Transcribe DNA to RNA","value":{"mode":"transcribe","inputSequence":"ATGC","format":"plain","lineWrap":"60"}},"reverse_transcribe_rna_to_dna":{"summary":"Reverse transcribe RNA to DNA","value":{"mode":"reverse-transcribe","inputSequence":"AUGC","format":"plain","lineWrap":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"complement_of_a_dna_strand":{"summary":"Complement of a DNA strand","value":{"tool":"dna-rna-sequence-generator","tool_version":"1.0.2","outputs":{"output":"TACG","stats":[{"property":"Sequences","value":"1"},{"property":"Total Length (bp)","value":"4"},{"property":"GC Content","value":"50.00% (2 bases)"},{"property":"AT Content","value":"50.00% (2 bases)"},{"property":"Base Counts","value":"A: 1, T: 1, G: 1, C: 1"}]},"credits_used":5,"credits_remaining":null}},"reverse_complement":{"summary":"Reverse complement","value":{"tool":"dna-rna-sequence-generator","tool_version":"1.0.2","outputs":{"output":"ACGCAT","stats":[{"property":"Sequences","value":"1"},{"property":"Total Length (bp)","value":"6"},{"property":"GC Content","value":"50.00% (3 bases)"},{"property":"AT Content","value":"50.00% (3 bases)"},{"property":"Base Counts","value":"A: 2, T: 1, G: 1, C: 2"}]},"credits_used":5,"credits_remaining":null}},"transcribe_dna_to_rna":{"summary":"Transcribe DNA to RNA","value":{"tool":"dna-rna-sequence-generator","tool_version":"1.0.2","outputs":{"output":"AUGC","stats":[{"property":"Sequences","value":"1"},{"property":"Total Length (bp)","value":"4"},{"property":"GC Content","value":"50.00% (2 bases)"},{"property":"AU Content","value":"50.00% (2 bases)"},{"property":"Base Counts","value":"A: 1, U: 1, G: 1, C: 1"}]},"credits_used":5,"credits_remaining":null}},"reverse_transcribe_rna_to_dna":{"summary":"Reverse transcribe RNA to DNA","value":{"tool":"dna-rna-sequence-generator","tool_version":"1.0.2","outputs":{"output":"ATGC","stats":[{"property":"Sequences","value":"1"},{"property":"Total Length (bp)","value":"4"},{"property":"GC Content","value":"50.00% (2 bases)"},{"property":"AT Content","value":"50.00% (2 bases)"},{"property":"Base Counts","value":"A: 1, T: 1, G: 1, C: 1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Sequence Output"},"stats":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dns-zone-file-generator":{"post":{"operationId":"run_dns_zone_file_generator","summary":"DNS Zone File Generator","tags":["Generators"],"description":"Generate a BIND-style DNS zone file from a domain, SOA settings, and a list of records (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA). Handles TTL shorthand (1h/1d/1w), trailing-dot fully-qualified names, and SOA serial/refresh/retry/expire fields. Runs entirely in your browser — no DNS lookups.\n\n[Try DNS Zone File Generator in your browser →](https://iotools.cloud/tool/dns-zone-file-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"primaryNs":{"type":"string","description":"Primary Nameserver"},"adminEmail":{"type":"string","description":"Admin Email"},"serial":{"type":"string","description":"Serial"},"defaultTtl":{"type":"string","description":"Default TTL"},"refresh":{"type":"string","description":"Refresh"},"retry":{"type":"string","description":"Retry"},"expire":{"type":"string","description":"Expire"},"minimumTtl":{"type":"string","description":"Minimum TTL"},"records":{"type":"string","description":"DNS Records"}},"required":["domain","primaryNs","adminEmail"]},"examples":{"basic_web_zone_a_cname_mx_txt":{"summary":"Basic web zone (A, CNAME, MX, TXT)","value":{"domain":"example.com","primaryNs":"ns1.example.com","adminEmail":"admin@example.com","serial":"2024010101","records":"@ A 192.0.2.1\nwww CNAME example.com\n@ MX 10 mail.example.com\n@ TXT v=spf1 include:_spf.example.com ~all"}},"ttl_shorthand_srv_caa_ns_aaaa":{"summary":"TTL shorthand + SRV, CAA, NS, AAAA","value":{"domain":"example.org","primaryNs":"ns1.example.org","adminEmail":"hostmaster.example.org","serial":"2024050900","defaultTtl":"1h","expire":"2w","records":"@ 1d NS ns1.example.org\n_sip._tcp 3600 SRV 10 5 5060 sipserver.example.org\n@ CAA 0 issue letsencrypt.org\n; a comment line\nipv6 AAAA 2001:db8::1"}},"soa_only_no_records":{"summary":"SOA only (no records)","value":{"domain":"minimal.test","primaryNs":"ns1.minimal.test","adminEmail":"admin@minimal.test"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_web_zone_a_cname_mx_txt":{"summary":"Basic web zone (A, CNAME, MX, TXT)","value":{"tool":"dns-zone-file-generator","tool_version":"1.0.2","outputs":{"zoneOutput":"; Zone file for example.com\n; Generated by IO Tools DNS Zone File Generator\n;\n$TTL 3600\n$ORIGIN example.com.\n\n@\tIN\tSOA\tns1.example.com. admin.example.com. (\n\t2024010101\t; Serial\n\t3600\t; Refresh\n\t900\t; Retry\n\t1209600\t; Expire\n\t86400\t; Minimum TTL\n)\n\n; DNS Records\n@\tIN\tA\t192.0.2.1\nwww\tIN\tCNAME\texample.com.\n@\tIN\tMX\t10\tmail.example.com.\n@\tIN\tTXT\t\"v=spf1 include:_spf.example.com ~all\"\n"},"credits_used":5,"credits_remaining":null}},"ttl_shorthand_srv_caa_ns_aaaa":{"summary":"TTL shorthand + SRV, CAA, NS, AAAA","value":{"tool":"dns-zone-file-generator","tool_version":"1.0.2","outputs":{"zoneOutput":"; Zone file for example.org\n; Generated by IO Tools DNS Zone File Generator\n;\n$TTL 3600\n$ORIGIN example.org.\n\n@\tIN\tSOA\tns1.example.org. hostmaster.example.org. (\n\t2024050900\t; Serial\n\t3600\t; Refresh\n\t900\t; Retry\n\t1209600\t; Expire\n\t86400\t; Minimum TTL\n)\n\n; DNS Records\n@\t86400\tIN\tNS\tns1.example.org.\n_sip._tcp\t3600\tIN\tSRV\t10\t5\t5060\tsipserver.example.org.\n@\tIN\tCAA\t0 issue \"letsencrypt.org\"\nipv6\tIN\tAAAA\t2001:db8::1\n"},"credits_used":5,"credits_remaining":null}},"soa_only_no_records":{"summary":"SOA only (no records)","value":{"tool":"dns-zone-file-generator","tool_version":"1.0.2","outputs":{"zoneOutput":"; Zone file for minimal.test\n; Generated by IO Tools DNS Zone File Generator\n;\n$TTL 3600\n$ORIGIN minimal.test.\n\n@\tIN\tSOA\tns1.minimal.test. admin.minimal.test. (\n\t1\t; Serial\n\t3600\t; Refresh\n\t900\t; Retry\n\t1209600\t; Expire\n\t86400\t; Minimum TTL\n)\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"zoneOutput":{"type":"string","description":"Zone File"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dockerfile-generator":{"post":{"operationId":"run_dockerfile_generator","summary":"Dockerfile Generator","tags":["Generators"],"description":"Generate a production-ready single-stage Dockerfile from structured inputs — pick a base stack (Node, Python, Go, Java, Ruby, PHP, Rust, .NET, Nginx, or a custom image), then set WORKDIR, build ARGs, ENV vars, system packages, dependency install, build command, exposed ports, a non-root user, a HEALTHCHECK, and ENTRYPOINT/CMD in exec or shell form. Runs entirely in your browser.\n\n[Try Dockerfile Generator in your browser →](https://iotools.cloud/tool/dockerfile-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"stack":{"enum":["node","python","go","openjdk","ruby","php","rust","dotnet","nginx","alpine","ubuntu","debian","custom"],"description":"Stack"},"imageTag":{"type":"string","description":"Image Tag"},"customImage":{"type":"string","description":"Base Image"},"workdir":{"type":"string","description":"WORKDIR"},"buildArgs":{"type":"string","description":"Build ARGs"},"envVars":{"type":"string","description":"Environment Variables"},"systemPackages":{"type":"string","description":"System Packages"},"depFiles":{"type":"string","description":"Dependency Files"},"installDeps":{"type":"string","description":"Install Command"},"buildCommand":{"type":"string","description":"Build Command"},"exposePorts":{"type":"string","description":"Expose Ports"},"runUser":{"type":"string","description":"Non-root USER"},"healthcheck":{"type":"string","description":"HEALTHCHECK"},"healthcheckInterval":{"enum":["10s","30s","60s","5m"],"description":"Healthcheck Interval"},"cmdForm":{"enum":["exec","shell"],"description":"Command Form"},"entrypointValue":{"type":"string","description":"ENTRYPOINT"},"cmdValue":{"type":"string","description":"CMD"}},"required":[]},"examples":{"node_js_defaults_exec_form":{"summary":"Node.js (defaults, exec form)","value":{"stack":"node","imageTag":"20-alpine","workdir":"/app","envVars":"NODE_ENV=production","depFiles":"package.json package-lock.json","installDeps":"npm ci --omit=dev","exposePorts":"3000","runUser":"node","cmdForm":"exec","cmdValue":"node server.js"}},"python_with_apt_system_packages_healthcheck":{"summary":"Python with apt system packages + healthcheck","value":{"stack":"python","imageTag":"3.12-slim","workdir":"/app","envVars":"PYTHONDONTWRITEBYTECODE=1\nPYTHONUNBUFFERED=1","systemPackages":"curl\nlibpq-dev","depFiles":"requirements.txt","installDeps":"pip install --no-cache-dir -r requirements.txt","exposePorts":"8000","healthcheck":"curl -fsS http://localhost:8000/health || exit 1","healthcheckInterval":"30s","cmdForm":"exec","cmdValue":"python app.py"}},"go_with_build_command_arg_entrypoint":{"summary":"Go with build command + ARG + ENTRYPOINT","value":{"stack":"go","imageTag":"1.22-alpine","workdir":"/app","buildArgs":"VERSION=1.0.0\nDEBUG=","envVars":"CGO_ENABLED=0","depFiles":"go.mod go.sum","installDeps":"go mod download","buildCommand":"go build -o /app/server .","exposePorts":"8080","runUser":"","cmdForm":"exec","entrypointValue":"/app/server","cmdValue":""}},"custom_image_shell_form_cmd_no_install":{"summary":"Custom image, shell form CMD, no install","value":{"stack":"custom","customImage":"myregistry/myapp:1.2.3","workdir":"/srv","envVars":"","depFiles":"","installDeps":"","exposePorts":"8080, 9090","runUser":"","cmdForm":"shell","cmdValue":"./run.sh --serve"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"node_js_defaults_exec_form":{"summary":"Node.js (defaults, exec form)","value":{"tool":"dockerfile-generator","tool_version":"1.0.2","outputs":{"output":"FROM node:20-alpine\n\nWORKDIR /app\n\nENV NODE_ENV=production\n\nCOPY package.json package-lock.json ./\nRUN npm ci --omit=dev\n\nCOPY . .\n\nEXPOSE 3000\n\nUSER node\n\nCMD [\"node\", \"server.js\"]\n"},"credits_used":5,"credits_remaining":null}},"python_with_apt_system_packages_healthcheck":{"summary":"Python with apt system packages + healthcheck","value":{"tool":"dockerfile-generator","tool_version":"1.0.2","outputs":{"output":"FROM python:3.12-slim\n\nWORKDIR /app\n\nENV PYTHONDONTWRITEBYTECODE=1\nENV PYTHONUNBUFFERED=1\n\nRUN apt-get update \\\n    && apt-get install -y --no-install-recommends curl libpq-dev \\\n    && rm -rf /var/lib/apt/lists/*\n\nCOPY requirements.txt ./\nRUN pip install --no-cache-dir -r requirements.txt\n\nCOPY . .\n\nEXPOSE 8000\n\nHEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \\\n    CMD curl -fsS http://localhost:8000/health || exit 1\n\nCMD [\"python\", \"app.py\"]\n"},"credits_used":5,"credits_remaining":null}},"go_with_build_command_arg_entrypoint":{"summary":"Go with build command + ARG + ENTRYPOINT","value":{"tool":"dockerfile-generator","tool_version":"1.0.2","outputs":{"output":"FROM golang:1.22-alpine\n\nARG VERSION=1.0.0\nARG DEBUG\n\nWORKDIR /app\n\nENV CGO_ENABLED=0\n\nCOPY go.mod go.sum ./\nRUN go mod download\n\nCOPY . .\n\nRUN go build -o /app/server .\n\nEXPOSE 8080\n\nENTRYPOINT [\"/app/server\"]\n"},"credits_used":5,"credits_remaining":null}},"custom_image_shell_form_cmd_no_install":{"summary":"Custom image, shell form CMD, no install","value":{"tool":"dockerfile-generator","tool_version":"1.0.2","outputs":{"output":"FROM myregistry/myapp:1.2.3\n\nWORKDIR /srv\n\nCOPY . .\n\nEXPOSE 8080\nEXPOSE 9090\n\nCMD ./run.sh --serve\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Dockerfile"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dockerignore-generator":{"post":{"operationId":"run_dockerignore_generator","summary":"Dockerignore Generator","tags":["Generators"],"description":"Generate a .dockerignore file by selecting the language/framework stacks your project uses — Node.js, Python, Go, Rust, Java/Maven/Gradle, Ruby, PHP, .NET, Elixir, Flutter — plus common VCS, IDE, OS and CI patterns. Merges the chosen templates, de-duplicates repeated patterns, and lets you append custom rules.\n\n[Try Dockerignore Generator in your browser →](https://iotools.cloud/tool/dockerignore-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"groupCommon":{"type":"array","items":{"enum":["tplVcs","tplIde","tplOs","tplCi"]},"description":"Common"},"groupLanguagesRuntimes":{"type":"array","items":{"enum":["tplNode","tplPython","tplGo","tplRust","tplJava","tplRuby","tplPhp","tplDotnet","tplElixir","tplFlutter"]},"description":"Languages & Runtimes"},"customPatterns":{"type":"string","description":"Additional patterns"}},"required":[]},"examples":{"node_js_project":{"summary":"Node.js project","value":{"groupLanguagesRuntimes":"[\"tplNode\"]"}},"node_python_shared_patterns_de_duplicated":{"summary":"Node + Python (shared patterns de-duplicated)","value":{"groupLanguagesRuntimes":"[\"tplNode\",\"tplPython\"]"}},"version_control_with_custom_patterns":{"summary":"Version control with custom patterns","value":{"groupCommon":"[\"tplVcs\"]","customPatterns":"*.bak\nsecrets/\n# personal"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"node_js_project":{"summary":"Node.js project","value":{"tool":"dockerignore-generator","tool_version":"1.0.2","outputs":{"output":"# Node.js\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n.pnpm-store/\ndist/\nbuild/\ncoverage/\n.next/\n.nuxt/\n.turbo/\n*.tsbuildinfo\n"},"credits_used":5,"credits_remaining":null}},"node_python_shared_patterns_de_duplicated":{"summary":"Node + Python (shared patterns de-duplicated)","value":{"tool":"dockerignore-generator","tool_version":"1.0.2","outputs":{"output":"# Node.js\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n.pnpm-store/\ndist/\nbuild/\ncoverage/\n.next/\n.nuxt/\n.turbo/\n*.tsbuildinfo\n\n# Python\n__pycache__/\n*.py[cod]\n*.egg-info/\n*.egg\n.eggs/\n.venv/\nvenv/\nenv/\n.pytest_cache/\n.mypy_cache/\n.tox/\n.coverage\nhtmlcov/\n"},"credits_used":5,"credits_remaining":null}},"version_control_with_custom_patterns":{"summary":"Version control with custom patterns","value":{"tool":"dockerignore-generator","tool_version":"1.0.2","outputs":{"output":"# Version Control\n.git/\n.gitignore\n.gitattributes\n.hg/\n.svn/\n\n# Custom Patterns\n*.bak\nsecrets/\n# personal\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .dockerignore"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ecdsa-ed25519-key-generator":{"post":{"operationId":"run_ecdsa_ed25519_key_generator","summary":"ECDSA / Ed25519 Key Generator","tags":["Generators"],"description":"Generate an elliptic-curve key pair (Ed25519, ECDSA P-256/P-384/P-521, or secp256k1) as PEM (PKCS#8/SPKI), JWK, or raw hex, with the public key's JWK thumbprint. Generated in your browser and never transmitted.\n\n[Try ECDSA / Ed25519 Key Generator in your browser →](https://iotools.cloud/tool/ecdsa-ed25519-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"enum":["ed25519","ecdsa-p256","ecdsa-p384","ecdsa-p521","ecdsa-secp256k1"],"description":"Algorithm"},"outputFormat":{"enum":["pem","jwk","hex"],"description":"Output format"}},"required":[]},"examples":{"ed25519_key_pair_pem":{"summary":"Ed25519 key pair (PEM)","value":{"algorithm":"ed25519","outputFormat":"pem"}},"ecdsa_p_256_as_jwk":{"summary":"ECDSA P-256 as JWK","value":{"algorithm":"ecdsa-p256","outputFormat":"jwk"}},"secp256k1_as_raw_hex":{"summary":"secp256k1 as raw hex","value":{"algorithm":"ecdsa-secp256k1","outputFormat":"hex"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"privateKey":{"type":"string","description":"Private key"},"publicKey":{"type":"string","description":"Public key"},"thumbprint":{"type":"string","description":"JWK thumbprint (kid)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/editorconfig-generator":{"post":{"operationId":"run_editorconfig_generator","summary":"EditorConfig Generator","tags":["Generators"],"description":"Generate a .editorconfig file from indent style, indent size, end-of-line, charset, and trailing-whitespace settings, plus optional per-language override blocks for Markdown, YAML, JSON, Python, Go, PHP, and more.\n\n[Try EditorConfig Generator in your browser →](https://iotools.cloud/tool/editorconfig-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"indentStyle":{"enum":["space","tab",""],"description":"Indent Style"},"indentSize":{"type":"number","description":"Indent Size","minimum":1,"maximum":8},"tabWidth":{"type":"number","description":"Tab Width","minimum":1,"maximum":16},"endOfLine":{"enum":["lf","crlf","cr",""],"description":"End of Line"},"charset":{"enum":["utf-8","utf-8-bom","latin1","utf-16be","utf-16le",""],"description":"Charset"},"maxLineLength":{"type":"number","description":"Max Line Length","minimum":0,"maximum":1000},"trimTrailingWhitespace":{"type":"boolean","description":"Trim trailing whitespace"},"insertFinalNewline":{"type":"boolean","description":"Insert final newline"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"},"overrideMarkdown":{"type":"boolean","description":"[*.md] — preserve trailing whitespace, no max line length"},"overrideYaml":{"type":"boolean","description":"[*.{yml,yaml}] — 2-space indent"},"overrideJson":{"type":"boolean","description":"[*.json] — 2-space indent"},"overrideJs":{"type":"boolean","description":"[*.{js,jsx,ts,tsx,mjs,cjs}] — 2-space indent"},"overrideCss":{"type":"boolean","description":"[*.{css,scss,sass,less}] — 2-space indent"},"overrideHtml":{"type":"boolean","description":"[*.{html,htm,xml,svg}] — 2-space indent"},"overridePython":{"type":"boolean","description":"[*.py] — 4-space indent (PEP 8)"},"overrideGo":{"type":"boolean","description":"[*.go] — tab indent (gofmt)"},"overridePhp":{"type":"boolean","description":"[*.php] — 4-space indent (PSR-12)"},"overrideRuby":{"type":"boolean","description":"[*.rb] — 2-space indent"},"overrideMakefile":{"type":"boolean","description":"[{Makefile,makefile,GNUmakefile}] — tab indent (required by make)"},"overrideBat":{"type":"boolean","description":"[*.{bat,cmd}] — CRLF line endings"}},"required":[]},"examples":{"default_2_space_lf_utf_8":{"summary":"Default (2-space, LF, utf-8)","value":{"indentStyle":"space","indentSize":"2","tabWidth":"","endOfLine":"lf","charset":"utf-8","maxLineLength":"0","trimTrailingWhitespace":"true","insertFinalNewline":"true","includeHeader":"true"}},"python_4_space_88_cols_no_header_with_yaml_markdown_overrides":{"summary":"Python (4-space, 88 cols, no header) with YAML + Markdown overrides","value":{"indentStyle":"space","indentSize":"4","tabWidth":"","endOfLine":"lf","charset":"utf-8","maxLineLength":"88","trimTrailingWhitespace":"true","insertFinalNewline":"true","includeHeader":"","overrideMarkdown":"true","overrideYaml":"true","overridePython":"true"}},"go_tab_indent_tab_width_4_with_makefile_markdown_overrides":{"summary":"Go (tab indent, tab_width 4) with Makefile + Markdown overrides","value":{"indentStyle":"tab","indentSize":"4","tabWidth":"4","endOfLine":"lf","charset":"utf-8","maxLineLength":"0","trimTrailingWhitespace":"true","insertFinalNewline":"true","includeHeader":"true","overrideMarkdown":"true","overrideGo":"true","overrideMakefile":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_2_space_lf_utf_8":{"summary":"Default (2-space, LF, utf-8)","value":{"tool":"editorconfig-generator","tool_version":"1.0.2","outputs":{"output":"# EditorConfig is awesome: https://EditorConfig.org\n# Generated with iotools.cloud\n\n# Top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n"},"credits_used":5,"credits_remaining":null}},"python_4_space_88_cols_no_header_with_yaml_markdown_overrides":{"summary":"Python (4-space, 88 cols, no header) with YAML + Markdown overrides","value":{"tool":"editorconfig-generator","tool_version":"1.0.2","outputs":{"output":"# Top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = space\nindent_size = 4\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nmax_line_length = 88\n\n[*.md]\ntrim_trailing_whitespace = false\nmax_line_length = off\n\n[*.{yml,yaml}]\nindent_style = space\nindent_size = 2\n\n[*.py]\nindent_style = space\nindent_size = 4\n"},"credits_used":5,"credits_remaining":null}},"go_tab_indent_tab_width_4_with_makefile_markdown_overrides":{"summary":"Go (tab indent, tab_width 4) with Makefile + Markdown overrides","value":{"tool":"editorconfig-generator","tool_version":"1.0.2","outputs":{"output":"# EditorConfig is awesome: https://EditorConfig.org\n# Generated with iotools.cloud\n\n# Top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = tab\nindent_size = 4\ntab_width = 4\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.md]\ntrim_trailing_whitespace = false\nmax_line_length = off\n\n[*.go]\nindent_style = tab\nindent_size = 4\n\n[{Makefile,makefile,GNUmakefile}]\nindent_style = tab\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .editorconfig"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-signature-html-generator":{"post":{"operationId":"run_email_signature_html_generator","summary":"Email Signature HTML Generator","tags":["Generators"],"description":"Generate a clean, inline-styled HTML email signature for Gmail, Outlook and Apple Mail. Enter your name, title, contact details, photo, logo and social links, then copy or download the ready-to-paste HTML.\n\n[Try Email Signature HTML Generator in your browser →](https://iotools.cloud/tool/email-signature-html-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sigFullName":{"type":"string","description":"Full name"},"sigJobTitle":{"type":"string","description":"Job title"},"sigCompany":{"type":"string","description":"Company"},"sigPhone":{"type":"string","description":"Phone"},"sigEmail":{"type":"string","description":"Email"},"sigWebsite":{"type":"string","description":"Website"},"sigAddress":{"type":"string","description":"Address"},"sigLayout":{"enum":["horizontal","vertical","compact"],"description":"Layout"},"sigFont":{"enum":["system","helvetica","georgia","courier"],"description":"Font family"},"sigAccentColor":{"type":"string","description":"Accent colour"},"sigTextColor":{"type":"string","description":"Text colour"},"sigFontSize":{"enum":["12","13","14"],"description":"Font size"},"sigPhotoEnabled":{"type":"boolean","description":"Include profile photo"},"sigPhotoUrl":{"type":"string","description":"Photo URL"},"sigPhotoShape":{"enum":["circle","rounded","square"],"description":"Photo shape"},"sigLogoEnabled":{"type":"boolean","description":"Include company logo"},"sigLogoUrl":{"type":"string","description":"Logo URL"},"sigLinkedinUrl":{"type":"string","description":"LinkedIn URL"},"sigTwitterUrl":{"type":"string","description":"Twitter / X URL"},"sigGithubUrl":{"type":"string","description":"GitHub URL"},"sigInstagramUrl":{"type":"string","description":"Instagram URL"},"sigDisclaimerEnabled":{"type":"boolean","description":"Include disclaimer / legal note"},"sigDisclaimerText":{"type":"string","description":"Disclaimer text"}},"required":[]},"examples":{"horizontal_with_photo":{"summary":"Horizontal with photo","value":{"sigFullName":"Alex Morgan","sigJobTitle":"Senior Product Designer","sigCompany":"Acme Inc.","sigPhone":"+1 (415) 555-0123","sigEmail":"alex@acme.com","sigWebsite":"https://acme.com","sigAddress":"123 Market St, San Francisco, CA","sigLayout":"horizontal","sigFont":"system","sigAccentColor":"#464aff","sigTextColor":"#333333","sigFontSize":"13","sigPhotoEnabled":"true","sigPhotoUrl":"https://i.pravatar.cc/120?img=12","sigPhotoShape":"circle","sigLogoEnabled":"","sigLogoUrl":"","sigLinkedinUrl":"https://linkedin.com/in/alex-morgan","sigTwitterUrl":"https://twitter.com/alexmorgan","sigGithubUrl":"","sigInstagramUrl":"","sigDisclaimerEnabled":"","sigDisclaimerText":""}},"compact_with_disclaimer":{"summary":"Compact with disclaimer","value":{"sigFullName":"Jordan Lee","sigJobTitle":"Attorney","sigCompany":"Lee & Co.","sigPhone":"","sigEmail":"jordan@leeco.example","sigWebsite":"","sigAddress":"","sigLayout":"compact","sigFont":"georgia","sigAccentColor":"#0a3d62","sigTextColor":"#222222","sigFontSize":"14","sigPhotoEnabled":"","sigPhotoUrl":"","sigPhotoShape":"circle","sigLogoEnabled":"","sigLogoUrl":"","sigLinkedinUrl":"","sigTwitterUrl":"","sigGithubUrl":"","sigInstagramUrl":"","sigDisclaimerEnabled":"true","sigDisclaimerText":"Confidential. If you received this in error, please delete it."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"horizontal_with_photo":{"summary":"Horizontal with photo","value":{"tool":"email-signature-html-generator","tool_version":"1.0.2","outputs":{"sigHtml":"<div style=\"font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\"><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:collapse;\"><tr><td valign=\"top\" style=\"padding:0 16px 0 0;\"><img src=\"https://i.pravatar.cc/120?img=12\" alt=\"Alex Morgan\" width=\"90\" height=\"90\" style=\"display:block;width:90px;height:90px;border:0;border-radius:50%;object-fit:cover;\" /></td><td valign=\"top\" style=\"padding:0 0 0 16px;border-left:3px solid #464aff;\"><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:collapse;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\"><tr><td style=\"padding:0 0 2px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:17px;line-height:1.2;font-weight:700;color:#464aff;\">Alex Morgan</td></tr><tr><td style=\"padding:0 0 8px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.4;\"><span style=\"color:#333333;\">Senior Product Designer</span><span style=\"color:#333333;opacity:0.6;\"> &middot; </span><span style=\"color:#333333;font-weight:600;\">Acme Inc.</span></td></tr><tr><td style=\"padding:1px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.5;\"><span style=\"display:inline-block;width:54px;color:#333333;opacity:0.6;\">Phone</span><a href=\"tel:+14155550123\" style=\"color:#464aff;text-decoration:none;\">+1 (415) 555-0123</a></td></tr><tr><td style=\"padding:1px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.5;\"><span style=\"display:inline-block;width:54px;color:#333333;opacity:0.6;\">Email</span><a href=\"mailto:alex@acme.com\" style=\"color:#464aff;text-decoration:none;\">alex@acme.com</a></td></tr><tr><td style=\"padding:1px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.5;\"><span style=\"display:inline-block;width:54px;color:#333333;opacity:0.6;\">Web</span><a href=\"https://acme.com\" style=\"color:#464aff;text-decoration:none;\">https://acme.com</a></td></tr><tr><td style=\"padding:1px 0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;font-size:13px;line-height:1.5;\"><span style=\"display:inline-block;width:54px;color:#333333;opacity:0.6;\">Addr</span><span style=\"color:#333333;\">123 Market St, San Francisco, CA</span></td></tr><tr><td style=\"padding:8px 0 0 0;\"><a href=\"https://linkedin.com/in/alex-morgan\" target=\"_blank\" rel=\"noopener\" title=\"LinkedIn\" style=\"display:inline-block;margin-right:6px;text-decoration:none;\"><img src=\"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons@13/icons/linkedin.svg\" alt=\"LinkedIn\" width=\"18\" height=\"18\" style=\"display:inline-block;width:18px;height:18px;border:0;vertical-align:middle;\" /></a><a href=\"https://twitter.com/alexmorgan\" target=\"_blank\" rel=\"noopener\" title=\"Twitter / X\" style=\"display:inline-block;margin-right:6px;text-decoration:none;\"><img src=\"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons@13/icons/x.svg\" alt=\"Twitter / X\" width=\"18\" height=\"18\" style=\"display:inline-block;width:18px;height:18px;border:0;vertical-align:middle;\" /></a></td></tr></table></td></tr></table></div>"},"credits_used":5,"credits_remaining":null}},"compact_with_disclaimer":{"summary":"Compact with disclaimer","value":{"tool":"email-signature-html-generator","tool_version":"1.0.2","outputs":{"sigHtml":"<div style=\"font-family:Georgia, 'Times New Roman', serif;\"><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:collapse;\"><tr><td><table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:collapse;font-family:Georgia, 'Times New Roman', serif;\"><tr><td style=\"padding:0 0 2px 0;font-family:Georgia, 'Times New Roman', serif;font-size:18px;line-height:1.2;font-weight:700;color:#0a3d62;\">Jordan Lee</td></tr><tr><td style=\"padding:0 0 8px 0;font-family:Georgia, 'Times New Roman', serif;font-size:14px;line-height:1.4;\"><span style=\"color:#222222;\">Attorney</span><span style=\"color:#222222;opacity:0.6;\"> &middot; </span><span style=\"color:#222222;font-weight:600;\">Lee &amp; Co.</span></td></tr><tr><td style=\"padding:1px 0;font-family:Georgia, 'Times New Roman', serif;font-size:14px;line-height:1.5;\"><span style=\"display:inline-block;width:54px;color:#222222;opacity:0.6;\">Email</span><a href=\"mailto:jordan@leeco.example\" style=\"color:#0a3d62;text-decoration:none;\">jordan@leeco.example</a></td></tr></table></td></tr></table><p style=\"margin:14px 0 0 0;font-family:Georgia, 'Times New Roman', serif;font-size:12px;line-height:1.4;color:#9ca3af;max-width:540px;\">Confidential. If you received this in error, please delete it.</p></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sigHtml":{"type":"string","description":"Signature HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/env-secrets-generator":{"post":{"operationId":"run_env_secrets_generator","summary":"Env Secrets Generator","tags":["Generators"],"description":"Generate cryptographically random secrets for your .env variables — hex, Base64, alphanumeric, or alphanumeric + symbols, at any length. Produces ready-to-paste KEY=value lines. Generated in your browser and never transmitted.\n\n[Try Env Secrets Generator in your browser →](https://iotools.cloud/tool/env-secrets-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"variableNames":{"type":"string","description":"Variable names"},"format":{"enum":["base64","hex","alphanumeric","alphanumeric+symbols"],"description":"Secret format"},"length":{"type":"number","description":"Secret length","minimum":8,"maximum":256},"showComments":{"type":"boolean","description":"Add a comment above each variable"}},"required":[]},"examples":{"base64_secrets_32_chars":{"summary":"Base64 secrets, 32 chars","value":{"variableNames":"JWT_SECRET\nDATABASE_PASSWORD\nSESSION_SECRET\nAPI_KEY","format":"base64","length":"32","showComments":""}},"hex_secrets_with_comments_64_chars":{"summary":"Hex secrets with comments, 64 chars","value":{"variableNames":"SESSION_SECRET\nWEBHOOK_SECRET","format":"hex","length":"64","showComments":"true"}},"alphanumeric_symbols_password_48_chars":{"summary":"Alphanumeric + symbols password, 48 chars","value":{"variableNames":"DATABASE_PASSWORD","format":"alphanumeric+symbols","length":"48","showComments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"envOutput":{"type":"string","description":".env output"},"strength":{"type":"string","description":"Strength"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/eslint-config-generator":{"post":{"operationId":"run_eslint_config_generator","summary":"ESLint Config Generator","tags":["Generators"],"description":"Generate an ESLint config file — modern flat config (eslint.config.js) or legacy .eslintrc.json — from a framework preset (Vanilla, Node, React, Next.js, Vue, TypeScript), an optional style guide (Airbnb, Standard, Google, Prettier), language options, environments, and common rule toggles.\n\n[Try ESLint Config Generator in your browser →](https://iotools.cloud/tool/eslint-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["flat","legacy"],"description":"Config Format"},"framework":{"enum":["vanilla","node","react","nextjs","vue","typescript"],"description":"Framework / Environment"},"styleGuide":{"enum":["none","airbnb","standard","google","prettier"],"description":"Style Guide"},"useTypescript":{"type":"boolean","description":"Use TypeScript (@typescript-eslint)"},"ecmaVersion":{"enum":["latest","2024","2023","2022","2021","2020","2019","2018"],"description":"ecmaVersion"},"sourceType":{"enum":["module","commonjs","script"],"description":"sourceType"},"envBrowser":{"type":"boolean","description":"browser globals (window, document, fetch)"},"envNode":{"type":"boolean","description":"node globals (process, require, __dirname)"},"envJest":{"type":"boolean","description":"jest globals (describe, test, expect)"},"envMocha":{"type":"boolean","description":"mocha globals"},"ruleSemi":{"enum":["error","warn","off"],"description":"semi (require semicolons)"},"ruleQuotes":{"enum":["single","double","backtick","off"],"description":"quotes"},"ruleIndent":{"enum":["2","4","tab","off"],"description":"indent"},"ruleNoUnusedVars":{"enum":["error","warn","off"],"description":"no-unused-vars"},"ruleNoConsole":{"enum":["error","warn","off"],"description":"no-console"},"ruleEqeqeq":{"enum":["error","warn","off"],"description":"eqeqeq (strict equality)"},"rulePreferConst":{"enum":["error","warn","off"],"description":"prefer-const"},"ruleNoVar":{"enum":["error","warn","off"],"description":"no-var"},"includeComments":{"type":"boolean","description":"Include inline comments explaining each option"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"},"includeInstall":{"type":"boolean","description":"Include npm install command at top"}},"required":[]},"examples":{"flat_config_vanilla_js_defaults":{"summary":"Flat config — Vanilla JS (defaults)","value":{"format":"flat","framework":"vanilla","styleGuide":"none","useTypescript":"","ecmaVersion":"latest","sourceType":"module","envBrowser":"true","envNode":"","envJest":"","envMocha":"","ruleSemi":"error","ruleQuotes":"single","ruleIndent":"2","ruleNoUnusedVars":"warn","ruleNoConsole":"warn","ruleEqeqeq":"error","rulePreferConst":"error","ruleNoVar":"error","includeComments":"true","includeHeader":"true","includeInstall":"true"}},"legacy_eslintrc_json_react_airbnb_typescript":{"summary":"Legacy .eslintrc.json — React + Airbnb + TypeScript","value":{"format":"legacy","framework":"react","styleGuide":"airbnb","useTypescript":"true","ecmaVersion":"2022","sourceType":"module","envBrowser":"true","envNode":"","envJest":"true","envMocha":"","ruleSemi":"error","ruleQuotes":"single","ruleIndent":"2","ruleNoUnusedVars":"warn","ruleNoConsole":"warn","ruleEqeqeq":"error","rulePreferConst":"error","ruleNoVar":"error","includeComments":"true","includeHeader":"true","includeInstall":"true"}},"flat_config_node_typescript_prettier_tab_indent_semi_off":{"summary":"Flat config — Node + TypeScript + Prettier (tab indent, semi off)","value":{"format":"flat","framework":"node","styleGuide":"prettier","useTypescript":"true","ecmaVersion":"latest","sourceType":"module","envBrowser":"","envNode":"true","envJest":"","envMocha":"","ruleSemi":"off","ruleQuotes":"double","ruleIndent":"tab","ruleNoUnusedVars":"warn","ruleNoConsole":"warn","ruleEqeqeq":"off","rulePreferConst":"error","ruleNoVar":"error","includeComments":"","includeHeader":"true","includeInstall":"true"}},"flat_config_vue_3_standard_browser_node_globals":{"summary":"Flat config — Vue 3 + Standard (browser + node globals)","value":{"format":"flat","framework":"vue","styleGuide":"standard","useTypescript":"","ecmaVersion":"latest","sourceType":"module","envBrowser":"true","envNode":"true","envJest":"","envMocha":"","ruleSemi":"error","ruleQuotes":"single","ruleIndent":"2","ruleNoUnusedVars":"warn","ruleNoConsole":"warn","ruleEqeqeq":"error","rulePreferConst":"error","ruleNoVar":"error","includeComments":"true","includeHeader":"true","includeInstall":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"flat_config_vanilla_js_defaults":{"summary":"Flat config — Vanilla JS (defaults)","value":{"tool":"eslint-config-generator","tool_version":"1.0.2","outputs":{"output":"// eslint.config.js — ESLint v9+ flat configuration\n// Framework: Vanilla JavaScript\n// Generated with iotools.cloud\n// Docs: https://eslint.org/docs/latest/use/configure/configuration-files\n\n// Install:\n//   npm install -D eslint @eslint/js globals\n\nimport js from '@eslint/js';\nimport globals from 'globals';\n\nexport default [\n  // ESLint core recommended rules\n  js.configs.recommended,\n  // Project-specific options + rule overrides\n  {\n    languageOptions: {\n      ecmaVersion: \"latest\",\n      sourceType: \"module\",\n      globals: { ...globals.browser }\n    },\n    rules: {\n      semi: [\"error\", \"always\"],\n      quotes: [\n        \"error\",\n        \"single\",\n        {\n          avoidEscape: true\n        }\n      ],\n      indent: [\"error\", 2],\n      \"no-unused-vars\": \"warn\",\n      \"no-console\": \"warn\",\n      eqeqeq: [\"error\", \"always\"],\n      \"prefer-const\": \"error\",\n      \"no-var\": \"error\"\n    }\n  },\n];\n"},"credits_used":5,"credits_remaining":null}},"legacy_eslintrc_json_react_airbnb_typescript":{"summary":"Legacy .eslintrc.json — React + Airbnb + TypeScript","value":{"tool":"eslint-config-generator","tool_version":"1.0.2","outputs":{"output":"// .eslintrc.json — ESLint v8 legacy configuration\n// Framework: React + TypeScript\n// Style guide: airbnb\n// Generated with iotools.cloud\n// Docs: https://eslint.org/docs/v8.x/use/configure/\n\n// Install:\n//   npm install -D eslint @eslint/js eslint-plugin-react eslint-plugin-react-hooks typescript-eslint eslint-config-airbnb\n\n{\n  // Predefined global variables for these environments\n  \"env\": {\n    \"browser\": true,\n    \"jest\": true,\n    \"es2024\": true\n  },\n  // Shareable configs applied in order\n  \"extends\": [\n    \"eslint:recommended\",\n    \"plugin:react/recommended\",\n    \"plugin:react-hooks/recommended\",\n    \"plugin:@typescript-eslint/recommended\",\n    \"airbnb\"\n  ],\n  \"parser\": \"@typescript-eslint/parser\", // Parser for non-standard syntax (TypeScript)\n  // Language options the parser accepts\n  \"parserOptions\": {\n    \"ecmaVersion\": 2022,\n    \"sourceType\": \"module\",\n    \"ecmaFeatures\": {\n      \"jsx\": true\n    }\n  },\n  \"plugins\": [\"react\", \"react-hooks\", \"@typescript-eslint\"], // Third-party rule packages\n  // Shared settings passed to plugins\n  \"settings\": {\n    \"react\": {\n      \"version\": \"detect\"\n    }\n  },\n  // Rule overrides (severity + options)\n  \"rules\": {\n    \"semi\": [\"error\", \"always\"],\n    \"quotes\": [\n      \"error\",\n      \"single\",\n      {\n        \"avoidEscape\": true\n      }\n    ],\n    \"indent\": [\"error\", 2],\n    \"no-unused-vars\": \"warn\",\n    \"no-console\": \"warn\",\n    \"eqeqeq\": [\"error\", \"always\"],\n    \"prefer-const\": \"error\",\n    \"no-var\": \"error\"\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"flat_config_node_typescript_prettier_tab_indent_semi_off":{"summary":"Flat config — Node + TypeScript + Prettier (tab indent, semi off)","value":{"tool":"eslint-config-generator","tool_version":"1.0.2","outputs":{"output":"// eslint.config.js — ESLint v9+ flat configuration\n// Framework: Node.js + TypeScript\n// Style guide: prettier\n// Generated with iotools.cloud\n// Docs: https://eslint.org/docs/latest/use/configure/configuration-files\n\n// Install:\n//   npm install -D eslint @eslint/js eslint-plugin-n typescript-eslint eslint-config-prettier globals\n\nimport js from '@eslint/js';\nimport globals from 'globals';\nimport tseslint from 'typescript-eslint';\nimport nodePlugin from 'eslint-plugin-n';\nimport eslintConfigPrettier from 'eslint-config-prettier';\n\nexport default tseslint.config(\n  js.configs.recommended,\n  ...tseslint.configs.recommended,\n  nodePlugin.configs['flat/recommended'],\n  {\n    languageOptions: {\n      ecmaVersion: \"latest\",\n      sourceType: \"module\",\n      globals: { ...globals.node }\n    },\n    rules: {\n      quotes: [\n        \"error\",\n        \"double\",\n        {\n          avoidEscape: true\n        }\n      ],\n      indent: [\"error\", \"tab\"],\n      \"no-unused-vars\": \"warn\",\n      \"no-console\": \"warn\",\n      \"prefer-const\": \"error\",\n      \"no-var\": \"error\"\n    }\n  },\n  eslintConfigPrettier,\n);\n"},"credits_used":5,"credits_remaining":null}},"flat_config_vue_3_standard_browser_node_globals":{"summary":"Flat config — Vue 3 + Standard (browser + node globals)","value":{"tool":"eslint-config-generator","tool_version":"1.0.2","outputs":{"output":"// eslint.config.js — ESLint v9+ flat configuration\n// Framework: Vue 3\n// Style guide: standard\n// Generated with iotools.cloud\n// Docs: https://eslint.org/docs/latest/use/configure/configuration-files\n\n// Install:\n//   npm install -D eslint @eslint/js eslint-plugin-vue neostandard globals\n\nimport js from '@eslint/js';\nimport globals from 'globals';\nimport pluginVue from 'eslint-plugin-vue';\nimport neostandard from 'neostandard';\n\nexport default [\n  // ESLint core recommended rules\n  js.configs.recommended,\n  // Vue 3 recommended\n  ...pluginVue.configs['flat/recommended'],\n  // Standard (via neostandard)\n  ...neostandard(),\n  // Project-specific options + rule overrides\n  {\n    languageOptions: {\n      ecmaVersion: \"latest\",\n      sourceType: \"module\",\n      globals: { ...globals.browser, ...globals.node }\n    },\n    rules: {\n      semi: [\"error\", \"always\"],\n      quotes: [\n        \"error\",\n        \"single\",\n        {\n          avoidEscape: true\n        }\n      ],\n      indent: [\"error\", 2],\n      \"no-unused-vars\": \"warn\",\n      \"no-console\": \"warn\",\n      eqeqeq: [\"error\", \"always\"],\n      \"prefer-const\": \"error\",\n      \"no-var\": \"error\"\n    }\n  },\n];\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Config"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fake-data-generator":{"post":{"operationId":"run_fake_data_generator","summary":"Fake Data Generator","tags":["Generators"],"description":"Generate realistic mock data — names, emails, UUIDs, phone numbers, addresses and more — as JSON, CSV or NDJSON. Define your own schema of named fields and row count for seeding databases, testing and demos.\n\n[Try Fake Data Generator in your browser →](https://iotools.cloud/tool/fake-data-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"string","description":"Fields"},"rowCount":{"type":"number","description":"Row count","minimum":1,"maximum":1000},"outputFormat":{"enum":["json","csv","ndjson"],"description":"Output format"}},"required":[]},"examples":{"json_id_name_email_10_rows":{"summary":"JSON — id, name, email (10 rows)","value":{"schema":"id: integer\nname: fullName\nemail: email","rowCount":"10","outputFormat":"json"}},"csv_with_a_custom_list_column":{"summary":"CSV — with a custom list column","value":{"schema":"user: username\nrole: customList: admin, editor, viewer\nsignup: date","rowCount":"5","outputFormat":"csv"}},"ndjson_typed_values":{"summary":"NDJSON — typed values","value":{"schema":"ip: ipv4\nactive: boolean\namount: decimal","rowCount":"3","outputFormat":"ndjson"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Data"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fake-email-address-generator":{"post":{"operationId":"run_fake_email_address_generator","summary":"Fake Email Address Generator","tags":["Generators"],"description":"Generate realistic-looking fake email addresses for testing, demos and sample data. Choose the local-part format, a popular or custom domain, how many to create, and export as a plain list, CSV or JSON.\n\n[Try Fake Email Address Generator in your browser →](https://iotools.cloud/tool/fake-email-address-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["firstname.lastname","f.lastname","firstnamelastname","firstname_lastname","username","random"],"description":"Email format"},"domain":{"enum":["random","gmail.com","yahoo.com","outlook.com","hotmail.com","protonmail.com","custom"],"description":"Domain"},"customDomain":{"type":"string","description":"Custom domain"},"count":{"type":"number","description":"How many","minimum":1,"maximum":1000},"exportFormat":{"enum":["plain","csv","json"],"description":"Output format"}},"required":[]},"examples":{"10_firstname_lastname_on_random_domains":{"summary":"10 firstname.lastname on random domains","value":{"format":"firstname.lastname","domain":"random","customDomain":"","count":"10","exportFormat":"plain"}},"5_usernames_on_a_custom_domain_as_json":{"summary":"5 usernames on a custom domain, as JSON","value":{"format":"username","domain":"custom","customDomain":"test.example.com","count":"5","exportFormat":"json"}},"20_mixed_formats_on_gmail_com_as_csv":{"summary":"20 mixed formats on gmail.com, as CSV","value":{"format":"random","domain":"gmail.com","customDomain":"","count":"20","exportFormat":"csv"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated emails"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fake-iban-generator":{"post":{"operationId":"run_fake_iban_generator","summary":"Fake IBAN Generator","tags":["Generators"],"description":"Generate fake but structurally valid IBANs for testing — correct country length, correct SWIFT-registry BBAN format and real ISO 7064 check digits, for 77 countries. Optional seed for reproducible fixtures. Runs entirely in your browser.\n\n[Try Fake IBAN Generator in your browser →](https://iotools.cloud/tool/fake-iban-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"enum":["random","AD","AE","AL","AT","AZ","BA","BE","BG","BH","BR","BY","CH","CR","CY","CZ","DE","DK","DO","EE","EG","ES","FI","FO","FR","GB","GE","GI","GL","GR","GT","HR","HU","IE","IL","IQ","IS","IT","JO","KW","KZ","LB","LC","LI","LT","LU","LV","LY","MC","MD","ME","MK","MR","MT","MU","NL","NO","PK","PL","PS","PT","QA","RO","RS","SA","SC","SD","SE","SI","SK","SM","ST","SV","TL","TN","TR","UA","VA","VG","XK"],"description":"Country"},"count":{"type":"number","description":"How many","minimum":1,"maximum":100},"format":{"enum":["spaced","compact"],"description":"Format"},"seed":{"type":"string","description":"Seed (optional)"}},"required":[]},"examples":{"5_german_ibans_seeded":{"summary":"5 German IBANs (seeded)","value":{"country":"DE","count":"5","format":"spaced","seed":"demo"}},"10_uk_ibans_electronic_format":{"summary":"10 UK IBANs, electronic format","value":{"country":"GB","count":"10","format":"compact","seed":"demo"}},"mixed_countries_unseeded":{"summary":"Mixed countries, unseeded","value":{"country":"random","count":"8","format":"spaced","seed":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_german_ibans_seeded":{"summary":"5 German IBANs (seeded)","value":{"tool":"fake-iban-generator","tool_version":"1.0.2","outputs":{"ibans":"DE57 8104 2809 1845 6830 36\nDE70 3739 2567 9405 0838 19\nDE90 5754 2375 3148 0240 61\nDE12 1778 4470 2797 3403 13\nDE88 5246 2152 7909 9779 94","details":[{"property":"Country","value":"Germany (DE)"},{"property":"IBAN length","value":"22 characters"},{"property":"BBAN format","value":"8 digits, 10 digits"},{"property":"Generated","value":"5"},{"property":"Seed","value":"demo"}]},"credits_used":5,"credits_remaining":null}},"10_uk_ibans_electronic_format":{"summary":"10 UK IBANs, electronic format","value":{"tool":"fake-iban-generator","tool_version":"1.0.2","outputs":{"ibans":"GB67VDBL28091845683036\nGB34KUJY25679405083819\nGB65PTOL23753148024061\nGB21CTSV44702797340313\nGB29NGKQ21527909977994\nGB53XRUY75805479422725\nGB63TWAP14498155418700\nGB35YYPL43525537763870\nGB25OCGS45249637215177\nGB75VFRO89569447067339","details":[{"property":"Country","value":"United Kingdom (GB)"},{"property":"IBAN length","value":"22 characters"},{"property":"BBAN format","value":"4 letters, 6 digits, 8 digits"},{"property":"Generated","value":"10"},{"property":"Seed","value":"demo"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"ibans":{"type":"string","description":"IBANs"},"details":{"type":"array","description":"Format details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fake-ip-address-generator":{"post":{"operationId":"run_fake_ip_address_generator","summary":"Fake IP Address Generator","tags":["Generators"],"description":"Generate random, valid IPv4 or IPv6 addresses from any RFC range — public, RFC 1918 private, loopback, CGNAT, link-local, multicast, documentation or ULA. Optionally append a CIDR suffix and dedupe. Great for test data, mock configs and QA.\n\n[Try Fake IP Address Generator in your browser →](https://iotools.cloud/tool/fake-ip-address-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"enum":["ipv4","ipv6"],"description":"IP Version"},"rangeV4":{"enum":["any","public","private","loopback","cgnat","linklocal","multicast","documentation"],"description":"Range Type"},"rangeV6":{"enum":["global","ula","linklocal","multicast","loopback","documentation"],"description":"Range Type"},"count":{"type":"number","description":"Count","minimum":1,"maximum":1000},"withCidr":{"type":"boolean","description":"Append CIDR suffix (host /32 or /128)"},"unique":{"type":"boolean","description":"Unique addresses (no duplicates)"}},"required":["count"]},"examples":{"10_random_ipv4_addresses":{"summary":"10 random IPv4 addresses","value":{"version":"ipv4","rangeV4":"any","rangeV6":"global","count":"10","withCidr":"","unique":"true"}},"5_private_ipv4_addresses_rfc_1918":{"summary":"5 private IPv4 addresses (RFC 1918)","value":{"version":"ipv4","rangeV4":"private","rangeV6":"global","count":"5","withCidr":"","unique":"true"}},"5_global_ipv6_addresses_with_cidr":{"summary":"5 global IPv6 addresses with CIDR","value":{"version":"ipv6","rangeV4":"any","rangeV6":"global","count":"5","withCidr":"true","unique":"true"}},"8_documentation_ipv4_addresses_rfc_5737":{"summary":"8 documentation IPv4 addresses (RFC 5737)","value":{"version":"ipv4","rangeV4":"documentation","rangeV6":"global","count":"8","withCidr":"","unique":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Generated Addresses"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fibonacci-generator":{"post":{"operationId":"run_fibonacci_generator","summary":"Fibonacci Generator","tags":["Generators"],"description":"Generate Fibonacci, Lucas, Tribonacci and Pell sequences by term count or up to a maximum value, with custom starting values. See golden-ratio convergence and check whether any number is a Fibonacci number.\n\n[Try Fibonacci Generator in your browser →](https://iotools.cloud/tool/fibonacci-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sequenceType":{"enum":["fibonacci","lucas","tribonacci","pell"],"description":"Sequence type"},"mode":{"enum":["terms","value"],"description":"Generate"},"termCount":{"type":"number","description":"Number of terms","minimum":1,"maximum":1000},"maxValue":{"type":"string","description":"Maximum value"},"startA":{"type":"string","description":"Starting value 1"},"startB":{"type":"string","description":"Starting value 2"},"checkNumber":{"type":"string","description":"Number to check"}},"required":[]},"examples":{"fibonacci_first_10_terms":{"summary":"Fibonacci, first 10 terms","value":{"sequenceType":"fibonacci","mode":"terms","termCount":"10","startA":"0","startB":"1"}},"lucas_numbers_first_8_terms":{"summary":"Lucas numbers, first 8 terms","value":{"sequenceType":"lucas","mode":"terms","termCount":"8"}},"fibonacci_up_to_a_maximum_of_100":{"summary":"Fibonacci up to a maximum of 100","value":{"sequenceType":"fibonacci","mode":"value","maxValue":"100","startA":"0","startB":"1"}},"tribonacci_first_10_terms":{"summary":"Tribonacci, first 10 terms","value":{"sequenceType":"tribonacci","mode":"terms","termCount":"10"}},"pell_numbers_first_8_terms":{"summary":"Pell numbers, first 8 terms","value":{"sequenceType":"pell","mode":"terms","termCount":"8"}},"checker_is_144_a_fibonacci_number":{"summary":"Checker: is 144 a Fibonacci number?","value":{"sequenceType":"fibonacci","mode":"terms","termCount":"12","startA":"0","startB":"1","checkNumber":"144"}},"checker_is_100_a_fibonacci_number":{"summary":"Checker: is 100 a Fibonacci number?","value":{"sequenceType":"fibonacci","mode":"terms","termCount":"12","startA":"0","startB":"1","checkNumber":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fibonacci_first_10_terms":{"summary":"Fibonacci, first 10 terms","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"F(0) = 0\nF(1) = 1\nF(2) = 1\nF(3) = 2\nF(4) = 3\nF(5) = 5\nF(6) = 8\nF(7) = 13\nF(8) = 21\nF(9) = 34","stats":[{"metric":"Terms","value":"10"},{"metric":"Largest value","value":"34"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"2","term":"1","term-previous":"1.000000000000000","diff-from":"-6.180340e-1"},{"n":"3","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"4","term":"3","term-previous":"1.500000000000000","diff-from":"-1.180340e-1"},{"n":"5","term":"5","term-previous":"1.666666666666667","diff-from":"+4.863268e-2"},{"n":"6","term":"8","term-previous":"1.600000000000000","diff-from":"-1.803399e-2"},{"n":"7","term":"13","term-previous":"1.625000000000000","diff-from":"+6.966011e-3"},{"n":"8","term":"21","term-previous":"1.615384615384615","diff-from":"-2.649373e-3"},{"n":"9","term":"34","term-previous":"1.619047619047619","diff-from":"+1.013630e-3"}],"checker":""},"credits_used":5,"credits_remaining":null}},"lucas_numbers_first_8_terms":{"summary":"Lucas numbers, first 8 terms","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"L(0) = 2\nL(1) = 1\nL(2) = 3\nL(3) = 4\nL(4) = 7\nL(5) = 11\nL(6) = 18\nL(7) = 29","stats":[{"metric":"Terms","value":"8"},{"metric":"Largest value","value":"29"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"2","term":"3","term-previous":"3.000000000000000","diff-from":"+1.381966e+0"},{"n":"3","term":"4","term-previous":"1.333333333333333","diff-from":"-2.847007e-1"},{"n":"4","term":"7","term-previous":"1.750000000000000","diff-from":"+1.319660e-1"},{"n":"5","term":"11","term-previous":"1.571428571428571","diff-from":"-4.660542e-2"},{"n":"6","term":"18","term-previous":"1.636363636363636","diff-from":"+1.832965e-2"},{"n":"7","term":"29","term-previous":"1.611111111111111","diff-from":"-6.922878e-3"}],"checker":""},"credits_used":5,"credits_remaining":null}},"fibonacci_up_to_a_maximum_of_100":{"summary":"Fibonacci up to a maximum of 100","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"F( 0) = 0\nF( 1) = 1\nF( 2) = 1\nF( 3) = 2\nF( 4) = 3\nF( 5) = 5\nF( 6) = 8\nF( 7) = 13\nF( 8) = 21\nF( 9) = 34\nF(10) = 55\nF(11) = 89","stats":[{"metric":"Terms","value":"12"},{"metric":"Largest value","value":"89"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"2","term":"1","term-previous":"1.000000000000000","diff-from":"-6.180340e-1"},{"n":"3","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"4","term":"3","term-previous":"1.500000000000000","diff-from":"-1.180340e-1"},{"n":"5","term":"5","term-previous":"1.666666666666667","diff-from":"+4.863268e-2"},{"n":"6","term":"8","term-previous":"1.600000000000000","diff-from":"-1.803399e-2"},{"n":"7","term":"13","term-previous":"1.625000000000000","diff-from":"+6.966011e-3"},{"n":"8","term":"21","term-previous":"1.615384615384615","diff-from":"-2.649373e-3"},{"n":"9","term":"34","term-previous":"1.619047619047619","diff-from":"+1.013630e-3"},{"n":"10","term":"55","term-previous":"1.617647058823529","diff-from":"-3.869299e-4"},{"n":"11","term":"89","term-previous":"1.618181818181818","diff-from":"+1.478294e-4"}],"checker":""},"credits_used":5,"credits_remaining":null}},"tribonacci_first_10_terms":{"summary":"Tribonacci, first 10 terms","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"T(0) = 0\nT(1) = 0\nT(2) = 1\nT(3) = 1\nT(4) = 2\nT(5) = 4\nT(6) = 7\nT(7) = 13\nT(8) = 24\nT(9) = 44","stats":[{"metric":"Terms","value":"10"},{"metric":"Largest value","value":"44"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"3","term":"1","term-previous":"1.000000000000000","diff-from":"-6.180340e-1"},{"n":"4","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"5","term":"4","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"6","term":"7","term-previous":"1.750000000000000","diff-from":"+1.319660e-1"},{"n":"7","term":"13","term-previous":"1.857142857142857","diff-from":"+2.391089e-1"},{"n":"8","term":"24","term-previous":"1.846153846153846","diff-from":"+2.281199e-1"},{"n":"9","term":"44","term-previous":"1.833333333333333","diff-from":"+2.152993e-1"}],"checker":""},"credits_used":5,"credits_remaining":null}},"pell_numbers_first_8_terms":{"summary":"Pell numbers, first 8 terms","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"P(0) = 0\nP(1) = 1\nP(2) = 2\nP(3) = 5\nP(4) = 12\nP(5) = 29\nP(6) = 70\nP(7) = 169","stats":[{"metric":"Terms","value":"8"},{"metric":"Largest value","value":"169"},{"metric":"Digits in largest","value":"3"}],"ratios":[{"n":"2","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"3","term":"5","term-previous":"2.500000000000000","diff-from":"+8.819660e-1"},{"n":"4","term":"12","term-previous":"2.400000000000000","diff-from":"+7.819660e-1"},{"n":"5","term":"29","term-previous":"2.416666666666667","diff-from":"+7.986327e-1"},{"n":"6","term":"70","term-previous":"2.413793103448276","diff-from":"+7.957591e-1"},{"n":"7","term":"169","term-previous":"2.414285714285714","diff-from":"+7.962517e-1"}],"checker":""},"credits_used":5,"credits_remaining":null}},"checker_is_144_a_fibonacci_number":{"summary":"Checker: is 144 a Fibonacci number?","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"F( 0) = 0\nF( 1) = 1\nF( 2) = 1\nF( 3) = 2\nF( 4) = 3\nF( 5) = 5\nF( 6) = 8\nF( 7) = 13\nF( 8) = 21\nF( 9) = 34\nF(10) = 55\nF(11) = 89","stats":[{"metric":"Terms","value":"12"},{"metric":"Largest value","value":"89"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"2","term":"1","term-previous":"1.000000000000000","diff-from":"-6.180340e-1"},{"n":"3","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"4","term":"3","term-previous":"1.500000000000000","diff-from":"-1.180340e-1"},{"n":"5","term":"5","term-previous":"1.666666666666667","diff-from":"+4.863268e-2"},{"n":"6","term":"8","term-previous":"1.600000000000000","diff-from":"-1.803399e-2"},{"n":"7","term":"13","term-previous":"1.625000000000000","diff-from":"+6.966011e-3"},{"n":"8","term":"21","term-previous":"1.615384615384615","diff-from":"-2.649373e-3"},{"n":"9","term":"34","term-previous":"1.619047619047619","diff-from":"+1.013630e-3"},{"n":"10","term":"55","term-previous":"1.617647058823529","diff-from":"-3.869299e-4"},{"n":"11","term":"89","term-previous":"1.618181818181818","diff-from":"+1.478294e-4"}],"checker":"✓ Yes — 144 is a Fibonacci number: F(12)."},"credits_used":5,"credits_remaining":null}},"checker_is_100_a_fibonacci_number":{"summary":"Checker: is 100 a Fibonacci number?","value":{"tool":"fibonacci-generator","tool_version":"1.0.2","outputs":{"sequence":"F( 0) = 0\nF( 1) = 1\nF( 2) = 1\nF( 3) = 2\nF( 4) = 3\nF( 5) = 5\nF( 6) = 8\nF( 7) = 13\nF( 8) = 21\nF( 9) = 34\nF(10) = 55\nF(11) = 89","stats":[{"metric":"Terms","value":"12"},{"metric":"Largest value","value":"89"},{"metric":"Digits in largest","value":"2"}],"ratios":[{"n":"2","term":"1","term-previous":"1.000000000000000","diff-from":"-6.180340e-1"},{"n":"3","term":"2","term-previous":"2.000000000000000","diff-from":"+3.819660e-1"},{"n":"4","term":"3","term-previous":"1.500000000000000","diff-from":"-1.180340e-1"},{"n":"5","term":"5","term-previous":"1.666666666666667","diff-from":"+4.863268e-2"},{"n":"6","term":"8","term-previous":"1.600000000000000","diff-from":"-1.803399e-2"},{"n":"7","term":"13","term-previous":"1.625000000000000","diff-from":"+6.966011e-3"},{"n":"8","term":"21","term-previous":"1.615384615384615","diff-from":"-2.649373e-3"},{"n":"9","term":"34","term-previous":"1.619047619047619","diff-from":"+1.013630e-3"},{"n":"10","term":"55","term-previous":"1.617647058823529","diff-from":"-3.869299e-4"},{"n":"11","term":"89","term-previous":"1.618181818181818","diff-from":"+1.478294e-4"}],"checker":"✗ No — 100 is not a Fibonacci number. Nearest below: 89 (−11); nearest above: 144 (+44); closest: 89."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sequence":{"type":"string","description":"Generated sequence"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"ratios":{"type":"array","items":{"type":"object","properties":{"n":{"type":"string","description":"n"},"term":{"type":"string","description":"Term"},"term-previous":{"type":"string","description":"Term ÷ previous"},"diff-from":{"type":"string","description":"Diff from φ"}}},"x-iotools-columns":["n","term","term-previous","diff-from"]},"checker":{"type":"string","description":""}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/flip-gif":{"post":{"operationId":"run_flip_gif","summary":"Flip GIF","tags":["Generators"],"description":"Mirror an animated or static GIF horizontally, vertically, or both — every frame and delay preserved, loop optional.\n\n[Try Flip GIF in your browser →](https://iotools.cloud/tool/flip-gif/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"direction":{"enum":["horizontal","vertical","both"],"description":"Flip Direction"},"loop":{"type":"boolean","description":"Loop forever"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/font-generator":{"post":{"operationId":"run_font_generator","summary":"Font Generator","tags":["Generators"],"description":"Turn plain text into dozens of copy-paste fancy fonts — bold, italic, cursive script, fraktur, small caps, upside-down, circled, strikethrough and more — using Unicode look-alike glyphs that work in bios, usernames and messages.\n\n[Try Font Generator in your browser →](https://iotools.cloud/tool/font-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input text"}},"required":[]},"examples":{"hello":{"summary":"Hello","value":{"inputText":"Hello"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello":{"summary":"Hello","value":{"tool":"font-generator","tool_version":"1.0.2","outputs":{"output":[{"style":"Bold","result":"𝗛𝗲𝗹𝗹𝗼"},{"style":"Bold Serif","result":"𝐇𝐞𝐥𝐥𝐨"},{"style":"Italic","result":"𝘏𝘦𝘭𝘭𝘰"},{"style":"Bold Italic","result":"𝙃𝙚𝙡𝙡𝙤"},{"style":"Monospace","result":"𝙷𝚎𝚕𝚕𝚘"},{"style":"Script","result":"𝐻𝑒𝓁𝓁𝑜"},{"style":"Bold Script","result":"𝓗𝓮𝓵𝓵𝓸"},{"style":"Fraktur","result":"ℌ𝔢𝔩𝔩𝔬"},{"style":"Bold Fraktur","result":"𝕳𝖊𝖑𝖑𝖔"},{"style":"Double-Struck","result":"ℍ𝕖𝕝𝕝𝕠"},{"style":"Fullwidth","result":"Ｈｅｌｌｏ"},{"style":"Small Caps","result":"ʜᴇʟʟᴏ"},{"style":"Superscript","result":"ᴴᵉˡˡᵒ"},{"style":"Subscript","result":"ₕₑₗₗₒ"},{"style":"Circled","result":"Ⓗⓔⓛⓛⓞ"},{"style":"Squared","result":"🄷🄴🄻🄻🄾"},{"style":"Squared (Negative)","result":"🅷🅴🅻🅻🅾"},{"style":"Upside Down","result":"ollǝH"},{"style":"Mirror","result":"o||ɘH"},{"style":"Greek","result":"нєℓℓσ"},{"style":"Currency","result":"ⱧɆⱠⱠØ"},{"style":"Symbols","result":"Hêllð"},{"style":"Neon","result":"ᕼEᒪᒪO"},{"style":"Future Alien","result":"ᕼᘿᒪᒪᓍ"},{"style":"Bent","result":"ǶҽӀӀօ"},{"style":"Upper Angles","result":"ΉΣᄂᄂӨ"},{"style":"Asian Style","result":"卄乇ㄥㄥㄖ"},{"style":"Asian Style 2","result":"ん乇ﾚﾚの"},{"style":"White Tiles","result":"🅷ⒺⓁⓁⓄ"},{"style":"Palmistry","result":"♄€↳↳⊙"},{"style":"Ethiopic","result":"ⶴቹረረዐ"},{"style":"Vai","result":"ꛅ𖤢ꚳꚳ𖣠"},{"style":"Bounce","result":"ʜEΓΓO"},{"style":"Squiggle 1","result":"ђєɭɭ๏"},{"style":"Squiggle 2","result":"Hҽʅʅσ"},{"style":"Squiggle 3","result":"ɦɛʟʟօ"},{"style":"Squiggle 4","result":"ᏂᏋᏝᏝᎧ"},{"style":"Squiggle 5","result":"ɧɛƖƖơ"},{"style":"Squiggle 6","result":"hēll໐"},{"style":"Wingdings","result":"☟︎♏︎●︎●︎□︎"},{"style":"Strikethrough","result":"H̶e̶l̶l̶o̶"},{"style":"Tilde Strikethrough","result":"H̴e̴l̴l̴o̴"},{"style":"Slashed","result":"H̷e̷l̷l̷o̷"},{"style":"Underline","result":"H̲e̲l̲l̲o̲"},{"style":"Double Underline","result":"H̳e̳l̳l̳o̳"},{"style":"Firework","result":"H҉e҉l҉l҉o҉"},{"style":"Stinky","result":"H̾e̾l̾l̾o̾"},{"style":"Arrow Below","result":"H͎e͎l͎l͎o͎"},{"style":"Crossed","result":"H͓̽e͓̽l͓̽l͓̽o͓̽"},{"style":"Hearts","result":"H♥e♥l♥l♥o"},{"style":"Block Framed","result":"【H】【e】【l】【l】【o】"},{"style":"Angle Framed","result":"『H』『e』『l』『l』『o』"},{"style":"Boxed","result":"[̲̅H][̲̅e][̲̅l][̲̅l][̲̅o]"},{"style":"Wavy","result":"≋H≋e≋l≋l≋o≋"},{"style":"Dotty","result":"░H░e░l░l░o░"},{"style":"Little Sparkles","result":"˜”*°•.˜”*°• Hello •°*”˜.•°*”˜"},{"style":"Kirby Hug","result":"(っ◔◡◔)っ ♥ Hello ♥"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"array","description":"Fancy fonts","items":{"type":"object","properties":{"style":{"type":"string","description":"Style"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["style","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/font-modular-scale-generator":{"post":{"operationId":"run_font_modular_scale_generator","summary":"Font Modular Scale Generator","tags":["Generators"],"description":"Generate a harmonious typographic modular scale from a base font size and a ratio (major third, golden ratio, perfect fifth, or a custom value). Get a full step table plus ready-to-paste CSS custom properties, SCSS variables, a Tailwind fontSize config, or JSON.\n\n[Try Font Modular Scale Generator in your browser →](https://iotools.cloud/tool/font-modular-scale-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseSize":{"type":"number","description":"Base Size (px)","minimum":8,"maximum":64},"ratio":{"enum":["1.067","1.125","1.2","1.25","1.333","1.414","1.5","1.618","2","custom"],"description":"Ratio"},"customRatio":{"type":"number","description":"Custom Ratio","minimum":1.01,"maximum":3},"unit":{"enum":["rem","em","px"],"description":"Unit"},"decimals":{"type":"number","description":"Decimals","minimum":0,"maximum":5},"exportFormat":{"enum":["css","scss","tailwind","json"],"description":"Export Format"}},"required":[]},"examples":{"major_third_rem_css":{"summary":"Major Third, rem, CSS","value":{"baseSize":"16","ratio":"1.25","customRatio":"1.25","unit":"rem","decimals":"3","exportFormat":"css"}},"golden_ratio_em_tailwind_config":{"summary":"Golden ratio, em, Tailwind config","value":{"baseSize":"16","ratio":"1.618","customRatio":"1.25","unit":"em","decimals":"3","exportFormat":"tailwind"}},"custom_ratio_px_json":{"summary":"Custom ratio, px, JSON","value":{"baseSize":"18","ratio":"custom","customRatio":"1.5","unit":"px","decimals":"2","exportFormat":"json"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"major_third_rem_css":{"summary":"Major Third, rem, CSS","value":{"tool":"font-modular-scale-generator","tool_version":"1.0.2","outputs":{"scaleTable":[{"step":"xs","size":"0.64rem","pixels":"10.24px"},{"step":"sm","size":"0.8rem","pixels":"12.8px"},{"step":"base","size":"1rem","pixels":"16px"},{"step":"lg","size":"1.25rem","pixels":"20px"},{"step":"xl","size":"1.563rem","pixels":"25px"},{"step":"2xl","size":"1.953rem","pixels":"31.25px"},{"step":"3xl","size":"2.441rem","pixels":"39.06px"},{"step":"4xl","size":"3.052rem","pixels":"48.83px"},{"step":"5xl","size":"3.815rem","pixels":"61.04px"},{"step":"6xl","size":"4.768rem","pixels":"76.29px"}],"exportCode":":root {\n  --font-size-xs: 0.64rem;\n  --font-size-sm: 0.8rem;\n  --font-size-base: 1rem;\n  --font-size-lg: 1.25rem;\n  --font-size-xl: 1.563rem;\n  --font-size-2xl: 1.953rem;\n  --font-size-3xl: 2.441rem;\n  --font-size-4xl: 3.052rem;\n  --font-size-5xl: 3.815rem;\n  --font-size-6xl: 4.768rem;\n}"},"credits_used":5,"credits_remaining":null}},"golden_ratio_em_tailwind_config":{"summary":"Golden ratio, em, Tailwind config","value":{"tool":"font-modular-scale-generator","tool_version":"1.0.2","outputs":{"scaleTable":[{"step":"xs","size":"0.382em","pixels":"6.11px"},{"step":"sm","size":"0.618em","pixels":"9.89px"},{"step":"base","size":"1em","pixels":"16px"},{"step":"lg","size":"1.618em","pixels":"25.89px"},{"step":"xl","size":"2.618em","pixels":"41.89px"},{"step":"2xl","size":"4.236em","pixels":"67.77px"},{"step":"3xl","size":"6.854em","pixels":"109.66px"},{"step":"4xl","size":"11.089em","pixels":"177.42px"},{"step":"5xl","size":"17.942em","pixels":"287.07px"},{"step":"6xl","size":"29.03em","pixels":"464.48px"}],"exportCode":"// tailwind.config.js\nmodule.exports = {\n  theme: {\n    extend: {\n      fontSize: {\n        'xs': '0.382em',\n        'sm': '0.618em',\n        'base': '1em',\n        'lg': '1.618em',\n        'xl': '2.618em',\n        '2xl': '4.236em',\n        '3xl': '6.854em',\n        '4xl': '11.089em',\n        '5xl': '17.942em',\n        '6xl': '29.03em',\n      },\n    },\n  },\n};"},"credits_used":5,"credits_remaining":null}},"custom_ratio_px_json":{"summary":"Custom ratio, px, JSON","value":{"tool":"font-modular-scale-generator","tool_version":"1.0.2","outputs":{"scaleTable":[{"step":"xs","size":"8px","pixels":"8px"},{"step":"sm","size":"12px","pixels":"12px"},{"step":"base","size":"18px","pixels":"18px"},{"step":"lg","size":"27px","pixels":"27px"},{"step":"xl","size":"40.5px","pixels":"40.5px"},{"step":"2xl","size":"60.75px","pixels":"60.75px"},{"step":"3xl","size":"91.13px","pixels":"91.13px"},{"step":"4xl","size":"136.69px","pixels":"136.69px"},{"step":"5xl","size":"205.03px","pixels":"205.03px"},{"step":"6xl","size":"307.55px","pixels":"307.55px"}],"exportCode":"{\n  \"fontSize\": {\n    \"xs\": \"8px\",\n    \"sm\": \"12px\",\n    \"base\": \"18px\",\n    \"lg\": \"27px\",\n    \"xl\": \"40.5px\",\n    \"2xl\": \"60.75px\",\n    \"3xl\": \"91.13px\",\n    \"4xl\": \"136.69px\",\n    \"5xl\": \"205.03px\",\n    \"6xl\": \"307.55px\"\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"scaleTable":{"type":"array","description":"Scale","items":{"type":"object","properties":{"step":{"type":"string","description":"Step"},"size":{"type":"string","description":"Size"},"pixels":{"type":"string","description":"Pixels"}}},"x-iotools-columns":["step","size","pixels"]},"exportCode":{"type":"string","description":"Export Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-color-changer":{"post":{"operationId":"run_gif_color_changer","summary":"GIF Color Changer","tags":["Generators"],"description":"Replace a color, shift hue, apply a tint, or apply a Grayscale/Sepia/Invert/Moonlight effect on a GIF — every frame and delay preserved, loop optional.\n\n[Try GIF Color Changer in your browser →](https://iotools.cloud/tool/gif-color-changer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"loop":{"type":"boolean","description":"Loop forever"},"mode":{"enum":["replace","hue","tint","effect"],"description":"Adjustment"},"sourceColor":{"type":"string","description":"Color to replace"},"targetColor":{"type":"string","description":"New color"},"tolerance":{"type":"number","description":"Tolerance","minimum":0,"maximum":100},"hueAngle":{"type":"number","description":"Hue rotation","minimum":0,"maximum":360},"tintColor":{"type":"string","description":"Tint color"},"tintIntensity":{"type":"number","description":"Tint intensity","minimum":1,"maximum":100},"effect":{"enum":["grayscale","sepia","invert","moonlight"],"description":"Effect"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-combiner":{"post":{"operationId":"run_gif_combiner","summary":"GIF Combiner","tags":["Generators"],"description":"Combine 2-6 animated GIFs into one — side by side, stacked, or in a grid — with every source auto-scaled to line up, then download the merged animation.\n\n[Try GIF Combiner in your browser →](https://iotools.cloud/tool/gif-combiner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","contentEncoding":"base64"},"description":"GIFs"},"layout":{"enum":["horizontal","vertical","grid"],"description":"Layout"},"loop":{"type":"boolean","description":"Loop forever"},"scale":{"type":"number","description":"Scale","minimum":25,"maximum":200},"spacing":{"type":"number","description":"Spacing between GIFs (px)","minimum":0,"maximum":40},"background":{"enum":["transparent","white","black"],"description":"Background"}},"required":["files"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Layout"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-editor":{"post":{"operationId":"run_gif_editor","summary":"GIF Editor","tags":["Generators"],"description":"Resize, crop, rotate, change speed, reverse, or optimize an animated or static GIF — every frame and delay preserved, loop optional.\n\n[Try GIF Editor in your browser →](https://iotools.cloud/tool/gif-editor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"loop":{"type":"boolean","description":"Loop forever"},"mode":{"enum":["resize","crop","rotate","speed","reverse","optimize"],"description":"Edit"},"width":{"type":"number","description":"Width (px)","minimum":1,"maximum":3000},"height":{"type":"number","description":"Height (px)","minimum":1,"maximum":3000},"maintainAspectRatio":{"type":"boolean","description":"Maintain aspect ratio"},"cropX":{"type":"number","description":"Left (px)","minimum":0,"maximum":3000},"cropY":{"type":"number","description":"Top (px)","minimum":0,"maximum":3000},"cropWidth":{"type":"number","description":"Crop width (px)","minimum":1,"maximum":3000},"cropHeight":{"type":"number","description":"Crop height (px)","minimum":1,"maximum":3000},"rotateAngle":{"enum":["90","180","270"],"description":"Rotate"},"speedFactor":{"type":"number","description":"Speed","minimum":25,"maximum":400},"colors":{"type":"number","description":"Max colors","minimum":2,"maximum":256},"keepEveryNthFrame":{"type":"number","description":"Keep every Nth frame","minimum":1,"maximum":10}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-extender":{"post":{"operationId":"run_gif_extender","summary":"GIF Extender","tags":["Generators"],"description":"Add extra hang time to an animated GIF — pause longer on the last frame before it loops, or stretch every frame's delay by the same amount.\n\n[Try GIF Extender in your browser →](https://iotools.cloud/tool/gif-extender/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"target":{"enum":["last","all"],"description":"Extend"},"extraSeconds":{"type":"number","description":"Extra hang time (seconds)","minimum":0.1,"maximum":60},"loop":{"type":"boolean","description":"Loop forever"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-frame-randomizer":{"post":{"operationId":"run_gif_frame_randomizer","summary":"GIF Frame Randomizer","tags":["Generators"],"description":"Shuffle an animated GIF's frame order, or randomize each frame's playback delay within a range — the same frames, a different (or erratic) replay.\n\n[Try GIF Frame Randomizer in your browser →](https://iotools.cloud/tool/gif-frame-randomizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"mode":{"enum":["order","timing"],"description":"Randomize"},"minDelaySeconds":{"type":"number","description":"Min delay (seconds)","minimum":0.01,"maximum":10},"maxDelaySeconds":{"type":"number","description":"Max delay (seconds)","minimum":0.01,"maximum":10},"loop":{"type":"boolean","description":"Loop forever"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-loop-changer":{"post":{"operationId":"run_gif_loop_changer","summary":"GIF Loop Changer","tags":["Generators"],"description":"Set an animated GIF to loop forever, play once and stop, or repeat an exact number of times — the container's loop count is rewritten, every frame and its original timing untouched.\n\n[Try GIF Loop Changer in your browser →](https://iotools.cloud/tool/gif-loop-changer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"loopMode":{"enum":["forever","once","custom"],"description":"Loop"},"loopCount":{"type":"number","description":"Loop count","minimum":1,"maximum":65535}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gif-trimmer":{"post":{"operationId":"run_gif_trimmer","summary":"GIF Trimmer","tags":["Generators"],"description":"Cut an animated GIF down to a frame or time range — trim the start, trim the end, or keep just a middle slice, playback timing intact.\n\n[Try GIF Trimmer in your browser →](https://iotools.cloud/tool/gif-trimmer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"rangeMode":{"enum":["frame","time"],"description":"Cut by"},"startPercent":{"type":"number","description":"Start position","minimum":0,"maximum":100},"endPercent":{"type":"number","description":"End position","minimum":0,"maximum":100},"startSeconds":{"type":"number","description":"Start time (seconds)","minimum":0,"maximum":3600},"endSeconds":{"type":"number","description":"End time (seconds)","minimum":0,"maximum":3600},"loop":{"type":"boolean","description":"Loop forever"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/git-unified-diff-patch-generator":{"post":{"operationId":"run_git_unified_diff_patch_generator","summary":"Git Unified Diff Patch Generator","tags":["Generators"],"description":"Compare two blocks of text and generate a Git-style unified diff (.patch) with proper @@ hunk headers, using a Myers diff algorithm. Configure context lines and the a/b file paths.\n\n[Try Git Unified Diff Patch Generator in your browser →](https://iotools.cloud/tool/git-unified-diff-patch-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalText":{"type":"string","description":"Original"},"modifiedText":{"type":"string","description":"Modified"},"fromFile":{"type":"string","description":"Original path (--- header)"},"toFile":{"type":"string","description":"Modified path (+++ header)"},"contextLines":{"type":"number","description":"Context lines","minimum":0,"maximum":10}},"required":[]},"examples":{"single_line_change":{"summary":"Single-line change","value":{"originalText":"line one\nline two\nline three","modifiedText":"line one\nline 2\nline three","fromFile":"a.txt","toFile":"b.txt","contextLines":"3"}},"multiple_hunks":{"summary":"Multiple hunks","value":{"originalText":"a\nb\nc\nd\ne\nf\ng","modifiedText":"a\nc\nd\ne\nf\nX\ng","fromFile":"a.txt","toFile":"b.txt","contextLines":"1"}},"identical_inputs_no_diff":{"summary":"Identical inputs (no diff)","value":{"originalText":"same line 1\nsame line 2","modifiedText":"same line 1\nsame line 2","fromFile":"a.txt","toFile":"b.txt","contextLines":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_line_change":{"summary":"Single-line change","value":{"tool":"git-unified-diff-patch-generator","tool_version":"1.0.2","outputs":{"unifiedDiff":"--- a.txt\n+++ b.txt\n@@ -1,3 +1,3 @@\n line one\n-line two\n+line 2\n line three\n","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>line one</div><div>line <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">two</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">2</span></div><div>line three</div></div>","summary":"1 addition, 1 deletion in 1 hunk"},"credits_used":5,"credits_remaining":null}},"multiple_hunks":{"summary":"Multiple hunks","value":{"tool":"git-unified-diff-patch-generator","tool_version":"1.0.2","outputs":{"unifiedDiff":"--- a.txt\n+++ b.txt\n@@ -1,3 +1,2 @@\n a\n-b\n c\n@@ -6,2 +5,3 @@\n f\n+X\n g\n","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>a</div><div><span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">b</span></div><div>c</div><div>d</div><div>e</div><div>f</div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">X</span></div><div>g</div></div>","summary":"1 addition, 1 deletion in 2 hunks"},"credits_used":5,"credits_remaining":null}},"identical_inputs_no_diff":{"summary":"Identical inputs (no diff)","value":{"tool":"git-unified-diff-patch-generator","tool_version":"1.0.2","outputs":{"unifiedDiff":"","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>same line 1</div><div>same line 2</div></div>","summary":"No differences — the two inputs are identical."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"unifiedDiff":{"type":"string","description":"Unified diff (.patch)"},"diffHtml":{"type":"string","description":"Diff view HTML"},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gitattributes-generator":{"post":{"operationId":"run_gitattributes_generator","summary":".gitattributes Generator","tags":["Generators"],"description":"Generate a .gitattributes file: pick a line-ending normalization strategy, select your languages, frameworks and binary file types from searchable multi-select lists, and add merge-strategy overrides for lock files and changelogs. Merges every choice into one de-duplicated, ready-to-paste file.\n\n[Try .gitattributes Generator in your browser →](https://iotools.cloud/tool/gitattributes-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"eolMode":{"enum":["auto","lf","crlf","none"],"description":"Global rule"},"groupLanguagesRuntimes":{"type":"array","items":{"enum":["presetNode","presetPython","presetJava","presetGo","presetRust","presetRuby","presetPhp","presetCpp","presetDotnet","presetWeb","presetShell","presetWindowsScripts"]},"description":"Languages & Runtimes"},"groupDocumentationConfig":{"type":"array","items":{"enum":["presetMarkdown","presetYaml"]},"description":"Documentation & Config"},"groupBinaryFileDetection":{"type":"array","items":{"enum":["binaryImages","binaryFonts","binaryArchives","binaryDocsMedia"]},"description":"Binary File Detection"},"groupMergeStrategyOverrides":{"type":"array","items":{"enum":["mergeChangelog","mergeGitignore"]},"description":"Merge Strategy Overrides"},"customPatterns":{"type":"string","description":"Additional rules"}},"required":[]},"examples":{"auto_eol_node":{"summary":"Auto EOL + Node","value":{"eolMode":"auto","groupLanguagesRuntimes":"[\"presetNode\"]"}},"force_lf_python_binary_images_with_custom_rules":{"summary":"Force LF + Python + binary images, with custom rules","value":{"eolMode":"lf","groupLanguagesRuntimes":"[\"presetPython\"]","groupBinaryFileDetection":"[\"binaryImages\"]","customPatterns":"*.psd filter=lfs diff=lfs merge=lfs -text\n# personal override"}},"no_global_rule_merge_overrides_only":{"summary":"No global rule, merge overrides only","value":{"eolMode":"none","groupMergeStrategyOverrides":"[\"mergeChangelog\",\"mergeGitignore\"]"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"auto_eol_node":{"summary":"Auto EOL + Node","value":{"tool":"gitattributes-generator","tool_version":"1.0.2","outputs":{"output":"* text=auto\n\n# Node / JavaScript / TypeScript\n*.js text eol=lf\n*.jsx text eol=lf\n*.ts text eol=lf\n*.tsx text eol=lf\n*.mjs text eol=lf\n*.cjs text eol=lf\n*.json text eol=lf\npackage-lock.json -diff -merge\nyarn.lock -diff -merge\npnpm-lock.yaml -diff -merge\n"},"credits_used":5,"credits_remaining":null}},"force_lf_python_binary_images_with_custom_rules":{"summary":"Force LF + Python + binary images, with custom rules","value":{"tool":"gitattributes-generator","tool_version":"1.0.2","outputs":{"output":"* text=auto eol=lf\n\n# Python\n*.py text diff=python eol=lf\n*.pyw text diff=python eol=lf\n*.ipynb text -diff\n\n# Images\n*.png binary\n*.jpg binary\n*.jpeg binary\n*.gif binary\n*.ico binary\n*.webp binary\n*.bmp binary\n\n# Custom Rules\n*.psd filter=lfs diff=lfs merge=lfs -text\n# personal override\n"},"credits_used":5,"credits_remaining":null}},"no_global_rule_merge_overrides_only":{"summary":"No global rule, merge overrides only","value":{"tool":"gitattributes-generator","tool_version":"1.0.2","outputs":{"output":"# CHANGELOG.md — union merge\nCHANGELOG.md merge=union\n\n# .gitignore — union merge\n.gitignore merge=union\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .gitattributes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/github-actions-workflow-generator":{"post":{"operationId":"run_github_actions_workflow_generator","summary":"GitHub Actions Workflow Generator","tags":["Generators"],"description":"Generate a ready-to-commit GitHub Actions CI workflow (.github/workflows/*.yml) from your stack and options — pick a language (Node.js, Python, Go, Rust, PHP, Ruby, Java, or .NET), a version and OS matrix, trigger events (push / pull_request / schedule / workflow_dispatch), lint/test/build steps, an optional deploy job, dependency caching and concurrency. Runs entirely in your browser.\n\n[Try GitHub Actions Workflow Generator in your browser →](https://iotools.cloud/tool/github-actions-workflow-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"workflowName":{"type":"string","description":"Workflow Name"},"stack":{"enum":["node","python","go","rust","php","ruby","java","dotnet"],"description":"Stack"},"stackVersions":{"type":"string","description":"Versions"},"packageManager":{"enum":["npm","yarn","pnpm"],"description":"Package Manager"},"pythonManager":{"enum":["pip","poetry","pipenv"],"description":"Package Manager"},"javaDistribution":{"enum":["temurin","zulu","adopt","microsoft","corretto"],"description":"Java Distribution"},"javaBuild":{"enum":["maven","gradle"],"description":"Build Tool"},"triggerPush":{"type":"boolean","description":"On push"},"pushBranches":{"type":"string","description":"Push branches"},"triggerPR":{"type":"boolean","description":"On pull_request"},"pRBranches":{"type":"string","description":"PR target branches"},"triggerSchedule":{"type":"boolean","description":"On schedule (cron)"},"cronExpression":{"type":"string","description":"Cron expression"},"triggerDispatch":{"type":"boolean","description":"On workflow_dispatch (manual)"},"matrixOS":{"type":"string","description":"Operating Systems"},"stepLint":{"type":"boolean","description":"Run lint step"},"lintCommand":{"type":"string","description":"Lint command"},"stepTest":{"type":"boolean","description":"Run test step"},"testCommand":{"type":"string","description":"Test command"},"stepBuild":{"type":"boolean","description":"Run build step"},"buildCommand":{"type":"string","description":"Build command"},"stepDeploy":{"type":"boolean","description":"Add a deploy job"},"deployBranch":{"type":"string","description":"Deploy from branch"},"deployCommand":{"type":"string","description":"Deploy command"},"enableCache":{"type":"boolean","description":"Cache dependencies"},"enableConcurrency":{"type":"boolean","description":"Cancel in-progress runs on the same ref"},"envVars":{"type":"string","description":"Environment Variables"}},"required":[]},"examples":{"node_js_npm_cache_push_pr_manual":{"summary":"Node.js — npm, cache, push + PR + manual","value":{"workflowName":"CI","stack":"node","stackVersions":"20, 22","packageManager":"npm","triggerPush":"true","pushBranches":"main","triggerPR":"true","pRBranches":"main","triggerSchedule":"","triggerDispatch":"true","matrixOS":"ubuntu-latest","stepLint":"","stepTest":"true","testCommand":"","stepBuild":"","stepDeploy":"","enableCache":"true","enableConcurrency":"true","envVars":""}},"python_poetry_scheduled_lint_test_no_cache_env_var":{"summary":"Python — poetry, scheduled, lint + test, no cache, env var","value":{"workflowName":"Python CI","stack":"python","stackVersions":"3.11, 3.12","pythonManager":"poetry","triggerPush":"true","pushBranches":"main, develop","triggerPR":"","triggerSchedule":"true","cronExpression":"0 6 * * 1","triggerDispatch":"","matrixOS":"ubuntu-latest, macos-latest","stepLint":"true","lintCommand":"","stepTest":"true","testCommand":"","stepBuild":"","stepDeploy":"","enableCache":"","enableConcurrency":"","envVars":"PYTHONUNBUFFERED=1"}},"go_test_build_deploy_job_cache":{"summary":"Go — test + build + deploy job, cache","value":{"workflowName":"CI","stack":"go","stackVersions":"1.22","triggerPush":"true","pushBranches":"main","triggerPR":"true","pRBranches":"main","triggerSchedule":"","triggerDispatch":"true","matrixOS":"ubuntu-latest","stepLint":"","stepTest":"true","testCommand":"","stepBuild":"true","buildCommand":"","stepDeploy":"true","deployBranch":"main","deployCommand":"","enableCache":"true","enableConcurrency":"true","envVars":""}},"java_gradle_cache_backend_follows_the_build_tool_no_manual_trigger":{"summary":"Java — Gradle (cache backend follows the build tool), no manual trigger","value":{"workflowName":"CI","stack":"java","stackVersions":"17, 21","javaDistribution":"temurin","javaBuild":"gradle","triggerPush":"true","pushBranches":"main","triggerPR":"true","pRBranches":"main","triggerSchedule":"","triggerDispatch":"","matrixOS":"ubuntu-latest","stepLint":"","stepTest":"true","testCommand":"","stepBuild":"true","buildCommand":"","stepDeploy":"","enableCache":"true","enableConcurrency":"","envVars":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"node_js_npm_cache_push_pr_manual":{"summary":"Node.js — npm, cache, push + PR + manual","value":{"tool":"github-actions-workflow-generator","tool_version":"1.0.2","outputs":{"output":"name: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    name: Build & Test\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest]\n        node-version: ['20', '22']\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: ${{ matrix.node-version }}\n          cache: npm\n\n      - name: Install dependencies\n        run: 'npm ci'\n\n      - name: Test\n        run: 'npm test'\n"},"credits_used":5,"credits_remaining":null}},"python_poetry_scheduled_lint_test_no_cache_env_var":{"summary":"Python — poetry, scheduled, lint + test, no cache, env var","value":{"tool":"github-actions-workflow-generator","tool_version":"1.0.2","outputs":{"output":"name: Python CI\n\non:\n  push:\n    branches: [main, develop]\n  schedule:\n    - cron: '0 6 * * 1'\n\nenv:\n  PYTHONUNBUFFERED: '1'\n\njobs:\n  build:\n    name: Build & Test\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest, macos-latest]\n        python-version: ['3.11', '3.12']\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: ${{ matrix.python-version }}\n\n      - name: Install dependencies\n        run: 'pip install poetry && poetry install --no-interaction'\n\n      - name: Lint\n        run: 'ruff check .'\n\n      - name: Test\n        run: pytest\n"},"credits_used":5,"credits_remaining":null}},"go_test_build_deploy_job_cache":{"summary":"Go — test + build + deploy job, cache","value":{"tool":"github-actions-workflow-generator","tool_version":"1.0.2","outputs":{"output":"name: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  build:\n    name: Build & Test\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest]\n        go-version: ['1.22']\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup Go\n        uses: actions/setup-go@v5\n        with:\n          go-version: ${{ matrix.go-version }}\n          cache: true\n\n      - name: Install dependencies\n        run: 'go mod download'\n\n      - name: Test\n        run: 'go test ./...'\n\n      - name: Build\n        run: 'go build ./...'\n\n  deploy:\n    name: Deploy\n    needs: build\n    runs-on: ubuntu-latest\n    if: github.event_name == 'push' && github.ref == 'refs/heads/main'\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n      - name: Deploy\n        run: 'go run ./cmd/deploy'\n"},"credits_used":5,"credits_remaining":null}},"java_gradle_cache_backend_follows_the_build_tool_no_manual_trigger":{"summary":"Java — Gradle (cache backend follows the build tool), no manual trigger","value":{"tool":"github-actions-workflow-generator","tool_version":"1.0.2","outputs":{"output":"name: CI\n\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\njobs:\n  build:\n    name: Build & Test\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest]\n        java-version: ['17', '21']\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: Setup Java\n        uses: actions/setup-java@v4\n        with:\n          distribution: temurin\n          java-version: ${{ matrix.java-version }}\n          cache: gradle\n\n      - name: Test\n        run: 'mvn -B test'\n\n      - name: Build\n        run: './gradlew build -x test'\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .github/workflows/ci.yml"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gitignore-generator":{"post":{"operationId":"run_gitignore_generator","summary":"Gitignore Generator","tags":["Generators"],"description":"Generate a .gitignore file by selecting the platforms, languages, frameworks, IDEs and tools your project uses — Node, Python, Java, Go, Rust, macOS, Windows, VS Code, JetBrains, Terraform, Docker and more. Merges the chosen templates, de-duplicates repeated patterns, and lets you append custom rules.\n\n[Try Gitignore Generator in your browser →](https://iotools.cloud/tool/gitignore-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"groupLanguagesRuntimes":{"type":"array","items":{"enum":["tplNode","tplPython","tplJava","tplGo","tplRust","tplRuby","tplPhp","tplCpp","tplDotnet"]},"description":"Languages & Runtimes"},"groupFrameworks":{"type":"array","items":{"enum":["tplNextjs","tplReact","tplVue","tplAngular","tplDjango","tplLaravel","tplRails"]},"description":"Frameworks"},"groupIDEsEditors":{"type":"array","items":{"enum":["tplVscode","tplJetbrains","tplVim","tplSublime","tplEclipse"]},"description":"IDEs & Editors"},"groupOperatingSystems":{"type":"array","items":{"enum":["tplMacos","tplWindows","tplLinux"]},"description":"Operating Systems"},"groupTools":{"type":"array","items":{"enum":["tplDocker","tplTerraform","tplLogs"]},"description":"Tools"},"customPatterns":{"type":"string","description":"Additional patterns"}},"required":[]},"examples":{"node_js_project":{"summary":"Node.js project","value":{"groupLanguagesRuntimes":"[\"tplNode\"]"}},"node_python_shared_patterns_de_duplicated":{"summary":"Node + Python (shared patterns de-duplicated)","value":{"groupLanguagesRuntimes":"[\"tplNode\",\"tplPython\"]"}},"terraform_with_custom_patterns":{"summary":"Terraform with custom patterns","value":{"groupTools":"[\"tplTerraform\"]","customPatterns":"*.bak\nsecrets/\n# personal"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"node_js_project":{"summary":"Node.js project","value":{"tool":"gitignore-generator","tool_version":"1.0.2","outputs":{"output":"# Node\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n.pnp.*\ndist/\nbuild/\ncoverage/\n.eslintcache\n*.tgz\n.env\n.env.local\n.env.*.local\n"},"credits_used":5,"credits_remaining":null}},"node_python_shared_patterns_de_duplicated":{"summary":"Node + Python (shared patterns de-duplicated)","value":{"tool":"gitignore-generator","tool_version":"1.0.2","outputs":{"output":"# Node\nnode_modules/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\n.pnp.*\ndist/\nbuild/\ncoverage/\n.eslintcache\n*.tgz\n.env\n.env.local\n.env.*.local\n\n# Python\n__pycache__/\n*.py[cod]\n*$py.class\n*.egg-info/\n.eggs/\nwheels/\n.venv/\nvenv/\nenv/\n.pytest_cache/\n.mypy_cache/\n.coverage\nhtmlcov/\n.tox/\n.ipynb_checkpoints/\n"},"credits_used":5,"credits_remaining":null}},"terraform_with_custom_patterns":{"summary":"Terraform with custom patterns","value":{"tool":"gitignore-generator","tool_version":"1.0.2","outputs":{"output":"# Terraform\n.terraform/\n*.tfstate\n*.tfstate.*\ncrash.log\n*.tfvars\noverride.tf\noverride.tf.json\n*_override.tf\n*_override.tf.json\n.terraformrc\nterraform.rc\n\n# Custom Patterns\n*.bak\nsecrets/\n# personal\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .gitignore"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/google-review-link-generator":{"post":{"operationId":"run_google_review_link_generator","summary":"Google Review Link Generator","tags":["Generators"],"description":"Turn a Google Place ID — or any Google Maps URL containing one — into a direct 'write a review' link that opens the review box in one click. Also generates read-reviews and Maps links, a copy-paste HTML button, and a scannable QR code, entirely in your browser.\n\n[Try Google Review Link Generator in your browser →](https://iotools.cloud/tool/google-review-link-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"placeId":{"type":"string","description":"Google Place ID or Maps URL"},"businessName":{"type":"string","description":"Business name (optional)"},"linkText":{"type":"string","description":"Button text"},"ecLevel":{"enum":["L","M","Q","H"],"description":"Error correction"},"dotSize":{"type":"number","description":"Dot size","minimum":1,"maximum":20}},"required":[]},"examples":{"bare_place_id":{"summary":"Bare Place ID","value":{"placeId":"ChIJN1t_tDeuEmsRUsoyG83frY4","businessName":"","linkText":"Leave us a Google review","ecLevel":"M","dotSize":"6"}},"pasted_google_maps_url":{"summary":"Pasted Google Maps URL","value":{"placeId":"https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4","businessName":"Google Sydney","linkText":"Rate your visit","ecLevel":"Q","dotSize":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bare_place_id":{"summary":"Bare Place ID","value":{"tool":"google-review-link-generator","tool_version":"1.0.2","outputs":{"reviewUrl":"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4","links":[{"purpose":"Write a review","url":"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Read all reviews","url":"https://search.google.com/local/reviews?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Place on Google Maps","url":"https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Maps search link","url":"https://www.google.com/maps/search/?api=1&query=Google&query_place_id=ChIJN1t_tDeuEmsRUsoyG83frY4"}],"html":"<a href=\"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4\" target=\"_blank\" rel=\"noopener noreferrer\"\n   title=\"Review us on Google\">Leave us a Google review</a>","qrSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"270\" height=\"270\" viewBox=\"0 0 45 45\" shape-rendering=\"crispEdges\"><rect width=\"45\" height=\"45\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM12 4h1v1h-1zM14 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM25 4h1v1h-1zM26 4h1v1h-1zM29 4h1v1h-1zM31 4h1v1h-1zM32 4h1v1h-1zM34 4h1v1h-1zM35 4h1v1h-1zM36 4h1v1h-1zM37 4h1v1h-1zM38 4h1v1h-1zM39 4h1v1h-1zM40 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM14 5h1v1h-1zM15 5h1v1h-1zM19 5h1v1h-1zM21 5h1v1h-1zM22 5h1v1h-1zM23 5h1v1h-1zM24 5h1v1h-1zM26 5h1v1h-1zM32 5h1v1h-1zM34 5h1v1h-1zM40 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM15 6h1v1h-1zM17 6h1v1h-1zM18 6h1v1h-1zM19 6h1v1h-1zM20 6h1v1h-1zM21 6h1v1h-1zM23 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM30 6h1v1h-1zM31 6h1v1h-1zM32 6h1v1h-1zM34 6h1v1h-1zM36 6h1v1h-1zM37 6h1v1h-1zM38 6h1v1h-1zM40 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM16 7h1v1h-1zM17 7h1v1h-1zM22 7h1v1h-1zM24 7h1v1h-1zM26 7h1v1h-1zM27 7h1v1h-1zM29 7h1v1h-1zM30 7h1v1h-1zM31 7h1v1h-1zM32 7h1v1h-1zM34 7h1v1h-1zM36 7h1v1h-1zM37 7h1v1h-1zM38 7h1v1h-1zM40 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM15 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM22 8h1v1h-1zM27 8h1v1h-1zM29 8h1v1h-1zM30 8h1v1h-1zM31 8h1v1h-1zM32 8h1v1h-1zM34 8h1v1h-1zM36 8h1v1h-1zM37 8h1v1h-1zM38 8h1v1h-1zM40 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM14 9h1v1h-1zM15 9h1v1h-1zM17 9h1v1h-1zM21 9h1v1h-1zM22 9h1v1h-1zM23 9h1v1h-1zM25 9h1v1h-1zM29 9h1v1h-1zM34 9h1v1h-1zM40 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM28 10h1v1h-1zM30 10h1v1h-1zM32 10h1v1h-1zM34 10h1v1h-1zM35 10h1v1h-1zM36 10h1v1h-1zM37 10h1v1h-1zM38 10h1v1h-1zM39 10h1v1h-1zM40 10h1v1h-1zM12 11h1v1h-1zM13 11h1v1h-1zM14 11h1v1h-1zM19 11h1v1h-1zM20 11h1v1h-1zM21 11h1v1h-1zM23 11h1v1h-1zM24 11h1v1h-1zM25 11h1v1h-1zM26 11h1v1h-1zM28 11h1v1h-1zM4 12h1v1h-1zM8 12h1v1h-1zM10 12h1v1h-1zM11 12h1v1h-1zM12 12h1v1h-1zM16 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM26 12h1v1h-1zM27 12h1v1h-1zM29 12h1v1h-1zM31 12h1v1h-1zM32 12h1v1h-1zM33 12h1v1h-1zM34 12h1v1h-1zM35 12h1v1h-1zM36 12h1v1h-1zM37 12h1v1h-1zM40 12h1v1h-1zM4 13h1v1h-1zM5 13h1v1h-1zM6 13h1v1h-1zM7 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM16 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM25 13h1v1h-1zM26 13h1v1h-1zM27 13h1v1h-1zM31 13h1v1h-1zM33 13h1v1h-1zM35 13h1v1h-1zM36 13h1v1h-1zM39 13h1v1h-1zM5 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM9 14h1v1h-1zM10 14h1v1h-1zM11 14h1v1h-1zM12 14h1v1h-1zM14 14h1v1h-1zM16 14h1v1h-1zM17 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM24 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM29 14h1v1h-1zM30 14h1v1h-1zM31 14h1v1h-1zM32 14h1v1h-1zM33 14h1v1h-1zM37 14h1v1h-1zM38 14h1v1h-1zM4 15h1v1h-1zM7 15h1v1h-1zM8 15h1v1h-1zM11 15h1v1h-1zM13 15h1v1h-1zM21 15h1v1h-1zM22 15h1v1h-1zM23 15h1v1h-1zM25 15h1v1h-1zM27 15h1v1h-1zM28 15h1v1h-1zM30 15h1v1h-1zM34 15h1v1h-1zM35 15h1v1h-1zM38 15h1v1h-1zM39 15h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM13 16h1v1h-1zM14 16h1v1h-1zM15 16h1v1h-1zM17 16h1v1h-1zM18 16h1v1h-1zM19 16h1v1h-1zM21 16h1v1h-1zM23 16h1v1h-1zM25 16h1v1h-1zM26 16h1v1h-1zM27 16h1v1h-1zM28 16h1v1h-1zM31 16h1v1h-1zM33 16h1v1h-1zM34 16h1v1h-1zM38 16h1v1h-1zM39 16h1v1h-1zM40 16h1v1h-1zM4 17h1v1h-1zM5 17h1v1h-1zM6 17h1v1h-1zM7 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM18 17h1v1h-1zM19 17h1v1h-1zM20 17h1v1h-1zM21 17h1v1h-1zM27 17h1v1h-1zM30 17h1v1h-1zM31 17h1v1h-1zM36 17h1v1h-1zM37 17h1v1h-1zM39 17h1v1h-1zM4 18h1v1h-1zM6 18h1v1h-1zM7 18h1v1h-1zM9 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM12 18h1v1h-1zM13 18h1v1h-1zM14 18h1v1h-1zM16 18h1v1h-1zM18 18h1v1h-1zM19 18h1v1h-1zM21 18h1v1h-1zM24 18h1v1h-1zM25 18h1v1h-1zM27 18h1v1h-1zM28 18h1v1h-1zM29 18h1v1h-1zM30 18h1v1h-1zM31 18h1v1h-1zM32 18h1v1h-1zM34 18h1v1h-1zM35 18h1v1h-1zM36 18h1v1h-1zM37 18h1v1h-1zM38 18h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM9 19h1v1h-1zM12 19h1v1h-1zM14 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM22 19h1v1h-1zM23 19h1v1h-1zM24 19h1v1h-1zM25 19h1v1h-1zM30 19h1v1h-1zM31 19h1v1h-1zM32 19h1v1h-1zM35 19h1v1h-1zM36 19h1v1h-1zM38 19h1v1h-1zM40 19h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM10 20h1v1h-1zM11 20h1v1h-1zM13 20h1v1h-1zM15 20h1v1h-1zM17 20h1v1h-1zM18 20h1v1h-1zM19 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM22 20h1v1h-1zM25 20h1v1h-1zM26 20h1v1h-1zM28 20h1v1h-1zM31 20h1v1h-1zM33 20h1v1h-1zM34 20h1v1h-1zM35 20h1v1h-1zM37 20h1v1h-1zM38 20h1v1h-1zM39 20h1v1h-1zM4 21h1v1h-1zM6 21h1v1h-1zM7 21h1v1h-1zM11 21h1v1h-1zM14 21h1v1h-1zM15 21h1v1h-1zM18 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM26 21h1v1h-1zM27 21h1v1h-1zM32 21h1v1h-1zM34 21h1v1h-1zM36 21h1v1h-1zM37 21h1v1h-1zM38 21h1v1h-1zM39 21h1v1h-1zM8 22h1v1h-1zM10 22h1v1h-1zM11 22h1v1h-1zM13 22h1v1h-1zM15 22h1v1h-1zM19 22h1v1h-1zM21 22h1v1h-1zM22 22h1v1h-1zM25 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM29 22h1v1h-1zM30 22h1v1h-1zM31 22h1v1h-1zM32 22h1v1h-1zM35 22h1v1h-1zM37 22h1v1h-1zM38 22h1v1h-1zM4 23h1v1h-1zM6 23h1v1h-1zM7 23h1v1h-1zM11 23h1v1h-1zM12 23h1v1h-1zM13 23h1v1h-1zM14 23h1v1h-1zM15 23h1v1h-1zM16 23h1v1h-1zM18 23h1v1h-1zM19 23h1v1h-1zM20 23h1v1h-1zM21 23h1v1h-1zM25 23h1v1h-1zM26 23h1v1h-1zM27 23h1v1h-1zM28 23h1v1h-1zM30 23h1v1h-1zM32 23h1v1h-1zM36 23h1v1h-1zM38 23h1v1h-1zM39 23h1v1h-1zM4 24h1v1h-1zM7 24h1v1h-1zM10 24h1v1h-1zM11 24h1v1h-1zM13 24h1v1h-1zM14 24h1v1h-1zM16 24h1v1h-1zM21 24h1v1h-1zM24 24h1v1h-1zM25 24h1v1h-1zM26 24h1v1h-1zM28 24h1v1h-1zM31 24h1v1h-1zM33 24h1v1h-1zM34 24h1v1h-1zM35 24h1v1h-1zM38 24h1v1h-1zM4 25h1v1h-1zM5 25h1v1h-1zM11 25h1v1h-1zM13 25h1v1h-1zM14 25h1v1h-1zM17 25h1v1h-1zM19 25h1v1h-1zM20 25h1v1h-1zM22 25h1v1h-1zM24 25h1v1h-1zM27 25h1v1h-1zM29 25h1v1h-1zM30 25h1v1h-1zM31 25h1v1h-1zM32 25h1v1h-1zM35 25h1v1h-1zM36 25h1v1h-1zM39 25h1v1h-1zM4 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM9 26h1v1h-1zM10 26h1v1h-1zM11 26h1v1h-1zM12 26h1v1h-1zM15 26h1v1h-1zM16 26h1v1h-1zM17 26h1v1h-1zM19 26h1v1h-1zM20 26h1v1h-1zM21 26h1v1h-1zM22 26h1v1h-1zM26 26h1v1h-1zM27 26h1v1h-1zM30 26h1v1h-1zM31 26h1v1h-1zM33 26h1v1h-1zM35 26h1v1h-1zM36 26h1v1h-1zM37 26h1v1h-1zM38 26h1v1h-1zM39 26h1v1h-1zM5 27h1v1h-1zM6 27h1v1h-1zM8 27h1v1h-1zM14 27h1v1h-1zM15 27h1v1h-1zM16 27h1v1h-1zM18 27h1v1h-1zM21 27h1v1h-1zM24 27h1v1h-1zM25 27h1v1h-1zM28 27h1v1h-1zM32 27h1v1h-1zM34 27h1v1h-1zM35 27h1v1h-1zM36 27h1v1h-1zM38 27h1v1h-1zM40 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM9 28h1v1h-1zM10 28h1v1h-1zM13 28h1v1h-1zM17 28h1v1h-1zM22 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1zM29 28h1v1h-1zM33 28h1v1h-1zM34 28h1v1h-1zM35 28h1v1h-1zM37 28h1v1h-1zM38 28h1v1h-1zM39 28h1v1h-1zM40 28h1v1h-1zM4 29h1v1h-1zM5 29h1v1h-1zM6 29h1v1h-1zM8 29h1v1h-1zM9 29h1v1h-1zM17 29h1v1h-1zM18 29h1v1h-1zM20 29h1v1h-1zM22 29h1v1h-1zM24 29h1v1h-1zM25 29h1v1h-1zM29 29h1v1h-1zM30 29h1v1h-1zM32 29h1v1h-1zM36 29h1v1h-1zM6 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM10 30h1v1h-1zM14 30h1v1h-1zM15 30h1v1h-1zM16 30h1v1h-1zM20 30h1v1h-1zM21 30h1v1h-1zM22 30h1v1h-1zM24 30h1v1h-1zM27 30h1v1h-1zM28 30h1v1h-1zM29 30h1v1h-1zM30 30h1v1h-1zM31 30h1v1h-1zM33 30h1v1h-1zM35 30h1v1h-1zM38 30h1v1h-1zM6 31h1v1h-1zM7 31h1v1h-1zM9 31h1v1h-1zM13 31h1v1h-1zM15 31h1v1h-1zM16 31h1v1h-1zM18 31h1v1h-1zM21 31h1v1h-1zM22 31h1v1h-1zM23 31h1v1h-1zM24 31h1v1h-1zM25 31h1v1h-1zM27 31h1v1h-1zM28 31h1v1h-1zM30 31h1v1h-1zM31 31h1v1h-1zM32 31h1v1h-1zM35 31h1v1h-1zM38 31h1v1h-1zM40 31h1v1h-1zM4 32h1v1h-1zM5 32h1v1h-1zM6 32h1v1h-1zM8 32h1v1h-1zM10 32h1v1h-1zM11 32h1v1h-1zM16 32h1v1h-1zM17 32h1v1h-1zM18 32h1v1h-1zM19 32h1v1h-1zM20 32h1v1h-1zM21 32h1v1h-1zM23 32h1v1h-1zM24 32h1v1h-1zM25 32h1v1h-1zM26 32h1v1h-1zM28 32h1v1h-1zM31 32h1v1h-1zM32 32h1v1h-1zM33 32h1v1h-1zM34 32h1v1h-1zM35 32h1v1h-1zM36 32h1v1h-1zM38 32h1v1h-1zM39 32h1v1h-1zM12 33h1v1h-1zM13 33h1v1h-1zM14 33h1v1h-1zM15 33h1v1h-1zM16 33h1v1h-1zM19 33h1v1h-1zM20 33h1v1h-1zM21 33h1v1h-1zM25 33h1v1h-1zM27 33h1v1h-1zM28 33h1v1h-1zM29 33h1v1h-1zM30 33h1v1h-1zM32 33h1v1h-1zM36 33h1v1h-1zM39 33h1v1h-1zM4 34h1v1h-1zM5 34h1v1h-1zM6 34h1v1h-1zM7 34h1v1h-1zM8 34h1v1h-1zM9 34h1v1h-1zM10 34h1v1h-1zM12 34h1v1h-1zM14 34h1v1h-1zM15 34h1v1h-1zM17 34h1v1h-1zM18 34h1v1h-1zM19 34h1v1h-1zM22 34h1v1h-1zM24 34h1v1h-1zM27 34h1v1h-1zM28 34h1v1h-1zM30 34h1v1h-1zM32 34h1v1h-1zM34 34h1v1h-1zM36 34h1v1h-1zM4 35h1v1h-1zM10 35h1v1h-1zM13 35h1v1h-1zM18 35h1v1h-1zM19 35h1v1h-1zM25 35h1v1h-1zM27 35h1v1h-1zM28 35h1v1h-1zM32 35h1v1h-1zM36 35h1v1h-1zM37 35h1v1h-1zM38 35h1v1h-1zM4 36h1v1h-1zM6 36h1v1h-1zM7 36h1v1h-1zM8 36h1v1h-1zM10 36h1v1h-1zM12 36h1v1h-1zM13 36h1v1h-1zM15 36h1v1h-1zM16 36h1v1h-1zM17 36h1v1h-1zM18 36h1v1h-1zM20 36h1v1h-1zM23 36h1v1h-1zM24 36h1v1h-1zM25 36h1v1h-1zM26 36h1v1h-1zM32 36h1v1h-1zM33 36h1v1h-1zM34 36h1v1h-1zM35 36h1v1h-1zM36 36h1v1h-1zM37 36h1v1h-1zM38 36h1v1h-1zM39 36h1v1h-1zM40 36h1v1h-1zM4 37h1v1h-1zM6 37h1v1h-1zM7 37h1v1h-1zM8 37h1v1h-1zM10 37h1v1h-1zM14 37h1v1h-1zM15 37h1v1h-1zM22 37h1v1h-1zM23 37h1v1h-1zM26 37h1v1h-1zM27 37h1v1h-1zM30 37h1v1h-1zM32 37h1v1h-1zM33 37h1v1h-1zM34 37h1v1h-1zM35 37h1v1h-1zM40 37h1v1h-1zM4 38h1v1h-1zM6 38h1v1h-1zM7 38h1v1h-1zM8 38h1v1h-1zM10 38h1v1h-1zM13 38h1v1h-1zM15 38h1v1h-1zM16 38h1v1h-1zM17 38h1v1h-1zM18 38h1v1h-1zM19 38h1v1h-1zM24 38h1v1h-1zM26 38h1v1h-1zM27 38h1v1h-1zM28 38h1v1h-1zM30 38h1v1h-1zM31 38h1v1h-1zM32 38h1v1h-1zM34 38h1v1h-1zM4 39h1v1h-1zM10 39h1v1h-1zM14 39h1v1h-1zM15 39h1v1h-1zM17 39h1v1h-1zM18 39h1v1h-1zM19 39h1v1h-1zM20 39h1v1h-1zM21 39h1v1h-1zM25 39h1v1h-1zM27 39h1v1h-1zM28 39h1v1h-1zM31 39h1v1h-1zM32 39h1v1h-1zM33 39h1v1h-1zM34 39h1v1h-1zM36 39h1v1h-1zM38 39h1v1h-1zM39 39h1v1h-1zM4 40h1v1h-1zM5 40h1v1h-1zM6 40h1v1h-1zM7 40h1v1h-1zM8 40h1v1h-1zM9 40h1v1h-1zM10 40h1v1h-1zM12 40h1v1h-1zM13 40h1v1h-1zM14 40h1v1h-1zM15 40h1v1h-1zM21 40h1v1h-1zM24 40h1v1h-1zM25 40h1v1h-1zM26 40h1v1h-1zM28 40h1v1h-1zM31 40h1v1h-1zM34 40h1v1h-1zM35 40h1v1h-1zM38 40h1v1h-1zM39 40h1v1h-1zM40 40h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}},"pasted_google_maps_url":{"summary":"Pasted Google Maps URL","value":{"tool":"google-review-link-generator","tool_version":"1.0.2","outputs":{"reviewUrl":"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4","links":[{"purpose":"Write a review","url":"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Read all reviews","url":"https://search.google.com/local/reviews?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Place on Google Maps","url":"https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUsoyG83frY4"},{"purpose":"Maps search link","url":"https://www.google.com/maps/search/?api=1&query=Google%20Sydney&query_place_id=ChIJN1t_tDeuEmsRUsoyG83frY4"}],"html":"<a href=\"https://search.google.com/local/writereview?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4\" target=\"_blank\" rel=\"noopener noreferrer\"\n   title=\"Review Google Sydney on Google\">Rate your visit</a>","qrSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"424\" height=\"424\" viewBox=\"0 0 53 53\" shape-rendering=\"crispEdges\"><rect width=\"53\" height=\"53\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM12 4h1v1h-1zM13 4h1v1h-1zM14 4h1v1h-1zM20 4h1v1h-1zM23 4h1v1h-1zM24 4h1v1h-1zM26 4h1v1h-1zM29 4h1v1h-1zM32 4h1v1h-1zM33 4h1v1h-1zM34 4h1v1h-1zM35 4h1v1h-1zM36 4h1v1h-1zM40 4h1v1h-1zM42 4h1v1h-1zM43 4h1v1h-1zM44 4h1v1h-1zM45 4h1v1h-1zM46 4h1v1h-1zM47 4h1v1h-1zM48 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM15 5h1v1h-1zM20 5h1v1h-1zM23 5h1v1h-1zM25 5h1v1h-1zM30 5h1v1h-1zM31 5h1v1h-1zM39 5h1v1h-1zM42 5h1v1h-1zM48 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM14 6h1v1h-1zM15 6h1v1h-1zM18 6h1v1h-1zM22 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM31 6h1v1h-1zM34 6h1v1h-1zM35 6h1v1h-1zM37 6h1v1h-1zM39 6h1v1h-1zM42 6h1v1h-1zM44 6h1v1h-1zM45 6h1v1h-1zM46 6h1v1h-1zM48 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM14 7h1v1h-1zM18 7h1v1h-1zM19 7h1v1h-1zM21 7h1v1h-1zM24 7h1v1h-1zM25 7h1v1h-1zM26 7h1v1h-1zM29 7h1v1h-1zM33 7h1v1h-1zM39 7h1v1h-1zM40 7h1v1h-1zM42 7h1v1h-1zM44 7h1v1h-1zM45 7h1v1h-1zM46 7h1v1h-1zM48 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM21 8h1v1h-1zM24 8h1v1h-1zM25 8h1v1h-1zM26 8h1v1h-1zM27 8h1v1h-1zM28 8h1v1h-1zM33 8h1v1h-1zM34 8h1v1h-1zM35 8h1v1h-1zM38 8h1v1h-1zM39 8h1v1h-1zM40 8h1v1h-1zM42 8h1v1h-1zM44 8h1v1h-1zM45 8h1v1h-1zM46 8h1v1h-1zM48 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM15 9h1v1h-1zM16 9h1v1h-1zM18 9h1v1h-1zM20 9h1v1h-1zM21 9h1v1h-1zM22 9h1v1h-1zM24 9h1v1h-1zM28 9h1v1h-1zM29 9h1v1h-1zM31 9h1v1h-1zM32 9h1v1h-1zM37 9h1v1h-1zM42 9h1v1h-1zM48 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM28 10h1v1h-1zM30 10h1v1h-1zM32 10h1v1h-1zM34 10h1v1h-1zM36 10h1v1h-1zM38 10h1v1h-1zM40 10h1v1h-1zM42 10h1v1h-1zM43 10h1v1h-1zM44 10h1v1h-1zM45 10h1v1h-1zM46 10h1v1h-1zM47 10h1v1h-1zM48 10h1v1h-1zM13 11h1v1h-1zM14 11h1v1h-1zM20 11h1v1h-1zM21 11h1v1h-1zM22 11h1v1h-1zM24 11h1v1h-1zM28 11h1v1h-1zM30 11h1v1h-1zM31 11h1v1h-1zM32 11h1v1h-1zM33 11h1v1h-1zM34 11h1v1h-1zM35 11h1v1h-1zM36 11h1v1h-1zM40 11h1v1h-1zM5 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM11 12h1v1h-1zM14 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM26 12h1v1h-1zM27 12h1v1h-1zM28 12h1v1h-1zM29 12h1v1h-1zM33 12h1v1h-1zM34 12h1v1h-1zM35 12h1v1h-1zM39 12h1v1h-1zM43 12h1v1h-1zM44 12h1v1h-1zM48 12h1v1h-1zM4 13h1v1h-1zM5 13h1v1h-1zM13 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM20 13h1v1h-1zM22 13h1v1h-1zM27 13h1v1h-1zM28 13h1v1h-1zM29 13h1v1h-1zM31 13h1v1h-1zM32 13h1v1h-1zM33 13h1v1h-1zM34 13h1v1h-1zM35 13h1v1h-1zM39 13h1v1h-1zM40 13h1v1h-1zM41 13h1v1h-1zM43 13h1v1h-1zM45 13h1v1h-1zM46 13h1v1h-1zM48 13h1v1h-1zM4 14h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM10 14h1v1h-1zM12 14h1v1h-1zM16 14h1v1h-1zM17 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM22 14h1v1h-1zM25 14h1v1h-1zM26 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM30 14h1v1h-1zM33 14h1v1h-1zM35 14h1v1h-1zM36 14h1v1h-1zM38 14h1v1h-1zM39 14h1v1h-1zM41 14h1v1h-1zM42 14h1v1h-1zM45 14h1v1h-1zM47 14h1v1h-1zM4 15h1v1h-1zM6 15h1v1h-1zM7 15h1v1h-1zM8 15h1v1h-1zM9 15h1v1h-1zM11 15h1v1h-1zM12 15h1v1h-1zM13 15h1v1h-1zM14 15h1v1h-1zM15 15h1v1h-1zM16 15h1v1h-1zM18 15h1v1h-1zM20 15h1v1h-1zM23 15h1v1h-1zM27 15h1v1h-1zM30 15h1v1h-1zM31 15h1v1h-1zM32 15h1v1h-1zM33 15h1v1h-1zM35 15h1v1h-1zM36 15h1v1h-1zM37 15h1v1h-1zM38 15h1v1h-1zM39 15h1v1h-1zM40 15h1v1h-1zM41 15h1v1h-1zM42 15h1v1h-1zM43 15h1v1h-1zM44 15h1v1h-1zM46 15h1v1h-1zM47 15h1v1h-1zM48 15h1v1h-1zM4 16h1v1h-1zM6 16h1v1h-1zM8 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM12 16h1v1h-1zM13 16h1v1h-1zM16 16h1v1h-1zM19 16h1v1h-1zM22 16h1v1h-1zM23 16h1v1h-1zM26 16h1v1h-1zM30 16h1v1h-1zM33 16h1v1h-1zM34 16h1v1h-1zM41 16h1v1h-1zM42 16h1v1h-1zM45 16h1v1h-1zM47 16h1v1h-1zM48 16h1v1h-1zM4 17h1v1h-1zM5 17h1v1h-1zM7 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM16 17h1v1h-1zM17 17h1v1h-1zM20 17h1v1h-1zM21 17h1v1h-1zM27 17h1v1h-1zM29 17h1v1h-1zM32 17h1v1h-1zM33 17h1v1h-1zM34 17h1v1h-1zM37 17h1v1h-1zM39 17h1v1h-1zM40 17h1v1h-1zM41 17h1v1h-1zM44 17h1v1h-1zM46 17h1v1h-1zM48 17h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM9 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM16 18h1v1h-1zM17 18h1v1h-1zM20 18h1v1h-1zM21 18h1v1h-1zM24 18h1v1h-1zM26 18h1v1h-1zM27 18h1v1h-1zM32 18h1v1h-1zM34 18h1v1h-1zM35 18h1v1h-1zM38 18h1v1h-1zM39 18h1v1h-1zM42 18h1v1h-1zM43 18h1v1h-1zM45 18h1v1h-1zM46 18h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM7 19h1v1h-1zM8 19h1v1h-1zM9 19h1v1h-1zM11 19h1v1h-1zM12 19h1v1h-1zM13 19h1v1h-1zM14 19h1v1h-1zM15 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM18 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM23 19h1v1h-1zM24 19h1v1h-1zM29 19h1v1h-1zM30 19h1v1h-1zM31 19h1v1h-1zM32 19h1v1h-1zM34 19h1v1h-1zM36 19h1v1h-1zM37 19h1v1h-1zM38 19h1v1h-1zM39 19h1v1h-1zM40 19h1v1h-1zM41 19h1v1h-1zM42 19h1v1h-1zM44 19h1v1h-1zM45 19h1v1h-1zM46 19h1v1h-1zM4 20h1v1h-1zM7 20h1v1h-1zM8 20h1v1h-1zM10 20h1v1h-1zM11 20h1v1h-1zM15 20h1v1h-1zM17 20h1v1h-1zM21 20h1v1h-1zM22 20h1v1h-1zM25 20h1v1h-1zM26 20h1v1h-1zM29 20h1v1h-1zM30 20h1v1h-1zM33 20h1v1h-1zM35 20h1v1h-1zM37 20h1v1h-1zM38 20h1v1h-1zM39 20h1v1h-1zM45 20h1v1h-1zM48 20h1v1h-1zM9 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM15 21h1v1h-1zM17 21h1v1h-1zM18 21h1v1h-1zM20 21h1v1h-1zM21 21h1v1h-1zM23 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM27 21h1v1h-1zM29 21h1v1h-1zM31 21h1v1h-1zM32 21h1v1h-1zM33 21h1v1h-1zM34 21h1v1h-1zM37 21h1v1h-1zM40 21h1v1h-1zM44 21h1v1h-1zM45 21h1v1h-1zM46 21h1v1h-1zM48 21h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM10 22h1v1h-1zM13 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM17 22h1v1h-1zM19 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1zM23 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM29 22h1v1h-1zM30 22h1v1h-1zM31 22h1v1h-1zM33 22h1v1h-1zM34 22h1v1h-1zM35 22h1v1h-1zM37 22h1v1h-1zM38 22h1v1h-1zM39 22h1v1h-1zM42 22h1v1h-1zM44 22h1v1h-1zM45 22h1v1h-1zM47 22h1v1h-1zM4 23h1v1h-1zM5 23h1v1h-1zM9 23h1v1h-1zM12 23h1v1h-1zM13 23h1v1h-1zM15 23h1v1h-1zM17 23h1v1h-1zM21 23h1v1h-1zM22 23h1v1h-1zM25 23h1v1h-1zM26 23h1v1h-1zM29 23h1v1h-1zM30 23h1v1h-1zM31 23h1v1h-1zM33 23h1v1h-1zM36 23h1v1h-1zM38 23h1v1h-1zM40 23h1v1h-1zM41 23h1v1h-1zM42 23h1v1h-1zM43 23h1v1h-1zM44 23h1v1h-1zM46 23h1v1h-1zM47 23h1v1h-1zM48 23h1v1h-1zM5 24h1v1h-1zM8 24h1v1h-1zM9 24h1v1h-1zM10 24h1v1h-1zM11 24h1v1h-1zM12 24h1v1h-1zM15 24h1v1h-1zM16 24h1v1h-1zM19 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM25 24h1v1h-1zM26 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM30 24h1v1h-1zM32 24h1v1h-1zM35 24h1v1h-1zM37 24h1v1h-1zM39 24h1v1h-1zM40 24h1v1h-1zM41 24h1v1h-1zM42 24h1v1h-1zM43 24h1v1h-1zM44 24h1v1h-1zM45 24h1v1h-1zM47 24h1v1h-1zM48 24h1v1h-1zM8 25h1v1h-1zM12 25h1v1h-1zM13 25h1v1h-1zM18 25h1v1h-1zM19 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM22 25h1v1h-1zM24 25h1v1h-1zM28 25h1v1h-1zM29 25h1v1h-1zM30 25h1v1h-1zM31 25h1v1h-1zM32 25h1v1h-1zM33 25h1v1h-1zM36 25h1v1h-1zM40 25h1v1h-1zM44 25h1v1h-1zM6 26h1v1h-1zM8 26h1v1h-1zM10 26h1v1h-1zM12 26h1v1h-1zM14 26h1v1h-1zM20 26h1v1h-1zM22 26h1v1h-1zM24 26h1v1h-1zM26 26h1v1h-1zM28 26h1v1h-1zM32 26h1v1h-1zM34 26h1v1h-1zM35 26h1v1h-1zM36 26h1v1h-1zM37 26h1v1h-1zM38 26h1v1h-1zM39 26h1v1h-1zM40 26h1v1h-1zM42 26h1v1h-1zM44 26h1v1h-1zM46 26h1v1h-1zM47 26h1v1h-1zM5 27h1v1h-1zM7 27h1v1h-1zM8 27h1v1h-1zM12 27h1v1h-1zM14 27h1v1h-1zM15 27h1v1h-1zM17 27h1v1h-1zM20 27h1v1h-1zM21 27h1v1h-1zM22 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM28 27h1v1h-1zM29 27h1v1h-1zM30 27h1v1h-1zM32 27h1v1h-1zM33 27h1v1h-1zM34 27h1v1h-1zM35 27h1v1h-1zM36 27h1v1h-1zM37 27h1v1h-1zM40 27h1v1h-1zM44 27h1v1h-1zM45 27h1v1h-1zM46 27h1v1h-1zM47 27h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM9 28h1v1h-1zM10 28h1v1h-1zM11 28h1v1h-1zM12 28h1v1h-1zM13 28h1v1h-1zM14 28h1v1h-1zM19 28h1v1h-1zM20 28h1v1h-1zM22 28h1v1h-1zM23 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1zM29 28h1v1h-1zM33 28h1v1h-1zM34 28h1v1h-1zM35 28h1v1h-1zM37 28h1v1h-1zM38 28h1v1h-1zM40 28h1v1h-1zM41 28h1v1h-1zM42 28h1v1h-1zM43 28h1v1h-1zM44 28h1v1h-1zM45 28h1v1h-1zM48 28h1v1h-1zM4 29h1v1h-1zM5 29h1v1h-1zM6 29h1v1h-1zM7 29h1v1h-1zM9 29h1v1h-1zM11 29h1v1h-1zM12 29h1v1h-1zM14 29h1v1h-1zM15 29h1v1h-1zM18 29h1v1h-1zM20 29h1v1h-1zM21 29h1v1h-1zM23 29h1v1h-1zM24 29h1v1h-1zM28 29h1v1h-1zM30 29h1v1h-1zM33 29h1v1h-1zM34 29h1v1h-1zM35 29h1v1h-1zM36 29h1v1h-1zM39 29h1v1h-1zM40 29h1v1h-1zM45 29h1v1h-1zM47 29h1v1h-1zM48 29h1v1h-1zM6 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM9 30h1v1h-1zM10 30h1v1h-1zM13 30h1v1h-1zM17 30h1v1h-1zM18 30h1v1h-1zM21 30h1v1h-1zM23 30h1v1h-1zM24 30h1v1h-1zM26 30h1v1h-1zM27 30h1v1h-1zM35 30h1v1h-1zM36 30h1v1h-1zM37 30h1v1h-1zM38 30h1v1h-1zM40 30h1v1h-1zM41 30h1v1h-1zM43 30h1v1h-1zM4 31h1v1h-1zM5 31h1v1h-1zM9 31h1v1h-1zM11 31h1v1h-1zM14 31h1v1h-1zM17 31h1v1h-1zM21 31h1v1h-1zM22 31h1v1h-1zM23 31h1v1h-1zM25 31h1v1h-1zM26 31h1v1h-1zM28 31h1v1h-1zM29 31h1v1h-1zM31 31h1v1h-1zM33 31h1v1h-1zM39 31h1v1h-1zM42 31h1v1h-1zM43 31h1v1h-1zM45 31h1v1h-1zM46 31h1v1h-1zM48 31h1v1h-1zM4 32h1v1h-1zM5 32h1v1h-1zM6 32h1v1h-1zM8 32h1v1h-1zM10 32h1v1h-1zM11 32h1v1h-1zM13 32h1v1h-1zM16 32h1v1h-1zM18 32h1v1h-1zM20 32h1v1h-1zM23 32h1v1h-1zM24 32h1v1h-1zM28 32h1v1h-1zM29 32h1v1h-1zM30 32h1v1h-1zM33 32h1v1h-1zM35 32h1v1h-1zM36 32h1v1h-1zM40 32h1v1h-1zM41 32h1v1h-1zM43 32h1v1h-1zM44 32h1v1h-1zM47 32h1v1h-1zM48 32h1v1h-1zM5 33h1v1h-1zM6 33h1v1h-1zM7 33h1v1h-1zM9 33h1v1h-1zM12 33h1v1h-1zM15 33h1v1h-1zM16 33h1v1h-1zM18 33h1v1h-1zM20 33h1v1h-1zM24 33h1v1h-1zM25 33h1v1h-1zM27 33h1v1h-1zM30 33h1v1h-1zM31 33h1v1h-1zM33 33h1v1h-1zM34 33h1v1h-1zM36 33h1v1h-1zM46 33h1v1h-1zM47 33h1v1h-1zM48 33h1v1h-1zM4 34h1v1h-1zM5 34h1v1h-1zM6 34h1v1h-1zM7 34h1v1h-1zM10 34h1v1h-1zM11 34h1v1h-1zM12 34h1v1h-1zM15 34h1v1h-1zM16 34h1v1h-1zM17 34h1v1h-1zM18 34h1v1h-1zM20 34h1v1h-1zM21 34h1v1h-1zM22 34h1v1h-1zM23 34h1v1h-1zM28 34h1v1h-1zM29 34h1v1h-1zM31 34h1v1h-1zM32 34h1v1h-1zM35 34h1v1h-1zM36 34h1v1h-1zM37 34h1v1h-1zM38 34h1v1h-1zM40 34h1v1h-1zM41 34h1v1h-1zM45 34h1v1h-1zM47 34h1v1h-1zM4 35h1v1h-1zM6 35h1v1h-1zM7 35h1v1h-1zM13 35h1v1h-1zM14 35h1v1h-1zM15 35h1v1h-1zM16 35h1v1h-1zM17 35h1v1h-1zM18 35h1v1h-1zM20 35h1v1h-1zM23 35h1v1h-1zM25 35h1v1h-1zM26 35h1v1h-1zM29 35h1v1h-1zM32 35h1v1h-1zM34 35h1v1h-1zM36 35h1v1h-1zM39 35h1v1h-1zM43 35h1v1h-1zM45 35h1v1h-1zM46 35h1v1h-1zM47 35h1v1h-1zM5 36h1v1h-1zM6 36h1v1h-1zM8 36h1v1h-1zM10 36h1v1h-1zM11 36h1v1h-1zM12 36h1v1h-1zM13 36h1v1h-1zM14 36h1v1h-1zM15 36h1v1h-1zM19 36h1v1h-1zM21 36h1v1h-1zM24 36h1v1h-1zM25 36h1v1h-1zM27 36h1v1h-1zM35 36h1v1h-1zM41 36h1v1h-1zM43 36h1v1h-1zM44 36h1v1h-1zM47 36h1v1h-1zM4 37h1v1h-1zM5 37h1v1h-1zM6 37h1v1h-1zM8 37h1v1h-1zM11 37h1v1h-1zM12 37h1v1h-1zM13 37h1v1h-1zM15 37h1v1h-1zM18 37h1v1h-1zM19 37h1v1h-1zM20 37h1v1h-1zM23 37h1v1h-1zM25 37h1v1h-1zM27 37h1v1h-1zM30 37h1v1h-1zM33 37h1v1h-1zM34 37h1v1h-1zM35 37h1v1h-1zM40 37h1v1h-1zM42 37h1v1h-1zM45 37h1v1h-1zM48 37h1v1h-1zM8 38h1v1h-1zM10 38h1v1h-1zM12 38h1v1h-1zM15 38h1v1h-1zM18 38h1v1h-1zM21 38h1v1h-1zM25 38h1v1h-1zM26 38h1v1h-1zM30 38h1v1h-1zM35 38h1v1h-1zM37 38h1v1h-1zM41 38h1v1h-1zM44 38h1v1h-1zM45 38h1v1h-1zM47 38h1v1h-1zM5 39h1v1h-1zM6 39h1v1h-1zM7 39h1v1h-1zM8 39h1v1h-1zM16 39h1v1h-1zM18 39h1v1h-1zM20 39h1v1h-1zM21 39h1v1h-1zM22 39h1v1h-1zM24 39h1v1h-1zM26 39h1v1h-1zM28 39h1v1h-1zM30 39h1v1h-1zM31 39h1v1h-1zM32 39h1v1h-1zM34 39h1v1h-1zM36 39h1v1h-1zM39 39h1v1h-1zM41 39h1v1h-1zM42 39h1v1h-1zM45 39h1v1h-1zM46 39h1v1h-1zM4 40h1v1h-1zM7 40h1v1h-1zM8 40h1v1h-1zM10 40h1v1h-1zM11 40h1v1h-1zM12 40h1v1h-1zM13 40h1v1h-1zM14 40h1v1h-1zM15 40h1v1h-1zM17 40h1v1h-1zM18 40h1v1h-1zM21 40h1v1h-1zM22 40h1v1h-1zM23 40h1v1h-1zM24 40h1v1h-1zM25 40h1v1h-1zM26 40h1v1h-1zM27 40h1v1h-1zM28 40h1v1h-1zM29 40h1v1h-1zM31 40h1v1h-1zM33 40h1v1h-1zM35 40h1v1h-1zM37 40h1v1h-1zM40 40h1v1h-1zM41 40h1v1h-1zM42 40h1v1h-1zM43 40h1v1h-1zM44 40h1v1h-1zM45 40h1v1h-1zM47 40h1v1h-1zM48 40h1v1h-1zM12 41h1v1h-1zM14 41h1v1h-1zM15 41h1v1h-1zM19 41h1v1h-1zM20 41h1v1h-1zM21 41h1v1h-1zM22 41h1v1h-1zM23 41h1v1h-1zM24 41h1v1h-1zM28 41h1v1h-1zM33 41h1v1h-1zM34 41h1v1h-1zM35 41h1v1h-1zM37 41h1v1h-1zM39 41h1v1h-1zM40 41h1v1h-1zM44 41h1v1h-1zM45 41h1v1h-1zM46 41h1v1h-1zM48 41h1v1h-1zM4 42h1v1h-1zM5 42h1v1h-1zM6 42h1v1h-1zM7 42h1v1h-1zM8 42h1v1h-1zM9 42h1v1h-1zM10 42h1v1h-1zM12 42h1v1h-1zM14 42h1v1h-1zM15 42h1v1h-1zM17 42h1v1h-1zM18 42h1v1h-1zM23 42h1v1h-1zM24 42h1v1h-1zM26 42h1v1h-1zM28 42h1v1h-1zM29 42h1v1h-1zM32 42h1v1h-1zM36 42h1v1h-1zM37 42h1v1h-1zM39 42h1v1h-1zM40 42h1v1h-1zM42 42h1v1h-1zM44 42h1v1h-1zM46 42h1v1h-1zM47 42h1v1h-1zM4 43h1v1h-1zM10 43h1v1h-1zM12 43h1v1h-1zM13 43h1v1h-1zM20 43h1v1h-1zM22 43h1v1h-1zM23 43h1v1h-1zM24 43h1v1h-1zM28 43h1v1h-1zM29 43h1v1h-1zM32 43h1v1h-1zM34 43h1v1h-1zM35 43h1v1h-1zM36 43h1v1h-1zM38 43h1v1h-1zM39 43h1v1h-1zM40 43h1v1h-1zM44 43h1v1h-1zM45 43h1v1h-1zM46 43h1v1h-1zM47 43h1v1h-1zM48 43h1v1h-1zM4 44h1v1h-1zM6 44h1v1h-1zM7 44h1v1h-1zM8 44h1v1h-1zM10 44h1v1h-1zM12 44h1v1h-1zM14 44h1v1h-1zM18 44h1v1h-1zM19 44h1v1h-1zM22 44h1v1h-1zM24 44h1v1h-1zM25 44h1v1h-1zM26 44h1v1h-1zM27 44h1v1h-1zM28 44h1v1h-1zM29 44h1v1h-1zM35 44h1v1h-1zM38 44h1v1h-1zM39 44h1v1h-1zM40 44h1v1h-1zM41 44h1v1h-1zM42 44h1v1h-1zM43 44h1v1h-1zM44 44h1v1h-1zM45 44h1v1h-1zM46 44h1v1h-1zM4 45h1v1h-1zM6 45h1v1h-1zM7 45h1v1h-1zM8 45h1v1h-1zM10 45h1v1h-1zM12 45h1v1h-1zM14 45h1v1h-1zM15 45h1v1h-1zM17 45h1v1h-1zM18 45h1v1h-1zM21 45h1v1h-1zM22 45h1v1h-1zM23 45h1v1h-1zM24 45h1v1h-1zM26 45h1v1h-1zM29 45h1v1h-1zM30 45h1v1h-1zM33 45h1v1h-1zM34 45h1v1h-1zM35 45h1v1h-1zM37 45h1v1h-1zM44 45h1v1h-1zM4 46h1v1h-1zM6 46h1v1h-1zM7 46h1v1h-1zM8 46h1v1h-1zM10 46h1v1h-1zM12 46h1v1h-1zM15 46h1v1h-1zM17 46h1v1h-1zM18 46h1v1h-1zM20 46h1v1h-1zM21 46h1v1h-1zM27 46h1v1h-1zM29 46h1v1h-1zM30 46h1v1h-1zM31 46h1v1h-1zM33 46h1v1h-1zM34 46h1v1h-1zM36 46h1v1h-1zM37 46h1v1h-1zM38 46h1v1h-1zM39 46h1v1h-1zM40 46h1v1h-1zM46 46h1v1h-1zM47 46h1v1h-1zM4 47h1v1h-1zM10 47h1v1h-1zM12 47h1v1h-1zM17 47h1v1h-1zM21 47h1v1h-1zM25 47h1v1h-1zM26 47h1v1h-1zM29 47h1v1h-1zM34 47h1v1h-1zM36 47h1v1h-1zM39 47h1v1h-1zM41 47h1v1h-1zM43 47h1v1h-1zM46 47h1v1h-1zM4 48h1v1h-1zM5 48h1v1h-1zM6 48h1v1h-1zM7 48h1v1h-1zM8 48h1v1h-1zM9 48h1v1h-1zM10 48h1v1h-1zM13 48h1v1h-1zM14 48h1v1h-1zM15 48h1v1h-1zM17 48h1v1h-1zM19 48h1v1h-1zM22 48h1v1h-1zM24 48h1v1h-1zM26 48h1v1h-1zM28 48h1v1h-1zM30 48h1v1h-1zM31 48h1v1h-1zM33 48h1v1h-1zM34 48h1v1h-1zM39 48h1v1h-1zM41 48h1v1h-1zM42 48h1v1h-1zM45 48h1v1h-1zM47 48h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"reviewUrl":{"type":"string","description":"Write-a-review link"},"links":{"type":"array","description":"Every link for this place","items":{"type":"object","properties":{"purpose":{"type":"string","description":"Purpose"},"url":{"type":"string","description":"URL"}}},"x-iotools-columns":["purpose","url"]},"html":{"type":"string","description":"HTML button"},"qrSvg":{"type":"string","description":"QR code (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gradient-text-css-generator":{"post":{"operationId":"run_gradient_text_css_generator","summary":"Gradient Text CSS Generator","tags":["Generators"],"description":"Generate CSS for gradient text — a linear or radial gradient clipped to the glyphs via background-clip: text (with the -webkit- prefix) and a transparent fill. Copy the ready-made class or inline snippet.\n\n[Try Gradient Text CSS Generator in your browser →](https://iotools.cloud/tool/gradient-text-css-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sampleText":{"type":"string","description":"Sample Text"},"fontSize":{"type":"number","description":"Font Size (px)","minimum":12,"maximum":200},"fontWeight":{"enum":["300","400","600","700","800","900"],"description":"Font Weight"},"gradientType":{"enum":["linear","radial"],"description":"Gradient Type"},"angle":{"type":"number","description":"Angle (deg)","minimum":0,"maximum":360},"color1":{"type":"string","description":"Color 1"},"position1":{"type":"number","description":"Position 1 (%)","minimum":0,"maximum":100},"color2":{"type":"string","description":"Color 2"},"position2":{"type":"number","description":"Position 2 (%)","minimum":0,"maximum":100},"useColor3":{"type":"boolean","description":"Add a third color stop"},"color3":{"type":"string","description":"Color 3"},"position3":{"type":"number","description":"Position 3 (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"two_color_linear_gradient":{"summary":"Two-color linear gradient","value":{"sampleText":"Gradient Text","fontSize":"72","fontWeight":"700","gradientType":"linear","angle":"90","color1":"#464aff","position1":"0","color2":"#ff6b9d","position2":"100","useColor3":"","color3":"#ffd93d","position3":"50"}},"three_color_radial_gradient":{"summary":"Three-color radial gradient","value":{"sampleText":"Rainbow","fontSize":"96","fontWeight":"800","gradientType":"radial","angle":"90","color1":"#ff0000","position1":"0","color2":"#00ff00","position2":"50","useColor3":"true","color3":"#0000ff","position3":"100"}},"three_color_linear_gradient_with_special_characters":{"summary":"Three-color linear gradient with special characters","value":{"sampleText":"Me & <You>","fontSize":"48","fontWeight":"400","gradientType":"linear","angle":"45","color1":"#ff6b9d","position1":"0","color2":"#ffd93d","position2":"50","useColor3":"true","color3":"#6bcf7f","position3":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_color_linear_gradient":{"summary":"Two-color linear gradient","value":{"tool":"gradient-text-css-generator","tool_version":"1.0.2","outputs":{"cssCode":".gradient-text {\n  font-size: 72px;\n  font-weight: 700;\n  background-image: linear-gradient(90deg, #464aff 0%, #ff6b9d 100%);\n  background-clip: text;\n  -webkit-background-clip: text;\n  color: transparent;\n  -webkit-text-fill-color: transparent;\n  display: inline-block;\n}","htmlCode":"<span style=\"font-size: 72px; font-weight: 700; background-image: linear-gradient(90deg, #464aff 0%, #ff6b9d 100%); background-clip: text; -webkit-background-clip: text; color: transparent; -webkit-text-fill-color: transparent; display: inline-block;\">Gradient Text</span>"},"credits_used":5,"credits_remaining":null}},"three_color_radial_gradient":{"summary":"Three-color radial gradient","value":{"tool":"gradient-text-css-generator","tool_version":"1.0.2","outputs":{"cssCode":".gradient-text {\n  font-size: 96px;\n  font-weight: 800;\n  background-image: radial-gradient(circle at center, #ff0000 0%, #00ff00 50%, #0000ff 100%);\n  background-clip: text;\n  -webkit-background-clip: text;\n  color: transparent;\n  -webkit-text-fill-color: transparent;\n  display: inline-block;\n}","htmlCode":"<span style=\"font-size: 96px; font-weight: 800; background-image: radial-gradient(circle at center, #ff0000 0%, #00ff00 50%, #0000ff 100%); background-clip: text; -webkit-background-clip: text; color: transparent; -webkit-text-fill-color: transparent; display: inline-block;\">Rainbow</span>"},"credits_used":5,"credits_remaining":null}},"three_color_linear_gradient_with_special_characters":{"summary":"Three-color linear gradient with special characters","value":{"tool":"gradient-text-css-generator","tool_version":"1.0.2","outputs":{"cssCode":".gradient-text {\n  font-size: 48px;\n  font-weight: 400;\n  background-image: linear-gradient(45deg, #ff6b9d 0%, #ffd93d 50%, #6bcf7f 100%);\n  background-clip: text;\n  -webkit-background-clip: text;\n  color: transparent;\n  -webkit-text-fill-color: transparent;\n  display: inline-block;\n}","htmlCode":"<span style=\"font-size: 48px; font-weight: 400; background-image: linear-gradient(45deg, #ff6b9d 0%, #ffd93d 50%, #6bcf7f 100%); background-clip: text; -webkit-background-clip: text; color: transparent; -webkit-text-fill-color: transparent; display: inline-block;\">Me &amp; &lt;You&gt;</span>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cssCode":{"type":"string","description":"CSS"},"htmlCode":{"type":"string","description":"HTML (self-contained)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hash-generator":{"post":{"operationId":"run_hash_generator","summary":"Hash Generator","tags":["Generators"],"description":"Generate a cryptographic hash (MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160) of any text, in hex or base64, and optionally verify it against an expected hash.\n\n[Try Hash Generator in your browser →](https://iotools.cloud/tool/hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message to hash"},"algorithm":{"enum":["md5","sha1","sha224","sha256","sha384","sha512","sha3-256","sha3-512","ripemd160"],"description":"Hash algorithm"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"sha_256_of_abc":{"summary":"SHA-256 of \"abc\"","value":{"inputText":"abc","algorithm":"sha256","outputFormat":"hex","expectedHash":""}},"sha_256_of_the_empty_string":{"summary":"SHA-256 of the empty string","value":{"inputText":"","algorithm":"sha256","outputFormat":"hex","expectedHash":""}},"md5_of_hello":{"summary":"MD5 of \"hello\"","value":{"inputText":"hello","algorithm":"md5","outputFormat":"hex","expectedHash":""}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"inputText":"abc","algorithm":"sha256","outputFormat":"hex","expectedHash":"BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD"}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"inputText":"abc","algorithm":"sha256","outputFormat":"hex","expectedHash":"0000000000000000000000000000000000000000000000000000000000000000"}},"sha3_256_as_base64":{"summary":"SHA3-256 as base64","value":{"inputText":"abc","algorithm":"sha3-256","outputFormat":"base64","expectedHash":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha_256_of_abc":{"summary":"SHA-256 of \"abc\"","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad","match":""},"credits_used":5,"credits_remaining":null}},"sha_256_of_the_empty_string":{"summary":"SHA-256 of the empty string","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","match":""},"credits_used":5,"credits_remaining":null}},"md5_of_hello":{"summary":"MD5 of \"hello\"","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"5d41402abc4b2a76b9719d911017c592","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad","match":"Match"},"credits_used":5,"credits_remaining":null}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad","match":"No match"},"credits_used":5,"credits_remaining":null}},"sha3_256_as_base64":{"summary":"SHA3-256 as base64","value":{"tool":"hash-generator","tool_version":"1.0.2","outputs":{"output":"Ophdp0/iJbIEXBcta9OQvYVfCG4+nVJbRr/iRRFDFTI=","match":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Computed hash"},"match":{"type":"string","description":"Matches expected hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hashtag-generator":{"post":{"operationId":"run_hashtag_generator","summary":"Hashtag Generator","tags":["Generators"],"description":"Generate relevant hashtags for Instagram, TikTok, X/Twitter, Facebook and LinkedIn from a topic or keywords. Mixes tags built directly from your text with curated evergreen tags from 15 topic categories, capped to each platform's practical limit.\n\n[Try Hashtag Generator in your browser →](https://iotools.cloud/tool/hashtag-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"topic":{"type":"string","description":"Topic or keywords"},"categories":{"type":"array","items":{"enum":["engagement","travel","food","fitness","fashion","business","tech","art","music","gaming","pets","nature","motivation","family","wedding"]},"description":"Curated categories"},"platform":{"enum":["instagram","tiktok","twitter","facebook","linkedin","general"],"description":"Platform"},"count":{"type":"number","description":"Number of hashtags","minimum":5,"maximum":30},"caseStyle":{"enum":["lowercase","titlecase"],"description":"Hashtag case"}},"required":[]},"examples":{"coffee_shop_post_instagram":{"summary":"Coffee shop post, Instagram","value":{"topic":"morning coffee, latte art, cozy cafe","categories":"[\"engagement\",\"food\"]","platform":"instagram","count":"20","caseStyle":"lowercase"}},"trail_run_recap_x_twitter_titlecase":{"summary":"Trail run recap, X/Twitter, TitleCase","value":{"topic":"trail running","categories":"[\"fitness\",\"nature\"]","platform":"twitter","count":"20","caseStyle":"titlecase"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"coffee_shop_post_instagram":{"summary":"Coffee shop post, Instagram","value":{"tool":"hashtag-generator","tool_version":"1.0.2","outputs":{"hashtags":"#morningcoffee #morning #coffee #latteart #latte #art #cozycafe #cozy #cafe #instagood #photooftheday #love #picoftheday #instadaily #followme #like4like #explorepage #bestoftheday #instamood #happy","breakdown":[{"hashtag":"#morningcoffee","source":"Your topic"},{"hashtag":"#morning","source":"Your topic"},{"hashtag":"#coffee","source":"Your topic"},{"hashtag":"#latteart","source":"Your topic"},{"hashtag":"#latte","source":"Your topic"},{"hashtag":"#art","source":"Your topic"},{"hashtag":"#cozycafe","source":"Your topic"},{"hashtag":"#cozy","source":"Your topic"},{"hashtag":"#cafe","source":"Your topic"},{"hashtag":"#instagood","source":"General Engagement"},{"hashtag":"#photooftheday","source":"General Engagement"},{"hashtag":"#love","source":"General Engagement"},{"hashtag":"#picoftheday","source":"General Engagement"},{"hashtag":"#instadaily","source":"General Engagement"},{"hashtag":"#followme","source":"General Engagement"},{"hashtag":"#like4like","source":"General Engagement"},{"hashtag":"#explorepage","source":"General Engagement"},{"hashtag":"#bestoftheday","source":"General Engagement"},{"hashtag":"#instamood","source":"General Engagement"},{"hashtag":"#happy","source":"General Engagement"}]},"credits_used":5,"credits_remaining":null}},"trail_run_recap_x_twitter_titlecase":{"summary":"Trail run recap, X/Twitter, TitleCase","value":{"tool":"hashtag-generator","tool_version":"1.0.2","outputs":{"hashtags":"#TrailRunning #Trail #Running #fitness #fitfam","breakdown":[{"hashtag":"#TrailRunning","source":"Your topic"},{"hashtag":"#Trail","source":"Your topic"},{"hashtag":"#Running","source":"Your topic"},{"hashtag":"#fitness","source":"Fitness & Health"},{"hashtag":"#fitfam","source":"Fitness & Health"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hashtags":{"type":"string","description":"Hashtags"},"breakdown":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"hashtag":{"type":"string","description":"Hashtag"},"source":{"type":"string","description":"Source"}}},"x-iotools-columns":["hashtag","source"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hmac-generator":{"post":{"operationId":"run_hmac_generator","summary":"HMAC Generator","tags":["Generators"],"description":"Generate an HMAC (hash-based message authentication code) from a message and secret key using MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512 or RIPEMD-160, in hex or base64, and optionally verify it against an expected HMAC.\n\n[Try HMAC Generator in your browser →](https://iotools.cloud/tool/hmac-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message"},"secret":{"type":"string","description":"Secret key"},"algorithm":{"enum":["md5","sha1","sha224","sha256","sha384","sha512","sha3-256","sha3-512","ripemd160"],"description":"Hash algorithm"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHmac":{"type":"string","description":"Expected HMAC (optional)"}},"required":[]},"examples":{"hmac_sha256_rfc_test_vector":{"summary":"HMAC-SHA256 (RFC test vector)","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"sha256","outputFormat":"hex","expectedHmac":""}},"hmac_sha1":{"summary":"HMAC-SHA1","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"sha1","outputFormat":"hex","expectedHmac":""}},"hmac_sha512":{"summary":"HMAC-SHA512","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"sha512","outputFormat":"hex","expectedHmac":""}},"hmac_md5_as_base64":{"summary":"HMAC-MD5 as base64","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"md5","outputFormat":"base64","expectedHmac":""}},"verify_a_matching_hmac_case_insensitive_hex":{"summary":"Verify a matching HMAC (case-insensitive hex)","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"sha256","outputFormat":"hex","expectedHmac":"F7BC83F430538424B13298E6AA6FB143EF4D59A14946175997479DBC2D1A3CD8"}},"detect_a_mismatched_hmac":{"summary":"Detect a mismatched HMAC","value":{"inputText":"The quick brown fox jumps over the lazy dog","secret":"key","algorithm":"sha256","outputFormat":"hex","expectedHmac":"0000000000000000000000000000000000000000000000000000000000000000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hmac_sha256_rfc_test_vector":{"summary":"HMAC-SHA256 (RFC test vector)","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8","match":""},"credits_used":5,"credits_remaining":null}},"hmac_sha1":{"summary":"HMAC-SHA1","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9","match":""},"credits_used":5,"credits_remaining":null}},"hmac_sha512":{"summary":"HMAC-SHA512","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"b42af09057bac1e2d41708e48a902e09b5ff7f12ab428a4fe86653c73dd248fb82f948a549f7b791a5b41915ee4d1ec3935357e4e2317250d0372afa2ebeeb3a","match":""},"credits_used":5,"credits_remaining":null}},"hmac_md5_as_base64":{"summary":"HMAC-MD5 as base64","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"gAcHE0Y+d0m5DC3CSRHidQ==","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hmac_case_insensitive_hex":{"summary":"Verify a matching HMAC (case-insensitive hex)","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8","match":"Match"},"credits_used":5,"credits_remaining":null}},"detect_a_mismatched_hmac":{"summary":"Detect a mismatched HMAC","value":{"tool":"hmac-generator","tool_version":"1.0.2","outputs":{"output":"f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8","match":"No match"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Computed HMAC"},"match":{"type":"string","description":"Matches expected HMAC?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hsts-preload-header-generator":{"post":{"operationId":"run_hsts_preload_header_generator","summary":"HSTS Preload Header Generator","tags":["Generators"],"description":"Generate a Strict-Transport-Security (HSTS) response header from max-age, includeSubDomains and preload, and check whether it meets hstspreload.org's preload-list submission requirements.\n\n[Try HSTS Preload Header Generator in your browser →](https://iotools.cloud/tool/hsts-preload-header-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"maxAge":{"type":"number","description":"max-age (seconds)","minimum":0},"includeSubDomains":{"type":"boolean","description":"includeSubDomains — apply the policy to every subdomain"},"preload":{"type":"boolean","description":"preload — signal eligibility for browser preload lists"}},"required":[]},"examples":{"preload_eligible_1_year_all_directives":{"summary":"Preload-eligible (1 year, all directives)","value":{"maxAge":"31536000","includeSubDomains":"true","preload":"true"}},"too_short_max_age_no_preload":{"summary":"Too-short max-age, no preload","value":{"maxAge":"86400","includeSubDomains":"true","preload":""}},"max_age_only_2_years_no_subdomains_no_preload":{"summary":"max-age only (2 years, no subdomains, no preload)","value":{"maxAge":"63072000","includeSubDomains":"","preload":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"preload_eligible_1_year_all_directives":{"summary":"Preload-eligible (1 year, all directives)","value":{"tool":"hsts-preload-header-generator","tool_version":"1.0.2","outputs":{"headerOutput":"Strict-Transport-Security: max-age=31536000; includeSubDomains; preload","eligibility":"✓ Eligible for hstspreload.org submission.\n\n✓ max-age is at least 1 year (31536000 seconds).\n✓ includeSubDomains directive is present.\n✓ preload directive is present.\n\nAlso required (cannot be checked here): a valid HTTPS certificate, the header served over HTTPS, and all HTTP traffic redirected to HTTPS on the same host."},"credits_used":5,"credits_remaining":null}},"too_short_max_age_no_preload":{"summary":"Too-short max-age, no preload","value":{"tool":"hsts-preload-header-generator","tool_version":"1.0.2","outputs":{"headerOutput":"Strict-Transport-Security: max-age=86400; includeSubDomains","eligibility":"✗ Not yet eligible for hstspreload.org submission.\n\n✗ max-age must be at least 31536000 seconds (1 year); currently 86400.\n✓ includeSubDomains directive is present.\n✗ preload directive is missing — required for preload submission.\n\nAlso required (cannot be checked here): a valid HTTPS certificate, the header served over HTTPS, and all HTTP traffic redirected to HTTPS on the same host."},"credits_used":5,"credits_remaining":null}},"max_age_only_2_years_no_subdomains_no_preload":{"summary":"max-age only (2 years, no subdomains, no preload)","value":{"tool":"hsts-preload-header-generator","tool_version":"1.0.2","outputs":{"headerOutput":"Strict-Transport-Security: max-age=63072000","eligibility":"✗ Not yet eligible for hstspreload.org submission.\n\n✓ max-age is at least 1 year (31536000 seconds).\n✗ includeSubDomains directive is missing — required for preload submission.\n✗ preload directive is missing — required for preload submission.\n\nAlso required (cannot be checked here): a valid HTTPS certificate, the header served over HTTPS, and all HTTP traffic redirected to HTTPS on the same host."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"headerOutput":{"type":"string","description":"Strict-Transport-Security Header"},"eligibility":{"type":"string","description":"Preload Eligibility"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/htaccess-rule-generator":{"post":{"operationId":"run_htaccess_rule_generator","summary":".htaccess Rule Generator","tags":["Generators"],"description":"Generate a ready-to-use Apache .htaccess snippet by toggling common rules: force HTTPS, www/non-www canonicalization, disable directory listing, block sensitive files, prevent image hotlinking, a custom 404 page, gzip compression and browser caching.\n\n[Try .htaccess Rule Generator in your browser →](https://iotools.cloud/tool/htaccess-rule-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"forceHttps":{"type":"boolean","description":"Force HTTPS (redirect HTTP → HTTPS)"},"wwwMode":{"enum":["none","non-www","www"],"description":"www canonicalization"},"disableDirListing":{"type":"boolean","description":"Disable directory browsing (Options -Indexes)"},"denySensitiveFiles":{"type":"boolean","description":"Deny access to sensitive files (.env, .git, .htaccess…)"},"blockHotlinking":{"type":"boolean","description":"Prevent image hotlinking"},"allowedDomain":{"type":"string","description":"Allowed domain"},"customError":{"type":"boolean","description":"Custom 404 error page"},"errorPage":{"type":"string","description":"404 page path"},"gzip":{"type":"boolean","description":"Enable GZIP compression"},"browserCaching":{"type":"boolean","description":"Enable browser caching (Expires headers)"},"cacheDays":{"type":"number","description":"Cache lifetime (days)","minimum":1,"maximum":365}},"required":[]},"examples":{"secure_defaults_https_no_directory_listing_deny_dotfiles":{"summary":"Secure defaults (HTTPS + no directory listing + deny dotfiles)","value":{"forceHttps":"true","wwwMode":"none","disableDirListing":"true","denySensitiveFiles":"true"}},"www_non_www_redirect_with_a_custom_404_page":{"summary":"www → non-www redirect with a custom 404 page","value":{"wwwMode":"non-www","customError":"true","errorPage":"/errors/404.html"}},"performance_hotlink_protection_gzip_7_day_cache_allow_mysite_com":{"summary":"Performance + hotlink protection (gzip, 7-day cache, allow mysite.com)","value":{"blockHotlinking":"true","allowedDomain":"mysite.com","gzip":"true","browserCaching":"true","cacheDays":"7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"secure_defaults_https_no_directory_listing_deny_dotfiles":{"summary":"Secure defaults (HTTPS + no directory listing + deny dotfiles)","value":{"tool":"htaccess-rule-generator","tool_version":"1.0.2","outputs":{"output":"# Force HTTPS (redirect all HTTP traffic to HTTPS)\n<IfModule mod_rewrite.c>\n  RewriteEngine On\n  RewriteCond %{HTTPS} off\n  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n</IfModule>\n\n# Disable directory browsing\nOptions -Indexes\n\n# Deny access to sensitive files\n<FilesMatch \"^\\.(env|git|gitignore|htaccess|htpasswd)$\">\n  Require all denied\n</FilesMatch>"},"credits_used":5,"credits_remaining":null}},"www_non_www_redirect_with_a_custom_404_page":{"summary":"www → non-www redirect with a custom 404 page","value":{"tool":"htaccess-rule-generator","tool_version":"1.0.2","outputs":{"output":"# Redirect www to non-www\n<IfModule mod_rewrite.c>\n  RewriteEngine On\n  RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\n  RewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n</IfModule>\n\n# Custom 404 error page\nErrorDocument 404 /errors/404.html"},"credits_used":5,"credits_remaining":null}},"performance_hotlink_protection_gzip_7_day_cache_allow_mysite_com":{"summary":"Performance + hotlink protection (gzip, 7-day cache, allow mysite.com)","value":{"tool":"htaccess-rule-generator","tool_version":"1.0.2","outputs":{"output":"# Prevent image hotlinking\n<IfModule mod_rewrite.c>\n  RewriteEngine On\n  RewriteCond %{HTTP_REFERER} !^$\n  RewriteCond %{HTTP_REFERER} !^https?://(www\\.)?mysite\\.com [NC]\n  RewriteRule \\.(jpg|jpeg|png|gif|webp|svg)$ - [F,NC,L]\n</IfModule>\n\n# Enable GZIP compression\n<IfModule mod_deflate.c>\n  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css\n  AddOutputFilterByType DEFLATE application/javascript application/json\n  AddOutputFilterByType DEFLATE application/xml image/svg+xml\n</IfModule>\n\n# Leverage browser caching\n<IfModule mod_expires.c>\n  ExpiresActive On\n  ExpiresByType text/css \"access plus 7 days\"\n  ExpiresByType application/javascript \"access plus 7 days\"\n  ExpiresByType image/jpeg \"access plus 7 days\"\n  ExpiresByType image/png \"access plus 7 days\"\n  ExpiresByType image/gif \"access plus 7 days\"\n  ExpiresByType image/svg+xml \"access plus 7 days\"\n  ExpiresByType image/x-icon \"access plus 7 days\"\n  ExpiresByType image/webp \"access plus 7 days\"\n  ExpiresByType font/woff2 \"access plus 7 days\"\n</IfModule>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .htaccess"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-email-template-generator":{"post":{"operationId":"run_html_email_template_generator","summary":"HTML Email Template Generator","tags":["Generators"],"description":"Generate a responsive, email-client-safe HTML template (table-based layout with inline styles) from a header, body copy, a call-to-action button, a footer and brand colours. Copy the ready-to-send HTML or preview it live.\n\n[Try HTML Email Template Generator in your browser →](https://iotools.cloud/tool/html-email-template-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":"Subject Line"},"preheader":{"type":"string","description":"Preheader"},"headerText":{"type":"string","description":"Header / Logo Text"},"bodyContent":{"type":"string","description":"Body Content"},"buttonText":{"type":"string","description":"Button Text"},"buttonUrl":{"type":"string","description":"Button URL"},"footerText":{"type":"string","description":"Footer Text"},"brandColor":{"type":"string","description":"Brand Color"},"bgColor":{"type":"string","description":"Background Color"}},"required":[]},"examples":{"welcome_email":{"summary":"Welcome email","value":{"subject":"Welcome to Acme","preheader":"Everything you need to get started.","headerText":"Acme","bodyContent":"Hi there,\n\nThanks for signing up. Your account is ready to go.\n\nClick the button below to finish setting up your profile.","buttonText":"Get Started","buttonUrl":"https://example.com/start","footerText":"You received this email because you signed up at example.com.","brandColor":"#464aff","bgColor":"#f4f4f7"}},"special_characters_are_escaped":{"summary":"Special characters are escaped","value":{"subject":"Sale: 50% off <today>","preheader":"Don't miss it & save big","headerText":"Bob's <Shop>","bodyContent":"Use code \"SAVE50\" at checkout.","buttonText":"Shop & Save","buttonUrl":"https://shop.example.com/?a=1&b=2","footerText":"Questions? Reply <here>.","brandColor":"#ff6b9d","bgColor":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"welcome_email":{"summary":"Welcome email","value":{"tool":"html-email-template-generator","tool_version":"1.0.2","outputs":{"emailHtml":"<!DOCTYPE html>\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"x-apple-disable-message-reformatting\">\n  <title>Welcome to Acme</title>\n</head>\n<body style=\"margin:0; padding:0; background-color:#f4f4f7; font-family:Arial, Helvetica, sans-serif;\">\n  <div style=\"display:none; max-height:0; overflow:hidden; mso-hide:all; font-size:1px; line-height:1px; color:#f4f4f7;\">Everything you need to get started.</div>\n  <table role=\"presentation\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%; background-color:#f4f4f7;\">\n    <tr>\n      <td align=\"center\" style=\"padding:24px 12px;\">\n        <table role=\"presentation\" width=\"600\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:600px; max-width:600px; background-color:#ffffff; border-radius:8px;\">\n      <tr>\n        <td align=\"center\" style=\"padding:28px 32px 12px 32px; font-family:Arial, Helvetica, sans-serif; font-size:22px; font-weight:bold; color:#464aff;\">Acme</td>\n      </tr>\n      <tr>\n        <td style=\"padding:12px 32px 12px 32px;\">\n            <p style=\"margin:0 0 16px 0; font-family:Arial, Helvetica, sans-serif; font-size:16px; line-height:1.6; color:#333333;\">Hi there,</p>\n            <p style=\"margin:0 0 16px 0; font-family:Arial, Helvetica, sans-serif; font-size:16px; line-height:1.6; color:#333333;\">Thanks for signing up. Your account is ready to go.</p>\n            <p style=\"margin:0 0 16px 0; font-family:Arial, Helvetica, sans-serif; font-size:16px; line-height:1.6; color:#333333;\">Click the button below to finish setting up your profile.</p>\n        </td>\n      </tr>\n      <tr>\n        <td align=\"center\" style=\"padding:16px 32px 28px 32px;\">\n          <table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:separate;\">\n            <tr>\n              <td align=\"center\" bgcolor=\"#464aff\" style=\"border-radius:6px; background-color:#464aff;\">\n                <a href=\"https://example.com/start\" target=\"_blank\" style=\"display:inline-block; padding:14px 32px; font-family:Arial, Helvetica, sans-serif; font-size:16px; font-weight:bold; color:#ffffff; text-decoration:none; border-radius:6px;\">Get Started</a>\n              </td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n      <tr>\n        <td align=\"center\" style=\"padding:20px 32px; border-top:1px solid #e5e7eb; font-family:Arial, Helvetica, sans-serif; font-size:13px; line-height:1.5; color:#6b7280;\">You received this email because you signed up at example.com.</td>\n      </tr>\n        </table>\n      </td>\n    </tr>\n  </table>\n</body>\n</html>"},"credits_used":5,"credits_remaining":null}},"special_characters_are_escaped":{"summary":"Special characters are escaped","value":{"tool":"html-email-template-generator","tool_version":"1.0.2","outputs":{"emailHtml":"<!DOCTYPE html>\n<html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"x-apple-disable-message-reformatting\">\n  <title>Sale: 50% off &lt;today&gt;</title>\n</head>\n<body style=\"margin:0; padding:0; background-color:#ffffff; font-family:Arial, Helvetica, sans-serif;\">\n  <div style=\"display:none; max-height:0; overflow:hidden; mso-hide:all; font-size:1px; line-height:1px; color:#ffffff;\">Don&#39;t miss it &amp; save big</div>\n  <table role=\"presentation\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:100%; background-color:#ffffff;\">\n    <tr>\n      <td align=\"center\" style=\"padding:24px 12px;\">\n        <table role=\"presentation\" width=\"600\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"width:600px; max-width:600px; background-color:#ffffff; border-radius:8px;\">\n      <tr>\n        <td align=\"center\" style=\"padding:28px 32px 12px 32px; font-family:Arial, Helvetica, sans-serif; font-size:22px; font-weight:bold; color:#ff6b9d;\">Bob&#39;s &lt;Shop&gt;</td>\n      </tr>\n      <tr>\n        <td style=\"padding:12px 32px 12px 32px;\">\n            <p style=\"margin:0 0 16px 0; font-family:Arial, Helvetica, sans-serif; font-size:16px; line-height:1.6; color:#333333;\">Use code &quot;SAVE50&quot; at checkout.</p>\n        </td>\n      </tr>\n      <tr>\n        <td align=\"center\" style=\"padding:16px 32px 28px 32px;\">\n          <table role=\"presentation\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse:separate;\">\n            <tr>\n              <td align=\"center\" bgcolor=\"#ff6b9d\" style=\"border-radius:6px; background-color:#ff6b9d;\">\n                <a href=\"https://shop.example.com/?a=1&amp;b=2\" target=\"_blank\" style=\"display:inline-block; padding:14px 32px; font-family:Arial, Helvetica, sans-serif; font-size:16px; font-weight:bold; color:#ffffff; text-decoration:none; border-radius:6px;\">Shop &amp; Save</a>\n              </td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n      <tr>\n        <td align=\"center\" style=\"padding:20px 32px; border-top:1px solid #e5e7eb; font-family:Arial, Helvetica, sans-serif; font-size:13px; line-height:1.5; color:#6b7280;\">Questions? Reply &lt;here&gt;.</td>\n      </tr>\n        </table>\n      </td>\n    </tr>\n  </table>\n</body>\n</html>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"emailHtml":{"type":"string","description":"Email HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator":{"post":{"operationId":"run_html_generator","summary":"HTML Generator","tags":["Generators"],"description":"Generate a single HTML element with AI — describe what you need (a rounded submit button, a required email input) and get ready-to-use HTML, CSS and a minified combined snippet.\n\n[Try HTML Generator in your browser →](https://iotools.cloud/tool/html-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":12,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customTag":{"type":"string","description":"Describe the element"},"customClasses":{"type":"string","description":"CSS Classes"},"customStylesRequirements":{"type":"string","description":"CSS Styles Requirements"}},"required":["customTag"]},"examples":{"default":{"summary":"Default","value":{"customTag":"a rounded submit button","customStylesRequirements":"font size 16px, blue background, white text, 8px rounded corners"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"},"css":{"type":"string","description":"CSS"},"htmlCss":{"type":"string","description":"Minified HTML + CSS"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/button":{"post":{"operationId":"run_html_generator_button","summary":"HTML Button Generator","tags":["Generators"],"description":"Generate a &lt;button> element — set the button text, type, and click behavior, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Button Generator in your browser →](https://iotools.cloud/tool/html-generator/button/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Button Text"},"customDisabled":{"type":"boolean","description":"Disabled"},"customAutofocus":{"type":"boolean","description":"Autofocus"},"customType":{"enum":["button","submit","reset"],"description":"Button Type"},"customValue":{"type":"string","description":"Value"},"customButtonOnClick":{"type":"string","description":"On Click Event"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"my-button","customLabel":"Submit","customDisabled":"","customAutofocus":"","customType":"button","customValue":"","customButtonOnClick":"","customClasses":""}},"submit_button_with_click_handler":{"summary":"Submit button with click handler","value":{"customName":"checkout-button","customLabel":"Place Order","customDisabled":"","customAutofocus":"true","customType":"submit","customValue":"checkout","customButtonOnClick":"handleSubmit()","customClasses":"btn btn-primary"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/button","tool_version":"1.0.2","outputs":{"code":"<button type=\"button\" name=\"my-button\">Submit</button>"},"credits_used":5,"credits_remaining":null}},"submit_button_with_click_handler":{"summary":"Submit button with click handler","value":{"tool":"html-generator/button","tool_version":"1.0.2","outputs":{"code":"<button type=\"submit\" name=\"checkout-button\" autofocus value=\"checkout\" onclick=\"handleSubmit()\" class=\"btn btn-primary\">Place Order</button>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/checkbox":{"post":{"operationId":"run_html_generator_checkbox","summary":"HTML Checkbox Generator","tags":["Generators"],"description":"Generate a labeled checkbox — set the name, label, value, and default checked state, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Checkbox Generator in your browser →](https://iotools.cloud/tool/html-generator/checkbox/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customChecked":{"type":"boolean","description":"Checked by default"},"customDisabled":{"type":"boolean","description":"Disabled"},"customValue":{"type":"string","description":"Value"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"my-checkbox","customLabel":"Check me","customChecked":"","customDisabled":"","customValue":"1","customClasses":""}},"checked_by_default":{"summary":"Checked by default","value":{"customName":"accept-terms","customLabel":"I agree to the Terms & Conditions","customChecked":"true","customDisabled":"","customValue":"accepted","customClasses":"checkbox-lg"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/checkbox","tool_version":"1.0.2","outputs":{"code":"<label><input type=\"checkbox\" name=\"my-checkbox\" value=\"1\"> Check me</label>"},"credits_used":5,"credits_remaining":null}},"checked_by_default":{"summary":"Checked by default","value":{"tool":"html-generator/checkbox","tool_version":"1.0.2","outputs":{"code":"<label><input type=\"checkbox\" name=\"accept-terms\" value=\"accepted\" checked class=\"checkbox-lg\"> I agree to the Terms &amp; Conditions</label>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/iframe":{"post":{"operationId":"run_html_generator_iframe","summary":"HTML Iframe Generator","tags":["Generators"],"description":"Generate an &lt;iframe> — set the source URL, title, size, and loading/referrer/fullscreen options, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Iframe Generator in your browser →](https://iotools.cloud/tool/html-generator/iframe/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customSource":{"type":"string","description":"Source URL"},"customTitle":{"type":"string","description":"Title"},"customAllowFullscreen":{"type":"boolean","description":"Allow Fullscreen"},"customLoading":{"enum":["eager","lazy"],"description":"Loading Type"},"customReferrerPolicy":{"enum":["no-referrer","no-referrer-when-downgrade","same-origin","strict-origin-when-cross-origin","unsafe-url"],"description":"Referrer Policy"},"customHeight":{"type":"number","description":"Height","minimum":1},"customWidth":{"type":"number","description":"Width","minimum":1},"customClasses":{"type":"string","description":"CSS Classes"}},"required":["customSource"]},"examples":{"default":{"summary":"Default","value":{"customSource":"https://example.com","customTitle":"","customAllowFullscreen":"","customLoading":"eager","customReferrerPolicy":"no-referrer","customHeight":"","customWidth":"","customClasses":""}},"fullscreen_video_embed":{"summary":"Fullscreen video embed","value":{"customSource":"https://www.youtube.com/embed/dQw4w9WgXcQ","customTitle":"Product demo video","customAllowFullscreen":"true","customLoading":"lazy","customReferrerPolicy":"strict-origin-when-cross-origin","customHeight":"480","customWidth":"854","customClasses":"video-embed"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/iframe","tool_version":"1.0.2","outputs":{"code":"<iframe src=\"https://example.com\" title=\"Embedded content\" loading=\"eager\" referrerpolicy=\"no-referrer\"></iframe>"},"credits_used":5,"credits_remaining":null}},"fullscreen_video_embed":{"summary":"Fullscreen video embed","value":{"tool":"html-generator/iframe","tool_version":"1.0.2","outputs":{"code":"<iframe src=\"https://www.youtube.com/embed/dQw4w9WgXcQ\" title=\"Product demo video\" allowfullscreen loading=\"lazy\" referrerpolicy=\"strict-origin-when-cross-origin\" height=\"480\" width=\"854\" class=\"video-embed\"></iframe>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/image":{"post":{"operationId":"run_html_generator_image","summary":"HTML Image Generator","tags":["Generators"],"description":"Generate an &lt;img> tag — set the source, alt text, size, alignment, and loading behavior, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Image Generator in your browser →](https://iotools.cloud/tool/html-generator/image/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customSrc":{"type":"string","description":"Image URL"},"customAltText":{"type":"string","description":"Alt Text"},"customResponsive":{"type":"boolean","description":"Responsive"},"customWidth":{"type":"number","description":"Width","minimum":1},"customHeight":{"type":"number","description":"Height","minimum":1},"customAlign":{"enum":["","left","center","right"],"description":"Alignment"},"customLoading":{"enum":["lazy","eager","auto"],"description":"Loading"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customSrc":"https://example.com/image.jpg","customAltText":"Image description","customResponsive":"","customWidth":"","customHeight":"","customAlign":"","customLoading":"lazy","customClasses":""}},"responsive_centered":{"summary":"Responsive, centered","value":{"customSrc":"https://example.com/hero.jpg","customAltText":"Hero banner","customResponsive":"true","customWidth":"1200","customHeight":"600","customAlign":"center","customLoading":"eager","customClasses":"hero-img"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/image","tool_version":"1.0.2","outputs":{"code":"<img src=\"https://example.com/image.jpg\" alt=\"Image description\" loading=\"lazy\">"},"credits_used":5,"credits_remaining":null}},"responsive_centered":{"summary":"Responsive, centered","value":{"tool":"html-generator/image","tool_version":"1.0.2","outputs":{"code":"<img src=\"https://example.com/hero.jpg\" alt=\"Hero banner\" width=\"1200\" height=\"600\" loading=\"eager\" class=\"hero-img\" style=\"max-width:100%;height:auto;display:block;margin:0 auto\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-color":{"post":{"operationId":"run_html_generator_input_color","summary":"HTML Input Color Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"color\"> field — set the name, label, and default color, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Color Generator in your browser →](https://iotools.cloud/tool/html-generator/input-color/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customDefaultColor":{"type":"string","description":"Default Color"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"my-color-input","customLabel":"","customDefaultColor":"#ff0000","customClasses":""}},"with_label_and_classes":{"summary":"With label and classes","value":{"customName":"theme-color","customLabel":"Theme Color","customDefaultColor":"#464aff","customClasses":"color-picker-sm"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-color","tool_version":"1.0.2","outputs":{"code":"<input type=\"color\" name=\"my-color-input\" id=\"my-color-input\" value=\"#ff0000\">"},"credits_used":5,"credits_remaining":null}},"with_label_and_classes":{"summary":"With label and classes","value":{"tool":"html-generator/input-color","tool_version":"1.0.2","outputs":{"code":"<label for=\"theme-color\">Theme Color</label>\n<input type=\"color\" name=\"theme-color\" id=\"theme-color\" value=\"#464aff\" class=\"color-picker-sm\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-date-time":{"post":{"operationId":"run_html_generator_input_date_time","summary":"HTML Input Date & Time Generator","tags":["Generators"],"description":"Generate a date, time, or datetime-local &lt;input> field — set the name, label, type, and range, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Date & Time Generator in your browser →](https://iotools.cloud/tool/html-generator/input-date-time/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customType":{"enum":["datetime-local","date","time"],"description":"Input Type"},"customRequired":{"type":"boolean","description":"Required field"},"customDisabled":{"type":"boolean","description":"Disabled"},"customDefaultValue":{"type":"string","description":"Default Value"},"customMin":{"type":"string","description":"Min Value"},"customMax":{"type":"string","description":"Max Value"},"customStep":{"type":"number","description":"Step Interval","minimum":1},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default_date_and_time":{"summary":"Default (date and time)","value":{"customName":"my-datetime","customLabel":"Select Date and Time","customType":"datetime-local","customRequired":"","customDisabled":"","customDefaultValue":"","customMin":"","customMax":"","customStep":"","customClasses":""}},"date_only_required_with_range":{"summary":"Date only, required, with range","value":{"customName":"event-date","customLabel":"Event Date","customType":"date","customRequired":"true","customDisabled":"","customDefaultValue":"2026-01-01","customMin":"2026-01-01","customMax":"2026-12-31","customStep":"7","customClasses":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_date_and_time":{"summary":"Default (date and time)","value":{"tool":"html-generator/input-date-time","tool_version":"1.0.2","outputs":{"code":"<label for=\"my-datetime\">Select Date and Time</label>\n<input type=\"datetime-local\" name=\"my-datetime\" id=\"my-datetime\">"},"credits_used":5,"credits_remaining":null}},"date_only_required_with_range":{"summary":"Date only, required, with range","value":{"tool":"html-generator/input-date-time","tool_version":"1.0.2","outputs":{"code":"<label for=\"event-date\">Event Date</label>\n<input type=\"date\" name=\"event-date\" id=\"event-date\" required value=\"2026-01-01\" min=\"2026-01-01\" max=\"2026-12-31\" step=\"7\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-email":{"post":{"operationId":"run_html_generator_input_email","summary":"HTML Input Email Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"email\"> field — set the name, label, placeholder, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Email Generator in your browser →](https://iotools.cloud/tool/html-generator/input-email/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"user-email","customLabel":"Email","customPlaceholder":"name@example.com","customRequired":"true","customAutocomplete":"true","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"254","customClasses":""}},"read_only_no_autocomplete":{"summary":"Read-only, no autocomplete","value":{"customName":"account-email","customLabel":"Account Email","customPlaceholder":"you@company.com","customRequired":"","customAutocomplete":"","customDisabled":"","customReadonly":"true","customMinLength":"5","customMaxLength":"254","customClasses":"form-input"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-email","tool_version":"1.0.2","outputs":{"code":"<label for=\"user-email\">Email</label>\n<input type=\"email\" name=\"user-email\" id=\"user-email\" placeholder=\"name@example.com\" required maxlength=\"254\">"},"credits_used":5,"credits_remaining":null}},"read_only_no_autocomplete":{"summary":"Read-only, no autocomplete","value":{"tool":"html-generator/input-email","tool_version":"1.0.2","outputs":{"code":"<label for=\"account-email\">Account Email</label>\n<input type=\"email\" name=\"account-email\" id=\"account-email\" placeholder=\"you@company.com\" autocomplete=\"off\" readonly minlength=\"5\" maxlength=\"254\" class=\"form-input\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-file":{"post":{"operationId":"run_html_generator_input_file","summary":"HTML Input File Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"file\"> field — set the name, label, accepted file types, and whether multiple files are allowed, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input File Generator in your browser →](https://iotools.cloud/tool/html-generator/input-file/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customRequired":{"type":"boolean","description":"Required field"},"customMultiple":{"type":"boolean","description":"Allow multiple files"},"customAccept":{"type":"string","description":"Accepted Types"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"file-upload","customLabel":"Upload File","customRequired":"","customMultiple":"","customAccept":"","customClasses":""}},"required_multiple_restricted_types":{"summary":"Required, multiple, restricted types","value":{"customName":"attachments","customLabel":"Attachments","customRequired":"true","customMultiple":"true","customAccept":".jpg,.png,.pdf","customClasses":"file-input"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-file","tool_version":"1.0.2","outputs":{"code":"<label for=\"file-upload\">Upload File</label>\n<input type=\"file\" name=\"file-upload\" id=\"file-upload\">"},"credits_used":5,"credits_remaining":null}},"required_multiple_restricted_types":{"summary":"Required, multiple, restricted types","value":{"tool":"html-generator/input-file","tool_version":"1.0.2","outputs":{"code":"<label for=\"attachments\">Attachments</label>\n<input type=\"file\" name=\"attachments\" id=\"attachments\" required multiple accept=\".jpg,.png,.pdf\" class=\"file-input\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-image":{"post":{"operationId":"run_html_generator_input_image","summary":"HTML Input Image Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"image\"> graphical submit button — set the image source, alt text, and form-submission options, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Image Generator in your browser →](https://iotools.cloud/tool/html-generator/input-image/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customSrc":{"type":"string","description":"Image Source"},"customAlt":{"type":"string","description":"Alt Text"},"customDisabled":{"type":"boolean","description":"Disabled"},"customWidth":{"type":"string","description":"Width"},"customHeight":{"type":"string","description":"Height"},"customValue":{"type":"string","description":"Value"},"customFormaction":{"type":"string","description":"Form Action"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"image-button","customSrc":"https://example.com/button.png","customAlt":"Submit","customDisabled":"","customWidth":"","customHeight":"","customValue":"Submit","customFormaction":"","customClasses":""}},"sized_with_form_action":{"summary":"Sized, with form action","value":{"customName":"checkout-button","customSrc":"https://example.com/checkout.png","customAlt":"Proceed to checkout","customDisabled":"","customWidth":"150px","customHeight":"50px","customValue":"checkout","customFormaction":"https://example.com/checkout","customClasses":"btn-checkout"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-image","tool_version":"1.0.2","outputs":{"code":"<input type=\"image\" name=\"image-button\" src=\"https://example.com/button.png\" alt=\"Submit\" value=\"Submit\">"},"credits_used":5,"credits_remaining":null}},"sized_with_form_action":{"summary":"Sized, with form action","value":{"tool":"html-generator/input-image","tool_version":"1.0.2","outputs":{"code":"<input type=\"image\" name=\"checkout-button\" src=\"https://example.com/checkout.png\" alt=\"Proceed to checkout\" width=\"150px\" height=\"50px\" value=\"checkout\" formaction=\"https://example.com/checkout\" class=\"btn-checkout\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-number":{"post":{"operationId":"run_html_generator_input_number","summary":"HTML Input Number Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"number\"> field — set the name, label, placeholder, and min/max/step, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Number Generator in your browser →](https://iotools.cloud/tool/html-generator/input-number/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMin":{"type":"number","description":"Min Value"},"customMax":{"type":"number","description":"Max Value"},"customStep":{"type":"number","description":"Step"},"customDefaultValue":{"type":"number","description":"Default Value"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"quantity","customLabel":"Quantity","customPlaceholder":"Enter a number","customRequired":"","customDisabled":"","customReadonly":"","customMin":"0","customMax":"100","customStep":"1","customDefaultValue":"","customClasses":""}},"required_age_field":{"summary":"Required age field","value":{"customName":"age","customLabel":"Age","customPlaceholder":"Your age","customRequired":"true","customDisabled":"","customReadonly":"","customMin":"18","customMax":"120","customStep":"1","customDefaultValue":"30","customClasses":"num-input"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-number","tool_version":"1.0.2","outputs":{"code":"<label for=\"quantity\">Quantity</label>\n<input type=\"number\" name=\"quantity\" id=\"quantity\" placeholder=\"Enter a number\" min=\"0\" max=\"100\" step=\"1\">"},"credits_used":5,"credits_remaining":null}},"required_age_field":{"summary":"Required age field","value":{"tool":"html-generator/input-number","tool_version":"1.0.2","outputs":{"code":"<label for=\"age\">Age</label>\n<input type=\"number\" name=\"age\" id=\"age\" placeholder=\"Your age\" required min=\"18\" max=\"120\" step=\"1\" value=\"30\" class=\"num-input\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-password":{"post":{"operationId":"run_html_generator_input_password","summary":"HTML Input Password Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"password\"> field — set the name, label, placeholder, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Password Generator in your browser →](https://iotools.cloud/tool/html-generator/input-password/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customPattern":{"type":"string","description":"Pattern"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"user-password","customLabel":"Password","customPlaceholder":"Enter your password","customRequired":"true","customAutocomplete":"","customDisabled":"","customReadonly":"","customMinLength":"8","customMaxLength":"64","customPattern":"","customClasses":""}},"strong_password_with_pattern":{"summary":"Strong password with pattern","value":{"customName":"account-password","customLabel":"Account Password","customPlaceholder":"Choose a strong password","customRequired":"true","customAutocomplete":"true","customDisabled":"","customReadonly":"","customMinLength":"12","customMaxLength":"128","customPattern":"(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).+","customClasses":"form-control"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-password","tool_version":"1.0.2","outputs":{"code":"<label for=\"user-password\">Password</label>\n<input type=\"password\" name=\"user-password\" id=\"user-password\" placeholder=\"Enter your password\" required autocomplete=\"off\" minlength=\"8\" maxlength=\"64\">"},"credits_used":5,"credits_remaining":null}},"strong_password_with_pattern":{"summary":"Strong password with pattern","value":{"tool":"html-generator/input-password","tool_version":"1.0.2","outputs":{"code":"<label for=\"account-password\">Account Password</label>\n<input type=\"password\" name=\"account-password\" id=\"account-password\" placeholder=\"Choose a strong password\" required minlength=\"12\" maxlength=\"128\" pattern=\"(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).+\" class=\"form-control\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-range":{"post":{"operationId":"run_html_generator_input_range","summary":"HTML Input Range Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"range\"> slider — set the name, label, min/max/step and default value, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Range Generator in your browser →](https://iotools.cloud/tool/html-generator/input-range/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customMin":{"type":"number","description":"Min Value"},"customMax":{"type":"number","description":"Max Value"},"customStep":{"type":"number","description":"Step","minimum":0.01},"customDefaultValue":{"type":"number","description":"Default Value"},"customDisabled":{"type":"boolean","description":"Disabled"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"volume-slider","customLabel":"Volume","customMin":"0","customMax":"100","customStep":"1","customDefaultValue":"50","customDisabled":"","customClasses":""}},"brightness_slider":{"summary":"Brightness slider","value":{"customName":"brightness","customLabel":"Brightness","customMin":"0","customMax":"255","customStep":"5","customDefaultValue":"128","customDisabled":"true","customClasses":"slider"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-range","tool_version":"1.0.2","outputs":{"code":"<label for=\"volume-slider\">Volume</label>\n<input type=\"range\" name=\"volume-slider\" id=\"volume-slider\" min=\"0\" max=\"100\" step=\"1\" value=\"50\">"},"credits_used":5,"credits_remaining":null}},"brightness_slider":{"summary":"Brightness slider","value":{"tool":"html-generator/input-range","tool_version":"1.0.2","outputs":{"code":"<label for=\"brightness\">Brightness</label>\n<input type=\"range\" name=\"brightness\" id=\"brightness\" min=\"0\" max=\"255\" step=\"5\" value=\"128\" disabled class=\"slider\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-search":{"post":{"operationId":"run_html_generator_input_search","summary":"HTML Input Search Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"search\"> field — set the name, label, placeholder, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Search Generator in your browser →](https://iotools.cloud/tool/html-generator/input-search/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customSize":{"type":"number","description":"Size","minimum":1},"customSpellcheck":{"type":"boolean","description":"Enable spellcheck"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"search-query","customLabel":"Search","customPlaceholder":"Search...","customRequired":"","customAutocomplete":"true","customDisabled":"","customMinLength":"","customMaxLength":"","customSize":"20","customSpellcheck":"true","customClasses":""}},"required_no_spellcheck":{"summary":"Required, no spellcheck","value":{"customName":"site-search","customLabel":"Site Search","customPlaceholder":"Type to search","customRequired":"true","customAutocomplete":"","customDisabled":"","customMinLength":"","customMaxLength":"100","customSize":"","customSpellcheck":"","customClasses":"search-box"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-search","tool_version":"1.0.2","outputs":{"code":"<label for=\"search-query\">Search</label>\n<input type=\"search\" name=\"search-query\" id=\"search-query\" placeholder=\"Search...\" size=\"20\">"},"credits_used":5,"credits_remaining":null}},"required_no_spellcheck":{"summary":"Required, no spellcheck","value":{"tool":"html-generator/input-search","tool_version":"1.0.2","outputs":{"code":"<label for=\"site-search\">Site Search</label>\n<input type=\"search\" name=\"site-search\" id=\"site-search\" placeholder=\"Type to search\" required autocomplete=\"off\" maxlength=\"100\" spellcheck=\"false\" class=\"search-box\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-submit":{"post":{"operationId":"run_html_generator_input_submit","summary":"HTML Input Submit Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"submit\"> button — set the button text and form-submission overrides (action, method, encoding, target), then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Submit Generator in your browser →](https://iotools.cloud/tool/html-generator/input-submit/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customValue":{"type":"string","description":"Button Text"},"customDisabled":{"type":"boolean","description":"Disabled"},"customFormaction":{"type":"string","description":"Form Action"},"customFormenctype":{"enum":["","application/x-www-form-urlencoded","multipart/form-data","text/plain"],"description":"Form Encoding Type"},"customFormmethod":{"enum":["","get","post"],"description":"Form Method"},"customFormnovalidate":{"type":"boolean","description":"Disable form validation"},"customFormtarget":{"enum":["","_blank","_self","_parent","_top"],"description":"Form Target"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"submit-button","customValue":"Submit","customDisabled":"","customFormaction":"","customFormenctype":"","customFormmethod":"","customFormnovalidate":"","customFormtarget":"","customClasses":"btn btn-primary"}},"custom_action_method_and_target":{"summary":"Custom action, method, and target","value":{"customName":"checkout-submit","customValue":"Place Order","customDisabled":"","customFormaction":"https://example.com/checkout","customFormenctype":"multipart/form-data","customFormmethod":"post","customFormnovalidate":"true","customFormtarget":"_blank","customClasses":"btn btn-success"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-submit","tool_version":"1.0.2","outputs":{"code":"<input type=\"submit\" name=\"submit-button\" value=\"Submit\" class=\"btn btn-primary\">"},"credits_used":5,"credits_remaining":null}},"custom_action_method_and_target":{"summary":"Custom action, method, and target","value":{"tool":"html-generator/input-submit","tool_version":"1.0.2","outputs":{"code":"<input type=\"submit\" name=\"checkout-submit\" value=\"Place Order\" formaction=\"https://example.com/checkout\" formenctype=\"multipart/form-data\" formmethod=\"post\" formnovalidate formtarget=\"_blank\" class=\"btn btn-success\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-tel":{"post":{"operationId":"run_html_generator_input_tel","summary":"HTML Input Tel Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"tel\"> field — set the name, label, placeholder, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Tel Generator in your browser →](https://iotools.cloud/tool/html-generator/input-tel/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customPattern":{"type":"string","description":"Pattern"},"customSize":{"type":"number","description":"Size","minimum":1},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"phone-number","customLabel":"Phone Number","customPlaceholder":"+1 (555) 123-4567","customRequired":"","customAutocomplete":"true","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"","customPattern":"","customSize":"20","customClasses":""}},"required_no_autocomplete":{"summary":"Required, no autocomplete","value":{"customName":"contact-tel","customLabel":"Contact Number","customPlaceholder":"555-123-4567","customRequired":"true","customAutocomplete":"","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"20","customPattern":"[0-9]{3}-[0-9]{3}-[0-9]{4}","customSize":"","customClasses":"form-control"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-tel","tool_version":"1.0.2","outputs":{"code":"<label for=\"phone-number\">Phone Number</label>\n<input type=\"tel\" name=\"phone-number\" id=\"phone-number\" placeholder=\"+1 (555) 123-4567\" size=\"20\">"},"credits_used":5,"credits_remaining":null}},"required_no_autocomplete":{"summary":"Required, no autocomplete","value":{"tool":"html-generator/input-tel","tool_version":"1.0.2","outputs":{"code":"<label for=\"contact-tel\">Contact Number</label>\n<input type=\"tel\" name=\"contact-tel\" id=\"contact-tel\" placeholder=\"555-123-4567\" required autocomplete=\"off\" maxlength=\"20\" pattern=\"[0-9]{3}-[0-9]{3}-[0-9]{4}\" class=\"form-control\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-text":{"post":{"operationId":"run_html_generator_input_text","summary":"HTML Input Text Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"text\"> field — set the name, label, placeholder, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input Text Generator in your browser →](https://iotools.cloud/tool/html-generator/input-text/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customPattern":{"type":"string","description":"Pattern"},"customSize":{"type":"number","description":"Size","minimum":1},"customDefaultValue":{"type":"string","description":"Default Value"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"user-name","customLabel":"Name","customPlaceholder":"Enter your name","customRequired":"","customAutocomplete":"true","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"","customPattern":"","customSize":"30","customDefaultValue":"","customClasses":""}},"required_with_pattern":{"summary":"Required with pattern","value":{"customName":"first-name","customLabel":"First Name","customPlaceholder":"Jane","customRequired":"true","customAutocomplete":"","customDisabled":"","customReadonly":"","customMinLength":"2","customMaxLength":"50","customPattern":"[A-Za-z]+","customSize":"","customDefaultValue":"","customClasses":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-text","tool_version":"1.0.2","outputs":{"code":"<label for=\"user-name\">Name</label>\n<input type=\"text\" name=\"user-name\" id=\"user-name\" placeholder=\"Enter your name\" size=\"30\">"},"credits_used":5,"credits_remaining":null}},"required_with_pattern":{"summary":"Required with pattern","value":{"tool":"html-generator/input-text","tool_version":"1.0.2","outputs":{"code":"<label for=\"first-name\">First Name</label>\n<input type=\"text\" name=\"first-name\" id=\"first-name\" placeholder=\"Jane\" required autocomplete=\"off\" minlength=\"2\" maxlength=\"50\" pattern=\"[A-Za-z]+\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/input-url":{"post":{"operationId":"run_html_generator_input_url","summary":"HTML Input URL Generator","tags":["Generators"],"description":"Generate an &lt;input type=\"url\"> field — set the name, label, placeholder, validation and more, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Input URL Generator in your browser →](https://iotools.cloud/tool/html-generator/input-url/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customLabel":{"type":"string","description":"Label"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customRequired":{"type":"boolean","description":"Required field"},"customAutocomplete":{"type":"boolean","description":"Enable autocomplete"},"customDisabled":{"type":"boolean","description":"Disabled"},"customReadonly":{"type":"boolean","description":"Read-only"},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customPattern":{"type":"string","description":"Pattern"},"customSize":{"type":"number","description":"Size","minimum":1},"customDefaultValue":{"type":"string","description":"Default Value"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"website-url","customLabel":"Website URL","customPlaceholder":"https://example.com","customRequired":"","customAutocomplete":"true","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"","customPattern":"","customSize":"40","customDefaultValue":"","customClasses":""}},"required_no_autocomplete":{"summary":"Required, no autocomplete","value":{"customName":"profile-link","customLabel":"Profile Link","customPlaceholder":"https://example.com/you","customRequired":"true","customAutocomplete":"","customDisabled":"","customReadonly":"","customMinLength":"","customMaxLength":"200","customPattern":"https?://.+","customSize":"","customDefaultValue":"","customClasses":"input-lg"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/input-url","tool_version":"1.0.2","outputs":{"code":"<label for=\"website-url\">Website URL</label>\n<input type=\"url\" name=\"website-url\" id=\"website-url\" placeholder=\"https://example.com\" size=\"40\">"},"credits_used":5,"credits_remaining":null}},"required_no_autocomplete":{"summary":"Required, no autocomplete","value":{"tool":"html-generator/input-url","tool_version":"1.0.2","outputs":{"code":"<label for=\"profile-link\">Profile Link</label>\n<input type=\"url\" name=\"profile-link\" id=\"profile-link\" placeholder=\"https://example.com/you\" required autocomplete=\"off\" maxlength=\"200\" pattern=\"https?://.+\" class=\"input-lg\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/progress":{"post":{"operationId":"run_html_generator_progress","summary":"HTML Progress Bar Generator","tags":["Generators"],"description":"Generate a &lt;progress> bar — set the max/current value, an optional label, and indeterminate (loading) mode, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Progress Bar Generator in your browser →](https://iotools.cloud/tool/html-generator/progress/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customMax":{"type":"number","description":"Max Value","minimum":1},"customValue":{"type":"number","description":"Current Value"},"customLabel":{"type":"string","description":"Label"},"customIndeterminate":{"type":"boolean","description":"Indeterminate"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customMax":"100","customValue":"35","customLabel":"","customIndeterminate":"","customClasses":""}},"indeterminate_with_label":{"summary":"Indeterminate with label","value":{"customMax":"100","customValue":"35","customLabel":"Loading…","customIndeterminate":"true","customClasses":"progress-thin"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/progress","tool_version":"1.0.2","outputs":{"code":"<progress id=\"io-progress\" max=\"100\" value=\"35\"></progress>"},"credits_used":5,"credits_remaining":null}},"indeterminate_with_label":{"summary":"Indeterminate with label","value":{"tool":"html-generator/progress","tool_version":"1.0.2","outputs":{"code":"<label for=\"io-progress\">Loading…</label>\n<progress id=\"io-progress\" max=\"100\" class=\"progress-thin\"></progress>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/radio":{"post":{"operationId":"run_html_generator_radio","summary":"HTML Radio Generator","tags":["Generators"],"description":"Generate a 2-option radio button group — set the shared name and each option's label/value, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Radio Generator in your browser →](https://iotools.cloud/tool/html-generator/radio/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customOption1Label":{"type":"string","description":"Option 1 Label"},"customOption1Value":{"type":"string","description":"Option 1 Value"},"customOption2Label":{"type":"string","description":"Option 2 Label"},"customOption2Value":{"type":"string","description":"Option 2 Value"},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"my-radio","customOption1Label":"Option 1","customOption1Value":"1","customOption2Label":"Option 2","customOption2Value":"2","customClasses":""}},"custom_options":{"summary":"Custom options","value":{"customName":"plan","customOption1Label":"Monthly","customOption1Value":"monthly","customOption2Label":"Yearly","customOption2Value":"yearly","customClasses":"radio-inline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/radio","tool_version":"1.0.2","outputs":{"code":"<label><input type=\"radio\" name=\"my-radio\" value=\"1\"> Option 1</label>\n<label><input type=\"radio\" name=\"my-radio\" value=\"2\"> Option 2</label>"},"credits_used":5,"credits_remaining":null}},"custom_options":{"summary":"Custom options","value":{"tool":"html-generator/radio","tool_version":"1.0.2","outputs":{"code":"<label><input type=\"radio\" name=\"plan\" value=\"monthly\" class=\"radio-inline\"> Monthly</label>\n<label><input type=\"radio\" name=\"plan\" value=\"yearly\" class=\"radio-inline\"> Yearly</label>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-generator/textarea":{"post":{"operationId":"run_html_generator_textarea","summary":"HTML Textarea Generator","tags":["Generators"],"description":"Generate a &lt;textarea> field — set the name, placeholder, default content, size, and validation, then copy the ready-to-use HTML. Free, instant, no AI involved.\n\n[Try HTML Textarea Generator in your browser →](https://iotools.cloud/tool/html-generator/textarea/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"customName":{"type":"string","description":"Name"},"customPlaceholder":{"type":"string","description":"Placeholder"},"customDefaultValue":{"type":"string","description":"Default Content"},"customRequired":{"type":"boolean","description":"Required field"},"customColumns":{"type":"number","description":"Columns","minimum":1},"customRows":{"type":"number","description":"Rows","minimum":1},"customMinLength":{"type":"number","description":"Min Length","minimum":1},"customMaxLength":{"type":"number","description":"Max Length","minimum":1},"customClasses":{"type":"string","description":"CSS Classes"}},"required":[]},"examples":{"default":{"summary":"Default","value":{"customName":"my-textarea","customPlaceholder":"Example placeholder text","customDefaultValue":"","customRequired":"","customColumns":"10","customRows":"10","customMinLength":"10","customMaxLength":"1000","customClasses":""}},"required_with_default_content":{"summary":"Required with default content","value":{"customName":"user-bio","customPlaceholder":"Tell us about yourself","customDefaultValue":"Hi, I'm <new here>!","customRequired":"true","customColumns":"40","customRows":"6","customMinLength":"","customMaxLength":"500","customClasses":"form-textarea"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"html-generator/textarea","tool_version":"1.0.2","outputs":{"code":"<textarea name=\"my-textarea\" id=\"my-textarea\" placeholder=\"Example placeholder text\" cols=\"10\" rows=\"10\" minlength=\"10\" maxlength=\"1000\"></textarea>"},"credits_used":5,"credits_remaining":null}},"required_with_default_content":{"summary":"Required with default content","value":{"tool":"html-generator/textarea","tool_version":"1.0.2","outputs":{"code":"<textarea name=\"user-bio\" id=\"user-bio\" placeholder=\"Tell us about yourself\" required cols=\"40\" rows=\"6\" maxlength=\"500\" class=\"form-textarea\">Hi, I&#39;m &lt;new here&gt;!</textarea>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/google-serp-snippet-simulator":{"post":{"operationId":"run_google_serp_snippet_simulator","summary":"SERP Simulator","tags":["Generators"],"description":"Preview how your page's title and meta description will appear in Google search results, on desktop and mobile, with real Arial pixel-width measurements showing exactly where each one gets truncated.\n\n[Try SERP Simulator in your browser →](https://iotools.cloud/tool/google-serp-snippet-simulator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Page title"},"description":{"type":"string","description":"Meta description"},"url":{"type":"string","description":"Page URL"},"query":{"type":"string","description":"Search query"},"device":{"enum":["desktop","mobile"],"description":"Device"},"siteName":{"type":"string","description":"Site name"},"favicon":{"type":"boolean","description":"Show favicon"},"date":{"type":"string","description":"Date prefix"},"rating":{"type":"boolean","description":"Show star rating"},"ratingValue":{"type":"number","description":"Rating","minimum":0,"maximum":5},"ratingCount":{"type":"number","description":"Review count"},"descriptionLimit":{"type":"number","description":"Description character limit","minimum":80,"maximum":350}},"required":[]},"examples":{"desktop_result":{"summary":"Desktop result","value":{"title":"How to Bake Sourdough Bread at Home: A Beginner's Guide","description":"Everything a first-time baker needs to bake sourdough at home: starter, schedule, shaping, and the oven setup that finally gives you an open crumb.","url":"https://example.com/guides/sourdough-for-beginners","query":"sourdough beginners","device":"desktop","siteName":"","favicon":"true","date":"","rating":"","ratingValue":"4.5","ratingCount":"128","descriptionLimit":"160"}},"mobile_result_with_rating":{"summary":"Mobile result with rating","value":{"title":"Best Noise-Cancelling Headphones of 2026, Tested and Ranked by Our Audio Team","description":"We tested 24 pairs over six months on planes, trains and open-plan offices. These are the six worth your money, plus the two to avoid entirely.","url":"https://example.com/reviews/headphones/noise-cancelling","query":"noise cancelling headphones","device":"mobile","siteName":"Example Reviews","favicon":"true","date":"12 Mar 2026","rating":"true","ratingValue":"4.5","ratingCount":"128","descriptionLimit":"160"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"desktop_result":{"summary":"Desktop result","value":{"tool":"google-serp-snippet-simulator","tool_version":"1.0.2","outputs":{"markup":"<div style=\"font-family:arial,helvetica,sans-serif;background:#ffffff;border:1px solid #dfe1e5;border-radius:12px;padding:16px;width:632px;max-width:100%;box-sizing:border-box\"><div style=\"display:flex;align-items:center;margin-bottom:8px\"><div style=\"width:26px;height:26px;border-radius:50%;background:#e8f0fe;color:#1a73e8;font-size:13px;line-height:26px;text-align:center;flex:none;margin-right:12px\">E</div><div><div style=\"font-size:14px;line-height:18px;color:#202124\">example.com</div><div style=\"font-size:12px;line-height:16px;color:#4d5156\">example.com › guides › sourdough-for-beginners</div></div></div><div style=\"font-size:20px;line-height:1.3;color:#1a0dab;margin-bottom:4px\">How to Bake Sourdough Bread at Home: A Beginner's Guide</div><div style=\"font-size:14px;line-height:1.58;color:#4d5156\">Everything a first-time baker needs to bake <b>sourdough</b> at home: starter, schedule, shaping, and the oven setup that finally gives you an open crumb.</div></div>","metrics":[{"element":"Title","measurement":"55 chars · 540 px of 600 px","status":"Good"},{"element":"Meta description","measurement":"147 chars · 2 of 2 lines","status":"Good"},{"element":"URL","measurement":"46 chars · 259 px","status":"Good"}],"metaTags":"<title>How to Bake Sourdough Bread at Home: A Beginner's Guide</title>\n<meta name=\"description\" content=\"Everything a first-time baker needs to bake sourdough at home: starter, schedule, shaping, and the oven setup that finally gives you an open crumb.\" />\n<link rel=\"canonical\" href=\"https://example.com/guides/sourdough-for-beginners\" />"},"credits_used":5,"credits_remaining":null}},"mobile_result_with_rating":{"summary":"Mobile result with rating","value":{"tool":"google-serp-snippet-simulator","tool_version":"1.0.2","outputs":{"markup":"<div style=\"font-family:arial,helvetica,sans-serif;background:#ffffff;border:1px solid #dfe1e5;border-radius:12px;padding:16px;width:395px;max-width:100%;box-sizing:border-box\"><div style=\"display:flex;align-items:center;margin-bottom:8px\"><div style=\"width:22px;height:22px;border-radius:50%;background:#e8f0fe;color:#1a73e8;font-size:11px;line-height:22px;text-align:center;flex:none;margin-right:12px\">E</div><div><div style=\"font-size:14px;line-height:18px;color:#202124\">Example Reviews</div><div style=\"font-size:12px;line-height:16px;color:#4d5156\">example.com › reviews › headphones › noise-cancelling</div></div></div><div style=\"font-size:16px;line-height:1.3;color:#1a0dab;margin-bottom:4px\">Best Noise-Cancelling Headphones of 2026,<br />Tested and Ranked by Our Audio Team</div><div style=\"font-size:14px;line-height:22px;color:#70757a\"><span style=\"color:#e7711b\">★★★★☆</span> Rating: 4.5 · 128 reviews</div><div style=\"font-size:14px;line-height:1.58;color:#4d5156\"><span style=\"color:#70757a\">12 Mar 2026 — </span>We tested 24 pairs over six months on planes, trains and open-plan offices. These are the six worth your money, plus the two to avoid entirely.</div></div>","metrics":[{"element":"Title","measurement":"77 chars · 602 px of 726 px","status":"Good"},{"element":"Meta description","measurement":"143 chars · 3 of 3 lines","status":"Good"},{"element":"URL","measurement":"53 chars · 296 px","status":"Good"}],"metaTags":"<title>Best Noise-Cancelling Headphones of 2026, Tested and Ranked by Our Audio Team</title>\n<meta name=\"description\" content=\"We tested 24 pairs over six months on planes, trains and open-plan offices. These are the six worth your money, plus the two to avoid entirely.\" />\n<link rel=\"canonical\" href=\"https://example.com/reviews/headphones/noise-cancelling\" />"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"metrics":{"type":"array","description":"Length check","items":{"type":"object","properties":{"element":{"type":"string","description":"Element"},"measurement":{"type":"string","description":"Measurement"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["element","measurement","status"]},"metaTags":{"type":"string","description":"Meta tags"},"markup":{"type":"string","description":"Preview HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hreflang-generator":{"post":{"operationId":"run_hreflang_generator","summary":"Hreflang Tag Generator","tags":["Generators"],"description":"Generate hreflang tags for a multilingual site from a list of locale and URL pairs. Outputs HTML link tags, XML sitemap entries or an HTTP Link header, and flags duplicate locales, bad language codes and relative URLs.\n\n[Try Hreflang Tag Generator in your browser →](https://iotools.cloud/tool/hreflang-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pairs":{"type":"string","description":"Locale and URL pairs"},"xDefault":{"type":"string","description":"x-default URL (optional)"},"format":{"enum":["html","sitemap","header"],"description":"Output format"},"normalize":{"type":"boolean","description":"Normalise locale casing"}},"required":[]},"examples":{"four_locales_with_an_x_default":{"summary":"Four locales with an x-default","value":{"pairs":"en-US, https://example.com/\nen-GB, https://example.com/uk/\nfr, https://example.com/fr/\nde, https://example.com/de/","xDefault":"https://example.com/","format":"html","normalize":"true"}},"xml_sitemap_entries":{"summary":"XML sitemap entries","value":{"pairs":"en, https://example.com/\nes, https://example.com/es/","xDefault":"","format":"sitemap","normalize":"true"}},"http_link_header_for_a_pdf":{"summary":"HTTP Link header (for a PDF)","value":{"pairs":"en, https://example.com/manual.pdf\nja, https://example.com/ja/manual.pdf","xDefault":"","format":"header","normalize":"true"}},"catches_a_duplicated_locale":{"summary":"Catches a duplicated locale","value":{"pairs":"en-us, https://example.com/\nEN-US, https://example.com/us/\nuk, /gb/","xDefault":"","format":"html","normalize":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"four_locales_with_an_x_default":{"summary":"Four locales with an x-default","value":{"tool":"hreflang-generator","tool_version":"1.0.2","outputs":{"tags":"<link rel=\"alternate\" hreflang=\"en-US\" href=\"https://example.com/\" />\n<link rel=\"alternate\" hreflang=\"en-GB\" href=\"https://example.com/uk/\" />\n<link rel=\"alternate\" hreflang=\"fr\" href=\"https://example.com/fr/\" />\n<link rel=\"alternate\" hreflang=\"de\" href=\"https://example.com/de/\" />\n<link rel=\"alternate\" hreflang=\"x-default\" href=\"https://example.com/\" />","issues":"Reminder: every URL listed here must serve the same block back, including a self-referencing tag. hreflang without return links is ignored."},"credits_used":5,"credits_remaining":null}},"xml_sitemap_entries":{"summary":"XML sitemap entries","value":{"tool":"hreflang-generator","tool_version":"1.0.2","outputs":{"tags":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n        xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n  <url>\n    <loc>https://example.com/</loc>\n    <xhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https://example.com/\" />\n    <xhtml:link rel=\"alternate\" hreflang=\"es\" href=\"https://example.com/es/\" />\n  </url>\n  <url>\n    <loc>https://example.com/es/</loc>\n    <xhtml:link rel=\"alternate\" hreflang=\"en\" href=\"https://example.com/\" />\n    <xhtml:link rel=\"alternate\" hreflang=\"es\" href=\"https://example.com/es/\" />\n  </url>\n</urlset>","issues":"No x-default set. It is optional, but without it search engines guess which version to show unmatched visitors.\nReminder: every URL listed here must serve the same block back, including a self-referencing tag. hreflang without return links is ignored."},"credits_used":5,"credits_remaining":null}},"http_link_header_for_a_pdf":{"summary":"HTTP Link header (for a PDF)","value":{"tool":"hreflang-generator","tool_version":"1.0.2","outputs":{"tags":"Link: <https://example.com/manual.pdf>; rel=\"alternate\"; hreflang=\"en\", <https://example.com/ja/manual.pdf>; rel=\"alternate\"; hreflang=\"ja\"","issues":"No x-default set. It is optional, but without it search engines guess which version to show unmatched visitors.\nReminder: every URL listed here must serve the same block back, including a self-referencing tag. hreflang without return links is ignored."},"credits_used":5,"credits_remaining":null}},"catches_a_duplicated_locale":{"summary":"Catches a duplicated locale","value":{"tool":"hreflang-generator","tool_version":"1.0.2","outputs":{"tags":"<link rel=\"alternate\" hreflang=\"en-US\" href=\"https://example.com/\" />\n<link rel=\"alternate\" hreflang=\"en-US\" href=\"https://example.com/us/\" />\n<link rel=\"alternate\" hreflang=\"uk\" href=\"/gb/\" />","issues":"Line 2: locale \"en-US\" is already declared on line 1. Duplicate hreflang values invalidate the whole set.\nLine 3: \"/gb/\" is not an absolute http(s) URL. Relative URLs are ignored by search engines.\nLine 3: \"uk\" is Ukrainian — for the United Kingdom use en-GB.\nNo x-default set. It is optional, but without it search engines guess which version to show unmatched visitors.\nReminder: every URL listed here must serve the same block back, including a self-referencing tag. hreflang without return links is ignored."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tags":{"type":"string","description":"Hreflang tags"},"issues":{"type":"string","description":"Validation notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-form-to-curl-converter":{"post":{"operationId":"run_html_form_to_curl_converter","summary":"HTML Form to cURL Command Converter","tags":["Generators"],"description":"Paste a &lt;form>'s HTML and get a ready-to-run curl command — parses action/method/enctype and every named input, handling multipart/form-data vs urlencoded, checkboxes, selects, Basic Auth and custom headers.\n\n[Try HTML Form to cURL Command Converter in your browser →](https://iotools.cloud/tool/html-form-to-curl-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"html":{"type":"string","description":"HTML"},"form":{"type":"string","description":"Form to convert"},"baseUrl":{"type":"string","description":"Base URL"},"overrides":{"type":"string","description":"Override field values"},"headers":{"type":"string","description":"Extra headers"},"basicAuthUser":{"type":"string","description":"Basic Auth Username"},"basicAuthPass":{"type":"string","description":"Basic Auth Password"},"followRedirects":{"type":"boolean","description":"Follow redirects (-L)"}},"required":["html"]},"examples":{"login_form_urlencoded_post":{"summary":"Login form → urlencoded POST","value":{"html":"<form action=\"/login\" method=\"post\">\n  <input name=\"email\" type=\"email\" value=\"jane@example.com\">\n  <input name=\"password\" type=\"password\" value=\"hunter2\">\n  <input name=\"remember\" type=\"checkbox\" value=\"1\" checked>\n</form>","form":"1","baseUrl":"https://example.com","overrides":"","headers":"","basicAuthUser":"","basicAuthPass":"","followRedirects":"true"}},"search_form_get_query_string":{"summary":"Search form → GET query string","value":{"html":"<form action=\"/search\" method=\"get\">\n  <input name=\"q\" value=\"curl\">\n  <select name=\"sort\"><option value=\"relevance\">Relevance</option><option value=\"date\" selected>Date</option></select>\n</form>","form":"1","baseUrl":"https://example.com","overrides":"","headers":"","basicAuthUser":"","basicAuthPass":"","followRedirects":""}},"file_upload_form_multipart":{"summary":"File upload form → multipart","value":{"html":"<form action=\"/upload\" method=\"post\" enctype=\"multipart/form-data\">\n  <input name=\"title\" value=\"Report\">\n  <input name=\"file\" type=\"file\">\n</form>","form":"1","baseUrl":"","overrides":"","headers":"Authorization: Bearer abc123","basicAuthUser":"","basicAuthPass":"","followRedirects":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"login_form_urlencoded_post":{"summary":"Login form → urlencoded POST","value":{"tool":"html-form-to-curl-converter","tool_version":"1.0.2","outputs":{"output":"curl -X POST --data-urlencode 'email=jane@example.com' --data-urlencode 'password=hunter2' --data-urlencode 'remember=1' -L 'https://example.com/login'","summary":"Form 1 of 1 · POST · 3 fields included","fields":[{"name":"email","type":"email","value":"jane@example.com","included":"Yes"},{"name":"password","type":"password","value":"hunter2","included":"Yes"},{"name":"remember","type":"checkbox","value":"1","included":"Yes"}]},"credits_used":5,"credits_remaining":null}},"search_form_get_query_string":{"summary":"Search form → GET query string","value":{"tool":"html-form-to-curl-converter","tool_version":"1.0.2","outputs":{"output":"curl 'https://example.com/search?q=curl&sort=date'","summary":"Form 1 of 1 · GET · 2 fields included","fields":[{"name":"q","type":"text","value":"curl","included":"Yes"},{"name":"sort","type":"select","value":"date","included":"Yes"}]},"credits_used":5,"credits_remaining":null}},"file_upload_form_multipart":{"summary":"File upload form → multipart","value":{"tool":"html-form-to-curl-converter","tool_version":"1.0.2","outputs":{"output":"curl -X POST -H 'Authorization: Bearer abc123' -F 'title=Report' -F 'file=@/path/to/file' '/upload'","summary":"Form 1 of 1 · POST · 2 fields included","fields":[{"name":"title","type":"text","value":"Report","included":"Yes"},{"name":"file","type":"file","value":"@/path/to/file","included":"Yes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"cURL Command"},"summary":{"type":"string","description":"Summary"},"fields":{"type":"array","description":"Parsed fields","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"type":{"type":"string","description":"Type"},"value":{"type":"string","description":"Value"},"included":{"type":"string","description":"Included"}}},"x-iotools-columns":["name","type","value","included"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-meta-tag-generator":{"post":{"operationId":"run_html_meta_tag_generator","summary":"HTML Meta Tag Generator","tags":["Generators"],"description":"Generate SEO and social meta tags for your page's &lt;head>: title, description, keywords, author, canonical URL, robots directive, theme color, plus Open Graph and Twitter Card tags for rich link previews. Copy or download the ready-to-paste HTML.\n\n[Try HTML Meta Tag Generator in your browser →](https://iotools.cloud/tool/html-meta-tag-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Page Title"},"description":{"type":"string","description":"Meta Description"},"keywords":{"type":"string","description":"Meta Keywords"},"author":{"type":"string","description":"Author"},"canonicalUrl":{"type":"string","description":"Canonical URL"},"ogImage":{"type":"string","description":"Social Share Image"},"robots":{"enum":["","noindex, follow","index, nofollow","noindex, nofollow"],"description":"Search Engine Indexing"},"themeColor":{"type":"string","description":"Theme Color"}},"required":[]},"examples":{"basic_page":{"summary":"Basic page","value":{"title":"My Awesome Website","description":"A brief description of my awesome website for search engines.","keywords":"","author":"","canonicalUrl":"","ogImage":"","robots":"","themeColor":""}},"full_metadata_with_social_card":{"summary":"Full metadata with social card","value":{"title":"IO Tools & Utilities","description":"200+ free browser-based tools for developers, designers, and SEO pros.","keywords":"online tools, developer tools, seo tools","author":"IO Tools","canonicalUrl":"https://iotools.cloud/","ogImage":"https://iotools.cloud/og-image.jpg","robots":"noindex, nofollow","themeColor":"#464aff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_page":{"summary":"Basic page","value":{"tool":"html-meta-tag-generator","tool_version":"1.0.2","outputs":{"metaTags":"<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>My Awesome Website</title>\n<meta name=\"description\" content=\"A brief description of my awesome website for search engines.\">"},"credits_used":5,"credits_remaining":null}},"full_metadata_with_social_card":{"summary":"Full metadata with social card","value":{"tool":"html-meta-tag-generator","tool_version":"1.0.2","outputs":{"metaTags":"<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>IO Tools &amp; Utilities</title>\n<meta name=\"description\" content=\"200+ free browser-based tools for developers, designers, and SEO pros.\">\n<meta name=\"keywords\" content=\"online tools, developer tools, seo tools\">\n<meta name=\"author\" content=\"IO Tools\">\n<meta name=\"robots\" content=\"noindex, nofollow\">\n<link rel=\"canonical\" href=\"https://iotools.cloud/\">\n<meta name=\"theme-color\" content=\"#464aff\">\n\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:title\" content=\"IO Tools &amp; Utilities\">\n<meta property=\"og:description\" content=\"200+ free browser-based tools for developers, designers, and SEO pros.\">\n<meta property=\"og:url\" content=\"https://iotools.cloud/\">\n<meta property=\"og:image\" content=\"https://iotools.cloud/og-image.jpg\">\n\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n<meta name=\"twitter:title\" content=\"IO Tools &amp; Utilities\">\n<meta name=\"twitter:description\" content=\"200+ free browser-based tools for developers, designers, and SEO pros.\">\n<meta name=\"twitter:image\" content=\"https://iotools.cloud/og-image.jpg\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"metaTags":{"type":"string","description":"Meta Tags"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/htpasswd-generator":{"post":{"operationId":"run_htpasswd_generator","summary":"htpasswd Generator","tags":["Generators"],"description":"Generate an Apache .htpasswd line (user:hash) for HTTP Basic Auth, using Apache's $apr1$ MD5, {SHA} SHA-1, or traditional crypt. Hashed in your browser — the password is never sent anywhere.\n\n[Try htpasswd Generator in your browser →](https://iotools.cloud/tool/htpasswd-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Username"},"password":{"type":"string","description":"Password"},"algorithm":{"enum":["bcrypt","apr1","sha1","crypt"],"description":"Hash algorithm"}},"required":["username","password"]},"examples":{"bcrypt_recommended":{"summary":"bcrypt (recommended)","value":{"username":"admin","password":"correct horse battery staple","algorithm":"bcrypt"}},"apache_apr1_portable":{"summary":"Apache APR1 (portable)","value":{"username":"admin","password":"correct horse battery staple","algorithm":"apr1"}},"traditional_crypt":{"summary":"Traditional crypt","value":{"username":"webmaster","password":"hunter2hunter2","algorithm":"crypt"}},"sha_1_unsalted_legacy":{"summary":"SHA-1 (unsalted, legacy)","value":{"username":"admin","password":"password","algorithm":"sha1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha_1_unsalted_legacy":{"summary":"SHA-1 (unsalted, legacy)","value":{"tool":"htpasswd-generator","tool_version":"1.0.2","outputs":{"htpasswd":"admin:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=","hash":"{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g="},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"htpasswd":{"type":"string","description":".htpasswd line"},"hash":{"type":"string","description":"Hash only"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/http-request-header-builder":{"post":{"operationId":"run_http_request_header_builder","summary":"HTTP Request Header Builder","tags":["Generators"],"description":"Build HTTP request headers from a simple Header-Name: value list, then export them as a raw header block, a ready-to-run curl command, and a JavaScript fetch() snippet — pick the HTTP method and target URL for a full request preview.\n\n[Try HTTP Request Header Builder in your browser →](https://iotools.cloud/tool/http-request-header-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"headers":{"type":"string","description":"Headers"},"url":{"type":"string","description":"Request URL"},"method":{"enum":["GET","POST","PUT","PATCH","DELETE"],"description":"HTTP Method"}},"required":[]},"examples":{"post_json_with_auth":{"summary":"POST JSON with auth","value":{"headers":"Content-Type: application/json\nAuthorization: Bearer abc123","url":"https://api.example.com/users","method":"POST"}},"simple_get_with_accept":{"summary":"Simple GET with Accept","value":{"headers":"Accept: application/json","url":"https://api.example.com/status","method":"GET"}},"delete_skipping_malformed_lines":{"summary":"DELETE skipping malformed lines","value":{"headers":"Authorization: Bearer xyz\nno colon here\nX Custom: bad\n  Accept :  application/json  ","url":"https://api.example.com/items/42","method":"DELETE"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"post_json_with_auth":{"summary":"POST JSON with auth","value":{"tool":"http-request-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Content-Type: application/json\nAuthorization: Bearer abc123","curlCommand":"curl -X POST -H \"Content-Type: application/json\" -H \"Authorization: Bearer abc123\" \"https://api.example.com/users\"","fetchSnippet":"fetch(\"https://api.example.com/users\", {\n  method: \"POST\",\n  headers: {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer abc123\"\n  }\n})\n  .then((response) => response.json())\n  .then((data) => console.log(data));"},"credits_used":5,"credits_remaining":null}},"simple_get_with_accept":{"summary":"Simple GET with Accept","value":{"tool":"http-request-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Accept: application/json","curlCommand":"curl -X GET -H \"Accept: application/json\" \"https://api.example.com/status\"","fetchSnippet":"fetch(\"https://api.example.com/status\", {\n  method: \"GET\",\n  headers: {\n    \"Accept\": \"application/json\"\n  }\n})\n  .then((response) => response.json())\n  .then((data) => console.log(data));"},"credits_used":5,"credits_remaining":null}},"delete_skipping_malformed_lines":{"summary":"DELETE skipping malformed lines","value":{"tool":"http-request-header-builder","tool_version":"1.0.2","outputs":{"headerOutput":"Authorization: Bearer xyz\nAccept: application/json","curlCommand":"curl -X DELETE -H \"Authorization: Bearer xyz\" -H \"Accept: application/json\" \"https://api.example.com/items/42\"","fetchSnippet":"fetch(\"https://api.example.com/items/42\", {\n  method: \"DELETE\",\n  headers: {\n    \"Authorization\": \"Bearer xyz\",\n    \"Accept\": \"application/json\"\n  }\n})\n  .then((response) => response.json())\n  .then((data) => console.log(data));"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"headerOutput":{"type":"string","description":"Header Block"},"curlCommand":{"type":"string","description":"curl Command"},"fetchSnippet":{"type":"string","description":"JavaScript fetch()"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ics-calendar-event-generator":{"post":{"operationId":"run_ics_calendar_event_generator","summary":"ICS Calendar Event Generator","tags":["Generators"],"description":"Generate a downloadable .ics (iCalendar / RFC 5545) file from event details — title, start and end date-time, all-day toggle, location, description, timezone and organizer. Import the result into Google Calendar, Outlook, or Apple Calendar. Runs entirely in your browser.\n\n[Try ICS Calendar Event Generator in your browser →](https://iotools.cloud/tool/ics-calendar-event-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Event Title"},"description":{"type":"string","description":"Description"},"location":{"type":"string","description":"Location"},"allDay":{"type":"boolean","description":"All-day event"},"startDate":{"type":"string","description":"Start Date"},"startTime":{"type":"string","description":"Start Time"},"endDate":{"type":"string","description":"End Date"},"endTime":{"type":"string","description":"End Time"},"timezone":{"enum":["floating","UTC","America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Sao_Paulo","Europe/London","Europe/Paris","Europe/Berlin","Europe/Madrid","Europe/Moscow","Africa/Cairo","Asia/Dubai","Asia/Kolkata","Asia/Singapore","Asia/Ho_Chi_Minh","Asia/Shanghai","Asia/Tokyo","Australia/Sydney","Pacific/Auckland"],"description":"Timezone"},"organizerEmail":{"type":"string","description":"Organizer Email"}},"required":["title","startDate","endDate"]},"examples":{"timed_meeting_utc_with_location_description":{"summary":"Timed meeting (UTC) with location & description","value":{"title":"Team Standup","description":"Daily sync; bring blockers.","location":"Room 4B, HQ","allDay":"","startDate":"2026-03-16","startTime":"09:00","endDate":"2026-03-16","endTime":"09:30","timezone":"UTC","organizerEmail":"jane@example.com"}},"all_day_event_single_day":{"summary":"All-day event (single day)","value":{"title":"Company Holiday","description":"","location":"","allDay":"true","startDate":"2026-07-04","endDate":"2026-07-04","timezone":"floating","organizerEmail":""}},"floating_time_in_a_named_timezone":{"summary":"Floating time in a named timezone","value":{"title":"Project Kickoff","description":"Agenda: goals; timeline; owners.","location":"","allDay":"","startDate":"2026-05-09","startTime":"14:30","endDate":"2026-05-09","endTime":"16:00","timezone":"Europe/Paris","organizerEmail":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"timed_meeting_utc_with_location_description":{"summary":"Timed meeting (UTC) with location & description","value":{"tool":"ics-calendar-event-generator","tool_version":"1.0.2","outputs":{"icsOutput":"BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//iotools.cloud//ICS Calendar Event Generator//EN\r\nCALSCALE:GREGORIAN\r\nMETHOD:PUBLISH\r\nBEGIN:VEVENT\r\nUID:team-standup-20260316T090000@iotools.cloud\r\nDTSTAMP:20260316T090000Z\r\nDTSTART:20260316T090000Z\r\nDTEND:20260316T093000Z\r\nSUMMARY:Team Standup\r\nDESCRIPTION:Daily sync\\; bring blockers.\r\nLOCATION:Room 4B\\, HQ\r\nORGANIZER:mailto:jane@example.com\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"},"credits_used":5,"credits_remaining":null}},"all_day_event_single_day":{"summary":"All-day event (single day)","value":{"tool":"ics-calendar-event-generator","tool_version":"1.0.2","outputs":{"icsOutput":"BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//iotools.cloud//ICS Calendar Event Generator//EN\r\nCALSCALE:GREGORIAN\r\nMETHOD:PUBLISH\r\nBEGIN:VEVENT\r\nUID:company-holiday-20260704@iotools.cloud\r\nDTSTAMP:20260704T000000Z\r\nDTSTART;VALUE=DATE:20260704\r\nDTEND;VALUE=DATE:20260705\r\nSUMMARY:Company Holiday\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"},"credits_used":5,"credits_remaining":null}},"floating_time_in_a_named_timezone":{"summary":"Floating time in a named timezone","value":{"tool":"ics-calendar-event-generator","tool_version":"1.0.2","outputs":{"icsOutput":"BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//iotools.cloud//ICS Calendar Event Generator//EN\r\nCALSCALE:GREGORIAN\r\nMETHOD:PUBLISH\r\nBEGIN:VEVENT\r\nUID:project-kickoff-20260509T143000@iotools.cloud\r\nDTSTAMP:20260509T143000Z\r\nDTSTART;TZID=Europe/Paris:20260509T143000\r\nDTEND;TZID=Europe/Paris:20260509T160000\r\nSUMMARY:Project Kickoff\r\nDESCRIPTION:Agenda: goals\\; timeline\\; owners.\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"icsOutput":{"type":"string","description":"Generated .ics"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-caption-generator":{"post":{"operationId":"run_image_caption_generator","summary":"Image Caption Generator","tags":["Generators"],"description":"Generate an AI caption for an uploaded photo — pick a descriptive, social-media, SEO/alt-text, or one-phrase style.\n\n[Try Image Caption Generator in your browser →](https://iotools.cloud/tool/image-caption-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":16,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"},"style":{"enum":["descriptive","social","alt-text","concise"],"description":"Caption style"}},"required":["file"]},"examples":{"descriptive_caption":{"summary":"Descriptive caption","value":{"file":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=","style":"descriptive"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"caption":{"type":"string","description":"Caption"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-placeholder-generator":{"post":{"operationId":"run_image_placeholder_generator","summary":"Image Placeholder Generator","tags":["Generators"],"description":"Generate a placeholder image as scalable SVG — a solid or gradient background with centered dimension text or your own custom text, plus an optional border.\n\n[Try Image Placeholder Generator in your browser →](https://iotools.cloud/tool/image-placeholder-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"width":{"type":"number","description":"Width","minimum":1,"maximum":4000},"height":{"type":"number","description":"Height","minimum":1,"maximum":4000},"bgType":{"enum":["solid","gradient"],"description":"Type"},"bgColor":{"type":"string","description":"Color"},"gradientStart":{"type":"string","description":"Start"},"gradientEnd":{"type":"string","description":"End"},"gradientAngle":{"type":"number","description":"Angle (deg)","minimum":0,"maximum":360},"customText":{"type":"boolean","description":"Use custom text"},"text":{"type":"string","description":"Text"},"textColor":{"type":"string","description":"Text color"},"fontSize":{"type":"number","description":"Font size","minimum":8,"maximum":200},"showBorder":{"type":"boolean","description":"Show border"},"borderColor":{"type":"string","description":"Border color"},"borderWidth":{"type":"number","description":"Border width","minimum":1,"maximum":40}},"required":[]},"examples":{"default_dimensions_as_text":{"summary":"Default dimensions as text","value":{"width":"800","height":"600","bgType":"solid","bgColor":"#cccccc","gradientStart":"#667eea","gradientEnd":"#764ba2","gradientAngle":"135","customText":"","text":"","textColor":"#666666","fontSize":"48","showBorder":"","borderColor":"#999999","borderWidth":"4"}},"custom_text_on_a_gradient_with_a_border":{"summary":"Custom text on a gradient with a border","value":{"width":"400","height":"300","bgType":"gradient","bgColor":"#cccccc","gradientStart":"#667eea","gradientEnd":"#764ba2","gradientAngle":"135","customText":"true","text":"Hero image","textColor":"#ffffff","fontSize":"32","showBorder":"true","borderColor":"#222222","borderWidth":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_dimensions_as_text":{"summary":"Default dimensions as text","value":{"tool":"image-placeholder-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\" viewBox=\"0 0 800 600\"><rect width=\"800\" height=\"600\" fill=\"#cccccc\"/><text x=\"400\" y=\"300\" fill=\"#666666\" font-family=\"Arial, Helvetica, sans-serif\" font-size=\"48\" font-weight=\"bold\" text-anchor=\"middle\" dominant-baseline=\"middle\">800 × 600</text></svg>"},"credits_used":5,"credits_remaining":null}},"custom_text_on_a_gradient_with_a_border":{"summary":"Custom text on a gradient with a border","value":{"tool":"image-placeholder-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400\" height=\"300\" viewBox=\"0 0 400 300\"><defs><linearGradient id=\"bg\" x1=\"0.1464466094067262\" y1=\"0.14644660940672627\" x2=\"0.8535533905932737\" y2=\"0.8535533905932737\"><stop offset=\"0%\" stop-color=\"#667eea\"/><stop offset=\"100%\" stop-color=\"#764ba2\"/></linearGradient></defs><rect width=\"400\" height=\"300\" fill=\"url(#bg)\"/><text x=\"200\" y=\"150\" fill=\"#ffffff\" font-family=\"Arial, Helvetica, sans-serif\" font-size=\"32\" font-weight=\"bold\" text-anchor=\"middle\" dominant-baseline=\"middle\">Hero image</text><rect x=\"3\" y=\"3\" width=\"394\" height=\"294\" fill=\"none\" stroke=\"#222222\" stroke-width=\"6\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/imei-number-generator":{"post":{"operationId":"run_imei_number_generator","summary":"IMEI Number Generator","tags":["Generators"],"description":"Generate synthetic, Luhn-valid 15-digit IMEI numbers for QA and testing - test databases, form validation and mock device records. Pick a manufacturer (or Random) and how many to produce. Not real device identifiers.\n\n[Try IMEI Number Generator in your browser →](https://iotools.cloud/tool/imei-number-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"manufacturer":{"enum":["random","apple","samsung","huawei","google","xiaomi","oneplus"],"description":"Manufacturer"},"quantity":{"type":"number","description":"How many to generate","minimum":1,"maximum":50}},"required":[]},"examples":{"5_random_imeis":{"summary":"5 random IMEIs","value":{"manufacturer":"random","quantity":"5"}},"3_apple_imeis":{"summary":"3 Apple IMEIs","value":{"manufacturer":"apple","quantity":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated IMEI Numbers"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/imessage-chat-generator":{"post":{"operationId":"run_imessage_chat_generator","summary":"iMessage Chat Generator","tags":["Generators"],"description":"Generate a fake iMessage conversation screenshot — blue or green bubbles, contact name, avatar, date separators and a Delivered receipt — from a simple line-by-line script, and download it as SVG.\n\n[Try iMessage Chat Generator in your browser →](https://iotools.cloud/tool/imessage-chat-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"contact":{"type":"string","description":"Contact name"},"avatar":{"type":"string","contentEncoding":"base64","description":"Contact photo"},"script":{"type":"string","description":"Conversation"},"bubble":{"enum":["imessage","sms"],"description":"Message type"},"theme":{"enum":["light","dark"],"description":"Appearance"},"statusTime":{"type":"string","description":"Status bar time"},"placeholder":{"type":"string","description":"Input bar text"},"delivered":{"type":"boolean","description":"Show Delivered under the last sent message"},"scrollPercent":{"type":"number","description":"Scroll position","minimum":0,"maximum":100}},"required":[]},"examples":{"blue_imessage_light_mode":{"summary":"Blue iMessage, light mode","value":{"contact":"Alex","script":"--- Today 9:41 AM\nthem: Are we still on for tonight?\nme: Yes! 8pm, usual place\nme: I'll book the table now\nthem: Perfect","bubble":"imessage","theme":"light","statusTime":"9:41","placeholder":"","delivered":""}},"green_sms_dark_mode_hostile_characters":{"summary":"Green SMS, dark mode, hostile characters","value":{"contact":"<script>alert(\"x\")</script>","script":"them: 5 < 6 & \"quoted\" 'single'\nme: <b>bold?</b> | 21:07","bubble":"sms","theme":"dark","statusTime":"21:07","placeholder":"Message","delivered":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"blue_imessage_light_mode":{"summary":"Blue iMessage, light mode","value":{"tool":"imessage-chat-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>iMessage conversation with Alex</title><rect width=\"390\" height=\"844\" fill=\"#ffffff\"/><clipPath id=\"imsgScroll\"><rect x=\"0\" y=\"140\" width=\"390\" height=\"608\"/></clipPath><g clip-path=\"url(#imsgScroll)\"><text x=\"195\" y=\"168\" text-anchor=\"middle\" font-size=\"12\" fill=\"#8e8e93\"><tspan font-weight=\"700\">Today</tspan> 9:41 AM</text><path d=\"M17 219c0 6-3 11-8 14c8 1 15-2 20-6z\" fill=\"#e9e9eb\"/><rect x=\"16\" y=\"196\" width=\"240.52\" height=\"35\" rx=\"17.5\" fill=\"#e9e9eb\"/><text x=\"30\" y=\"218\" font-size=\"16.5\" fill=\"#000000\" xml:space=\"preserve\">Are we still on for tonight?</text><rect x=\"186.61\" y=\"243\" width=\"187.39\" height=\"35\" rx=\"17.5\" fill=\"#0a7cff\"/><text x=\"200.61\" y=\"265\" font-size=\"16.5\" fill=\"#ffffff\" xml:space=\"preserve\">Yes! 8pm, usual place</text><path d=\"M373 305c0 6 3 11 8 14c-8 1-15-2-20-6z\" fill=\"#0a7cff\"/><rect x=\"171.43\" y=\"282\" width=\"202.57\" height=\"35\" rx=\"17.5\" fill=\"#0a7cff\"/><text x=\"185.43\" y=\"304\" font-size=\"16.5\" fill=\"#ffffff\" xml:space=\"preserve\">I&apos;ll book the table now</text><path d=\"M17 352c0 6-3 11-8 14c8 1 15-2 20-6z\" fill=\"#e9e9eb\"/><rect x=\"16\" y=\"329\" width=\"81.13\" height=\"35\" rx=\"17.5\" fill=\"#e9e9eb\"/><text x=\"30\" y=\"351\" font-size=\"16.5\" fill=\"#000000\" xml:space=\"preserve\">Perfect</text></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"140\" fill=\"#f7f7f8\"/><path d=\"M26 74l-9 9 9 9\" fill=\"none\" stroke=\"#0a7cff\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"195\" cy=\"75\" r=\"25\" fill=\"#c7c7cc\"/><text x=\"195\" y=\"83.5\" text-anchor=\"middle\" font-size=\"21\" font-weight=\"600\" fill=\"#ffffff\">A</text><text x=\"195\" y=\"118\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"#000000\">Alex</text><line x1=\"0\" y1=\"140\" x2=\"390\" y2=\"140\" stroke=\"#d6d6da\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#000000\">9:41</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#000000\"/><g fill=\"none\" stroke=\"#000000\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#000000\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#000000\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#000000\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#000000\" fill-opacity=\"0.35\"/><line x1=\"0\" y1=\"764\" x2=\"390\" y2=\"764\" stroke=\"#d6d6da\"/><circle cx=\"30\" cy=\"792\" r=\"15\" fill=\"#e9e9eb\"/><path d=\"M30 785v14M23 792h14\" stroke=\"#8e8e93\" stroke-width=\"2\" stroke-linecap=\"round\"/><rect x=\"54\" y=\"775\" width=\"320\" height=\"34\" rx=\"17\" fill=\"#ffffff\" stroke=\"#d6d6da\"/><text x=\"68\" y=\"797\" font-size=\"15\" fill=\"#8e8e93\">iMessage</text><circle cx=\"357\" cy=\"792\" r=\"13\" fill=\"#d6d6da\"/><path d=\"M357 797v-10m-5 5 5-5 5 5\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#000000\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}},"green_sms_dark_mode_hostile_characters":{"summary":"Green SMS, dark mode, hostile characters","value":{"tool":"imessage-chat-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>iMessage conversation with &lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</title><rect width=\"390\" height=\"844\" fill=\"#000000\"/><clipPath id=\"imsgScroll\"><rect x=\"0\" y=\"140\" width=\"390\" height=\"608\"/></clipPath><g clip-path=\"url(#imsgScroll)\"><path d=\"M17 181c0 6-3 11-8 14c8 1 15-2 20-6z\" fill=\"#26252a\"/><rect x=\"16\" y=\"158\" width=\"217.75\" height=\"35\" rx=\"17.5\" fill=\"#26252a\"/><text x=\"30\" y=\"180\" font-size=\"16.5\" fill=\"#ffffff\" xml:space=\"preserve\">5 &lt; 6 &amp; &quot;quoted&quot; &apos;single&apos;</text><path d=\"M373 228c0 6 3 11 8 14c-8 1-15-2-20-6z\" fill=\"#34c759\"/><rect x=\"254.92\" y=\"205\" width=\"119.08\" height=\"35\" rx=\"17.5\" fill=\"#34c759\"/><text x=\"268.92\" y=\"227\" font-size=\"16.5\" fill=\"#ffffff\" xml:space=\"preserve\">&lt;b&gt;bold?&lt;/b&gt;</text><text x=\"372\" y=\"254\" text-anchor=\"end\" font-size=\"11\" fill=\"#98989f\">Delivered</text></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"140\" fill=\"#1c1c1e\"/><path d=\"M26 74l-9 9 9 9\" fill=\"none\" stroke=\"#0a7cff\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"195\" cy=\"75\" r=\"25\" fill=\"#48484a\"/><text x=\"195\" y=\"83.5\" text-anchor=\"middle\" font-size=\"21\" font-weight=\"600\" fill=\"#ffffff\">&lt;</text><text x=\"195\" y=\"118\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"#ffffff\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</text><line x1=\"0\" y1=\"140\" x2=\"390\" y2=\"140\" stroke=\"#38383a\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#ffffff\">21:07</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#ffffff\"/><g fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#ffffff\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#ffffff\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#ffffff\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><line x1=\"0\" y1=\"764\" x2=\"390\" y2=\"764\" stroke=\"#38383a\"/><circle cx=\"30\" cy=\"792\" r=\"15\" fill=\"#26252a\"/><path d=\"M30 785v14M23 792h14\" stroke=\"#98989f\" stroke-width=\"2\" stroke-linecap=\"round\"/><rect x=\"54\" y=\"775\" width=\"320\" height=\"34\" rx=\"17\" fill=\"#1c1c1e\" stroke=\"#38383a\"/><text x=\"68\" y=\"797\" font-size=\"15\" fill=\"#98989f\">Message</text><circle cx=\"357\" cy=\"792\" r=\"13\" fill=\"#38383a\"/><path d=\"M357 797v-10m-5 5 5-5 5 5\" fill=\"none\" stroke=\"#1c1c1e\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#ffffff\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/instagram-dm-generator":{"post":{"operationId":"run_instagram_dm_generator","summary":"Instagram DM Generator","tags":["Generators"],"description":"Generate a fake Instagram DM screenshot — username, activity status, profile photo, gradient message bubbles, emoji reactions, typing indicator and a Seen receipt — from a simple line-by-line script, and download it as SVG.\n\n[Try Instagram DM Generator in your browser →](https://iotools.cloud/tool/instagram-dm-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Username"},"activity":{"type":"string","description":"Activity line"},"avatar":{"type":"string","contentEncoding":"base64","description":"Profile photo"},"script":{"type":"string","description":"Conversation"},"theme":{"enum":["light","dark"],"description":"Appearance"},"bubble":{"enum":["gradient","blue","grey"],"description":"Your bubble colour"},"receipt":{"enum":["seen","delivered","sent","none"],"description":"Receipt on your last message"},"activeDot":{"type":"boolean","description":"Green active dot on the profile photo"},"typing":{"type":"boolean","description":"Show typing indicator"},"statusTime":{"type":"string","description":"Status bar time"},"placeholder":{"type":"string","description":"Input bar text"},"scrollPercent":{"type":"number","description":"Scroll position","minimum":0,"maximum":100}},"required":[]},"examples":{"light_mode_gradient_bubbles_reaction_seen":{"summary":"Light mode, gradient bubbles, reaction + Seen","value":{"username":"alexmorgan","activity":"Active 2h ago","script":"--- TODAY 09:12\nthem: Did you see the new post? ^❤️\nme: Just liked it\nme: The second shot is unreal | 09:14","theme":"light","bubble":"gradient","receipt":"seen","activeDot":"true","typing":"","statusTime":"9:41","placeholder":""}},"dark_mode_blue_bubbles_typing_indicator_hostile_characters":{"summary":"Dark mode, blue bubbles, typing indicator, hostile characters","value":{"username":"<script>alert(\"x\")</script>","activity":"Active now","script":"them: 5 < 6 & \"quoted\" 'single'\nme: <b>bold?</b> | 21:07","theme":"dark","bubble":"blue","receipt":"none","activeDot":"","typing":"true","statusTime":"21:07","placeholder":"Message…"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"light_mode_gradient_bubbles_reaction_seen":{"summary":"Light mode, gradient bubbles, reaction + Seen","value":{"tool":"instagram-dm-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram direct messages with alexmorgan</title><defs><linearGradient id=\"igOut\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#4f5bd5\"/><stop offset=\"1\" stop-color=\"#962fbf\"/></linearGradient></defs><rect width=\"390\" height=\"844\" fill=\"#ffffff\"/><clipPath id=\"igScroll\"><rect x=\"0\" y=\"104\" width=\"390\" height=\"642\"/></clipPath><g clip-path=\"url(#igScroll)\"><g transform=\"translate(0 417)\"><text x=\"195\" y=\"130\" text-anchor=\"middle\" font-size=\"12\" font-weight=\"600\" fill=\"#8e8e8e\">TODAY 09:12</text><rect x=\"44\" y=\"158\" width=\"198.5\" height=\"35\" rx=\"17.5\" fill=\"#efefef\"/><circle cx=\"24\" cy=\"175.5\" r=\"12\" fill=\"#c7c7c7\"/><text x=\"24\" y=\"179.58\" text-anchor=\"middle\" font-size=\"10.08\" font-weight=\"600\" fill=\"#ffffff\">A</text><text x=\"57\" y=\"179\" font-size=\"15\" fill=\"#000000\" xml:space=\"preserve\">Did you see the new post?</text><text x=\"213.25\" y=\"198\" text-anchor=\"middle\" font-size=\"13\">❤️</text><rect x=\"262.3\" y=\"219\" width=\"115.7\" height=\"35\" rx=\"17.5\" fill=\"url(#igOut)\"/><text x=\"275.3\" y=\"240\" font-size=\"15\" fill=\"#ffffff\" xml:space=\"preserve\">Just liked it</text><rect x=\"179.5\" y=\"258\" width=\"198.5\" height=\"35\" rx=\"17.5\" fill=\"url(#igOut)\"/><text x=\"192.5\" y=\"279\" font-size=\"15\" fill=\"#ffffff\" xml:space=\"preserve\">The second shot is unreal</text><text x=\"378\" y=\"307\" text-anchor=\"end\" font-size=\"11\" fill=\"#8e8e8e\">09:14</text><text x=\"378\" y=\"325\" text-anchor=\"end\" font-size=\"11\" fill=\"#8e8e8e\">Seen</text></g></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"104\" fill=\"#ffffff\"/><path d=\"M26 66l-8 8 8 8\" fill=\"none\" stroke=\"#000000\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"59\" cy=\"74\" r=\"17\" fill=\"#c7c7c7\"/><text x=\"59\" y=\"79.78\" text-anchor=\"middle\" font-size=\"14.28\" font-weight=\"600\" fill=\"#ffffff\">A</text><circle cx=\"72\" cy=\"87\" r=\"5.5\" fill=\"#4bd964\" stroke=\"#ffffff\" stroke-width=\"2\"/><text x=\"86\" y=\"73\" font-size=\"15.5\" font-weight=\"600\" fill=\"#000000\">alexmorgan</text><text x=\"86\" y=\"88\" font-size=\"12\" fill=\"#8e8e8e\">Active 2h ago</text><g fill=\"none\" stroke=\"#000000\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M351 65c-2 0-4 2-4 4 0 7 5 12 12 12 2 0 4-2 4-4l-4-2-2 2c-3-1-5-3-6-6l2-2z\"/><rect x=\"307\" y=\"67\" width=\"15\" height=\"14\" rx=\"4\"/><path d=\"M322 72l7-4.5v13l-7-4.5z\"/></g><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#000000\">9:41</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#000000\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#000000\"/><g fill=\"none\" stroke=\"#000000\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#000000\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#000000\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#000000\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#000000\" fill-opacity=\"0.35\"/><rect x=\"0\" y=\"762\" width=\"390\" height=\"58\" fill=\"#ffffff\"/><line x1=\"0\" y1=\"762\" x2=\"390\" y2=\"762\" stroke=\"#dbdbdb\"/><circle cx=\"30\" cy=\"791\" r=\"16\" fill=\"url(#igOut)\"/><g fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 788h4l1.5-2.5h5L34 788h4v9h-17z\"/><circle cx=\"30\" cy=\"792.5\" r=\"3.2\"/></g><rect x=\"52\" y=\"772\" width=\"324\" height=\"38\" rx=\"19\" fill=\"#ffffff\" stroke=\"#dbdbdb\"/><text x=\"70\" y=\"796\" font-size=\"15\" fill=\"#8e8e8e\">Message…</text><g fill=\"none\" stroke=\"#000000\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"297.5\" y=\"782\" width=\"7\" height=\"11\" rx=\"3.5\"/><path d=\"M295 790a6 6 0 0 0 12 0M301 796v3\"/><rect x=\"318.5\" y=\"783\" width=\"17\" height=\"15\" rx=\"4\"/><path d=\"M320.5 795l5-6 4 4 2-2 4 4\"/><circle cx=\"353\" cy=\"791\" r=\"8.5\"/><path d=\"M349 792.5a4.5 4.5 0 0 0 8 0\"/></g><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#000000\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}},"dark_mode_blue_bubbles_typing_indicator_hostile_characters":{"summary":"Dark mode, blue bubbles, typing indicator, hostile characters","value":{"tool":"instagram-dm-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram direct messages with &lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</title><defs><linearGradient id=\"igOut\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#4f5bd5\"/><stop offset=\"1\" stop-color=\"#962fbf\"/></linearGradient></defs><rect width=\"390\" height=\"844\" fill=\"#000000\"/><clipPath id=\"igScroll\"><rect x=\"0\" y=\"104\" width=\"390\" height=\"642\"/></clipPath><g clip-path=\"url(#igScroll)\"><g transform=\"translate(0 482)\"><rect x=\"44\" y=\"118\" width=\"198.5\" height=\"35\" rx=\"17.5\" fill=\"#262626\"/><circle cx=\"24\" cy=\"135.5\" r=\"12\" fill=\"#3a3a3a\"/><text x=\"24\" y=\"139.58\" text-anchor=\"middle\" font-size=\"10.08\" font-weight=\"600\" fill=\"#ffffff\">&lt;</text><text x=\"57\" y=\"139\" font-size=\"15\" fill=\"#f5f5f5\" xml:space=\"preserve\">5 &lt; 6 &amp; &quot;quoted&quot; &apos;single&apos;</text><rect x=\"269.2\" y=\"165\" width=\"108.8\" height=\"35\" rx=\"17.5\" fill=\"#3797f0\"/><text x=\"282.2\" y=\"186\" font-size=\"15\" fill=\"#ffffff\" xml:space=\"preserve\">&lt;b&gt;bold?&lt;/b&gt;</text><text x=\"378\" y=\"214\" text-anchor=\"end\" font-size=\"11\" fill=\"#a8a8a8\">21:07</text><rect x=\"44\" y=\"230\" width=\"66\" height=\"34\" rx=\"17\" fill=\"#262626\"/><circle cx=\"67\" cy=\"247\" r=\"3.4\" fill=\"#a8a8a8\"/><circle cx=\"77\" cy=\"247\" r=\"3.4\" fill=\"#a8a8a8\"/><circle cx=\"87\" cy=\"247\" r=\"3.4\" fill=\"#a8a8a8\"/></g></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"104\" fill=\"#000000\"/><path d=\"M26 66l-8 8 8 8\" fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"59\" cy=\"74\" r=\"17\" fill=\"#3a3a3a\"/><text x=\"59\" y=\"79.78\" text-anchor=\"middle\" font-size=\"14.28\" font-weight=\"600\" fill=\"#ffffff\">&lt;</text><text x=\"86\" y=\"73\" font-size=\"15.5\" font-weight=\"600\" fill=\"#f5f5f5\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</text><text x=\"86\" y=\"88\" font-size=\"12\" fill=\"#a8a8a8\">Active now</text><g fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M351 65c-2 0-4 2-4 4 0 7 5 12 12 12 2 0 4-2 4-4l-4-2-2 2c-3-1-5-3-6-6l2-2z\"/><rect x=\"307\" y=\"67\" width=\"15\" height=\"14\" rx=\"4\"/><path d=\"M322 72l7-4.5v13l-7-4.5z\"/></g><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#f5f5f5\">21:07</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#f5f5f5\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#f5f5f5\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#f5f5f5\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#f5f5f5\"/><g fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#f5f5f5\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#f5f5f5\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#f5f5f5\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#f5f5f5\" fill-opacity=\"0.35\"/><rect x=\"0\" y=\"762\" width=\"390\" height=\"58\" fill=\"#000000\"/><line x1=\"0\" y1=\"762\" x2=\"390\" y2=\"762\" stroke=\"#262626\"/><circle cx=\"30\" cy=\"791\" r=\"16\" fill=\"url(#igOut)\"/><g fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 788h4l1.5-2.5h5L34 788h4v9h-17z\"/><circle cx=\"30\" cy=\"792.5\" r=\"3.2\"/></g><rect x=\"52\" y=\"772\" width=\"324\" height=\"38\" rx=\"19\" fill=\"#000000\" stroke=\"#262626\"/><text x=\"70\" y=\"796\" font-size=\"15\" fill=\"#a8a8a8\">Message…</text><g fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"297.5\" y=\"782\" width=\"7\" height=\"11\" rx=\"3.5\"/><path d=\"M295 790a6 6 0 0 0 12 0M301 796v3\"/><rect x=\"318.5\" y=\"783\" width=\"17\" height=\"15\" rx=\"4\"/><path d=\"M320.5 795l5-6 4 4 2-2 4 4\"/><circle cx=\"353\" cy=\"791\" r=\"8.5\"/><path d=\"M349 792.5a4.5 4.5 0 0 0 8 0\"/></g><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#f5f5f5\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/instagram-post-generator":{"post":{"operationId":"run_instagram_post_generator","summary":"Instagram Post Generator","tags":["Generators"],"description":"Generate a fake Instagram post image — profile row with story ring and verified badge, your photo at a real feed ratio, like and comment counts, caption with tinted hashtags, in light or dark mode — and download it as SVG.\n\n[Try Instagram Post Generator in your browser →](https://iotools.cloud/tool/instagram-post-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Username"},"verified":{"type":"boolean","description":"Verified account"},"location":{"type":"string","description":"Location"},"avatar":{"type":"string","contentEncoding":"base64","description":"Profile photo"},"photo":{"type":"string","contentEncoding":"base64","description":"Post photo"},"caption":{"type":"string","description":"Caption"},"ratio":{"enum":["square","portrait","landscape"],"description":"Photo ratio"},"theme":{"enum":["light","dark"],"description":"Appearance"},"likes":{"type":"number","description":"Likes","minimum":0},"comments":{"type":"number","description":"Comments","minimum":0},"timeAgo":{"type":"string","description":"Timestamp"},"liked":{"type":"boolean","description":"Already liked (red heart)"},"saved":{"type":"boolean","description":"Already saved (filled bookmark)"},"storyRing":{"type":"boolean","description":"Story ring around the profile photo"}},"required":[]},"examples":{"square_photo_light_mode_verified":{"summary":"Square photo, light mode, verified","value":{"username":"alexmorgan","verified":"true","location":"Lisbon, Portugal","caption":"Golden hour on the last day #travel #goldenhour with @sam","ratio":"square","theme":"light","likes":"1284","comments":"38","timeAgo":"2 hours ago","liked":"true","saved":"","storyRing":"true"}},"portrait_dark_mode_hostile_characters":{"summary":"Portrait, dark mode, hostile characters","value":{"username":"<script>alert(\"x\")</script>","verified":"","location":"","caption":"5 < 6 & \"quoted\" 'single'","ratio":"portrait","theme":"dark","likes":"0","comments":"0","timeAgo":"","liked":"","saved":"true","storyRing":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"square_photo_light_mode_verified":{"summary":"Square photo, light mode, verified","value":{"tool":"instagram-post-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"600\" viewBox=\"0 0 390 600\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram post by alexmorgan</title><defs><linearGradient id=\"igRing\" x1=\"0\" y1=\"1\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#f09433\"/><stop offset=\"0.5\" stop-color=\"#dc2743\"/><stop offset=\"1\" stop-color=\"#bc1888\"/></linearGradient><linearGradient id=\"igPhoto\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#f1f1f1\"/><stop offset=\"1\" stop-color=\"#dcdcdc\"/></linearGradient></defs><rect width=\"390\" height=\"600\" fill=\"#ffffff\"/><circle cx=\"31\" cy=\"28\" r=\"16\" fill=\"none\" stroke=\"url(#igRing)\" stroke-width=\"2\"/><circle cx=\"31\" cy=\"28\" r=\"14\" fill=\"#c7c7c7\"/><text x=\"31\" y=\"32.76\" text-anchor=\"middle\" font-size=\"11.76\" font-weight=\"600\" fill=\"#ffffff\">A</text><text x=\"58\" y=\"24\" font-size=\"13.5\" font-weight=\"600\" fill=\"#000000\">alexmorgan</text><g transform=\"translate(130.5 13)\"><circle cx=\"7\" cy=\"7\" r=\"7\" fill=\"#3897f0\"/><path d=\"M4 7.2 6.2 9.4 10 5.4\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><text x=\"58\" y=\"39\" font-size=\"11.5\" fill=\"#000000\">Lisbon, Portugal</text><circle cx=\"362\" cy=\"28\" r=\"1.8\" fill=\"#000000\"/><circle cx=\"368\" cy=\"28\" r=\"1.8\" fill=\"#000000\"/><circle cx=\"374\" cy=\"28\" r=\"1.8\" fill=\"#000000\"/><rect x=\"0\" y=\"56\" width=\"390\" height=\"390\" fill=\"url(#igPhoto)\"/><g fill=\"none\" stroke=\"#9a9a9a\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"169\" y=\"231\" width=\"52\" height=\"40\" rx=\"7\"/><circle cx=\"204\" cy=\"243\" r=\"4\"/><path d=\"M171 263l14-16 10 11 5-5 21 10\"/></g><g transform=\"translate(12 457)\" fill=\"#ed4956\" stroke=\"#ed4956\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20.6 4.4 13a4.9 4.9 0 0 1 6.9-6.9l.7.7.7-.7A4.9 4.9 0 0 1 19.6 13z\"/></g><g transform=\"translate(46 457)\" fill=\"none\" stroke=\"#000000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.8 11.4a8.4 8.4 0 0 1-12.2 7.5L3.2 20.4l1.6-5.2a8.4 8.4 0 1 1 16-3.8z\"/></g><g transform=\"translate(80 457)\" fill=\"none\" stroke=\"#000000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.5 2.5 10.6 13.4M21.5 2.5l-7 19-3.9-8.1-8.1-3.9z\"/></g><g transform=\"translate(354 457)\" fill=\"none\" stroke=\"#000000\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6.5 3h11v18l-5.5-4.2L6.5 21z\"/></g><text x=\"14\" y=\"498\" font-size=\"13.5\" font-weight=\"600\" fill=\"#000000\">1,284 likes</text><text x=\"14\" y=\"519\" font-size=\"13.5\" fill=\"#000000\" xml:space=\"preserve\"><tspan font-weight=\"600\">alexmorgan</tspan> Golden hour on the last day <tspan fill=\"#00376b\">#travel</tspan> <tspan fill=\"#00376b\">#goldenhour</tspan></text><text x=\"14\" y=\"537\" font-size=\"13.5\" fill=\"#000000\" xml:space=\"preserve\">with <tspan fill=\"#00376b\">@sam</tspan></text><text x=\"14\" y=\"558\" font-size=\"13.5\" fill=\"#8e8e8e\">View all 38 comments</text><text x=\"14\" y=\"578\" font-size=\"10.5\" letter-spacing=\"0.3\" fill=\"#8e8e8e\">2 HOURS AGO</text><rect x=\"0.5\" y=\"0.5\" width=\"389\" height=\"599\" fill=\"none\" stroke=\"#dbdbdb\"/></svg>"},"credits_used":5,"credits_remaining":null}},"portrait_dark_mode_hostile_characters":{"summary":"Portrait, dark mode, hostile characters","value":{"tool":"instagram-post-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"643.5\" viewBox=\"0 0 390 643.5\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram post by &lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</title><defs><linearGradient id=\"igRing\" x1=\"0\" y1=\"1\" x2=\"1\" y2=\"0\"><stop offset=\"0\" stop-color=\"#f09433\"/><stop offset=\"0.5\" stop-color=\"#dc2743\"/><stop offset=\"1\" stop-color=\"#bc1888\"/></linearGradient><linearGradient id=\"igPhoto\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#1c1c1c\"/><stop offset=\"1\" stop-color=\"#2e2e2e\"/></linearGradient></defs><rect width=\"390\" height=\"643.5\" fill=\"#000000\"/><circle cx=\"31\" cy=\"28\" r=\"17\" fill=\"#3a3a3a\"/><text x=\"31\" y=\"33.78\" text-anchor=\"middle\" font-size=\"14.28\" font-weight=\"600\" fill=\"#ffffff\">&lt;</text><text x=\"58\" y=\"32\" font-size=\"13.5\" font-weight=\"600\" fill=\"#f5f5f5\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</text><circle cx=\"362\" cy=\"28\" r=\"1.8\" fill=\"#f5f5f5\"/><circle cx=\"368\" cy=\"28\" r=\"1.8\" fill=\"#f5f5f5\"/><circle cx=\"374\" cy=\"28\" r=\"1.8\" fill=\"#f5f5f5\"/><rect x=\"0\" y=\"56\" width=\"390\" height=\"487.5\" fill=\"url(#igPhoto)\"/><g fill=\"none\" stroke=\"#9a9a9a\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"169\" y=\"279.75\" width=\"52\" height=\"40\" rx=\"7\"/><circle cx=\"204\" cy=\"291.75\" r=\"4\"/><path d=\"M171 311.75l14-16 10 11 5-5 21 10\"/></g><g transform=\"translate(12 554.5)\" fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20.6 4.4 13a4.9 4.9 0 0 1 6.9-6.9l.7.7.7-.7A4.9 4.9 0 0 1 19.6 13z\"/></g><g transform=\"translate(46 554.5)\" fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.8 11.4a8.4 8.4 0 0 1-12.2 7.5L3.2 20.4l1.6-5.2a8.4 8.4 0 1 1 16-3.8z\"/></g><g transform=\"translate(80 554.5)\" fill=\"none\" stroke=\"#f5f5f5\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.5 2.5 10.6 13.4M21.5 2.5l-7 19-3.9-8.1-8.1-3.9z\"/></g><g transform=\"translate(354 554.5)\" fill=\"#f5f5f5\" stroke=\"#f5f5f5\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6.5 3h11v18l-5.5-4.2L6.5 21z\"/></g><text x=\"14\" y=\"595.5\" font-size=\"13.5\" font-weight=\"600\" fill=\"#f5f5f5\">0 likes</text><text x=\"14\" y=\"616.5\" font-size=\"13.5\" fill=\"#f5f5f5\" xml:space=\"preserve\"><tspan font-weight=\"600\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</tspan> 5 &lt; 6 &amp; &quot;quoted&quot; &apos;single&apos;</text><rect x=\"0.5\" y=\"0.5\" width=\"389\" height=\"642.5\" fill=\"none\" stroke=\"#262626\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/instagram-square-gif":{"post":{"operationId":"run_instagram_square_gif","summary":"Instagram Square GIF","tags":["Generators"],"description":"Pad or crop an animated GIF to a perfect 1:1 square for Instagram — every frame and delay preserved, loop optional.\n\n[Try Instagram Square GIF in your browser →](https://iotools.cloud/tool/instagram-square-gif/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"GIF"},"loop":{"type":"boolean","description":"Loop forever"},"mode":{"enum":["pad","crop"],"description":"Fit"},"background":{"type":"string","description":"Background color"}},"required":["file"]}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/instagram-story-generator":{"post":{"operationId":"run_instagram_story_generator","summary":"Instagram Story Generator","tags":["Generators"],"description":"Generate a fake Instagram Story image — segmented progress bar, profile row with verified badge, your photo or a gradient background, a styled text overlay, location and music stickers, and the reply bar — then download it as SVG.\n\n[Try Instagram Story Generator in your browser →](https://iotools.cloud/tool/instagram-story-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","description":"Username"},"verified":{"type":"boolean","description":"Verified account"},"timeAgo":{"type":"string","description":"Timestamp"},"avatar":{"type":"string","contentEncoding":"base64","description":"Profile photo"},"photo":{"type":"string","contentEncoding":"base64","description":"Story photo"},"storyText":{"type":"string","description":"Story text"},"textStyle":{"enum":["classic","modern","neon","typewriter","strong"],"description":"Text style"},"textSize":{"enum":["small","medium","large"],"description":"Text size"},"textPosition":{"enum":["top","center","bottom"],"description":"Text position"},"textAlign":{"enum":["left","center","right"],"description":"Text alignment"},"background":{"enum":["purpleOrange","sunset","ocean","forest","mono","candy"],"description":"Background gradient"},"photoFit":{"enum":["cover","contain"],"description":"Photo layout"},"storyCount":{"type":"number","description":"Stories in the set","minimum":1,"maximum":10},"activeStory":{"type":"number","description":"Segment playing","minimum":1,"maximum":10},"location":{"type":"string","description":"Location sticker"},"music":{"type":"string","description":"Music sticker"},"replyPlaceholder":{"type":"string","description":"Reply bar text"},"showReplyBar":{"type":"boolean","description":"Show the reply bar"},"showScrim":{"type":"boolean","description":"Darken top and bottom for legibility"}},"required":[]},"examples":{"gradient_story_classic_text_location_sticker":{"summary":"Gradient story, classic text, location sticker","value":{"username":"alexmorgan","verified":"true","timeAgo":"2h","storyText":"Last light on the coast","textStyle":"classic","textSize":"medium","textPosition":"center","textAlign":"center","background":"purpleOrange","photoFit":"cover","storyCount":"5","activeStory":"2","location":"Nazare, Portugal","music":"","replyPlaceholder":"Send message","showReplyBar":"true","showScrim":"true"}},"neon_text_bottom_aligned_music_sticker_hostile_characters":{"summary":"Neon text, bottom aligned, music sticker, hostile characters","value":{"username":"<script>alert(\"x\")</script>","verified":"","timeAgo":"","storyText":"5 < 6 & \"quoted\"","textStyle":"neon","textSize":"large","textPosition":"bottom","textAlign":"left","background":"ocean","photoFit":"contain","storyCount":"3","activeStory":"3","location":"","music":"Fleetwood Mac - Dreams","replyPlaceholder":"Enviar mensaje","showReplyBar":"","showScrim":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"gradient_story_classic_text_location_sticker":{"summary":"Gradient story, classic text, location sticker","value":{"tool":"instagram-story-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"640\" viewBox=\"0 0 360 640\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram story by alexmorgan</title><defs><linearGradient id=\"igsBg\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#f09433\"/><stop offset=\"0.5\" stop-color=\"#dc2743\"/><stop offset=\"1\" stop-color=\"#bc1888\"/></linearGradient><linearGradient id=\"igsTopScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#000000\" stop-opacity=\"0.45\"/><stop offset=\"1\" stop-color=\"#000000\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"igsBottomScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#000000\" stop-opacity=\"0\"/><stop offset=\"1\" stop-color=\"#000000\" stop-opacity=\"0.55\"/></linearGradient><filter id=\"igsGlow\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feGaussianBlur stdDeviation=\"3.5\"/></filter><filter id=\"igsShadow\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\"><feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"2\" flood-color=\"#000000\" flood-opacity=\"0.45\"/></filter></defs><rect width=\"360\" height=\"640\" fill=\"url(#igsBg)\"/><rect width=\"360\" height=\"150\" fill=\"url(#igsTopScrim)\"/><rect y=\"450\" width=\"360\" height=\"190\" fill=\"url(#igsBottomScrim)\"/><rect x=\"12\" y=\"7\" width=\"64.8\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"1\"/><rect x=\"79.8\" y=\"7\" width=\"64.8\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><rect x=\"79.8\" y=\"7\" width=\"35.64\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"1\"/><rect x=\"147.6\" y=\"7\" width=\"64.8\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><rect x=\"215.4\" y=\"7\" width=\"64.8\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><rect x=\"283.2\" y=\"7\" width=\"64.8\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><circle cx=\"27\" cy=\"35\" r=\"15\" fill=\"#ffffff\"/><text x=\"27\" y=\"40.1\" text-anchor=\"middle\" font-size=\"12.6\" font-weight=\"600\" fill=\"#8e8e8e\">A</text><text x=\"51\" y=\"39.5\" font-size=\"13\" font-weight=\"600\" fill=\"#ffffff\">alexmorgan</text><g transform=\"translate(121 29.5)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#3897f0\"/><path d=\"M3.4 6.2 5.3 8.1 8.6 4.6\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g><text x=\"137\" y=\"39.5\" font-size=\"12\" fill=\"#ffffff\" fill-opacity=\"0.75\">2h</text><circle cx=\"296\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><circle cx=\"301.5\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><circle cx=\"307\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><g transform=\"translate(328 27)\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M0 0 16 16M16 0 0 16\"/></g><g transform=\"translate(16 488)\"><rect width=\"130\" height=\"26\" rx=\"13\" fill=\"#000000\" fill-opacity=\"0.45\"/><g transform=\"translate(10 6)\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 13.5S9.5 9.4 9.5 5.6A4.5 4.5 0 0 0 .5 5.6C.5 9.4 5 13.5 5 13.5z\"/><circle cx=\"5\" cy=\"5.4\" r=\"1.6\"/></g><text x=\"24\" y=\"17.2\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\">Nazare, Portugal</text></g><g filter=\"url(#igsShadow)\"><text x=\"180\" y=\"326.93\" text-anchor=\"middle\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\" font-size=\"21\" font-weight=\"600\" letter-spacing=\"0\" fill=\"#ffffff\">Last light on the coast</text></g><rect x=\"12\" y=\"584\" width=\"274\" height=\"36\" rx=\"18\" fill=\"none\" stroke=\"#ffffff\" stroke-opacity=\"0.6\" stroke-width=\"1.2\"/><text x=\"28\" y=\"607\" font-size=\"12.5\" fill=\"#ffffff\" fill-opacity=\"0.85\">Send message</text><g transform=\"translate(298 592)\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 17.2 3.7 10.9a4 4 0 0 1 5.6-5.7l.7.7.7-.7a4 4 0 0 1 5.6 5.7z\"/></g><g transform=\"translate(326 592)\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M19 1 9.6 10.4M19 1l-6 16.4-3.4-7-7-3.4z\"/></g></svg>"},"credits_used":5,"credits_remaining":null}},"neon_text_bottom_aligned_music_sticker_hostile_characters":{"summary":"Neon text, bottom aligned, music sticker, hostile characters","value":{"tool":"instagram-story-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"640\" viewBox=\"0 0 360 640\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Instagram story by &lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</title><defs><linearGradient id=\"igsBg\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"#2193b0\"/><stop offset=\"0.5\" stop-color=\"#4568dc\"/><stop offset=\"1\" stop-color=\"#6dd5ed\"/></linearGradient><linearGradient id=\"igsTopScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#000000\" stop-opacity=\"0.45\"/><stop offset=\"1\" stop-color=\"#000000\" stop-opacity=\"0\"/></linearGradient><linearGradient id=\"igsBottomScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0\" stop-color=\"#000000\" stop-opacity=\"0\"/><stop offset=\"1\" stop-color=\"#000000\" stop-opacity=\"0.55\"/></linearGradient><filter id=\"igsGlow\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feGaussianBlur stdDeviation=\"3.5\"/></filter><filter id=\"igsShadow\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\"><feDropShadow dx=\"0\" dy=\"1\" stdDeviation=\"2\" flood-color=\"#000000\" flood-opacity=\"0.45\"/></filter></defs><rect width=\"360\" height=\"640\" fill=\"url(#igsBg)\"/><rect x=\"12\" y=\"7\" width=\"110\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"1\"/><rect x=\"125\" y=\"7\" width=\"110\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"1\"/><rect x=\"238\" y=\"7\" width=\"110\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><rect x=\"238\" y=\"7\" width=\"60.5\" height=\"2.5\" rx=\"1.25\" fill=\"#ffffff\" fill-opacity=\"1\"/><circle cx=\"27\" cy=\"35\" r=\"15\" fill=\"#ffffff\"/><text x=\"27\" y=\"40.1\" text-anchor=\"middle\" font-size=\"12.6\" font-weight=\"600\" fill=\"#8e8e8e\">&lt;</text><text x=\"51\" y=\"39.5\" font-size=\"13\" font-weight=\"600\" fill=\"#ffffff\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</text><circle cx=\"296\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><circle cx=\"301.5\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><circle cx=\"307\" cy=\"35\" r=\"1.7\" fill=\"#ffffff\"/><g transform=\"translate(328 27)\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M0 0 16 16M16 0 0 16\"/></g><g transform=\"translate(16 536)\"><rect width=\"166\" height=\"26\" rx=\"13\" fill=\"#000000\" fill-opacity=\"0.45\"/><g transform=\"translate(10 6)\" fill=\"#ffffff\"><path d=\"M9.4 0 3.6 1.5v8.2a2.3 2.3 0 1 0 1.3 2v-6.6l4.5-1.2z\"/></g><text x=\"24\" y=\"17.2\" font-size=\"12\" font-weight=\"600\" fill=\"#ffffff\">Fleetwood Mac - Dreams</text></g><text x=\"24\" y=\"502.48\" text-anchor=\"start\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\" font-size=\"28\" font-weight=\"700\" letter-spacing=\"0.4\" fill=\"#ff2d95\" filter=\"url(#igsGlow)\">5 &lt; 6 &amp; &quot;quoted&quot;</text><g><text x=\"24\" y=\"502.48\" text-anchor=\"start\" font-family=\"-apple-system,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',Helvetica,Arial,sans-serif\" font-size=\"28\" font-weight=\"700\" letter-spacing=\"0.4\" fill=\"#ffffff\">5 &lt; 6 &amp; &quot;quoted&quot;</text></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/invisible-character-generator":{"post":{"operationId":"run_invisible_character_generator","summary":"Invisible Character Generator","tags":["Generators"],"description":"Generate copyable invisible Unicode characters — zero-width space, word joiner, braille blank, Hangul filler and more — with an escaped preview so you can see exactly what you're copying.\n\n[Try Invisible Character Generator in your browser →](https://iotools.cloud/tool/invisible-character-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"charType":{"enum":["zwsp","zwnj","zwj","wj","bom","invsep","braille","hangul","nbsp","enspace","emspace","figspace"],"description":"Invisible character"},"count":{"type":"number","description":"How many characters","minimum":1,"maximum":100}},"required":["charType","count"]},"examples":{"three_zero_width_spaces":{"summary":"Three zero-width spaces","value":{"charType":"zwsp","count":"3"}},"five_braille_blanks":{"summary":"Five braille blanks","value":{"charType":"braille","count":"5"}},"one_no_break_space":{"summary":"One no-break space","value":{"charType":"nbsp","count":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"three_zero_width_spaces":{"summary":"Three zero-width spaces","value":{"tool":"invisible-character-generator","tool_version":"1.0.2","outputs":{"output":"​​​","preview":"\\u200B\\u200B\\u200B","info":"Zero-Width Space · U+200B · 3 characters"},"credits_used":5,"credits_remaining":null}},"five_braille_blanks":{"summary":"Five braille blanks","value":{"tool":"invisible-character-generator","tool_version":"1.0.2","outputs":{"output":"⠀⠀⠀⠀⠀","preview":"\\u2800\\u2800\\u2800\\u2800\\u2800","info":"Braille Pattern Blank · U+2800 · 5 characters"},"credits_used":5,"credits_remaining":null}},"one_no_break_space":{"summary":"One no-break space","value":{"tool":"invisible-character-generator","tool_version":"1.0.2","outputs":{"output":" ","preview":"\\u00A0","info":"No-Break Space · U+00A0 · 1 character"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Invisible characters (copy this)"},"preview":{"type":"string","description":"Escaped preview"},"info":{"type":"string","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/invoice-generator":{"post":{"operationId":"run_invoice_generator","summary":"Invoice Generator","tags":["Generators"],"description":"Create a clean, printable invoice PDF from your line items, tax and discount. Runs entirely in your browser — nothing is uploaded or stored.\n\n[Try Invoice Generator in your browser →](https://iotools.cloud/tool/invoice-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoiceNumber":{"type":"string","description":"Invoice Number"},"currency":{"enum":["USD","EUR","GBP","JPY","CAD","AUD","CHF","CNY","INR","MXN","BRL","ZAR","SGD","HKD","NZD","SEK","NOK","DKK","PLN","THB","KRW","IDR","PHP","VND","TRY","AED","RUB","ILS","CZK"],"description":"Currency"},"from":{"type":"string","description":"From"},"billTo":{"type":"string","description":"Bill To"},"lineItems":{"type":"string","description":"Line Items"},"taxPercent":{"type":"number","description":"Tax (%)","minimum":0,"maximum":100},"discount":{"type":"number","description":"Discount (%)","minimum":0,"maximum":100},"notes":{"type":"string","description":"Notes / Payment Terms"}},"required":["invoiceNumber","from","billTo","lineItems"]},"examples":{"two_item_invoice_with_tax_and_discount":{"summary":"Two-item invoice with tax and discount","value":{"invoiceNumber":"INV-0001","currency":"USD","from":"Acme Studio\nhello@acmestudio.com","billTo":"Jane Client\njane@example.com","lineItems":"Design audit, 1, 450\nHosting (monthly), 3, 25","taxPercent":"8","discount":"10","notes":"Payment due within 14 days."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"invoicePdf":{"type":"string","contentEncoding":"base64","description":"Invoice PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv6-ula-generator":{"post":{"operationId":"run_ipv6_ula_generator","summary":"IPv6 ULA Generator","tags":["Generators"],"description":"Generate a random IPv6 Unique Local Address (ULA) per RFC 4193 — an fd00::/8 prefix with a random 40-bit Global ID and your chosen 16-bit Subnet ID, as both a /64 address and the /48 site prefix.\n\n[Try IPv6 ULA Generator in your browser →](https://iotools.cloud/tool/ipv6-ula-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subnetId":{"type":"string","description":"Subnet ID"}},"required":["subnetId"]},"examples":{"default_subnet_0001":{"summary":"Default subnet (0001)","value":{"subnetId":"0001"}},"subnet_abcd":{"summary":"Subnet abcd","value":{"subnetId":"abcd"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"ula":{"type":"string","description":"ULA (/64)"},"network48":{"type":"string","description":"Site prefix (/48)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/schema-markup-generator":{"post":{"operationId":"run_schema_markup_generator","summary":"Schema Markup Generator","tags":["Generators"],"description":"Generate schema.org JSON-LD structured data for Article, FAQ, Product, Recipe, Event, Local Business, How-to, Job Posting and more — with a checklist of the properties Google needs for the rich result.\n\n[Try Schema Markup Generator in your browser →](https://iotools.cloud/tool/schema-markup-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["article","breadcrumb","event","faq","howto","jobposting","localbusiness","organization","person","product","recipe","video","website"],"description":"Schema type"},"articleType":{"enum":["Article","NewsArticle","BlogPosting"],"description":"Article @type"},"headline":{"type":"string","description":"Headline"},"articleUrl":{"type":"string","description":"Article URL"},"articleDescription":{"type":"string","description":"Description"},"articleImage":{"type":"string","description":"Image URLs"},"authorType":{"enum":["Person","Organization"],"description":"Author @type"},"authorName":{"type":"string","description":"Author name"},"authorUrl":{"type":"string","description":"Author URL"},"publisherName":{"type":"string","description":"Publisher name"},"publisherLogo":{"type":"string","description":"Publisher logo URL"},"dateModified":{"type":"string","description":"Date modified"},"breadcrumbs":{"type":"string","description":"Breadcrumb trail"},"eventName":{"type":"string","description":"Event name"},"eventDescription":{"type":"string","description":"Description"},"eventImage":{"type":"string","description":"Image URLs"},"eventStart":{"type":"string","description":"Start date & time"},"eventEnd":{"type":"string","description":"End date & time"},"eventStatus":{"enum":["EventScheduled","EventCancelled","EventPostponed","EventRescheduled","EventMovedOnline"],"description":"Event status"},"eventAttendance":{"enum":["OfflineEventAttendanceMode","OnlineEventAttendanceMode","MixedEventAttendanceMode"],"description":"Attendance mode"},"eventLocationName":{"type":"string","description":"Venue name"},"eventStreamUrl":{"type":"string","description":"Stream URL"},"performerType":{"enum":["PerformingGroup","Person"],"description":"Performer @type"},"performerName":{"type":"string","description":"Performer name"},"organizerName":{"type":"string","description":"Organizer name"},"organizerUrl":{"type":"string","description":"Organizer URL"},"offerValidFrom":{"type":"string","description":"Tickets on sale from"},"faq":{"type":"string","description":"Questions and answers"},"howToName":{"type":"string","description":"How-to title"},"howToDescription":{"type":"string","description":"Description"},"howToImage":{"type":"string","description":"Image URLs"},"howToTime":{"type":"string","description":"Total time"},"howToCost":{"type":"number","description":"Estimated cost"},"howToSupplies":{"type":"string","description":"Supplies"},"howToTools":{"type":"string","description":"Tools"},"howToSteps":{"type":"string","description":"Steps"},"jobTitle":{"type":"string","description":"Job title"},"jobDescription":{"type":"string","description":"Job description"},"jobDatePosted":{"type":"string","description":"Date posted"},"jobValidThrough":{"type":"string","description":"Valid through"},"jobEmploymentType":{"enum":["FULL_TIME","PART_TIME","CONTRACTOR","TEMPORARY","INTERN","VOLUNTEER","PER_DIEM","OTHER"],"description":"Employment type"},"jobCompanyName":{"type":"string","description":"Hiring organization"},"jobCompanyUrl":{"type":"string","description":"Organization URL"},"jobCompanyLogo":{"type":"string","description":"Organization logo URL"},"jobSalaryMin":{"type":"number","description":"Salary minimum"},"jobSalaryMax":{"type":"number","description":"Salary maximum"},"jobSalaryUnit":{"enum":["HOUR","DAY","WEEK","MONTH","YEAR"],"description":"Salary per"},"jobRemote":{"type":"boolean","description":"Remote (telecommute)"},"businessType":{"enum":["LocalBusiness","AccountingService","AutoRepair","Bakery","BarOrPub","BeautySalon","CafeOrCoffeeShop","ChildCare","Dentist","DryCleaningOrLaundry","Electrician","EmploymentAgency","FinancialService","Florist","FoodEstablishment","GeneralContractor","HairSalon","HealthClub","HomeAndConstructionBusiness","Hotel","InsuranceAgency","LegalService","Locksmith","MedicalBusiness","MovingCompany","Notary","Optician","Physician","Plumber","ProfessionalService","RealEstateAgent","Restaurant","RoofingContractor","SelfStorage","ShoppingCenter","SportsClub","Store","TravelAgency","VeterinaryCare"],"description":"Business @type"},"businessName":{"type":"string","description":"Business name"},"businessUrl":{"type":"string","description":"Website URL"},"businessImage":{"type":"string","description":"Image URLs"},"businessPhone":{"type":"string","description":"Telephone"},"businessPriceRange":{"type":"string","description":"Price range"},"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"},"openingHours":{"type":"string","description":"Opening hours"},"orgType":{"enum":["Organization","Airline","Consortium","Corporation","EducationalOrganization","GovernmentOrganization","LibrarySystem","MedicalOrganization","NGO","NewsMediaOrganization","PerformingGroup","Project","ResearchOrganization","SportsOrganization"],"description":"Organization @type"},"orgName":{"type":"string","description":"Organization name"},"orgAlternateName":{"type":"string","description":"Alternate name"},"orgUrl":{"type":"string","description":"Website URL"},"orgLogo":{"type":"string","description":"Logo URL"},"orgPhone":{"type":"string","description":"Contact telephone"},"orgContactType":{"enum":["customer support","technical support","billing support","sales","reservations","credit card support","emergency"],"description":"Contact type"},"personName":{"type":"string","description":"Full name"},"personUrl":{"type":"string","description":"Profile or homepage URL"},"personImage":{"type":"string","description":"Photo URL"},"personJobTitle":{"type":"string","description":"Job title"},"personCompany":{"type":"string","description":"Works for"},"productName":{"type":"string","description":"Product name"},"productDescription":{"type":"string","description":"Description"},"productImage":{"type":"string","description":"Image URLs"},"productBrand":{"type":"string","description":"Brand"},"productSku":{"type":"string","description":"SKU"},"productGtin":{"type":"string","description":"GTIN"},"productMpn":{"type":"string","description":"MPN"},"productCondition":{"enum":["NewCondition","UsedCondition","RefurbishedCondition","DamagedCondition"],"description":"Item condition"},"priceValidUntil":{"type":"string","description":"Price valid until"},"recipeName":{"type":"string","description":"Recipe name"},"recipeDescription":{"type":"string","description":"Description"},"recipeImage":{"type":"string","description":"Image URLs"},"recipeAuthor":{"type":"string","description":"Author"},"prepTime":{"type":"string","description":"Prep time"},"cookTime":{"type":"string","description":"Cook time"},"recipeYield":{"type":"string","description":"Yield"},"recipeCategory":{"type":"string","description":"Category"},"recipeCuisine":{"type":"string","description":"Cuisine"},"recipeCalories":{"type":"number","description":"Calories per serving"},"ingredients":{"type":"string","description":"Ingredients"},"instructions":{"type":"string","description":"Instructions"},"videoName":{"type":"string","description":"Video title"},"videoDescription":{"type":"string","description":"Description"},"videoThumbnail":{"type":"string","description":"Thumbnail URLs"},"videoDuration":{"type":"string","description":"Duration"},"videoContentUrl":{"type":"string","description":"Content URL"},"videoEmbedUrl":{"type":"string","description":"Embed URL"},"siteName":{"type":"string","description":"Site name"},"siteAlternateName":{"type":"string","description":"Alternate name"},"siteUrl":{"type":"string","description":"Site URL"},"siteSearchUrl":{"type":"string","description":"Search URL prefix"},"datePublished":{"type":"string","description":"Date published"},"street":{"type":"string","description":"Street address"},"city":{"type":"string","description":"City / locality"},"region":{"type":"string","description":"State / province / region"},"postalCode":{"type":"string","description":"Postal code"},"country":{"type":"string","description":"Country"},"offerPrice":{"type":"number","description":"Price"},"currency":{"type":"string","description":"Currency"},"offerAvailability":{"enum":["InStock","OutOfStock","PreOrder","BackOrder","LimitedAvailability","SoldOut","Discontinued"],"description":"Availability"},"offerUrl":{"type":"string","description":"Offer URL"},"ratingValue":{"type":"number","description":"Rating value"},"reviewCount":{"type":"number","description":"Review count"},"sameAs":{"type":"string","description":"Social profiles"}},"required":[]},"examples":{"article":{"summary":"Article","value":{"type":"article","articleType":"BlogPosting","headline":"How We Cut Our Build Time in Half","articleUrl":"https://example.com/blog/faster-builds","articleDescription":"Six changes to our CI pipeline that took a 22-minute build down to 10.","articleImage":"https://example.com/images/builds-16x9.jpg\nhttps://example.com/images/builds-1x1.jpg","authorType":"Person","authorName":"Dana Okafor","authorUrl":"https://example.com/authors/dana","publisherName":"Example Engineering","publisherLogo":"https://example.com/logo.png","datePublished":"2026-03-12","dateModified":"2026-05-04"}},"faq_page":{"summary":"FAQ page","value":{"type":"faq","faq":"Do you ship internationally? | Yes, to 40 countries, in 3-6 working days.\nCan I return an order? | Yes, unused items can be returned within 30 days."}},"product_with_offer":{"summary":"Product with offer","value":{"type":"product","productName":"Aeropress Go","productDescription":"A travel-sized immersion coffee maker that brews in under two minutes.","productImage":"https://example.com/images/aeropress.jpg","productBrand":"Aeropress","productSku":"AP-GO-001","productCondition":"NewCondition","offerPrice":"39.95","currency":"USD","offerAvailability":"InStock","offerUrl":"https://example.com/shop/aeropress-go","priceValidUntil":"2026-12-31","ratingValue":"4.7","reviewCount":"312"}},"local_business":{"summary":"Local business","value":{"type":"localbusiness","businessType":"CafeOrCoffeeShop","businessName":"Kiln & Co","businessUrl":"https://example.com/","businessImage":"https://example.com/images/shopfront.jpg","businessPhone":"+44 20 7946 0000","businessPriceRange":"££","street":"14 Bridge Street","city":"London","region":"Greater London","postalCode":"SE1 9BG","country":"GB","latitude":"51.5074","longitude":"-0.1278","openingHours":"Monday-Friday 07:30-17:00\nSaturday 09:00-16:00","sameAs":"https://x.com/example\nhttps://www.instagram.com/example"}},"breadcrumb_trail":{"summary":"Breadcrumb trail","value":{"type":"breadcrumb","breadcrumbs":"Home | https://example.com/\nGuides | https://example.com/guides/\nSourdough | https://example.com/guides/sourdough/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"article":{"summary":"Article","value":{"tool":"schema-markup-generator","tool_version":"1.0.2","outputs":{"script":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"https://example.com/blog/faster-builds\"\n  },\n  \"headline\": \"How We Cut Our Build Time in Half\",\n  \"description\": \"Six changes to our CI pipeline that took a 22-minute build down to 10.\",\n  \"image\": [\n    \"https://example.com/images/builds-16x9.jpg\",\n    \"https://example.com/images/builds-1x1.jpg\"\n  ],\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Dana Okafor\",\n    \"url\": \"https://example.com/authors/dana\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Example Engineering\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https://example.com/logo.png\"\n    }\n  },\n  \"datePublished\": \"2026-03-12\",\n  \"dateModified\": \"2026-05-04\"\n}\n</script>","schema":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"mainEntityOfPage\": {\n    \"@type\": \"WebPage\",\n    \"@id\": \"https://example.com/blog/faster-builds\"\n  },\n  \"headline\": \"How We Cut Our Build Time in Half\",\n  \"description\": \"Six changes to our CI pipeline that took a 22-minute build down to 10.\",\n  \"image\": [\n    \"https://example.com/images/builds-16x9.jpg\",\n    \"https://example.com/images/builds-1x1.jpg\"\n  ],\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Dana Okafor\",\n    \"url\": \"https://example.com/authors/dana\"\n  },\n  \"publisher\": {\n    \"@type\": \"Organization\",\n    \"name\": \"Example Engineering\",\n    \"logo\": {\n      \"@type\": \"ImageObject\",\n      \"url\": \"https://example.com/logo.png\"\n    }\n  },\n  \"datePublished\": \"2026-03-12\",\n  \"dateModified\": \"2026-05-04\"\n}","checks":[{"property":"headline","requirement":"Required","status":"Present"},{"property":"image","requirement":"Required","status":"Present"},{"property":"datePublished","requirement":"Required","status":"Present"},{"property":"author.name","requirement":"Required","status":"Present"},{"property":"dateModified","requirement":"Recommended","status":"Present"},{"property":"publisher.name","requirement":"Recommended","status":"Present"}]},"credits_used":5,"credits_remaining":null}},"faq_page":{"summary":"FAQ page","value":{"tool":"schema-markup-generator","tool_version":"1.0.2","outputs":{"script":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do you ship internationally?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, to 40 countries, in 3-6 working days.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I return an order?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, unused items can be returned within 30 days.\"\n      }\n    }\n  ]\n}\n</script>","schema":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do you ship internationally?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, to 40 countries, in 3-6 working days.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I return an order?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, unused items can be returned within 30 days.\"\n      }\n    }\n  ]\n}","checks":[{"property":"mainEntity (question + answer)","requirement":"Required","status":"Present"}]},"credits_used":5,"credits_remaining":null}},"product_with_offer":{"summary":"Product with offer","value":{"tool":"schema-markup-generator","tool_version":"1.0.2","outputs":{"script":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Aeropress Go\",\n  \"description\": \"A travel-sized immersion coffee maker that brews in under two minutes.\",\n  \"image\": [\n    \"https://example.com/images/aeropress.jpg\"\n  ],\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"Aeropress\"\n  },\n  \"sku\": \"AP-GO-001\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://example.com/shop/aeropress-go\",\n    \"price\": \"39.95\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"priceValidUntil\": \"2026-12-31\",\n    \"itemCondition\": \"https://schema.org/NewCondition\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.7\",\n    \"reviewCount\": \"312\"\n  }\n}\n</script>","schema":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Product\",\n  \"name\": \"Aeropress Go\",\n  \"description\": \"A travel-sized immersion coffee maker that brews in under two minutes.\",\n  \"image\": [\n    \"https://example.com/images/aeropress.jpg\"\n  ],\n  \"brand\": {\n    \"@type\": \"Brand\",\n    \"name\": \"Aeropress\"\n  },\n  \"sku\": \"AP-GO-001\",\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"url\": \"https://example.com/shop/aeropress-go\",\n    \"price\": \"39.95\",\n    \"priceCurrency\": \"USD\",\n    \"availability\": \"https://schema.org/InStock\",\n    \"priceValidUntil\": \"2026-12-31\",\n    \"itemCondition\": \"https://schema.org/NewCondition\"\n  },\n  \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4.7\",\n    \"reviewCount\": \"312\"\n  }\n}","checks":[{"property":"name","requirement":"Required","status":"Present"},{"property":"image","requirement":"Required","status":"Present"},{"property":"offers.price","requirement":"Required","status":"Present"},{"property":"offers.priceCurrency","requirement":"Required","status":"Present"},{"property":"brand.name","requirement":"Recommended","status":"Present"},{"property":"aggregateRating","requirement":"Recommended","status":"Present"}]},"credits_used":5,"credits_remaining":null}},"local_business":{"summary":"Local business","value":{"tool":"schema-markup-generator","tool_version":"1.0.2","outputs":{"script":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"CafeOrCoffeeShop\",\n  \"name\": \"Kiln & Co\",\n  \"image\": [\n    \"https://example.com/images/shopfront.jpg\"\n  ],\n  \"url\": \"https://example.com/\",\n  \"telephone\": \"+44 20 7946 0000\",\n  \"priceRange\": \"££\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"14 Bridge Street\",\n    \"addressLocality\": \"London\",\n    \"addressRegion\": \"Greater London\",\n    \"postalCode\": \"SE1 9BG\",\n    \"addressCountry\": \"GB\"\n  },\n  \"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": \"51.5074\",\n    \"longitude\": \"-0.1278\"\n  },\n  \"openingHoursSpecification\": [\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\"\n      ],\n      \"opens\": \"07:30\",\n      \"closes\": \"17:00\"\n    },\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\n        \"Saturday\"\n      ],\n      \"opens\": \"09:00\",\n      \"closes\": \"16:00\"\n    }\n  ],\n  \"sameAs\": [\n    \"https://x.com/example\",\n    \"https://www.instagram.com/example\"\n  ]\n}\n</script>","schema":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"CafeOrCoffeeShop\",\n  \"name\": \"Kiln & Co\",\n  \"image\": [\n    \"https://example.com/images/shopfront.jpg\"\n  ],\n  \"url\": \"https://example.com/\",\n  \"telephone\": \"+44 20 7946 0000\",\n  \"priceRange\": \"££\",\n  \"address\": {\n    \"@type\": \"PostalAddress\",\n    \"streetAddress\": \"14 Bridge Street\",\n    \"addressLocality\": \"London\",\n    \"addressRegion\": \"Greater London\",\n    \"postalCode\": \"SE1 9BG\",\n    \"addressCountry\": \"GB\"\n  },\n  \"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": \"51.5074\",\n    \"longitude\": \"-0.1278\"\n  },\n  \"openingHoursSpecification\": [\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\"\n      ],\n      \"opens\": \"07:30\",\n      \"closes\": \"17:00\"\n    },\n    {\n      \"@type\": \"OpeningHoursSpecification\",\n      \"dayOfWeek\": [\n        \"Saturday\"\n      ],\n      \"opens\": \"09:00\",\n      \"closes\": \"16:00\"\n    }\n  ],\n  \"sameAs\": [\n    \"https://x.com/example\",\n    \"https://www.instagram.com/example\"\n  ]\n}","checks":[{"property":"name","requirement":"Required","status":"Present"},{"property":"address","requirement":"Required","status":"Present"},{"property":"image","requirement":"Recommended","status":"Present"},{"property":"telephone","requirement":"Recommended","status":"Present"},{"property":"openingHoursSpecification","requirement":"Recommended","status":"Present"},{"property":"priceRange","requirement":"Recommended","status":"Present"}]},"credits_used":5,"credits_remaining":null}},"breadcrumb_trail":{"summary":"Breadcrumb trail","value":{"tool":"schema-markup-generator","tool_version":"1.0.2","outputs":{"script":"<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"https://example.com/\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"Guides\",\n      \"item\": \"https://example.com/guides/\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"Sourdough\",\n      \"item\": \"https://example.com/guides/sourdough/\"\n    }\n  ]\n}\n</script>","schema":"{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BreadcrumbList\",\n  \"itemListElement\": [\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 1,\n      \"name\": \"Home\",\n      \"item\": \"https://example.com/\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 2,\n      \"name\": \"Guides\",\n      \"item\": \"https://example.com/guides/\"\n    },\n    {\n      \"@type\": \"ListItem\",\n      \"position\": 3,\n      \"name\": \"Sourdough\",\n      \"item\": \"https://example.com/guides/sourdough/\"\n    }\n  ]\n}","checks":[{"property":"itemListElement (2 or more)","requirement":"Required","status":"Present"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"script":{"type":"string","description":"JSON-LD script tag"},"checks":{"type":"array","description":"Google rich-result checklist","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"requirement":{"type":"string","description":"Requirement"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["property","requirement","status"]},"schema":{"type":"string","description":"JSON-LD"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-schema-sample-generator":{"post":{"operationId":"run_json_schema_sample_generator","summary":"JSON Schema Sample Generator","tags":["Generators"],"description":"Generate example JSON data from a JSON Schema — for API docs, mock responses and test fixtures. Seeded, so the same schema and seed always produce identical output. Runs entirely in your browser.\n\n[Try JSON Schema Sample Generator in your browser →](https://iotools.cloud/tool/json-schema-sample-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"schema":{"type":"string","description":"JSON Schema"},"count":{"type":"number","description":"Samples","minimum":1,"maximum":50},"format":{"enum":["pretty","minified","ndjson"],"description":"Output format"},"optional":{"enum":["all","required","random"],"description":"Optional properties"},"seed":{"type":"string","description":"Seed"},"maxDepth":{"type":"number","description":"Max depth","minimum":1,"maximum":12}},"required":["schema"]},"examples":{"user_object_with_formats_and_an_enum":{"summary":"User object with formats and an enum","value":{"schema":"{\"type\":\"object\",\"required\":[\"id\",\"email\"],\"properties\":{\"id\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":9999},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"role\":{\"enum\":[\"admin\",\"editor\",\"viewer\"]}}}","count":"1","format":"pretty","optional":"all","seed":"42","maxDepth":"6"}},"array_of_records_as_ndjson":{"summary":"Array of records as NDJSON","value":{"schema":"{\"type\":\"object\",\"required\":[\"sku\",\"price\"],\"properties\":{\"sku\":{\"type\":\"string\",\"minLength\":8},\"price\":{\"type\":\"number\",\"minimum\":1,\"maximum\":500,\"multipleOf\":0.5},\"inStock\":{\"type\":\"boolean\"}}}","count":"3","format":"ndjson","optional":"all","seed":"iotools","maxDepth":"6"}},"defs_nested_arrays_required_only":{"summary":"$defs, nested arrays, required-only","value":{"schema":"{\"$defs\":{\"tag\":{\"type\":\"string\",\"enum\":[\"new\",\"sale\",\"clearance\"]}},\"type\":\"object\",\"required\":[\"title\",\"tags\"],\"properties\":{\"title\":{\"type\":\"string\"},\"tags\":{\"type\":\"array\",\"minItems\":2,\"maxItems\":2,\"items\":{\"$ref\":\"#/$defs/tag\"}},\"draft\":{\"type\":\"boolean\"}}}","count":"1","format":"minified","optional":"required","seed":"42","maxDepth":"6"}},"recursive_ref_stopped_by_max_depth":{"summary":"Recursive $ref stopped by max depth","value":{"schema":"{\"$defs\":{\"node\":{\"type\":\"object\",\"required\":[\"name\",\"children\"],\"properties\":{\"name\":{\"type\":\"string\"},\"children\":{\"type\":\"array\",\"minItems\":1,\"maxItems\":1,\"items\":{\"$ref\":\"#/$defs/node\"}}}}},\"$ref\":\"#/$defs/node\"}","count":"1","format":"minified","optional":"all","seed":"42","maxDepth":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"user_object_with_formats_and_an_enum":{"summary":"User object with formats and an enum","value":{"tool":"json-schema-sample-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"id\": 3077,\n  \"email\": \"alan.hopper@example.com\",\n  \"role\": \"admin\"\n}","summary":"1 sample · seed \"42\" · 73 characters"},"credits_used":5,"credits_remaining":null}},"array_of_records_as_ndjson":{"summary":"Array of records as NDJSON","value":{"tool":"json-schema-sample-generator","tool_version":"1.0.2","outputs":{"output":"{\"sku\":\"summit ember\",\"price\":497.5,\"inStock\":true}\n{\"sku\":\"meridian ridge\",\"price\":215,\"inStock\":true}\n{\"sku\":\"nimbus indigo\",\"price\":379,\"inStock\":false}","summary":"3 samples · seed \"iotools\" · 155 characters"},"credits_used":5,"credits_remaining":null}},"defs_nested_arrays_required_only":{"summary":"$defs, nested arrays, required-only","value":{"tool":"json-schema-sample-generator","tool_version":"1.0.2","outputs":{"output":"{\"title\":\"granite harbor\",\"tags\":[\"new\",\"new\"]}","summary":"1 sample · seed \"42\" · 47 characters"},"credits_used":5,"credits_remaining":null}},"recursive_ref_stopped_by_max_depth":{"summary":"Recursive $ref stopped by max depth","value":{"tool":"json-schema-sample-generator","tool_version":"1.0.2","outputs":{"output":"{\"name\":\"Alan Turing\",\"children\":[{\"name\":\"Grace Lovelace\",\"children\":[{}]}]}","summary":"1 sample · seed \"42\" · 77 characters"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Sample data"},"summary":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/totp-hotp-generator":{"post":{"operationId":"run_totp_hotp_generator","summary":"TOTP/HOTP Generator","tags":["Generators"],"description":"Build a TOTP/HOTP otpauth:// provisioning URI (RFC 6238 / RFC 4226) from a Base32 secret, issuer and account name — the same payload a 2FA setup QR code encodes — plus a preview of the current code.\n\n[Try TOTP/HOTP Generator in your browser →](https://iotools.cloud/tool/totp-hotp-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"otpType":{"enum":["totp","hotp"],"description":"OTP Type"},"issuer":{"type":"string","description":"Issuer"},"accountName":{"type":"string","description":"Account"},"secret":{"type":"string","description":"Secret (Base32)"},"algorithm":{"enum":["sha1","sha256","sha512"],"description":"Algorithm"},"digits":{"enum":["6","8"],"description":"Digits"},"period":{"enum":["30","60"],"description":"Period"},"timestamp":{"type":"number","description":"Preview at Unix timestamp (seconds)","minimum":0},"counter":{"type":"number","description":"Counter","minimum":0}},"required":[]},"examples":{"totp_setup_uri_current_code_sha_1_t_59s":{"summary":"TOTP setup URI + current code (SHA-1, T=59s)","value":{"otpType":"totp","issuer":"iotools","accountName":"user@example.com","secret":"JBSWY3DPEHPK3PXP","algorithm":"sha1","digits":"6","period":"30","timestamp":"59","counter":"0"}},"hotp_setup_uri_code_at_counter_0_no_issuer":{"summary":"HOTP setup URI + code at counter 0 (no issuer)","value":{"otpType":"hotp","issuer":"","accountName":"user@example.com","secret":"JBSWY3DPEHPK3PXP","algorithm":"sha1","digits":"6","period":"30","timestamp":"59","counter":"0"}},"rfc_6238_appendix_b_vector_8_digits_sha_1":{"summary":"RFC 6238 Appendix B vector, 8 digits, SHA-1","value":{"otpType":"totp","issuer":"rfc6238","accountName":"test@example.com","secret":"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ","algorithm":"sha1","digits":"8","period":"30","timestamp":"59","counter":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"totp_setup_uri_current_code_sha_1_t_59s":{"summary":"TOTP setup URI + current code (SHA-1, T=59s)","value":{"tool":"totp-hotp-generator","tool_version":"1.0.2","outputs":{"otpUri":"otpauth://totp/iotools:user%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=iotools&algorithm=SHA1&digits=6&period=30","currentCode":"996554","counterUsed":"1","secondsRemaining":"1"},"credits_used":5,"credits_remaining":null}},"hotp_setup_uri_code_at_counter_0_no_issuer":{"summary":"HOTP setup URI + code at counter 0 (no issuer)","value":{"tool":"totp-hotp-generator","tool_version":"1.0.2","outputs":{"otpUri":"otpauth://hotp/user%40example.com?secret=JBSWY3DPEHPK3PXP&algorithm=SHA1&digits=6&counter=0","currentCode":"282760","counterUsed":"0","secondsRemaining":""},"credits_used":5,"credits_remaining":null}},"rfc_6238_appendix_b_vector_8_digits_sha_1":{"summary":"RFC 6238 Appendix B vector, 8 digits, SHA-1","value":{"tool":"totp-hotp-generator","tool_version":"1.0.2","outputs":{"otpUri":"otpauth://totp/rfc6238:test%40example.com?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=rfc6238&algorithm=SHA1&digits=8&period=30","currentCode":"94287082","counterUsed":"1","secondsRemaining":"1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"otpUri":{"type":"string","description":"OTP Auth URI"},"currentCode":{"type":"string","description":"Current Code"},"counterUsed":{"type":"string","description":"Counter Value Used"},"secondsRemaining":{"type":"string","description":"Seconds Remaining in Period (TOTP only)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/twitter-ad-revenue-generator":{"post":{"operationId":"run_twitter_ad_revenue_generator","summary":"Twitter Ad Revenue Generator","tags":["Generators"],"description":"Generate a fake X (Twitter) ad revenue payout notification on an iPhone lock screen — wallpaper, carrier, clock, amount and message — and download it as SVG.\n\n[Try Twitter Ad Revenue Generator in your browser →](https://iotools.cloud/tool/twitter-ad-revenue-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"string","description":"Payout amount"},"currency":{"enum":["USD","EUR","GBP","JPY","INR","CAD","AUD","BRL","MXN","NGN","ZAR","PHP","TRY","NONE"],"description":"Currency"},"headline":{"type":"string","description":"Notification title"},"body":{"type":"string","description":"Notification message"},"wallpaper":{"enum":["abstract","aurora","sunset","midnight","ocean","forest","charcoal"],"description":"Wallpaper"},"customWallpaper":{"type":"string","contentEncoding":"base64","description":"Custom wallpaper"},"style":{"enum":["light","dark"],"description":"Notification style"},"appName":{"type":"string","description":"App name"},"timeAgo":{"type":"string","description":"Notification age"},"carrier":{"type":"string","description":"Carrier"},"clock":{"type":"string","description":"Clock"},"lockDate":{"type":"string","description":"Date"}},"required":[]},"examples":{"abstract_wallpaper_light_card":{"summary":"Abstract wallpaper, light card","value":{"amount":"12,480.62","currency":"USD","headline":"You got paid!","body":"{amount} from Ads Revenue Sharing was deposited into your account.","wallpaper":"abstract","style":"light","appName":"X","timeAgo":"9m ago","carrier":"Verizon","clock":"9:41","lockDate":"Friday, June 13"}},"midnight_wallpaper_dark_card_hostile_characters":{"summary":"Midnight wallpaper, dark card, hostile characters","value":{"amount":"1.2M","currency":"GBP","headline":"5 < 6 & \"paid\" 'out'","body":"<b>{amount}</b> landed & it's yours","wallpaper":"midnight","style":"dark","appName":"<script>","timeAgo":"2h ago","carrier":"O2 & Co","clock":"21:07","lockDate":"Tuesday, 4 March"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"abstract_wallpaper_light_card":{"summary":"Abstract wallpaper, light card","value":{"tool":"twitter-ad-revenue-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"700\" viewBox=\"0 0 390 700\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Lock-screen notification: You got paid!</title><defs><linearGradient id=\"xarWall\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#6a11cb\"/><stop offset=\"100%\" stop-color=\"#2575fc\"/></linearGradient><linearGradient id=\"xarScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#000000\" stop-opacity=\"0.45\"/><stop offset=\"45%\" stop-color=\"#000000\" stop-opacity=\"0\"/></linearGradient></defs><rect width=\"390\" height=\"700\" fill=\"url(#xarWall)\"/><rect width=\"390\" height=\"700\" fill=\"url(#xarScrim)\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#ffffff\">Verizon</text><rect x=\"288.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"294.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"299.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"305\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#ffffff\"/><g fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#ffffff\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#ffffff\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#ffffff\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><path d=\"M189 106v-4a6 6 0 0 1 12 0v4\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.4\" stroke-linecap=\"round\"/><rect x=\"185\" y=\"106\" width=\"20\" height=\"15\" rx=\"4.5\" fill=\"#ffffff\"/><text x=\"195\" y=\"172\" text-anchor=\"middle\" font-size=\"19\" font-weight=\"500\" fill=\"#ffffff\" fill-opacity=\"0.92\">Friday, June 13</text><text x=\"195\" y=\"262\" text-anchor=\"middle\" font-size=\"86\" font-weight=\"500\" fill=\"#ffffff\" letter-spacing=\"-2\">9:41</text><rect x=\"16\" y=\"340\" width=\"358\" height=\"112\" rx=\"20\" fill=\"#ffffff\" fill-opacity=\"0.9\"/><rect x=\"30\" y=\"354\" width=\"22\" height=\"22\" rx=\"6\" fill=\"#000000\"/><g transform=\"translate(34.5 358.5) scale(0.54)\"><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" fill=\"#ffffff\"/></g><text x=\"60\" y=\"371\" font-size=\"13\" font-weight=\"600\" fill=\"#6b6b76\">X</text><text x=\"360\" y=\"371\" text-anchor=\"end\" font-size=\"13\" fill=\"#6b6b76\">9m ago</text><text x=\"30\" y=\"398\" font-size=\"15.5\" font-weight=\"700\" fill=\"#0b0b0f\">You got paid!</text><text x=\"30\" y=\"420\" font-size=\"15\" fill=\"#0b0b0f\" xml:space=\"preserve\">$12,480.62 from Ads Revenue Sharing was</text><text x=\"30\" y=\"440\" font-size=\"15\" fill=\"#0b0b0f\" xml:space=\"preserve\">deposited into your account.</text><circle cx=\"72\" cy=\"546\" r=\"26\" fill=\"#ffffff\" fill-opacity=\"0.22\"/><path d=\"M66 537h12l-2.5 7.5h-7z\" fill=\"#ffffff\"/><rect x=\"67.5\" y=\"544.5\" width=\"9\" height=\"10\" rx=\"2.5\" fill=\"#ffffff\"/><circle cx=\"318\" cy=\"546\" r=\"26\" fill=\"#ffffff\" fill-opacity=\"0.22\"/><rect x=\"304\" y=\"538\" width=\"28\" height=\"20\" rx=\"5\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\"/><circle cx=\"318\" cy=\"548\" r=\"5\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\"/><path d=\"M311 538l2-3h10l2 3\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\" stroke-linejoin=\"round\"/><rect x=\"128\" y=\"606\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#ffffff\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}},"midnight_wallpaper_dark_card_hostile_characters":{"summary":"Midnight wallpaper, dark card, hostile characters","value":{"tool":"twitter-ad-revenue-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"700\" viewBox=\"0 0 390 700\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>Lock-screen notification: 5 &lt; 6 &amp; &quot;paid&quot; &apos;out&apos;</title><defs><linearGradient id=\"xarWall\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#0f0c29\"/><stop offset=\"50%\" stop-color=\"#302b63\"/><stop offset=\"100%\" stop-color=\"#24243e\"/></linearGradient><linearGradient id=\"xarScrim\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#000000\" stop-opacity=\"0.45\"/><stop offset=\"45%\" stop-color=\"#000000\" stop-opacity=\"0\"/></linearGradient></defs><rect width=\"390\" height=\"700\" fill=\"url(#xarWall)\"/><rect width=\"390\" height=\"700\" fill=\"url(#xarScrim)\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#ffffff\">O2 &amp; Co</text><rect x=\"288.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"294.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"299.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#ffffff\"/><rect x=\"305\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#ffffff\"/><g fill=\"none\" stroke=\"#ffffff\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#ffffff\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#ffffff\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#ffffff\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#ffffff\" fill-opacity=\"0.35\"/><path d=\"M189 106v-4a6 6 0 0 1 12 0v4\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.4\" stroke-linecap=\"round\"/><rect x=\"185\" y=\"106\" width=\"20\" height=\"15\" rx=\"4.5\" fill=\"#ffffff\"/><text x=\"195\" y=\"172\" text-anchor=\"middle\" font-size=\"19\" font-weight=\"500\" fill=\"#ffffff\" fill-opacity=\"0.92\">Tuesday, 4 March</text><text x=\"195\" y=\"262\" text-anchor=\"middle\" font-size=\"86\" font-weight=\"500\" fill=\"#ffffff\" letter-spacing=\"-2\">21:07</text><rect x=\"16\" y=\"340\" width=\"358\" height=\"92\" rx=\"20\" fill=\"#111114\" fill-opacity=\"0.72\"/><rect x=\"30\" y=\"354\" width=\"22\" height=\"22\" rx=\"6\" fill=\"#000000\"/><g transform=\"translate(34.5 358.5) scale(0.54)\"><path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" fill=\"#ffffff\"/></g><text x=\"60\" y=\"371\" font-size=\"13\" font-weight=\"600\" fill=\"#b3b3bd\">&lt;script&gt;</text><text x=\"360\" y=\"371\" text-anchor=\"end\" font-size=\"13\" fill=\"#b3b3bd\">2h ago</text><text x=\"30\" y=\"398\" font-size=\"15.5\" font-weight=\"700\" fill=\"#ffffff\">5 &lt; 6 &amp; &quot;paid&quot; &apos;out&apos;</text><text x=\"30\" y=\"420\" font-size=\"15\" fill=\"#ffffff\" xml:space=\"preserve\">&lt;b&gt;£1.2M&lt;/b&gt; landed &amp; it&apos;s yours</text><circle cx=\"72\" cy=\"546\" r=\"26\" fill=\"#ffffff\" fill-opacity=\"0.22\"/><path d=\"M66 537h12l-2.5 7.5h-7z\" fill=\"#ffffff\"/><rect x=\"67.5\" y=\"544.5\" width=\"9\" height=\"10\" rx=\"2.5\" fill=\"#ffffff\"/><circle cx=\"318\" cy=\"546\" r=\"26\" fill=\"#ffffff\" fill-opacity=\"0.22\"/><rect x=\"304\" y=\"538\" width=\"28\" height=\"20\" rx=\"5\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\"/><circle cx=\"318\" cy=\"548\" r=\"5\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\"/><path d=\"M311 538l2-3h10l2 3\" fill=\"none\" stroke=\"#ffffff\" stroke-width=\"2.2\" stroke-linejoin=\"round\"/><rect x=\"128\" y=\"606\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#ffffff\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/typescript-enum-generator":{"post":{"operationId":"run_typescript_enum_generator","summary":"TypeScript Enum Generator","tags":["Generators"],"description":"Turn a pasted list of values into a TypeScript enum, const enum, as-const object, or union type. Auto-sanitizes member names into valid identifiers (handles spaces, punctuation, and digit-leading values), picks a key casing style, and can add JSDoc comments, a type guard, a values array, or a reverse-lookup map.\n\n[Try TypeScript Enum Generator in your browser →](https://iotools.cloud/tool/typescript-enum-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"enumValues":{"type":"string","description":"Values (one per line or comma-separated)"},"enumName":{"type":"string","description":"Enum Name"},"keyStyle":{"enum":["pascal","screaming","camel"],"description":"Key Naming Style"},"outputFormat":{"enum":["string","numeric","const","asconst","union"],"description":"Output Format"},"addExport":{"type":"boolean","description":"Add export keyword"},"addJsdoc":{"type":"boolean","description":"Add JSDoc comments"},"generateTypeGuard":{"type":"boolean","description":"Generate type guard function"},"generateValuesArray":{"type":"boolean","description":"Generate array of all values"},"generateReverseMap":{"type":"boolean","description":"Generate reverse mapping helper"}},"required":[]},"examples":{"string_enum":{"summary":"String enum","value":{"enumValues":"pending\nactive\nin progress\ncompleted\non hold\ncancelled","enumName":"Status","keyStyle":"pascal","outputFormat":"string","addExport":"true","addJsdoc":"","generateTypeGuard":"","generateValuesArray":"","generateReverseMap":""}},"numeric_enum_with_sanitized_identifiers_and_a_reverse_map":{"summary":"Numeric enum with sanitized identifiers and a reverse map","value":{"enumValues":"2nd place\n1st place\nThird","enumName":"2 Ranks","keyStyle":"camel","outputFormat":"numeric","addExport":"true","addJsdoc":"","generateTypeGuard":"","generateValuesArray":"","generateReverseMap":"true"}},"const_enum_with_reserved_word_keys_and_dedup":{"summary":"Const enum with reserved-word keys and dedup","value":{"enumValues":"class\nclass\nasync","enumName":"Keywords","keyStyle":"screaming","outputFormat":"const","addExport":"true","addJsdoc":"true","generateTypeGuard":"true","generateValuesArray":"true","generateReverseMap":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"string_enum":{"summary":"String enum","value":{"tool":"typescript-enum-generator","tool_version":"1.0.2","outputs":{"outputCode":"export enum Status {\n  Pending = \"PENDING\",\n  Active = \"ACTIVE\",\n  InProgress = \"IN_PROGRESS\",\n  Completed = \"COMPLETED\",\n  OnHold = \"ON_HOLD\",\n  Cancelled = \"CANCELLED\"\n}"},"credits_used":5,"credits_remaining":null}},"numeric_enum_with_sanitized_identifiers_and_a_reverse_map":{"summary":"Numeric enum with sanitized identifiers and a reverse map","value":{"tool":"typescript-enum-generator","tool_version":"1.0.2","outputs":{"outputCode":"export enum _2Ranks {\n  _2ndPlace = 0,\n  _1stPlace = 1,\n  third = 2\n}\n\nexport const _2RanksLabel: Record<_2Ranks, string> = {\n  [_2Ranks._2ndPlace]: \"2nd place\",\n  [_2Ranks._1stPlace]: \"1st place\",\n  [_2Ranks.third]: \"Third\"\n};"},"credits_used":5,"credits_remaining":null}},"const_enum_with_reserved_word_keys_and_dedup":{"summary":"Const enum with reserved-word keys and dedup","value":{"tool":"typescript-enum-generator","tool_version":"1.0.2","outputs":{"outputCode":"/** Enum generated from value list */\nexport const enum Keywords {\n  /** class */\n  CLASS_ = \"CLASS\",\n  /** class */\n  CLASS_2 = \"CLASS2\",\n  /** async */\n  ASYNC_ = \"ASYNC\"\n}\n\n/** Type guard for Keywords */\nexport function isKeywords(value: unknown): value is Keywords {\n  return Object.values(Keywords).includes(value as any);\n}\n\n/** Array of all Keywords values */\nexport const allKeywordsValues = Object.values(Keywords);"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputCode":{"type":"string","description":"TypeScript Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jwk-set-generator":{"post":{"operationId":"run_jwk_set_generator","summary":"JWK / JWK Set Generator","tags":["Generators"],"description":"Generate a JSON Web Key (JWK, RFC 7517) and a JWK Set ({\"keys\":[...]}) for OAuth 2.0 / OIDC. Supports EC (P-256/P-384/P-521/secp256k1), Ed25519 (OKP), and symmetric oct keys, with optional kid, use, and alg. Generated in your browser and never transmitted.\n\n[Try JWK / JWK Set Generator in your browser →](https://iotools.cloud/tool/jwk-set-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keyType":{"enum":["EC","OKP","oct"],"description":"Key type"},"curve":{"enum":["P-256","P-384","P-521","secp256k1"],"description":"Curve"},"keySize":{"enum":["128","192","256","384","512"],"description":"Key size (bits)"},"use":{"enum":["sig","enc",""],"description":"Public key use (use)"},"alg":{"type":"string","description":"Algorithm (alg)"},"kidStrategy":{"enum":["thumbprint","uuid","custom","none"],"description":"Key ID (kid)"},"customKid":{"type":"string","description":"Custom kid"}},"required":[]},"examples":{"ec_p_256_es256_with_thumbprint_kid":{"summary":"EC P-256 (ES256) with thumbprint kid","value":{"keyType":"EC","curve":"P-256","use":"sig","alg":"ES256","kidStrategy":"thumbprint"}},"ed25519_okp_signing_key":{"summary":"Ed25519 (OKP) signing key","value":{"keyType":"OKP","use":"sig","alg":"EdDSA","kidStrategy":"thumbprint"}},"symmetric_oct_hs256_256_bit_key":{"summary":"Symmetric oct (HS256) 256-bit key","value":{"keyType":"oct","keySize":"256","use":"sig","alg":"HS256","kidStrategy":"thumbprint"}},"ec_secp256k1_with_a_uuid_kid":{"summary":"EC secp256k1 with a UUID kid","value":{"keyType":"EC","curve":"secp256k1","use":"sig","kidStrategy":"uuid"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"publicJwks":{"type":"string","description":"Public JWK Set — publish at /.well-known/jwks.json"},"publicJwk":{"type":"string","description":"Public JWK"},"privateJwk":{"type":"string","description":"Private JWK — KEEP SECRET"},"privateJwks":{"type":"string","description":"Private JWK Set — KEEP SECRET"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jwt-encoder":{"post":{"operationId":"run_jwt_encoder","summary":"JWT Encoder","tags":["Generators"],"description":"Build and HMAC-sign a JSON Web Token (JWT) from a header JSON, payload JSON and secret key. Supports HS256, HS384 and HS512; base64url-encodes each part and signs entirely in your browser.\n\n[Try JWT Encoder in your browser →](https://iotools.cloud/tool/jwt-encoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"header":{"type":"string","description":"Header (JSON)"},"payload":{"type":"string","description":"Payload (JSON)"},"algorithm":{"enum":["HS256","HS384","HS512"],"description":"Algorithm"},"secret":{"type":"string","description":"Secret"}},"required":[]},"examples":{"hs256_jwt_io_reference_token":{"summary":"HS256 (jwt.io reference token)","value":{"header":"{\"alg\":\"HS256\",\"typ\":\"JWT\"}","payload":"{\"sub\":\"1234567890\",\"name\":\"John Doe\",\"iat\":1516239022}","algorithm":"HS256","secret":"your-256-bit-secret"}},"hs384":{"summary":"HS384","value":{"header":"{\"alg\":\"HS384\",\"typ\":\"JWT\"}","payload":"{\"sub\":\"1234567890\",\"name\":\"John Doe\",\"iat\":1516239022}","algorithm":"HS384","secret":"your-384-bit-secret"}},"hs512":{"summary":"HS512","value":{"header":"{\"alg\":\"HS512\",\"typ\":\"JWT\"}","payload":"{\"sub\":\"1234567890\",\"name\":\"John Doe\",\"iat\":1516239022}","algorithm":"HS512","secret":"your-512-bit-secret"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hs256_jwt_io_reference_token":{"summary":"HS256 (jwt.io reference token)","value":{"tool":"jwt-encoder","tool_version":"1.0.2","outputs":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","encodedHeader":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9","encodedPayload":"eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ","encodedSignature":"SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jwtToken":{"type":"string","description":"JWT Token"},"encodedHeader":{"type":"string","description":"Encoded header (base64url)"},"encodedPayload":{"type":"string","description":"Encoded payload (base64url)"},"encodedSignature":{"type":"string","description":"Signature (base64url)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ksuid-generator":{"post":{"operationId":"run_ksuid_generator","summary":"KSUID Generator","tags":["Generators"],"description":"Generate KSUIDs (K-Sortable Unique Identifiers) — 27-character, Base62, naturally time-sortable IDs with a 4-byte timestamp and 16 bytes of cryptographically-random payload. Batch-generate, pin the timestamp, or supply a fixed payload for reproducible output, all in your browser.\n\n[Try KSUID Generator in your browser →](https://iotools.cloud/tool/ksuid-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many to generate","minimum":1,"maximum":50},"timestamp":{"type":"string","description":"Timestamp"},"payloadHex":{"type":"string","description":"Fixed payload (optional)"}},"required":[]},"examples":{"reference_ksuid_fixed_timestamp_payload":{"summary":"Reference KSUID (fixed timestamp + payload)","value":{"count":"5","timestamp":"1507608047","payloadHex":"B5A1CD34B5F99D1154FB6853345C9735"}},"minimum_ksuid_epoch_zero_payload":{"summary":"Minimum KSUID (epoch, zero payload)","value":{"count":"1","timestamp":"1400000000","payloadHex":"00000000000000000000000000000000"}},"5_random_ksuids_at_a_fixed_timestamp":{"summary":"5 random KSUIDs at a fixed timestamp","value":{"count":"5","timestamp":"2024-01-01T00:00:00Z","payloadHex":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"reference_ksuid_fixed_timestamp_payload":{"summary":"Reference KSUID (fixed timestamp + payload)","value":{"tool":"ksuid-generator","tool_version":"1.0.2","outputs":{"ksuids":"0ujtsYcgvSTl8PAuAdqWYSMnLOv"},"credits_used":5,"credits_remaining":null}},"minimum_ksuid_epoch_zero_payload":{"summary":"Minimum KSUID (epoch, zero payload)","value":{"tool":"ksuid-generator","tool_version":"1.0.2","outputs":{"ksuids":"000000000000000000000000000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"ksuids":{"type":"string","description":"Generated KSUIDs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/kubernetes-configmap-secret-generator":{"post":{"operationId":"run_kubernetes_configmap_secret_generator","summary":"Kubernetes ConfigMap & Secret Generator","tags":["Generators"],"description":"Generate a valid Kubernetes ConfigMap or Secret YAML manifest from a name, optional namespace, labels and KEY=value pairs. Secrets support base64-encoded data: or plain-text stringData: and selectable types (Opaque, TLS, dockerconfigjson, …). Runs entirely in your browser — secret values never leave the page.\n\n[Try Kubernetes ConfigMap & Secret Generator in your browser →](https://iotools.cloud/tool/kubernetes-configmap-secret-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resourceType":{"enum":["ConfigMap","Secret"],"description":"Resource Type"},"name":{"type":"string","description":"Name"},"namespace":{"type":"string","description":"Namespace"},"secretType":{"enum":["Opaque","kubernetes.io/dockerconfigjson","kubernetes.io/tls","kubernetes.io/basic-auth","kubernetes.io/ssh-auth","kubernetes.io/service-account-token"],"description":"Secret Type"},"secretEncoding":{"enum":["data","stringData"],"description":"Secret Values"},"data":{"type":"string","description":"Key / Value Data"},"labels":{"type":"string","description":"Labels"},"immutable":{"type":"boolean","description":"Immutable (cannot be updated after creation)"}},"required":[]},"examples":{"configmap_with_namespace_and_labels":{"summary":"ConfigMap with namespace and labels","value":{"resourceType":"ConfigMap","name":"app-config","namespace":"production","data":"LOG_LEVEL=info\nDATABASE_URL=postgres://user:pass@db:5432/app","labels":"app=my-app\ntier=backend","secretType":"Opaque","secretEncoding":"data","immutable":""}},"secret_with_base64_data":{"summary":"Secret with base64 data:","value":{"resourceType":"Secret","name":"db-credentials","namespace":"","secretType":"Opaque","secretEncoding":"data","data":"username=admin\npassword=s3cr3t","labels":"","immutable":""}},"secret_with_plain_stringdata_immutable_key_value_syntax":{"summary":"Secret with plain stringData:, immutable, KEY: value syntax","value":{"resourceType":"Secret","name":"api-token","namespace":"default","secretType":"Opaque","secretEncoding":"stringData","data":"API_KEY: abc123\nENV: production","labels":"app=api","immutable":"true"}},"configmap_with_a_multi_line_value_block_scalar":{"summary":"ConfigMap with a multi-line value (block scalar)","value":{"resourceType":"ConfigMap","name":"nginx-config","namespace":"","data":"nginx.conf=server {\\n  listen 80;\\n}\nMAX_CONNECTIONS=1024","labels":"","secretType":"Opaque","secretEncoding":"data","immutable":""}},"whitespace_and_5_survive_verbatim":{"summary":"Whitespace and .5 survive verbatim","value":{"resourceType":"Secret","name":"app-secret","namespace":"","secretType":"Opaque","secretEncoding":"data","data":"PASSWORD=hunter2 \nRATE=.5","labels":"","immutable":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"configmap_with_namespace_and_labels":{"summary":"ConfigMap with namespace and labels","value":{"tool":"kubernetes-configmap-secret-generator","tool_version":"1.0.2","outputs":{"output":"apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\n  namespace: production\n  labels:\n    app: my-app\n    tier: backend\ndata:\n  LOG_LEVEL: info\n  DATABASE_URL: \"postgres://user:pass@db:5432/app\"\n"},"credits_used":5,"credits_remaining":null}},"secret_with_base64_data":{"summary":"Secret with base64 data:","value":{"tool":"kubernetes-configmap-secret-generator","tool_version":"1.0.2","outputs":{"output":"apiVersion: v1\nkind: Secret\nmetadata:\n  name: db-credentials\ntype: Opaque\ndata:\n  username: YWRtaW4=\n  password: czNjcjN0\n"},"credits_used":5,"credits_remaining":null}},"secret_with_plain_stringdata_immutable_key_value_syntax":{"summary":"Secret with plain stringData:, immutable, KEY: value syntax","value":{"tool":"kubernetes-configmap-secret-generator","tool_version":"1.0.2","outputs":{"output":"apiVersion: v1\nkind: Secret\nmetadata:\n  name: api-token\n  namespace: default\n  labels:\n    app: api\ntype: Opaque\nimmutable: true\nstringData:\n  API_KEY: abc123\n  ENV: production\n"},"credits_used":5,"credits_remaining":null}},"configmap_with_a_multi_line_value_block_scalar":{"summary":"ConfigMap with a multi-line value (block scalar)","value":{"tool":"kubernetes-configmap-secret-generator","tool_version":"1.0.2","outputs":{"output":"apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: nginx-config\ndata:\n  nginx.conf: |-\n    server {\n      listen 80;\n    }\n  MAX_CONNECTIONS: \"1024\"\n"},"credits_used":5,"credits_remaining":null}},"whitespace_and_5_survive_verbatim":{"summary":"Whitespace and .5 survive verbatim","value":{"tool":"kubernetes-configmap-secret-generator","tool_version":"1.0.2","outputs":{"output":"apiVersion: v1\nkind: Secret\nmetadata:\n  name: app-secret\ntype: Opaque\ndata:\n  PASSWORD: aHVudGVyMiA=\n  RATE: LjU=\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated YAML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/kustomize-generator":{"post":{"operationId":"run_kustomize_generator","summary":"Kustomize kustomization.yaml Generator","tags":["Generators"],"description":"Build a valid Kubernetes Kustomize kustomization.yaml from simple form fields — resources, namespace, name prefix/suffix, common labels and annotations, image and replica overrides, ConfigMap/Secret generators, and patches. Emits clean, 2-space-indented YAML.\n\n[Try Kustomize kustomization.yaml Generator in your browser →](https://iotools.cloud/tool/kustomize-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"string","description":"Resources"},"namespace":{"type":"string","description":"Namespace"},"namePrefix":{"type":"string","description":"Name Prefix"},"nameSuffix":{"type":"string","description":"Name Suffix"},"commonLabels":{"type":"string","description":"Common Labels"},"commonAnnotations":{"type":"string","description":"Common Annotations"},"images":{"type":"string","description":"Image Overrides"},"replicas":{"type":"string","description":"Replicas"},"addConfigMap":{"type":"boolean","description":"Add a configMapGenerator"},"configMapName":{"type":"string","description":"ConfigMap Name"},"configMapLiterals":{"type":"string","description":"ConfigMap Literals"},"configMapFiles":{"type":"string","description":"ConfigMap Files"},"configMapNoHash":{"type":"boolean","description":"Disable content hash suffix (disableNameSuffixHash)"},"addSecret":{"type":"boolean","description":"Add a secretGenerator"},"secretName":{"type":"string","description":"Secret Name"},"secretType":{"enum":["Opaque","kubernetes.io/tls","kubernetes.io/dockerconfigjson","kubernetes.io/basic-auth"],"description":"Secret Type"},"secretLiterals":{"type":"string","description":"Secret Literals"},"secretNoHash":{"type":"boolean","description":"Disable content hash suffix (disableNameSuffixHash)"},"patches":{"type":"string","description":"Patches"}},"required":[]},"examples":{"web_app_with_labels_and_image":{"summary":"Web app with labels and image","value":{"resources":"deployment.yaml\nservice.yaml\nconfigmap.yaml","namespace":"production","namePrefix":"prod-","commonLabels":"app=my-app\ntier=backend","images":"nginx=nginx:1.27.3"}},"configmap_and_secret_generators":{"summary":"ConfigMap and Secret generators","value":{"resources":"deployment.yaml","addConfigMap":"true","configMapName":"app-config","configMapLiterals":"LOG_LEVEL=info\nFEATURE_FLAG=true","addSecret":"true","secretName":"app-secret","secretType":"Opaque","secretLiterals":"DB_PASSWORD=s3cr3t"}},"overlay_with_digest_replicas_and_patches":{"summary":"Overlay with digest, replicas, and patches","value":{"resources":"../base","nameSuffix":"-v2","commonAnnotations":"managed-by=kustomize","images":"myapp=registry.io/myapp:v2.0.1\nbusybox=@sha256:abc123","replicas":"my-deployment=3","patches":"increase-replicas.yaml"}},"unusable_input_is_reported_not_silently_dropped":{"summary":"Unusable input is reported, not silently dropped","value":{"resources":"deployment.yaml","commonLabels":"app=web\ntier backend\napp=api","replicas":"d=3.0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"web_app_with_labels_and_image":{"summary":"Web app with labels and image","value":{"tool":"kustomize-generator","tool_version":"1.0.2","outputs":{"issues":[],"output":"apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nnamespace: production\nnamePrefix: prod-\nlabels:\n  - pairs:\n      app: my-app\n      tier: backend\n    includeSelectors: true\nresources:\n  - deployment.yaml\n  - service.yaml\n  - configmap.yaml\nimages:\n  - name: nginx\n    newName: nginx\n    newTag: 1.27.3\n"},"credits_used":5,"credits_remaining":null}},"configmap_and_secret_generators":{"summary":"ConfigMap and Secret generators","value":{"tool":"kustomize-generator","tool_version":"1.0.2","outputs":{"issues":[],"output":"apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nresources:\n  - deployment.yaml\nconfigMapGenerator:\n  - name: app-config\n    literals:\n      - LOG_LEVEL=info\n      - FEATURE_FLAG=true\nsecretGenerator:\n  - name: app-secret\n    literals:\n      - DB_PASSWORD=s3cr3t\n"},"credits_used":5,"credits_remaining":null}},"overlay_with_digest_replicas_and_patches":{"summary":"Overlay with digest, replicas, and patches","value":{"tool":"kustomize-generator","tool_version":"1.0.2","outputs":{"issues":[],"output":"apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nnameSuffix: \"-v2\"\ncommonAnnotations:\n  managed-by: kustomize\nresources:\n  - ../base\nimages:\n  - name: myapp\n    newName: registry.io/myapp\n    newTag: v2.0.1\n  - name: busybox\n    digest: \"sha256:abc123\"\nreplicas:\n  - name: my-deployment\n    count: 3\npatches:\n  - path: increase-replicas.yaml\n"},"credits_used":5,"credits_remaining":null}},"unusable_input_is_reported_not_silently_dropped":{"summary":"Unusable input is reported, not silently dropped","value":{"tool":"kustomize-generator","tool_version":"1.0.2","outputs":{"issues":[{"field":"Common labels","line":"2","message":"Missing '=' separator — ignored (\"tier backend\")."},{"field":"Common labels","line":"3","message":"Duplicate key \"app\" — ignored."},{"field":"Replicas","line":"—","message":"\"d\" must be a non-negative integer (got \"3.0\") — ignored."}],"output":"apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nlabels:\n  - pairs:\n      app: web\n    includeSelectors: true\nresources:\n  - deployment.yaml\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"kustomization.yaml"},"issues":{"type":"array","description":"Issues","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"line":{"type":"string","description":"Line"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["field","line","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/list-randomizer":{"post":{"operationId":"run_list_randomizer","summary":"List Randomizer","tags":["Generators"],"description":"Shuffle any list into a random order with an unbiased Fisher-Yates shuffle. Paste or upload your items, pick the separator, optionally drop duplicates, and get the randomized list back instantly.\n\n[Try List Randomizer in your browser →](https://iotools.cloud/tool/list-randomizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listItems":{"type":"string","description":"List Items"},"listSeparator":{"enum":["newline",","," ","|","-",";",":"],"description":"Item Separator"},"removeDuplicatedItems":{"type":"boolean","description":"Remove Duplicated Items"},"customOutputSeparator":{"type":"boolean","description":"Custom Output Item Separator"},"outputListSeparator":{"type":"string","description":"Separator"}},"required":["listItems"]},"examples":{"shuffle_names":{"summary":"Shuffle names","value":{"listItems":"John\nJane\nDoe\nSmith\nMary","listSeparator":"newline","removeDuplicatedItems":"","customOutputSeparator":"","outputListSeparator":""}},"comma_separated_deduplicated_comma_output":{"summary":"Comma-separated, deduplicated, comma output","value":{"listItems":"apple, banana, cherry, banana, date","listSeparator":",","removeDuplicatedItems":"true","customOutputSeparator":"true","outputListSeparator":", "}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"numberOfItems":{"type":"string","description":"Number Of Items"},"randomizedList":{"type":"string","description":"Randomized List"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lorem-ipsum-generator":{"post":{"operationId":"run_lorem_ipsum_generator","summary":"Lorem Ipsum Generator","tags":["Generators"],"description":"Generate classic lorem ipsum placeholder text by paragraph, sentence or word. Choose how many units you need and get plain text or HTML-ready paragraphs to drop into a mockup, layout or CMS.\n\n[Try Lorem Ipsum Generator in your browser →](https://iotools.cloud/tool/lorem-ipsum-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["plain","html"],"description":"Format"},"unit":{"enum":["paragraph","sentence","word"],"description":"Unit"},"length":{"type":"number","description":"Number of Units","minimum":1,"maximum":200}},"required":[]},"examples":{"3_paragraphs_plain":{"summary":"3 paragraphs (plain)","value":{"format":"plain","unit":"paragraph","length":"3"}},"5_paragraphs_html":{"summary":"5 paragraphs (HTML)","value":{"format":"html","unit":"paragraph","length":"5"}},"10_sentences":{"summary":"10 sentences","value":{"format":"plain","unit":"sentence","length":"10"}},"25_words":{"summary":"25 words","value":{"format":"plain","unit":"word","length":"25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Lorem Ipsum"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/latex-equation-renderer":{"post":{"operationId":"run_latex_equation_renderer","summary":"LaTeX Equation Renderer","tags":["Generators"],"description":"Render a LaTeX / TeX math expression into ready-to-use HTML. Type an equation and get the KaTeX markup you can copy into any page, plus a live preview. Runs entirely in your browser.\n\n[Try LaTeX Equation Renderer in your browser →](https://iotools.cloud/tool/latex-equation-renderer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"latexInput":{"type":"string","description":"LaTeX Code"},"displayMode":{"enum":["display","inline"],"description":"Display Mode"},"background":{"enum":["transparent","white","light","dark"],"description":"Background"},"fontScale":{"type":"number","description":"Font Scale","minimum":1,"maximum":5}},"required":[]},"examples":{"einstein_e_mc_2":{"summary":"Einstein (E = mc^2)","value":{"latexInput":"E = mc^2","displayMode":"display","background":"transparent","fontScale":"2"}},"fraction_white_background":{"summary":"Fraction, white background","value":{"latexInput":"\\frac{a}{b}","displayMode":"display","background":"white","fontScale":"2"}},"pythagorean_inline":{"summary":"Pythagorean, inline","value":{"latexInput":"a^2 + b^2 = c^2","displayMode":"inline","background":"transparent","fontScale":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"einstein_e_mc_2":{"summary":"Einstein (E = mc^2)","value":{"tool":"latex-equation-renderer","tool_version":"1.0.2","outputs":{"html":"<div style=\"background:transparent;padding:24px 16px;border-radius:6px;font-size:2em\"><span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.6833em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0576em;\">E</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.8641em;\"></span><span class=\"mord mathnormal\">m</span><span class=\"mord\"><span class=\"mord mathnormal\">c</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8641em;\"><span style=\"top:-3.113em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span></span></span></div>","equationSvg":"<svg style=\"vertical-align: -0.186ex;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"8.699ex\" height=\"2.185ex\" role=\"img\" focusable=\"false\" viewBox=\"0 -883.9 3845.1 965.9\"><g stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" transform=\"scale(1,-1)\"><g data-mml-node=\"math\"><g data-mml-node=\"mi\"><path data-c=\"1D438\" d=\"M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z\"></path></g><g data-mml-node=\"mo\" transform=\"translate(1041.8,0)\"><path data-c=\"3D\" d=\"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z\"></path></g><g data-mml-node=\"mi\" transform=\"translate(2097.6,0)\"><path data-c=\"1D45A\" d=\"M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z\"></path></g><g data-mml-node=\"msup\" transform=\"translate(2975.6,0)\"><g data-mml-node=\"mi\"><path data-c=\"1D450\" d=\"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z\"></path></g><g data-mml-node=\"mn\" transform=\"translate(466,413) scale(0.707)\"><path data-c=\"32\" d=\"M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z\"></path></g></g></g></g></svg>"},"credits_used":5,"credits_remaining":null}},"fraction_white_background":{"summary":"Fraction, white background","value":{"tool":"latex-equation-renderer","tool_version":"1.0.2","outputs":{"html":"<div style=\"background:#ffffff;padding:24px 16px;border-radius:6px;font-size:2em\"><span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1.7936em;vertical-align:-0.686em;\"></span><span class=\"mord\"><span class=\"mopen nulldelimiter\"></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.1076em;\"><span style=\"top:-2.314em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">b</span></span></span><span style=\"top:-3.23em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"frac-line\" style=\"border-bottom-width:0.04em;\"></span></span><span style=\"top:-3.677em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">a</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.686em;\"><span></span></span></span></span></span><span class=\"mclose nulldelimiter\"></span></span></span></span></span></span></div>","equationSvg":"<svg style=\"vertical-align: -1.577ex;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"2.192ex\" height=\"4.104ex\" role=\"img\" focusable=\"false\" viewBox=\"0 -1117 969 1814\"><g stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" transform=\"scale(1,-1)\"><g data-mml-node=\"math\"><g data-mml-node=\"mfrac\"><g data-mml-node=\"mi\" transform=\"translate(220,676)\"><path data-c=\"1D44E\" d=\"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z\"></path></g><g data-mml-node=\"mi\" transform=\"translate(270,-686)\"><path data-c=\"1D44F\" d=\"M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z\"></path></g><rect width=\"729\" height=\"60\" x=\"120\" y=\"220\"></rect></g></g></g></svg>"},"credits_used":5,"credits_remaining":null}},"pythagorean_inline":{"summary":"Pythagorean, inline","value":{"tool":"latex-equation-renderer","tool_version":"1.0.2","outputs":{"html":"<div style=\"background:transparent;padding:24px 16px;border-radius:6px;font-size:1em\"><span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8974em;vertical-align:-0.0833em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">a</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">+</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.8141em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">b</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.8141em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">c</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span></span></div>","equationSvg":"<svg style=\"vertical-align: -0.186ex;\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11.893ex\" height=\"2.072ex\" role=\"img\" focusable=\"false\" viewBox=\"0 -833.9 5256.7 915.9\"><g stroke=\"currentColor\" fill=\"currentColor\" stroke-width=\"0\" transform=\"scale(1,-1)\"><g data-mml-node=\"math\"><g data-mml-node=\"msup\"><g data-mml-node=\"mi\"><path data-c=\"1D44E\" d=\"M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z\"></path></g><g data-mml-node=\"mn\" transform=\"translate(562,363) scale(0.707)\"><path data-c=\"32\" d=\"M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z\"></path></g></g><g data-mml-node=\"mo\" transform=\"translate(1187.8,0)\"><path data-c=\"2B\" d=\"M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z\"></path></g><g data-mml-node=\"msup\" transform=\"translate(2188,0)\"><g data-mml-node=\"mi\"><path data-c=\"1D44F\" d=\"M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z\"></path></g><g data-mml-node=\"mn\" transform=\"translate(462,363) scale(0.707)\"><path data-c=\"32\" d=\"M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z\"></path></g></g><g data-mml-node=\"mo\" transform=\"translate(3331.3,0)\"><path data-c=\"3D\" d=\"M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z\"></path></g><g data-mml-node=\"msup\" transform=\"translate(4387.1,0)\"><g data-mml-node=\"mi\"><path data-c=\"1D450\" d=\"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z\"></path></g><g data-mml-node=\"mn\" transform=\"translate(466,363) scale(0.707)\"><path data-c=\"32\" d=\"M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z\"></path></g></g></g></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"html":{"type":"string","description":"Rendered HTML"},"equationSvg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/long-tail-keyword-generator":{"post":{"operationId":"run_long_tail_keyword_generator","summary":"Long Tail Keyword Generator","tags":["Generators"],"description":"Turn one seed keyword into dozens of real long-tail search-phrase ideas — pulled live from Google's own autocomplete, not a canned word list.\n\n[Try Long Tail Keyword Generator in your browser →](https://iotools.cloud/tool/long-tail-keyword-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"seed":{"type":"string","description":"Seed keyword"}},"required":["seed"]},"examples":{"coffee_maker":{"summary":"Coffee maker","value":{"seed":"coffee maker"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"keywords":{"type":"array","description":"Long-tail suggestions","items":{"type":"object","properties":{"keyword":{"type":"string","description":"Keyword"}}},"x-iotools-columns":["keyword"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/maze-generator-svg":{"post":{"operationId":"run_maze_generator_svg","summary":"Maze Generator (SVG)","tags":["Generators"],"description":"Generate a random perfect maze as a scalable SVG. Choose Recursive Backtracker, Prim's or Kruskal's, set the grid size, cell size, wall thickness and colours, add a solution path, and reproduce any maze from a seed.\n\n[Try Maze Generator (SVG) in your browser →](https://iotools.cloud/tool/maze-generator-svg/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"enum":["backtracker","prim","kruskal"],"description":"Algorithm"},"cols":{"type":"number","description":"Columns","minimum":5,"maximum":80},"rows":{"type":"number","description":"Rows","minimum":5,"maximum":80},"seed":{"type":"string","description":"Seed"},"cellSize":{"type":"number","description":"Cell size (px)","minimum":8,"maximum":40},"wallThickness":{"type":"number","description":"Wall thickness (px)","minimum":1,"maximum":8},"wallColor":{"type":"string","description":"Wall colour"},"bgColor":{"type":"string","description":"Background"},"showSolution":{"type":"boolean","description":"Show solution path"},"solutionColor":{"type":"string","description":"Solution colour"},"showEntries":{"type":"boolean","description":"Mark entrance & exit"}},"required":["cols","rows"]},"examples":{"backtracker_seeded_15_15":{"summary":"Backtracker, seeded 15×15","value":{"algorithm":"backtracker","cols":"15","rows":"15","seed":"iotools","cellSize":"20","wallThickness":"2","wallColor":"#1f2937","bgColor":"#ffffff","showSolution":"true","solutionColor":"#464aff","showEntries":"true"}},"kruskal_s_seeded_12_12":{"summary":"Kruskal's, seeded 12×12","value":{"algorithm":"kruskal","cols":"12","rows":"12","seed":"maze-2026","cellSize":"24","wallThickness":"2","wallColor":"#1f2937","bgColor":"#ffffff","showSolution":"","solutionColor":"#464aff","showEntries":"true"}},"prim_s_seeded_10_10_no_markers":{"summary":"Prim's, seeded 10×10, no markers","value":{"algorithm":"prim","cols":"10","rows":"10","seed":"spiral","cellSize":"20","wallThickness":"3","wallColor":"#111827","bgColor":"#f8fafc","showSolution":"true","solutionColor":"#e11d48","showEntries":""}},"random_maze_fresh_each_run":{"summary":"Random maze (fresh each run)","value":{"algorithm":"backtracker","cols":"20","rows":"20","seed":"","cellSize":"20","wallThickness":"2","wallColor":"#1f2937","bgColor":"#ffffff","showSolution":"","solutionColor":"#464aff","showEntries":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"backtracker_seeded_15_15":{"summary":"Backtracker, seeded 15×15","value":{"tool":"maze-generator-svg","tool_version":"1.0.2","outputs":{"mazeSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"308\" height=\"308\" viewBox=\"0 0 308 308\" shape-rendering=\"geometricPrecision\"><rect width=\"308\" height=\"308\" fill=\"#ffffff\" /><polyline points=\"14,14 14,34 14,54 34,54 54,54 54,74 34,74 14,74 14,94 34,94 34,114 14,114 14,134 14,154 14,174 14,194 34,194 34,214 54,214 54,194 74,194 74,214 74,234 94,234 114,234 114,254 94,254 94,274 114,274 134,274 134,294 154,294 174,294 194,294 214,294 214,274 234,274 254,274 274,274 274,254 274,234 254,234 254,254 234,254 234,234 214,234 214,214 234,214 254,214 274,214 294,214 294,234 294,254 294,274 294,294\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\" /><g stroke=\"#1f2937\" stroke-width=\"2\" stroke-linecap=\"square\"><line x1=\"4\" y1=\"4\" x2=\"4\" y2=\"24\" /><line x1=\"24\" y1=\"4\" x2=\"44\" y2=\"4\" /><line x1=\"24\" y1=\"24\" x2=\"44\" y2=\"24\" /><line x1=\"44\" y1=\"4\" x2=\"64\" y2=\"4\" /><line x1=\"64\" y1=\"4\" x2=\"64\" y2=\"24\" /><line x1=\"64\" y1=\"4\" x2=\"84\" y2=\"4\" /><line x1=\"64\" y1=\"24\" x2=\"84\" y2=\"24\" /><line x1=\"84\" y1=\"4\" x2=\"104\" y2=\"4\" /><line x1=\"84\" y1=\"24\" x2=\"104\" y2=\"24\" /><line x1=\"104\" y1=\"4\" x2=\"124\" y2=\"4\" /><line x1=\"124\" y1=\"4\" x2=\"144\" y2=\"4\" /><line x1=\"124\" y1=\"24\" x2=\"144\" y2=\"24\" /><line x1=\"144\" y1=\"4\" x2=\"164\" y2=\"4\" /><line x1=\"164\" y1=\"4\" x2=\"184\" y2=\"4\" /><line x1=\"164\" y1=\"24\" x2=\"184\" y2=\"24\" /><line x1=\"184\" y1=\"4\" x2=\"204\" y2=\"4\" /><line x1=\"204\" y1=\"4\" x2=\"204\" y2=\"24\" /><line x1=\"204\" y1=\"4\" x2=\"224\" y2=\"4\" /><line x1=\"224\" y1=\"4\" x2=\"244\" y2=\"4\" /><line x1=\"244\" y1=\"4\" x2=\"244\" y2=\"24\" /><line x1=\"244\" y1=\"4\" x2=\"264\" y2=\"4\" /><line x1=\"264\" y1=\"4\" x2=\"284\" y2=\"4\" /><line x1=\"264\" y1=\"24\" x2=\"284\" y2=\"24\" /><line x1=\"284\" y1=\"4\" x2=\"304\" y2=\"4\" /><line x1=\"304\" y1=\"4\" x2=\"304\" y2=\"24\" /><line x1=\"4\" y1=\"24\" x2=\"4\" y2=\"44\" /><line x1=\"24\" y1=\"24\" x2=\"24\" y2=\"44\" /><line x1=\"24\" y1=\"44\" x2=\"44\" y2=\"44\" /><line x1=\"44\" y1=\"44\" x2=\"64\" y2=\"44\" /><line x1=\"64\" y1=\"44\" x2=\"84\" y2=\"44\" /><line x1=\"104\" y1=\"24\" x2=\"104\" y2=\"44\" /><line x1=\"104\" y1=\"44\" x2=\"124\" y2=\"44\" /><line x1=\"144\" y1=\"24\" x2=\"144\" y2=\"44\" /><line x1=\"164\" y1=\"24\" x2=\"164\" y2=\"44\" /><line x1=\"184\" y1=\"24\" x2=\"184\" y2=\"44\" /><line x1=\"184\" y1=\"44\" x2=\"204\" y2=\"44\" /><line x1=\"224\" y1=\"24\" x2=\"224\" y2=\"44\" /><line x1=\"204\" y1=\"44\" x2=\"224\" y2=\"44\" /><line x1=\"244\" y1=\"24\" x2=\"244\" y2=\"44\" /><line x1=\"264\" y1=\"24\" x2=\"264\" y2=\"44\" /><line x1=\"304\" y1=\"24\" x2=\"304\" y2=\"44\" /><line x1=\"284\" y1=\"44\" x2=\"304\" y2=\"44\" /><line x1=\"4\" y1=\"44\" x2=\"4\" y2=\"64\" /><line x1=\"4\" y1=\"64\" x2=\"24\" y2=\"64\" /><line x1=\"24\" y1=\"64\" x2=\"44\" y2=\"64\" /><line x1=\"64\" y1=\"44\" x2=\"64\" y2=\"64\" /><line x1=\"84\" y1=\"44\" x2=\"84\" y2=\"64\" /><line x1=\"84\" y1=\"64\" x2=\"104\" y2=\"64\" /><line x1=\"124\" y1=\"44\" x2=\"124\" y2=\"64\" /><line x1=\"144\" y1=\"44\" x2=\"144\" y2=\"64\" /><line x1=\"124\" y1=\"64\" x2=\"144\" y2=\"64\" /><line x1=\"164\" y1=\"44\" x2=\"164\" y2=\"64\" /><line x1=\"184\" y1=\"44\" x2=\"184\" y2=\"64\" /><line x1=\"204\" y1=\"64\" x2=\"224\" y2=\"64\" /><line x1=\"244\" y1=\"44\" x2=\"244\" y2=\"64\" /><line x1=\"224\" y1=\"64\" x2=\"244\" y2=\"64\" /><line x1=\"264\" y1=\"44\" x2=\"264\" y2=\"64\" /><line x1=\"264\" y1=\"64\" x2=\"284\" y2=\"64\" /><line x1=\"304\" y1=\"44\" x2=\"304\" y2=\"64\" /><line x1=\"4\" y1=\"64\" x2=\"4\" y2=\"84\" /><line x1=\"24\" y1=\"84\" x2=\"44\" y2=\"84\" /><line x1=\"64\" y1=\"64\" x2=\"64\" y2=\"84\" /><line x1=\"44\" y1=\"84\" x2=\"64\" y2=\"84\" /><line x1=\"104\" y1=\"64\" x2=\"104\" y2=\"84\" /><line x1=\"84\" y1=\"84\" x2=\"104\" y2=\"84\" /><line x1=\"104\" y1=\"84\" x2=\"124\" y2=\"84\" /><line x1=\"144\" y1=\"64\" x2=\"144\" y2=\"84\" /><line x1=\"164\" y1=\"64\" x2=\"164\" y2=\"84\" /><line x1=\"164\" y1=\"84\" x2=\"184\" y2=\"84\" /><line x1=\"204\" y1=\"64\" x2=\"204\" y2=\"84\" /><line x1=\"184\" y1=\"84\" x2=\"204\" y2=\"84\" /><line x1=\"224\" y1=\"84\" x2=\"244\" y2=\"84\" /><line x1=\"264\" y1=\"64\" x2=\"264\" y2=\"84\" /><line x1=\"244\" y1=\"84\" x2=\"264\" y2=\"84\" /><line x1=\"284\" y1=\"64\" x2=\"284\" y2=\"84\" /><line x1=\"304\" y1=\"64\" x2=\"304\" y2=\"84\" /><line x1=\"4\" y1=\"84\" x2=\"4\" y2=\"104\" /><line x1=\"4\" y1=\"104\" x2=\"24\" y2=\"104\" /><line x1=\"44\" y1=\"84\" x2=\"44\" y2=\"104\" /><line x1=\"84\" y1=\"84\" x2=\"84\" y2=\"104\" /><line x1=\"104\" y1=\"104\" x2=\"124\" y2=\"104\" /><line x1=\"144\" y1=\"84\" x2=\"144\" y2=\"104\" /><line x1=\"124\" y1=\"104\" x2=\"144\" y2=\"104\" /><line x1=\"164\" y1=\"84\" x2=\"164\" y2=\"104\" /><line x1=\"204\" y1=\"84\" x2=\"204\" y2=\"104\" /><line x1=\"224\" y1=\"84\" x2=\"224\" y2=\"104\" /><line x1=\"264\" y1=\"84\" x2=\"264\" y2=\"104\" /><line x1=\"284\" y1=\"84\" x2=\"284\" y2=\"104\" /><line x1=\"304\" y1=\"84\" x2=\"304\" y2=\"104\" /><line x1=\"4\" y1=\"104\" x2=\"4\" y2=\"124\" /><line x1=\"44\" y1=\"104\" x2=\"44\" y2=\"124\" /><line x1=\"24\" y1=\"124\" x2=\"44\" y2=\"124\" /><line x1=\"64\" y1=\"104\" x2=\"64\" y2=\"124\" /><line x1=\"84\" y1=\"104\" x2=\"84\" y2=\"124\" /><line x1=\"84\" y1=\"124\" x2=\"104\" y2=\"124\" /><line x1=\"104\" y1=\"124\" x2=\"124\" y2=\"124\" /><line x1=\"144\" y1=\"104\" x2=\"144\" y2=\"124\" /><line x1=\"144\" y1=\"124\" x2=\"164\" y2=\"124\" /><line x1=\"184\" y1=\"104\" x2=\"184\" y2=\"124\" /><line x1=\"164\" y1=\"124\" x2=\"184\" y2=\"124\" /><line x1=\"204\" y1=\"104\" x2=\"204\" y2=\"124\" /><line x1=\"224\" y1=\"104\" x2=\"224\" y2=\"124\" /><line x1=\"244\" y1=\"104\" x2=\"244\" y2=\"124\" /><line x1=\"244\" y1=\"124\" x2=\"264\" y2=\"124\" /><line x1=\"284\" y1=\"104\" x2=\"284\" y2=\"124\" /><line x1=\"264\" y1=\"124\" x2=\"284\" y2=\"124\" /><line x1=\"304\" y1=\"104\" x2=\"304\" y2=\"124\" /><line x1=\"4\" y1=\"124\" x2=\"4\" y2=\"144\" /><line x1=\"24\" y1=\"124\" x2=\"24\" y2=\"144\" /><line x1=\"64\" y1=\"124\" x2=\"64\" y2=\"144\" /><line x1=\"44\" y1=\"144\" x2=\"64\" y2=\"144\" /><line x1=\"64\" y1=\"144\" x2=\"84\" y2=\"144\" /><line x1=\"104\" y1=\"124\" x2=\"104\" y2=\"144\" /><line x1=\"84\" y1=\"144\" x2=\"104\" y2=\"144\" /><line x1=\"144\" y1=\"124\" x2=\"144\" y2=\"144\" /><line x1=\"124\" y1=\"144\" x2=\"144\" y2=\"144\" /><line x1=\"164\" y1=\"144\" x2=\"184\" y2=\"144\" /><line x1=\"204\" y1=\"124\" x2=\"204\" y2=\"144\" /><line x1=\"184\" y1=\"144\" x2=\"204\" y2=\"144\" /><line x1=\"224\" y1=\"124\" x2=\"224\" y2=\"144\" /><line x1=\"224\" y1=\"144\" x2=\"244\" y2=\"144\" /><line x1=\"244\" y1=\"144\" x2=\"264\" y2=\"144\" /><line x1=\"284\" y1=\"124\" x2=\"284\" y2=\"144\" /><line x1=\"304\" y1=\"124\" x2=\"304\" y2=\"144\" /><line x1=\"4\" y1=\"144\" x2=\"4\" y2=\"164\" /><line x1=\"24\" y1=\"144\" x2=\"24\" y2=\"164\" /><line x1=\"44\" y1=\"164\" x2=\"64\" y2=\"164\" /><line x1=\"84\" y1=\"144\" x2=\"84\" y2=\"164\" /><line x1=\"124\" y1=\"144\" x2=\"124\" y2=\"164\" /><line x1=\"104\" y1=\"164\" x2=\"124\" y2=\"164\" /><line x1=\"124\" y1=\"164\" x2=\"144\" y2=\"164\" /><line x1=\"144\" y1=\"164\" x2=\"164\" y2=\"164\" /><line x1=\"164\" y1=\"164\" x2=\"184\" y2=\"164\" /><line x1=\"204\" y1=\"144\" x2=\"204\" y2=\"164\" /><line x1=\"204\" y1=\"164\" x2=\"224\" y2=\"164\" /><line x1=\"244\" y1=\"144\" x2=\"244\" y2=\"164\" /><line x1=\"284\" y1=\"144\" x2=\"284\" y2=\"164\" /><line x1=\"264\" y1=\"164\" x2=\"284\" y2=\"164\" /><line x1=\"304\" y1=\"144\" x2=\"304\" y2=\"164\" /><line x1=\"4\" y1=\"164\" x2=\"4\" y2=\"184\" /><line x1=\"24\" y1=\"164\" x2=\"24\" y2=\"184\" /><line x1=\"24\" y1=\"184\" x2=\"44\" y2=\"184\" /><line x1=\"64\" y1=\"164\" x2=\"64\" y2=\"184\" /><line x1=\"44\" y1=\"184\" x2=\"64\" y2=\"184\" /><line x1=\"64\" y1=\"184\" x2=\"84\" y2=\"184\" /><line x1=\"104\" y1=\"164\" x2=\"104\" y2=\"184\" /><line x1=\"124\" y1=\"184\" x2=\"144\" y2=\"184\" /><line x1=\"144\" y1=\"184\" x2=\"164\" y2=\"184\" /><line x1=\"184\" y1=\"184\" x2=\"204\" y2=\"184\" /><line x1=\"224\" y1=\"164\" x2=\"224\" y2=\"184\" /><line x1=\"204\" y1=\"184\" x2=\"224\" y2=\"184\" /><line x1=\"224\" y1=\"184\" x2=\"244\" y2=\"184\" /><line x1=\"264\" y1=\"164\" x2=\"264\" y2=\"184\" /><line x1=\"244\" y1=\"184\" x2=\"264\" y2=\"184\" /><line x1=\"304\" y1=\"164\" x2=\"304\" y2=\"184\" /><line x1=\"284\" y1=\"184\" x2=\"304\" y2=\"184\" /><line x1=\"4\" y1=\"184\" x2=\"4\" y2=\"204\" /><line x1=\"44\" y1=\"184\" x2=\"44\" y2=\"204\" /><line x1=\"84\" y1=\"184\" x2=\"84\" y2=\"204\" /><line x1=\"104\" y1=\"184\" x2=\"104\" y2=\"204\" /><line x1=\"124\" y1=\"184\" x2=\"124\" y2=\"204\" /><line x1=\"144\" y1=\"204\" x2=\"164\" y2=\"204\" /><line x1=\"184\" y1=\"184\" x2=\"184\" y2=\"204\" /><line x1=\"164\" y1=\"204\" x2=\"184\" y2=\"204\" /><line x1=\"204\" y1=\"204\" x2=\"224\" y2=\"204\" /><line x1=\"224\" y1=\"204\" x2=\"244\" y2=\"204\" /><line x1=\"244\" y1=\"204\" x2=\"264\" y2=\"204\" /><line x1=\"284\" y1=\"184\" x2=\"284\" y2=\"204\" /><line x1=\"264\" y1=\"204\" x2=\"284\" y2=\"204\" /><line x1=\"304\" y1=\"184\" x2=\"304\" y2=\"204\" /><line x1=\"4\" y1=\"204\" x2=\"4\" y2=\"224\" /><line x1=\"24\" y1=\"204\" x2=\"24\" y2=\"224\" /><line x1=\"24\" y1=\"224\" x2=\"44\" y2=\"224\" /><line x1=\"64\" y1=\"204\" x2=\"64\" y2=\"224\" /><line x1=\"44\" y1=\"224\" x2=\"64\" y2=\"224\" /><line x1=\"84\" y1=\"204\" x2=\"84\" y2=\"224\" /><line x1=\"84\" y1=\"224\" x2=\"104\" y2=\"224\" /><line x1=\"124\" y1=\"204\" x2=\"124\" y2=\"224\" /><line x1=\"104\" y1=\"224\" x2=\"124\" y2=\"224\" /><line x1=\"124\" y1=\"224\" x2=\"144\" y2=\"224\" /><line x1=\"164\" y1=\"204\" x2=\"164\" y2=\"224\" /><line x1=\"204\" y1=\"204\" x2=\"204\" y2=\"224\" /><line x1=\"184\" y1=\"224\" x2=\"204\" y2=\"224\" /><line x1=\"224\" y1=\"224\" x2=\"244\" y2=\"224\" /><line x1=\"244\" y1=\"224\" x2=\"264\" y2=\"224\" /><line x1=\"264\" y1=\"224\" x2=\"284\" y2=\"224\" /><line x1=\"304\" y1=\"204\" x2=\"304\" y2=\"224\" /><line x1=\"4\" y1=\"224\" x2=\"4\" y2=\"244\" /><line x1=\"4\" y1=\"244\" x2=\"24\" y2=\"244\" /><line x1=\"44\" y1=\"224\" x2=\"44\" y2=\"244\" /><line x1=\"64\" y1=\"224\" x2=\"64\" y2=\"244\" /><line x1=\"64\" y1=\"244\" x2=\"84\" y2=\"244\" /><line x1=\"84\" y1=\"244\" x2=\"104\" y2=\"244\" /><line x1=\"124\" y1=\"224\" x2=\"124\" y2=\"244\" /><line x1=\"164\" y1=\"224\" x2=\"164\" y2=\"244\" /><line x1=\"144\" y1=\"244\" x2=\"164\" y2=\"244\" /><line x1=\"164\" y1=\"244\" x2=\"184\" y2=\"244\" /><line x1=\"204\" y1=\"224\" x2=\"204\" y2=\"244\" /><line x1=\"244\" y1=\"224\" x2=\"244\" y2=\"244\" /><line x1=\"284\" y1=\"224\" x2=\"284\" y2=\"244\" /><line x1=\"304\" y1=\"224\" x2=\"304\" y2=\"244\" /><line x1=\"4\" y1=\"244\" x2=\"4\" y2=\"264\" /><line x1=\"24\" y1=\"244\" x2=\"24\" y2=\"264\" /><line x1=\"24\" y1=\"264\" x2=\"44\" y2=\"264\" /><line x1=\"64\" y1=\"244\" x2=\"64\" y2=\"264\" /><line x1=\"84\" y1=\"244\" x2=\"84\" y2=\"264\" /><line x1=\"124\" y1=\"244\" x2=\"124\" y2=\"264\" /><line x1=\"104\" y1=\"264\" x2=\"124\" y2=\"264\" /><line x1=\"124\" y1=\"264\" x2=\"144\" y2=\"264\" /><line x1=\"164\" y1=\"244\" x2=\"164\" y2=\"264\" /><line x1=\"204\" y1=\"244\" x2=\"204\" y2=\"264\" /><line x1=\"184\" y1=\"264\" x2=\"204\" y2=\"264\" /><line x1=\"224\" y1=\"244\" x2=\"224\" y2=\"264\" /><line x1=\"204\" y1=\"264\" x2=\"224\" y2=\"264\" /><line x1=\"224\" y1=\"264\" x2=\"244\" y2=\"264\" /><line x1=\"264\" y1=\"244\" x2=\"264\" y2=\"264\" /><line x1=\"244\" y1=\"264\" x2=\"264\" y2=\"264\" /><line x1=\"284\" y1=\"244\" x2=\"284\" y2=\"264\" /><line x1=\"304\" y1=\"244\" x2=\"304\" y2=\"264\" /><line x1=\"4\" y1=\"264\" x2=\"4\" y2=\"284\" /><line x1=\"24\" y1=\"284\" x2=\"44\" y2=\"284\" /><line x1=\"64\" y1=\"264\" x2=\"64\" y2=\"284\" /><line x1=\"44\" y1=\"284\" x2=\"64\" y2=\"284\" /><line x1=\"84\" y1=\"264\" x2=\"84\" y2=\"284\" /><line x1=\"84\" y1=\"284\" x2=\"104\" y2=\"284\" /><line x1=\"104\" y1=\"284\" x2=\"124\" y2=\"284\" /><line x1=\"144\" y1=\"264\" x2=\"144\" y2=\"284\" /><line x1=\"164\" y1=\"264\" x2=\"164\" y2=\"284\" /><line x1=\"144\" y1=\"284\" x2=\"164\" y2=\"284\" /><line x1=\"164\" y1=\"284\" x2=\"184\" y2=\"284\" /><line x1=\"204\" y1=\"264\" x2=\"204\" y2=\"284\" /><line x1=\"224\" y1=\"284\" x2=\"244\" y2=\"284\" /><line x1=\"244\" y1=\"284\" x2=\"264\" y2=\"284\" /><line x1=\"284\" y1=\"264\" x2=\"284\" y2=\"284\" /><line x1=\"264\" y1=\"284\" x2=\"284\" y2=\"284\" /><line x1=\"304\" y1=\"264\" x2=\"304\" y2=\"284\" /><line x1=\"4\" y1=\"284\" x2=\"4\" y2=\"304\" /><line x1=\"4\" y1=\"304\" x2=\"24\" y2=\"304\" /><line x1=\"24\" y1=\"304\" x2=\"44\" y2=\"304\" /><line x1=\"44\" y1=\"304\" x2=\"64\" y2=\"304\" /><line x1=\"64\" y1=\"304\" x2=\"84\" y2=\"304\" /><line x1=\"84\" y1=\"304\" x2=\"104\" y2=\"304\" /><line x1=\"124\" y1=\"284\" x2=\"124\" y2=\"304\" /><line x1=\"104\" y1=\"304\" x2=\"124\" y2=\"304\" /><line x1=\"124\" y1=\"304\" x2=\"144\" y2=\"304\" /><line x1=\"144\" y1=\"304\" x2=\"164\" y2=\"304\" /><line x1=\"164\" y1=\"304\" x2=\"184\" y2=\"304\" /><line x1=\"184\" y1=\"304\" x2=\"204\" y2=\"304\" /><line x1=\"224\" y1=\"284\" x2=\"224\" y2=\"304\" /><line x1=\"204\" y1=\"304\" x2=\"224\" y2=\"304\" /><line x1=\"224\" y1=\"304\" x2=\"244\" y2=\"304\" /><line x1=\"244\" y1=\"304\" x2=\"264\" y2=\"304\" /><line x1=\"264\" y1=\"304\" x2=\"284\" y2=\"304\" /><line x1=\"304\" y1=\"284\" x2=\"304\" y2=\"304\" /></g><polygon points=\"14,9 9.5,0 18.5,0\" fill=\"#464aff\" /><polygon points=\"294,299 289.5,308 298.5,308\" fill=\"#464aff\" /></svg>"},"credits_used":5,"credits_remaining":null}},"kruskal_s_seeded_12_12":{"summary":"Kruskal's, seeded 12×12","value":{"tool":"maze-generator-svg","tool_version":"1.0.2","outputs":{"mazeSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"296\" height=\"296\" viewBox=\"0 0 296 296\" shape-rendering=\"geometricPrecision\"><rect width=\"296\" height=\"296\" fill=\"#ffffff\" /><g stroke=\"#1f2937\" stroke-width=\"2\" stroke-linecap=\"square\"><line x1=\"4\" y1=\"4\" x2=\"4\" y2=\"28\" /><line x1=\"4\" y1=\"28\" x2=\"28\" y2=\"28\" /><line x1=\"28\" y1=\"4\" x2=\"52\" y2=\"4\" /><line x1=\"28\" y1=\"28\" x2=\"52\" y2=\"28\" /><line x1=\"52\" y1=\"4\" x2=\"76\" y2=\"4\" /><line x1=\"76\" y1=\"4\" x2=\"100\" y2=\"4\" /><line x1=\"76\" y1=\"28\" x2=\"100\" y2=\"28\" /><line x1=\"100\" y1=\"4\" x2=\"124\" y2=\"4\" /><line x1=\"124\" y1=\"4\" x2=\"124\" y2=\"28\" /><line x1=\"124\" y1=\"4\" x2=\"148\" y2=\"4\" /><line x1=\"148\" y1=\"4\" x2=\"148\" y2=\"28\" /><line x1=\"148\" y1=\"4\" x2=\"172\" y2=\"4\" /><line x1=\"148\" y1=\"28\" x2=\"172\" y2=\"28\" /><line x1=\"172\" y1=\"4\" x2=\"196\" y2=\"4\" /><line x1=\"196\" y1=\"4\" x2=\"220\" y2=\"4\" /><line x1=\"220\" y1=\"4\" x2=\"220\" y2=\"28\" /><line x1=\"196\" y1=\"28\" x2=\"220\" y2=\"28\" /><line x1=\"220\" y1=\"4\" x2=\"244\" y2=\"4\" /><line x1=\"244\" y1=\"4\" x2=\"268\" y2=\"4\" /><line x1=\"244\" y1=\"28\" x2=\"268\" y2=\"28\" /><line x1=\"268\" y1=\"4\" x2=\"292\" y2=\"4\" /><line x1=\"292\" y1=\"4\" x2=\"292\" y2=\"28\" /><line x1=\"4\" y1=\"28\" x2=\"4\" y2=\"52\" /><line x1=\"4\" y1=\"52\" x2=\"28\" y2=\"52\" /><line x1=\"52\" y1=\"28\" x2=\"52\" y2=\"52\" /><line x1=\"76\" y1=\"28\" x2=\"76\" y2=\"52\" /><line x1=\"52\" y1=\"52\" x2=\"76\" y2=\"52\" /><line x1=\"100\" y1=\"28\" x2=\"100\" y2=\"52\" /><line x1=\"148\" y1=\"52\" x2=\"172\" y2=\"52\" /><line x1=\"196\" y1=\"28\" x2=\"196\" y2=\"52\" /><line x1=\"172\" y1=\"52\" x2=\"196\" y2=\"52\" /><line x1=\"196\" y1=\"52\" x2=\"220\" y2=\"52\" /><line x1=\"268\" y1=\"28\" x2=\"268\" y2=\"52\" /><line x1=\"244\" y1=\"52\" x2=\"268\" y2=\"52\" /><line x1=\"292\" y1=\"28\" x2=\"292\" y2=\"52\" /><line x1=\"268\" y1=\"52\" x2=\"292\" y2=\"52\" /><line x1=\"4\" y1=\"52\" x2=\"4\" y2=\"76\" /><line x1=\"28\" y1=\"52\" x2=\"28\" y2=\"76\" /><line x1=\"28\" y1=\"76\" x2=\"52\" y2=\"76\" /><line x1=\"52\" y1=\"76\" x2=\"76\" y2=\"76\" /><line x1=\"124\" y1=\"52\" x2=\"124\" y2=\"76\" /><line x1=\"100\" y1=\"76\" x2=\"124\" y2=\"76\" /><line x1=\"148\" y1=\"52\" x2=\"148\" y2=\"76\" /><line x1=\"124\" y1=\"76\" x2=\"148\" y2=\"76\" /><line x1=\"172\" y1=\"52\" x2=\"172\" y2=\"76\" /><line x1=\"172\" y1=\"76\" x2=\"196\" y2=\"76\" /><line x1=\"244\" y1=\"52\" x2=\"244\" y2=\"76\" /><line x1=\"220\" y1=\"76\" x2=\"244\" y2=\"76\" /><line x1=\"292\" y1=\"52\" x2=\"292\" y2=\"76\" /><line x1=\"268\" y1=\"76\" x2=\"292\" y2=\"76\" /><line x1=\"4\" y1=\"76\" x2=\"4\" y2=\"100\" /><line x1=\"4\" y1=\"100\" x2=\"28\" y2=\"100\" /><line x1=\"52\" y1=\"76\" x2=\"52\" y2=\"100\" /><line x1=\"76\" y1=\"100\" x2=\"100\" y2=\"100\" /><line x1=\"100\" y1=\"100\" x2=\"124\" y2=\"100\" /><line x1=\"124\" y1=\"100\" x2=\"148\" y2=\"100\" /><line x1=\"172\" y1=\"76\" x2=\"172\" y2=\"100\" /><line x1=\"244\" y1=\"76\" x2=\"244\" y2=\"100\" /><line x1=\"292\" y1=\"76\" x2=\"292\" y2=\"100\" /><line x1=\"268\" y1=\"100\" x2=\"292\" y2=\"100\" /><line x1=\"4\" y1=\"100\" x2=\"4\" y2=\"124\" /><line x1=\"28\" y1=\"100\" x2=\"28\" y2=\"124\" /><line x1=\"52\" y1=\"124\" x2=\"76\" y2=\"124\" /><line x1=\"76\" y1=\"124\" x2=\"100\" y2=\"124\" /><line x1=\"124\" y1=\"100\" x2=\"124\" y2=\"124\" /><line x1=\"172\" y1=\"100\" x2=\"172\" y2=\"124\" /><line x1=\"148\" y1=\"124\" x2=\"172\" y2=\"124\" /><line x1=\"196\" y1=\"100\" x2=\"196\" y2=\"124\" /><line x1=\"172\" y1=\"124\" x2=\"196\" y2=\"124\" /><line x1=\"220\" y1=\"100\" x2=\"220\" y2=\"124\" /><line x1=\"196\" y1=\"124\" x2=\"220\" y2=\"124\" /><line x1=\"220\" y1=\"124\" x2=\"244\" y2=\"124\" /><line x1=\"244\" y1=\"124\" x2=\"268\" y2=\"124\" /><line x1=\"292\" y1=\"100\" x2=\"292\" y2=\"124\" /><line x1=\"4\" y1=\"124\" x2=\"4\" y2=\"148\" /><line x1=\"52\" y1=\"124\" x2=\"52\" y2=\"148\" /><line x1=\"28\" y1=\"148\" x2=\"52\" y2=\"148\" /><line x1=\"76\" y1=\"148\" x2=\"100\" y2=\"148\" /><line x1=\"124\" y1=\"124\" x2=\"124\" y2=\"148\" /><line x1=\"100\" y1=\"148\" x2=\"124\" y2=\"148\" /><line x1=\"124\" y1=\"148\" x2=\"148\" y2=\"148\" /><line x1=\"196\" y1=\"124\" x2=\"196\" y2=\"148\" /><line x1=\"172\" y1=\"148\" x2=\"196\" y2=\"148\" /><line x1=\"244\" y1=\"124\" x2=\"244\" y2=\"148\" /><line x1=\"244\" y1=\"148\" x2=\"268\" y2=\"148\" /><line x1=\"292\" y1=\"124\" x2=\"292\" y2=\"148\" /><line x1=\"4\" y1=\"148\" x2=\"4\" y2=\"172\" /><line x1=\"52\" y1=\"148\" x2=\"52\" y2=\"172\" /><line x1=\"28\" y1=\"172\" x2=\"52\" y2=\"172\" /><line x1=\"76\" y1=\"148\" x2=\"76\" y2=\"172\" /><line x1=\"52\" y1=\"172\" x2=\"76\" y2=\"172\" /><line x1=\"124\" y1=\"148\" x2=\"124\" y2=\"172\" /><line x1=\"100\" y1=\"172\" x2=\"124\" y2=\"172\" /><line x1=\"124\" y1=\"172\" x2=\"148\" y2=\"172\" /><line x1=\"196\" y1=\"148\" x2=\"196\" y2=\"172\" /><line x1=\"220\" y1=\"148\" x2=\"220\" y2=\"172\" /><line x1=\"292\" y1=\"148\" x2=\"292\" y2=\"172\" /><line x1=\"4\" y1=\"172\" x2=\"4\" y2=\"196\" /><line x1=\"4\" y1=\"196\" x2=\"28\" y2=\"196\" /><line x1=\"52\" y1=\"172\" x2=\"52\" y2=\"196\" /><line x1=\"76\" y1=\"172\" x2=\"76\" y2=\"196\" /><line x1=\"76\" y1=\"196\" x2=\"100\" y2=\"196\" /><line x1=\"100\" y1=\"196\" x2=\"124\" y2=\"196\" /><line x1=\"124\" y1=\"196\" x2=\"148\" y2=\"196\" /><line x1=\"172\" y1=\"172\" x2=\"172\" y2=\"196\" /><line x1=\"148\" y1=\"196\" x2=\"172\" y2=\"196\" /><line x1=\"196\" y1=\"172\" x2=\"196\" y2=\"196\" /><line x1=\"220\" y1=\"172\" x2=\"220\" y2=\"196\" /><line x1=\"196\" y1=\"196\" x2=\"220\" y2=\"196\" /><line x1=\"244\" y1=\"172\" x2=\"244\" y2=\"196\" /><line x1=\"268\" y1=\"172\" x2=\"268\" y2=\"196\" /><line x1=\"244\" y1=\"196\" x2=\"268\" y2=\"196\" /><line x1=\"292\" y1=\"172\" x2=\"292\" y2=\"196\" /><line x1=\"4\" y1=\"196\" x2=\"4\" y2=\"220\" /><line x1=\"4\" y1=\"220\" x2=\"28\" y2=\"220\" /><line x1=\"28\" y1=\"220\" x2=\"52\" y2=\"220\" /><line x1=\"52\" y1=\"220\" x2=\"76\" y2=\"220\" /><line x1=\"100\" y1=\"196\" x2=\"100\" y2=\"220\" /><line x1=\"76\" y1=\"220\" x2=\"100\" y2=\"220\" /><line x1=\"100\" y1=\"220\" x2=\"124\" y2=\"220\" /><line x1=\"148\" y1=\"220\" x2=\"172\" y2=\"220\" /><line x1=\"196\" y1=\"196\" x2=\"196\" y2=\"220\" /><line x1=\"196\" y1=\"220\" x2=\"220\" y2=\"220\" /><line x1=\"244\" y1=\"196\" x2=\"244\" y2=\"220\" /><line x1=\"220\" y1=\"220\" x2=\"244\" y2=\"220\" /><line x1=\"292\" y1=\"196\" x2=\"292\" y2=\"220\" /><line x1=\"268\" y1=\"220\" x2=\"292\" y2=\"220\" /><line x1=\"4\" y1=\"220\" x2=\"4\" y2=\"244\" /><line x1=\"28\" y1=\"244\" x2=\"52\" y2=\"244\" /><line x1=\"76\" y1=\"220\" x2=\"76\" y2=\"244\" /><line x1=\"124\" y1=\"220\" x2=\"124\" y2=\"244\" /><line x1=\"148\" y1=\"220\" x2=\"148\" y2=\"244\" /><line x1=\"148\" y1=\"244\" x2=\"172\" y2=\"244\" /><line x1=\"220\" y1=\"220\" x2=\"220\" y2=\"244\" /><line x1=\"196\" y1=\"244\" x2=\"220\" y2=\"244\" /><line x1=\"220\" y1=\"244\" x2=\"244\" y2=\"244\" /><line x1=\"268\" y1=\"220\" x2=\"268\" y2=\"244\" /><line x1=\"292\" y1=\"220\" x2=\"292\" y2=\"244\" /><line x1=\"4\" y1=\"244\" x2=\"4\" y2=\"268\" /><line x1=\"28\" y1=\"244\" x2=\"28\" y2=\"268\" /><line x1=\"28\" y1=\"268\" x2=\"52\" y2=\"268\" /><line x1=\"76\" y1=\"244\" x2=\"76\" y2=\"268\" /><line x1=\"52\" y1=\"268\" x2=\"76\" y2=\"268\" /><line x1=\"100\" y1=\"244\" x2=\"100\" y2=\"268\" /><line x1=\"76\" y1=\"268\" x2=\"100\" y2=\"268\" /><line x1=\"148\" y1=\"244\" x2=\"148\" y2=\"268\" /><line x1=\"172\" y1=\"244\" x2=\"172\" y2=\"268\" /><line x1=\"196\" y1=\"244\" x2=\"196\" y2=\"268\" /><line x1=\"196\" y1=\"268\" x2=\"220\" y2=\"268\" /><line x1=\"220\" y1=\"268\" x2=\"244\" y2=\"268\" /><line x1=\"292\" y1=\"244\" x2=\"292\" y2=\"268\" /><line x1=\"4\" y1=\"268\" x2=\"4\" y2=\"292\" /><line x1=\"4\" y1=\"292\" x2=\"28\" y2=\"292\" /><line x1=\"28\" y1=\"292\" x2=\"52\" y2=\"292\" /><line x1=\"52\" y1=\"292\" x2=\"76\" y2=\"292\" /><line x1=\"76\" y1=\"292\" x2=\"100\" y2=\"292\" /><line x1=\"124\" y1=\"268\" x2=\"124\" y2=\"292\" /><line x1=\"100\" y1=\"292\" x2=\"124\" y2=\"292\" /><line x1=\"124\" y1=\"292\" x2=\"148\" y2=\"292\" /><line x1=\"172\" y1=\"268\" x2=\"172\" y2=\"292\" /><line x1=\"148\" y1=\"292\" x2=\"172\" y2=\"292\" /><line x1=\"172\" y1=\"292\" x2=\"196\" y2=\"292\" /><line x1=\"196\" y1=\"292\" x2=\"220\" y2=\"292\" /><line x1=\"220\" y1=\"292\" x2=\"244\" y2=\"292\" /><line x1=\"268\" y1=\"268\" x2=\"268\" y2=\"292\" /><line x1=\"244\" y1=\"292\" x2=\"268\" y2=\"292\" /><line x1=\"292\" y1=\"268\" x2=\"292\" y2=\"292\" /></g><polygon points=\"16,11 10.5,0 21.5,0\" fill=\"#464aff\" /><polygon points=\"280,285 274.5,296 285.5,296\" fill=\"#464aff\" /></svg>"},"credits_used":5,"credits_remaining":null}},"prim_s_seeded_10_10_no_markers":{"summary":"Prim's, seeded 10×10, no markers","value":{"tool":"maze-generator-svg","tool_version":"1.0.2","outputs":{"mazeSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"208\" height=\"208\" viewBox=\"0 0 208 208\" shape-rendering=\"geometricPrecision\"><rect width=\"208\" height=\"208\" fill=\"#f8fafc\" /><polyline points=\"14,14 14,34 14,54 34,54 34,74 54,74 74,74 94,74 94,54 114,54 114,74 134,74 134,94 154,94 174,94 174,114 174,134 174,154 194,154 194,174 194,194\" fill=\"none\" stroke=\"#e11d48\" stroke-width=\"7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\" /><g stroke=\"#111827\" stroke-width=\"3\" stroke-linecap=\"square\"><line x1=\"4\" y1=\"4\" x2=\"24\" y2=\"4\" /><line x1=\"4\" y1=\"4\" x2=\"4\" y2=\"24\" /><line x1=\"24\" y1=\"4\" x2=\"24\" y2=\"24\" /><line x1=\"24\" y1=\"4\" x2=\"44\" y2=\"4\" /><line x1=\"44\" y1=\"4\" x2=\"44\" y2=\"24\" /><line x1=\"44\" y1=\"4\" x2=\"64\" y2=\"4\" /><line x1=\"64\" y1=\"4\" x2=\"64\" y2=\"24\" /><line x1=\"64\" y1=\"4\" x2=\"84\" y2=\"4\" /><line x1=\"84\" y1=\"4\" x2=\"84\" y2=\"24\" /><line x1=\"84\" y1=\"4\" x2=\"104\" y2=\"4\" /><line x1=\"84\" y1=\"24\" x2=\"104\" y2=\"24\" /><line x1=\"104\" y1=\"4\" x2=\"124\" y2=\"4\" /><line x1=\"124\" y1=\"4\" x2=\"144\" y2=\"4\" /><line x1=\"144\" y1=\"4\" x2=\"144\" y2=\"24\" /><line x1=\"124\" y1=\"24\" x2=\"144\" y2=\"24\" /><line x1=\"144\" y1=\"4\" x2=\"164\" y2=\"4\" /><line x1=\"144\" y1=\"24\" x2=\"164\" y2=\"24\" /><line x1=\"164\" y1=\"4\" x2=\"184\" y2=\"4\" /><line x1=\"184\" y1=\"4\" x2=\"204\" y2=\"4\" /><line x1=\"204\" y1=\"4\" x2=\"204\" y2=\"24\" /><line x1=\"184\" y1=\"24\" x2=\"204\" y2=\"24\" /><line x1=\"4\" y1=\"24\" x2=\"4\" y2=\"44\" /><line x1=\"44\" y1=\"24\" x2=\"44\" y2=\"44\" /><line x1=\"24\" y1=\"44\" x2=\"44\" y2=\"44\" /><line x1=\"44\" y1=\"44\" x2=\"64\" y2=\"44\" /><line x1=\"84\" y1=\"24\" x2=\"84\" y2=\"44\" /><line x1=\"104\" y1=\"24\" x2=\"104\" y2=\"44\" /><line x1=\"144\" y1=\"24\" x2=\"144\" y2=\"44\" /><line x1=\"124\" y1=\"44\" x2=\"144\" y2=\"44\" /><line x1=\"144\" y1=\"44\" x2=\"164\" y2=\"44\" /><line x1=\"184\" y1=\"24\" x2=\"184\" y2=\"44\" /><line x1=\"204\" y1=\"24\" x2=\"204\" y2=\"44\" /><line x1=\"4\" y1=\"44\" x2=\"4\" y2=\"64\" /><line x1=\"44\" y1=\"44\" x2=\"44\" y2=\"64\" /><line x1=\"44\" y1=\"64\" x2=\"64\" y2=\"64\" /><line x1=\"64\" y1=\"64\" x2=\"84\" y2=\"64\" /><line x1=\"124\" y1=\"44\" x2=\"124\" y2=\"64\" /><line x1=\"144\" y1=\"44\" x2=\"144\" y2=\"64\" /><line x1=\"164\" y1=\"44\" x2=\"164\" y2=\"64\" /><line x1=\"204\" y1=\"44\" x2=\"204\" y2=\"64\" /><line x1=\"184\" y1=\"64\" x2=\"204\" y2=\"64\" /><line x1=\"4\" y1=\"64\" x2=\"4\" y2=\"84\" /><line x1=\"24\" y1=\"64\" x2=\"24\" y2=\"84\" /><line x1=\"44\" y1=\"84\" x2=\"64\" y2=\"84\" /><line x1=\"64\" y1=\"84\" x2=\"84\" y2=\"84\" /><line x1=\"104\" y1=\"64\" x2=\"104\" y2=\"84\" /><line x1=\"104\" y1=\"84\" x2=\"124\" y2=\"84\" /><line x1=\"144\" y1=\"84\" x2=\"164\" y2=\"84\" /><line x1=\"164\" y1=\"84\" x2=\"184\" y2=\"84\" /><line x1=\"204\" y1=\"64\" x2=\"204\" y2=\"84\" /><line x1=\"4\" y1=\"84\" x2=\"4\" y2=\"104\" /><line x1=\"24\" y1=\"84\" x2=\"24\" y2=\"104\" /><line x1=\"44\" y1=\"84\" x2=\"44\" y2=\"104\" /><line x1=\"24\" y1=\"104\" x2=\"44\" y2=\"104\" /><line x1=\"64\" y1=\"104\" x2=\"84\" y2=\"104\" /><line x1=\"124\" y1=\"84\" x2=\"124\" y2=\"104\" /><line x1=\"104\" y1=\"104\" x2=\"124\" y2=\"104\" /><line x1=\"184\" y1=\"84\" x2=\"184\" y2=\"104\" /><line x1=\"204\" y1=\"84\" x2=\"204\" y2=\"104\" /><line x1=\"4\" y1=\"104\" x2=\"4\" y2=\"124\" /><line x1=\"44\" y1=\"104\" x2=\"44\" y2=\"124\" /><line x1=\"24\" y1=\"124\" x2=\"44\" y2=\"124\" /><line x1=\"64\" y1=\"104\" x2=\"64\" y2=\"124\" /><line x1=\"64\" y1=\"124\" x2=\"84\" y2=\"124\" /><line x1=\"124\" y1=\"104\" x2=\"124\" y2=\"124\" /><line x1=\"144\" y1=\"104\" x2=\"144\" y2=\"124\" /><line x1=\"164\" y1=\"104\" x2=\"164\" y2=\"124\" /><line x1=\"184\" y1=\"104\" x2=\"184\" y2=\"124\" /><line x1=\"204\" y1=\"104\" x2=\"204\" y2=\"124\" /><line x1=\"184\" y1=\"124\" x2=\"204\" y2=\"124\" /><line x1=\"4\" y1=\"124\" x2=\"4\" y2=\"144\" /><line x1=\"4\" y1=\"144\" x2=\"24\" y2=\"144\" /><line x1=\"44\" y1=\"124\" x2=\"44\" y2=\"144\" /><line x1=\"64\" y1=\"124\" x2=\"64\" y2=\"144\" /><line x1=\"44\" y1=\"144\" x2=\"64\" y2=\"144\" /><line x1=\"64\" y1=\"144\" x2=\"84\" y2=\"144\" /><line x1=\"104\" y1=\"124\" x2=\"104\" y2=\"144\" /><line x1=\"124\" y1=\"124\" x2=\"124\" y2=\"144\" /><line x1=\"144\" y1=\"124\" x2=\"144\" y2=\"144\" /><line x1=\"124\" y1=\"144\" x2=\"144\" y2=\"144\" /><line x1=\"164\" y1=\"124\" x2=\"164\" y2=\"144\" /><line x1=\"144\" y1=\"144\" x2=\"164\" y2=\"144\" /><line x1=\"204\" y1=\"124\" x2=\"204\" y2=\"144\" /><line x1=\"184\" y1=\"144\" x2=\"204\" y2=\"144\" /><line x1=\"4\" y1=\"144\" x2=\"4\" y2=\"164\" /><line x1=\"4\" y1=\"164\" x2=\"24\" y2=\"164\" /><line x1=\"44\" y1=\"144\" x2=\"44\" y2=\"164\" /><line x1=\"84\" y1=\"144\" x2=\"84\" y2=\"164\" /><line x1=\"64\" y1=\"164\" x2=\"84\" y2=\"164\" /><line x1=\"104\" y1=\"144\" x2=\"104\" y2=\"164\" /><line x1=\"104\" y1=\"164\" x2=\"124\" y2=\"164\" /><line x1=\"144\" y1=\"144\" x2=\"144\" y2=\"164\" /><line x1=\"164\" y1=\"144\" x2=\"164\" y2=\"164\" /><line x1=\"204\" y1=\"144\" x2=\"204\" y2=\"164\" /><line x1=\"4\" y1=\"164\" x2=\"4\" y2=\"184\" /><line x1=\"44\" y1=\"184\" x2=\"64\" y2=\"184\" /><line x1=\"84\" y1=\"164\" x2=\"84\" y2=\"184\" /><line x1=\"64\" y1=\"184\" x2=\"84\" y2=\"184\" /><line x1=\"104\" y1=\"164\" x2=\"104\" y2=\"184\" /><line x1=\"124\" y1=\"164\" x2=\"124\" y2=\"184\" /><line x1=\"144\" y1=\"164\" x2=\"144\" y2=\"184\" /><line x1=\"124\" y1=\"184\" x2=\"144\" y2=\"184\" /><line x1=\"144\" y1=\"184\" x2=\"164\" y2=\"184\" /><line x1=\"184\" y1=\"164\" x2=\"184\" y2=\"184\" /><line x1=\"204\" y1=\"164\" x2=\"204\" y2=\"184\" /><line x1=\"4\" y1=\"184\" x2=\"4\" y2=\"204\" /><line x1=\"24\" y1=\"184\" x2=\"24\" y2=\"204\" /><line x1=\"4\" y1=\"204\" x2=\"24\" y2=\"204\" /><line x1=\"24\" y1=\"204\" x2=\"44\" y2=\"204\" /><line x1=\"64\" y1=\"184\" x2=\"64\" y2=\"204\" /><line x1=\"44\" y1=\"204\" x2=\"64\" y2=\"204\" /><line x1=\"64\" y1=\"204\" x2=\"84\" y2=\"204\" /><line x1=\"84\" y1=\"204\" x2=\"104\" y2=\"204\" /><line x1=\"104\" y1=\"204\" x2=\"124\" y2=\"204\" /><line x1=\"124\" y1=\"204\" x2=\"144\" y2=\"204\" /><line x1=\"164\" y1=\"184\" x2=\"164\" y2=\"204\" /><line x1=\"144\" y1=\"204\" x2=\"164\" y2=\"204\" /><line x1=\"184\" y1=\"184\" x2=\"184\" y2=\"204\" /><line x1=\"164\" y1=\"204\" x2=\"184\" y2=\"204\" /><line x1=\"204\" y1=\"184\" x2=\"204\" y2=\"204\" /><line x1=\"184\" y1=\"204\" x2=\"204\" y2=\"204\" /></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mazeSvg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-button-generator":{"post":{"operationId":"run_pdf_button_generator","summary":"PDF Button Generator","tags":["Generators"],"description":"Generate a ready-to-paste HTML button that opens or downloads a PDF from a URL — set the label, action, colors, and corner radius, then copy the self-contained embed code. Links straight to your PDF, no sign-up and no third-party viewer involved.\n\n[Try PDF Button Generator in your browser →](https://iotools.cloud/tool/pdf-button-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pdfUrl":{"type":"string","description":"PDF URL"},"buttonText":{"type":"string","description":"Button Text"},"action":{"enum":["open","download"],"description":"Action"},"showIcon":{"type":"boolean","description":"Show file icon"},"backgroundColor":{"type":"string","description":"Background Color"},"textColor":{"type":"string","description":"Text Color"},"borderRadius":{"type":"number","description":"Corner Radius","minimum":0,"maximum":32}},"required":["pdfUrl"]},"examples":{"open_in_new_tab":{"summary":"Open in new tab","value":{"pdfUrl":"https://example.com/document.pdf","buttonText":"View PDF","action":"open","showIcon":"true","backgroundColor":"#dc2626","textColor":"#ffffff","borderRadius":"6"}},"download_button_no_icon_pill_shape":{"summary":"Download button, no icon, pill shape","value":{"pdfUrl":"https://example.com/reports/q3-report.pdf","buttonText":"Download Report","action":"download","showIcon":"","backgroundColor":"#111827","textColor":"#f9fafb","borderRadius":"999"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"open_in_new_tab":{"summary":"Open in new tab","value":{"tool":"pdf-button-generator","tool_version":"1.0.2","outputs":{"code":"<a href=\"https://example.com/document.pdf\" target=\"_blank\" rel=\"noopener noreferrer\" style='display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background-color:#dc2626;color:#ffffff;border-radius:6px;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;font-size:15px;font-weight:600;line-height:1;'><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\"></path><path d=\"M13 2v7h7\"></path></svg>View PDF</a>"},"credits_used":5,"credits_remaining":null}},"download_button_no_icon_pill_shape":{"summary":"Download button, no icon, pill shape","value":{"tool":"pdf-button-generator","tool_version":"1.0.2","outputs":{"code":"<a href=\"https://example.com/reports/q3-report.pdf\" download style='display:inline-flex;align-items:center;gap:8px;padding:10px 18px;background-color:#111827;color:#f9fafb;border-radius:999px;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;font-size:15px;font-weight:600;line-height:1;'>Download Report</a>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-embed-code-generator":{"post":{"operationId":"run_pdf_embed_code_generator","summary":"PDF Embed Code Generator","tags":["Generators"],"description":"Generate an &lt;iframe> embed code that displays a PDF inline on your website — set the title, size, and toolbar visibility, then copy the ready-to-use HTML. Includes an accessible download-link fallback. No sign-up, no hosted viewer.\n\n[Try PDF Embed Code Generator in your browser →](https://iotools.cloud/tool/pdf-embed-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pdfUrl":{"type":"string","description":"PDF URL"},"title":{"type":"string","description":"Title"},"showToolbar":{"type":"boolean","description":"Show PDF toolbar"},"width":{"type":"string","description":"Width"},"height":{"type":"number","description":"Height (px)","minimum":1}},"required":["pdfUrl"]},"examples":{"default":{"summary":"Default","value":{"pdfUrl":"https://example.com/document.pdf","title":"","showToolbar":"true","width":"100%","height":"600"}},"toolbar_hidden_custom_size_and_title":{"summary":"Toolbar hidden, custom size and title","value":{"pdfUrl":"https://example.com/reports/annual-report.pdf","title":"Annual Report 2026","showToolbar":"","width":"800px","height":"1000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default":{"summary":"Default","value":{"tool":"pdf-embed-code-generator","tool_version":"1.0.2","outputs":{"code":"<iframe src=\"https://example.com/document.pdf\" title=\"PDF document\" width=\"100%\" height=\"600\" style=\"border:none;\" loading=\"lazy\"><p>Your browser doesn't support embedded PDFs. <a href=\"https://example.com/document.pdf\">Download the PDF</a> instead.</p></iframe>"},"credits_used":5,"credits_remaining":null}},"toolbar_hidden_custom_size_and_title":{"summary":"Toolbar hidden, custom size and title","value":{"tool":"pdf-embed-code-generator","tool_version":"1.0.2","outputs":{"code":"<iframe src=\"https://example.com/reports/annual-report.pdf#toolbar=0\" title=\"Annual Report 2026\" width=\"800px\" height=\"1000\" style=\"border:none;\" loading=\"lazy\"><p>Your browser doesn't support embedded PDFs. <a href=\"https://example.com/reports/annual-report.pdf\">Download the PDF</a> instead.</p></iframe>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/merkle-tree-generator":{"post":{"operationId":"run_merkle_tree_generator","summary":"Merkle Tree Generator","tags":["Generators"],"description":"Build a Merkle tree from a list of leaves and compute its Merkle root using SHA-256, SHA-1 or Keccak-256. Choose UTF-8 or hex leaf encoding, the Bitcoin duplicate-last or promote odd-node rule, and raw or OpenZeppelin sorted pair concatenation.\n\n[Try Merkle Tree Generator in your browser →](https://iotools.cloud/tool/merkle-tree-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"merkleLeaves":{"type":"string","description":"Leaves (one per line)"},"merkleHash":{"enum":["sha-256","sha-1","keccak-256"],"description":"Hash function"},"merkleLeafEncoding":{"enum":["utf8","hex"],"description":"Leaf encoding"},"merkleOddRule":{"enum":["duplicate","promote"],"description":"Odd-leaf rule"},"merkleConcat":{"enum":["bytes","sorted"],"description":"Pair concatenation"}},"required":[]},"examples":{"4_leaves_sha_256_power_of_two":{"summary":"4 leaves, SHA-256 (power of two)","value":{"merkleLeaves":"a\nb\nc\nd","merkleHash":"sha-256","merkleLeafEncoding":"utf8","merkleOddRule":"duplicate","merkleConcat":"bytes"}},"3_leaves_duplicate_last_bitcoin":{"summary":"3 leaves, duplicate-last (Bitcoin)","value":{"merkleLeaves":"a\nb\nc","merkleHash":"sha-256","merkleLeafEncoding":"utf8","merkleOddRule":"duplicate","merkleConcat":"bytes"}},"3_leaves_promote_last_carry_up":{"summary":"3 leaves, promote-last (carry up)","value":{"merkleLeaves":"a\nb\nc","merkleHash":"sha-256","merkleLeafEncoding":"utf8","merkleOddRule":"promote","merkleConcat":"bytes"}},"3_leaves_keccak_256_ethereum":{"summary":"3 leaves, Keccak-256 (Ethereum)","value":{"merkleLeaves":"alice\nbob\ncarol","merkleHash":"keccak-256","merkleLeafEncoding":"utf8","merkleOddRule":"duplicate","merkleConcat":"bytes"}},"sorted_pairs_openzeppelin":{"summary":"Sorted pairs (OpenZeppelin)","value":{"merkleLeaves":"a\nb","merkleHash":"sha-256","merkleLeafEncoding":"utf8","merkleOddRule":"duplicate","merkleConcat":"sorted"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4_leaves_sha_256_power_of_two":{"summary":"4 leaves, SHA-256 (power of two)","value":{"tool":"merkle-tree-generator","tool_version":"1.0.2","outputs":{"merkleRoot":"0x14ede5e8e97ad9372327728f5099b95604a39593cac3bd38a343ad76205213e7","merkleLevels":[{"node":"Leaf 0","leaf-input":"a","hash-hex":"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"},{"node":"Leaf 1","leaf-input":"b","hash-hex":"3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d"},{"node":"Leaf 2","leaf-input":"c","hash-hex":"2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6"},{"node":"Leaf 3","leaf-input":"d","hash-hex":"18ac3e7343f016890c510e93f935261169d9e3f565436429830faf0934f4f8e4"},{"node":"L1 · 0","leaf-input":"—","hash-hex":"e5a01fee14e0ed5c48714f22180f25ad8365b53f9779f79dc4a3d7e93963f94a"},{"node":"L1 · 1","leaf-input":"—","hash-hex":"bffe0b34dba16bc6fac17c08bac55d676cded5a4ade41fe2c9924a5dde8f3e5b"},{"node":"Root","leaf-input":"—","hash-hex":"14ede5e8e97ad9372327728f5099b95604a39593cac3bd38a343ad76205213e7"}]},"credits_used":5,"credits_remaining":null}},"3_leaves_duplicate_last_bitcoin":{"summary":"3 leaves, duplicate-last (Bitcoin)","value":{"tool":"merkle-tree-generator","tool_version":"1.0.2","outputs":{"merkleRoot":"0xd31a37ef6ac14a2db1470c4316beb5592e6afd4465022339adafda76a18ffabe","merkleLevels":[{"node":"Leaf 0","leaf-input":"a","hash-hex":"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"},{"node":"Leaf 1","leaf-input":"b","hash-hex":"3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d"},{"node":"Leaf 2","leaf-input":"c","hash-hex":"2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6"},{"node":"Leaf 3 (dup)","leaf-input":"(duplicated)","hash-hex":"2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6"},{"node":"L1 · 0","leaf-input":"—","hash-hex":"e5a01fee14e0ed5c48714f22180f25ad8365b53f9779f79dc4a3d7e93963f94a"},{"node":"L1 · 1","leaf-input":"—","hash-hex":"a3e333fbee455b9a054cf05077f0f9d45b91bd13db4cd4a3681ec47455af085c"},{"node":"Root","leaf-input":"—","hash-hex":"d31a37ef6ac14a2db1470c4316beb5592e6afd4465022339adafda76a18ffabe"}]},"credits_used":5,"credits_remaining":null}},"3_leaves_promote_last_carry_up":{"summary":"3 leaves, promote-last (carry up)","value":{"tool":"merkle-tree-generator","tool_version":"1.0.2","outputs":{"merkleRoot":"0x7075152d03a5cd92104887b476862778ec0c87be5c2fa1c0a90f87c49fad6eff","merkleLevels":[{"node":"Leaf 0","leaf-input":"a","hash-hex":"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"},{"node":"Leaf 1","leaf-input":"b","hash-hex":"3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d"},{"node":"Leaf 2","leaf-input":"c","hash-hex":"2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6"},{"node":"L1 · 0","leaf-input":"—","hash-hex":"e5a01fee14e0ed5c48714f22180f25ad8365b53f9779f79dc4a3d7e93963f94a"},{"node":"L1 · 1","leaf-input":"—","hash-hex":"2e7d2c03a9507ae265ecf5b5356885a53393a2029d241394997265a1a25aefc6"},{"node":"Root","leaf-input":"—","hash-hex":"7075152d03a5cd92104887b476862778ec0c87be5c2fa1c0a90f87c49fad6eff"}]},"credits_used":5,"credits_remaining":null}},"3_leaves_keccak_256_ethereum":{"summary":"3 leaves, Keccak-256 (Ethereum)","value":{"tool":"merkle-tree-generator","tool_version":"1.0.2","outputs":{"merkleRoot":"0x4769804fb84fce618ce591bf18060dc48c34d27b99315b49bff3514b6168b6d1","merkleLevels":[{"node":"Leaf 0","leaf-input":"alice","hash-hex":"9c0257114eb9399a2985f8e75dad7600c5d89fe3824ffa99ec1c3eb8bf3b0501"},{"node":"Leaf 1","leaf-input":"bob","hash-hex":"38e47a7b719dce63662aeaf43440326f551b8a7ee198cee35cb5d517f2d296a2"},{"node":"Leaf 2","leaf-input":"carol","hash-hex":"2c52130a69b3254240c961f6acfb09713f4f9cc14aa498cbf844b94a27da64ff"},{"node":"Leaf 3 (dup)","leaf-input":"(duplicated)","hash-hex":"2c52130a69b3254240c961f6acfb09713f4f9cc14aa498cbf844b94a27da64ff"},{"node":"L1 · 0","leaf-input":"—","hash-hex":"2bdf15e9913a52d9f36bb7e62634a6079cc32fc2fe975aadfcbc67b7e3a8a61b"},{"node":"L1 · 1","leaf-input":"—","hash-hex":"8181fb138cf8aa0e3b49d266c25cedb60be447dfd4ba6bac0087cf0fa65a65c6"},{"node":"Root","leaf-input":"—","hash-hex":"4769804fb84fce618ce591bf18060dc48c34d27b99315b49bff3514b6168b6d1"}]},"credits_used":5,"credits_remaining":null}},"sorted_pairs_openzeppelin":{"summary":"Sorted pairs (OpenZeppelin)","value":{"tool":"merkle-tree-generator","tool_version":"1.0.2","outputs":{"merkleRoot":"0x18d79cb747ea174c59f3a3b41768672526d56fecc58360a99d283d0f9b0a3cc0","merkleLevels":[{"node":"Leaf 0","leaf-input":"a","hash-hex":"ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"},{"node":"Leaf 1","leaf-input":"b","hash-hex":"3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d"},{"node":"Root","leaf-input":"—","hash-hex":"18d79cb747ea174c59f3a3b41768672526d56fecc58360a99d283d0f9b0a3cc0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"merkleRoot":{"type":"string","description":"Merkle root"},"merkleLevels":{"type":"array","description":"Tree nodes","items":{"type":"object","properties":{"node":{"type":"string","description":"Node"},"leaf-input":{"type":"string","description":"Leaf / input"},"hash-hex":{"type":"string","description":"Hash (hex)"}}},"x-iotools-columns":["node","leaf-input","hash-hex"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mock-http-response-builder":{"post":{"operationId":"run_mock_http_response_builder","summary":"Mock HTTP Response Builder","tags":["Generators"],"description":"Build a raw HTTP response — status line, headers and body — from simple fields. Pick a status code, choose a body type (JSON, HTML, XML, plain text or form), auto-add Content-Type and Content-Length, and copy or download the full response for API mocking and testing.\n\n[Try Mock HTTP Response Builder in your browser →](https://iotools.cloud/tool/mock-http-response-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"httpVersion":{"enum":["HTTP/1.0","HTTP/1.1","HTTP/2"],"description":"HTTP Version"},"statusCode":{"enum":["100|Continue","101|Switching Protocols","200|OK","201|Created","202|Accepted","204|No Content","206|Partial Content","301|Moved Permanently","302|Found","303|See Other","304|Not Modified","307|Temporary Redirect","308|Permanent Redirect","400|Bad Request","401|Unauthorized","403|Forbidden","404|Not Found","405|Method Not Allowed","409|Conflict","410|Gone","418|I'm a teapot","422|Unprocessable Entity","429|Too Many Requests","500|Internal Server Error","501|Not Implemented","502|Bad Gateway","503|Service Unavailable","504|Gateway Timeout"],"description":"Status Code"},"reasonOverride":{"type":"string","description":"Reason Phrase"},"bodyType":{"enum":["none","text","json","xml","html","form"],"description":"Body Type"},"body":{"type":"string","description":"Body"},"autoContentType":{"type":"boolean","description":"Auto-set Content-Type from Body Type"},"autoContentLength":{"type":"boolean","description":"Auto-calculate Content-Length"},"date":{"type":"string","description":"Date Header"},"customHeaders":{"type":"string","description":"Custom Headers"}},"required":[]},"examples":{"200_ok_with_json_body":{"summary":"200 OK with JSON body","value":{"httpVersion":"HTTP/1.1","statusCode":"200|OK","reasonOverride":"","bodyType":"json","body":"{\n  \"message\": \"Hello, world!\",\n  \"success\": true\n}","autoContentType":"true","autoContentLength":"true","date":"","customHeaders":""}},"404_with_plain_text_date_and_custom_headers":{"summary":"404 with plain text, Date and custom headers","value":{"httpVersion":"HTTP/1.1","statusCode":"404|Not Found","reasonOverride":"","bodyType":"text","body":"Resource not found.","autoContentType":"true","autoContentLength":"true","date":"Sun, 06 Nov 1994 08:49:37 GMT","customHeaders":"Cache-Control: no-cache\nServer: nginx"}},"http_2_redirect_reason_override_no_body":{"summary":"HTTP/2 redirect, reason override, no body","value":{"httpVersion":"HTTP/2","statusCode":"301|Moved Permanently","reasonOverride":"Moved","bodyType":"none","body":"","autoContentType":"true","autoContentLength":"true","date":"","customHeaders":"Location: https://example.com/new"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"200_ok_with_json_body":{"summary":"200 OK with JSON body","value":{"tool":"mock-http-response-builder","tool_version":"1.0.2","outputs":{"mockHttpResponse":"HTTP/1.1 200 OK\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 51\r\n\r\n{\n  \"message\": \"Hello, world!\",\n  \"success\": true\n}","mockHttpHeaders":"HTTP/1.1 200 OK\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 51"},"credits_used":5,"credits_remaining":null}},"404_with_plain_text_date_and_custom_headers":{"summary":"404 with plain text, Date and custom headers","value":{"tool":"mock-http-response-builder","tool_version":"1.0.2","outputs":{"mockHttpResponse":"HTTP/1.1 404 Not Found\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 19\r\nDate: Sun, 06 Nov 1994 08:49:37 GMT\r\nCache-Control: no-cache\r\nServer: nginx\r\n\r\nResource not found.","mockHttpHeaders":"HTTP/1.1 404 Not Found\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 19\r\nDate: Sun, 06 Nov 1994 08:49:37 GMT\r\nCache-Control: no-cache\r\nServer: nginx"},"credits_used":5,"credits_remaining":null}},"http_2_redirect_reason_override_no_body":{"summary":"HTTP/2 redirect, reason override, no body","value":{"tool":"mock-http-response-builder","tool_version":"1.0.2","outputs":{"mockHttpResponse":"HTTP/2 301 Moved\r\nLocation: https://example.com/new\r\n\r\n","mockHttpHeaders":"HTTP/2 301 Moved\r\nLocation: https://example.com/new"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mockHttpResponse":{"type":"string","description":"Full HTTP Response"},"mockHttpHeaders":{"type":"string","description":"Status Line + Headers Only"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-picker":{"post":{"operationId":"run_name_picker","summary":"Name Picker","tags":["Generators"],"description":"Paste your own list of names or items and randomly pick one or more — for raffles, giveaways, who-goes-first decisions and classroom picks — or split the list into random, evenly-sized teams.\n\n[Try Name Picker in your browser →](https://iotools.cloud/tool/name-picker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"namesList":{"type":"string","description":"Names"},"separator":{"enum":["line","comma","tab"],"description":"Separator"},"mode":{"enum":["pick","teams"],"description":"Mode"},"pickCount":{"type":"number","description":"Number to pick","minimum":1,"maximum":1000},"allowDuplicates":{"type":"boolean","description":"Allow duplicates"},"teamCount":{"type":"number","description":"Number of teams","minimum":2,"maximum":100},"excludeNames":{"type":"string","description":"Exclude names"},"enableWeights":{"type":"boolean","description":"Enable weighted names"}},"required":["namesList"]},"examples":{"pick_3_winners_from_10_names":{"summary":"Pick 3 winners from 10 names","value":{"namesList":"Alice\nBob\nCharlie\nDiana\nEdward\nFiona\nGeorge\nHannah\nIvan\nJulia","separator":"line","mode":"pick","pickCount":"3"}},"split_8_names_into_2_teams":{"summary":"Split 8 names into 2 teams","value":{"namesList":"Alice\nBob\nCharlie\nDiana\nEdward\nFiona\nGeorge\nHannah","separator":"line","mode":"teams","teamCount":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nanoid-generator":{"post":{"operationId":"run_nanoid_generator","summary":"Nano ID Generator","tags":["Generators"],"description":"Generate Nano IDs — tiny, secure, URL-friendly unique string IDs. Pick a length, count, and alphabet (URL-safe, alphanumeric, numeric, hex, no-look-alikes, or a custom set), and export as plain text, a JSON array, or CSV. IDs are built from a cryptographically-secure random source, entirely in your browser.\n\n[Try Nano ID Generator in your browser →](https://iotools.cloud/tool/nanoid-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"ID length","minimum":2,"maximum":256},"count":{"type":"number","description":"How many","minimum":1,"maximum":100},"alphabetType":{"enum":["urlsafe","alphanumeric","lowercase","uppercase","numbers","hex_lower","hex_upper","nolookalikes","custom"],"description":"Alphabet"},"customAlphabet":{"type":"string","description":"Custom alphabet"},"outputFormat":{"enum":["text","json","csv"],"description":"Output format"}},"required":[]},"examples":{"default_url_safe_length_21":{"summary":"Default (URL-safe, length 21)","value":{"length":"21","count":"10","alphabetType":"urlsafe","customAlphabet":"","outputFormat":"text"}},"no_look_alikes_length_12":{"summary":"No look-alikes, length 12","value":{"length":"12","count":"5","alphabetType":"nolookalikes","customAlphabet":"","outputFormat":"text"}},"numeric_pins_length_6":{"summary":"Numeric PINs, length 6","value":{"length":"6","count":"8","alphabetType":"numbers","customAlphabet":"","outputFormat":"text"}},"custom_alphabet_json_array":{"summary":"Custom alphabet, JSON array","value":{"length":"16","count":"4","alphabetType":"custom","customAlphabet":"ABCDEF0123456789","outputFormat":"json"}},"alphanumeric_csv":{"summary":"Alphanumeric, CSV","value":{"length":"10","count":"6","alphabetType":"alphanumeric","customAlphabet":"","outputFormat":"csv"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"nanoids":{"type":"string","description":"Generated Nano IDs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nginx-rewrite-rule-generator":{"post":{"operationId":"run_nginx_rewrite_rule_generator","summary":"Nginx Rewrite & Redirect Rule Generator","tags":["Generators"],"description":"Generate nginx location blocks for 301/302 redirects, internal rewrites (last/break) with regex capture groups, or reverse-proxy rules — with built-in redirect-loop detection.\n\n[Try Nginx Rewrite & Redirect Rule Generator in your browser →](https://iotools.cloud/tool/nginx-rewrite-rule-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"string","description":"Rules"},"ruleType":{"enum":["redirect301","redirect302","rewriteLast","rewriteBreak","proxyPass"],"description":"Rule Type"},"useRegex":{"type":"boolean","description":"Treat source as a regex pattern"},"preserveQueryString":{"type":"boolean","description":"Preserve query string"}},"required":["rules"]},"examples":{"regex_rewrite_with_capture_group_into_a_permanent_redirect":{"summary":"Regex rewrite with capture group into a permanent redirect","value":{"rules":"^/blog/(.+)$ => /articles/$1","ruleType":"redirect301","useRegex":"true","preserveQueryString":"true"}},"internal_rewrite_last_query_string_dropped":{"summary":"Internal rewrite (last), query string dropped","value":{"rules":"/old-page => /new-page","ruleType":"rewriteLast","useRegex":"","preserveQueryString":""}},"reverse_proxy_to_a_backend":{"summary":"Reverse proxy to a backend","value":{"rules":"/api/ => http://backend:3000/","ruleType":"proxyPass","useRegex":"","preserveQueryString":"true"}},"loop_detection_two_rules_redirecting_to_each_other":{"summary":"Loop detection: two rules redirecting to each other","value":{"rules":"/a => /b\n/b => /a","ruleType":"redirect302","useRegex":"","preserveQueryString":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"regex_rewrite_with_capture_group_into_a_permanent_redirect":{"summary":"Regex rewrite with capture group into a permanent redirect","value":{"tool":"nginx-rewrite-rule-generator","tool_version":"1.0.2","outputs":{"config":"location ~ ^/blog/(.+)$ {\n    return 301 /articles/$1$is_args$args;\n}","warnings":"No issues detected."},"credits_used":5,"credits_remaining":null}},"internal_rewrite_last_query_string_dropped":{"summary":"Internal rewrite (last), query string dropped","value":{"tool":"nginx-rewrite-rule-generator","tool_version":"1.0.2","outputs":{"config":"location /old-page {\n    rewrite /old-page /new-page? last;\n}","warnings":"No issues detected."},"credits_used":5,"credits_remaining":null}},"reverse_proxy_to_a_backend":{"summary":"Reverse proxy to a backend","value":{"tool":"nginx-rewrite-rule-generator","tool_version":"1.0.2","outputs":{"config":"location /api/ {\n    proxy_pass http://backend:3000/$is_args$args;\n}","warnings":"No issues detected."},"credits_used":5,"credits_remaining":null}},"loop_detection_two_rules_redirecting_to_each_other":{"summary":"Loop detection: two rules redirecting to each other","value":{"tool":"nginx-rewrite-rule-generator","tool_version":"1.0.2","outputs":{"config":"location /a {\n    return 302 /b$is_args$args;\n}\n\nlocation /b {\n    return 302 /a$is_args$args;\n}","warnings":"Rules 1 and 2 redirect to each other (\"/a\" ↔ \"/b\") — this creates a redirect loop."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"config":{"type":"string","description":"Nginx Config"},"warnings":{"type":"string","description":"Validation Warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nginx-server-block-generator":{"post":{"operationId":"run_nginx_server_block_generator","summary":"Nginx Server Block Generator","tags":["Generators"],"description":"Generate an nginx server block (virtual host) from structured inputs — server name and aliases, listen port, static-file or reverse-proxy mode, SSL/TLS with HTTP→HTTPS redirect and HSTS, gzip compression, client_max_body_size, and access/error log paths. Runs entirely in your browser.\n\n[Try Nginx Server Block Generator in your browser →](https://iotools.cloud/tool/nginx-server-block-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"serverName":{"type":"string","description":"Server Name"},"serverAliases":{"type":"string","description":"Aliases"},"listenPort":{"type":"number","description":"Listen Port","minimum":1,"maximum":65535},"mode":{"enum":["static","proxy"],"description":"Mode"},"documentRoot":{"type":"string","description":"Document Root"},"indexFiles":{"type":"string","description":"Index Files"},"proxyPass":{"type":"string","description":"Upstream URL"},"proxyWebsocket":{"type":"boolean","description":"Forward WebSocket headers (Upgrade / Connection)"},"enableSsl":{"type":"boolean","description":"Enable SSL (HTTPS)"},"sslCertificate":{"type":"string","description":"Certificate Path"},"sslCertificateKey":{"type":"string","description":"Private Key Path"},"http2":{"type":"boolean","description":"Enable HTTP/2"},"redirectHttp":{"type":"boolean","description":"Add HTTP → HTTPS redirect block"},"enableHsts":{"type":"boolean","description":"Send HSTS header (Strict-Transport-Security)"},"enableGzip":{"type":"boolean","description":"Enable gzip compression"},"clientMaxBodySize":{"type":"string","description":"Client Max Body Size"},"accessLog":{"type":"string","description":"Access Log"},"errorLog":{"type":"string","description":"Error Log"}},"required":[]},"examples":{"static_site_default":{"summary":"Static site (default)","value":{"serverName":"example.com","serverAliases":"www.example.com","listenPort":"80","mode":"static","documentRoot":"/var/www/html","indexFiles":"index.html index.htm","proxyPass":"http://127.0.0.1:3000","proxyWebsocket":"","enableSsl":"","sslCertificate":"/etc/letsencrypt/live/example.com/fullchain.pem","sslCertificateKey":"/etc/letsencrypt/live/example.com/privkey.pem","http2":"true","redirectHttp":"true","enableHsts":"true","enableGzip":"true","clientMaxBodySize":"10m","accessLog":"/var/log/nginx/access.log","errorLog":"/var/log/nginx/error.log"}},"reverse_proxy_with_ssl_websocket_redirect_and_hsts":{"summary":"Reverse proxy with SSL, WebSocket, redirect and HSTS","value":{"serverName":"app.example.com","serverAliases":"","listenPort":"80","mode":"proxy","documentRoot":"/var/www/html","indexFiles":"index.html index.htm","proxyPass":"http://127.0.0.1:4000","proxyWebsocket":"true","enableSsl":"true","sslCertificate":"/etc/letsencrypt/live/app.example.com/fullchain.pem","sslCertificateKey":"/etc/letsencrypt/live/app.example.com/privkey.pem","http2":"true","redirectHttp":"true","enableHsts":"true","enableGzip":"","clientMaxBodySize":"20m","accessLog":"/var/log/nginx/access.log","errorLog":"/var/log/nginx/error.log"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"static_site_default":{"summary":"Static site (default)","value":{"tool":"nginx-server-block-generator","tool_version":"1.0.2","outputs":{"output":"server {\n    listen 80;\n    listen [::]:80;\n    server_name example.com www.example.com;\n\n    root /var/www/html;\n    client_max_body_size 10m;\n    access_log /var/log/nginx/access.log;\n    error_log /var/log/nginx/error.log;\n\n    # gzip compression\n    gzip on;\n    gzip_vary on;\n    gzip_proxied any;\n    gzip_comp_level 5;\n    gzip_min_length 256;\n    gzip_types\n        application/javascript\n        application/json\n        application/xml\n        application/rss+xml\n        image/svg+xml\n        text/css\n        text/plain\n        text/xml;\n\n    location / {\n        try_files $uri $uri/ =404;\n        index index.html index.htm;\n    }\n}\n"},"credits_used":5,"credits_remaining":null}},"reverse_proxy_with_ssl_websocket_redirect_and_hsts":{"summary":"Reverse proxy with SSL, WebSocket, redirect and HSTS","value":{"tool":"nginx-server-block-generator","tool_version":"1.0.2","outputs":{"output":"server {\n    listen 443 ssl http2;\n    listen [::]:443 ssl http2;\n    server_name app.example.com;\n\n    ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_prefer_server_ciphers on;\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 1d;\n    add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\n\n    client_max_body_size 20m;\n    access_log /var/log/nginx/access.log;\n    error_log /var/log/nginx/error.log;\n\n    location / {\n        proxy_pass http://127.0.0.1:4000;\n        proxy_http_version 1.1;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection \"upgrade\";\n        proxy_read_timeout 60s;\n    }\n}\n\n# Redirect HTTP traffic to HTTPS\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name app.example.com;\n    return 301 https://$host$request_uri;\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated nginx Server Block"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nonce-generator":{"post":{"operationId":"run_nonce_generator","summary":"Nonce Generator","tags":["Generators"],"description":"Generate cryptographically-random nonces (numbers used once) for CSP headers, OAuth/OIDC state parameters, CSRF tokens, session IDs and API idempotency keys — in hex, Base64, Base64url, alphanumeric or decimal-array format. Created in your browser with a CSPRNG and never transmitted.\n\n[Try Nonce Generator in your browser →](https://iotools.cloud/tool/nonce-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"Nonce length","minimum":8,"maximum":128},"format":{"enum":["hex","base64","base64url","alphanumeric","decimal"],"description":"Output format"},"count":{"type":"number","description":"How many","minimum":1,"maximum":100}},"required":[]},"examples":{"16_byte_hex_nonce_csp_default":{"summary":"16-byte hex nonce (CSP default)","value":{"length":"16","format":"hex","count":"1"}},"32_byte_base64url_nonce":{"summary":"32-byte Base64url nonce","value":{"length":"32","format":"base64url","count":"1"}},"10_alphanumeric_nonces_24_characters":{"summary":"10 alphanumeric nonces, 24 characters","value":{"length":"24","format":"alphanumeric","count":"10"}},"decimal_array_bytes":{"summary":"Decimal-array bytes","value":{"length":"16","format":"decimal","count":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"nonces":{"type":"string","description":"Generated nonce(s)"},"entropy":{"type":"string","description":"Entropy"},"usageExample":{"type":"string","description":"Usage examples (first nonce)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/npmrc-config-generator":{"post":{"operationId":"run_npmrc_config_generator","summary":".npmrc Config Generator","tags":["Generators"],"description":"Generate an npm .npmrc configuration file — default and scoped (per-org) registries, per-registry auth (token, basic, or legacy username/password) via environment-variable placeholders, save-exact/legacy-peer-deps/audit-level, and proxy/strict-ssl settings.\n\n[Try .npmrc Config Generator in your browser →](https://iotools.cloud/tool/npmrc-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"registry":{"type":"string","description":"Default Registry"},"scopedRegistries":{"type":"string","description":"Scoped Registries (optional)"},"authType":{"enum":["none","token","basic","legacy"],"description":"Auth Method"},"authRegistry":{"type":"string","description":"Registry Host for Auth"},"tokenEnvVar":{"type":"string","description":"Token Environment Variable"},"basicAuthEnvVar":{"type":"string","description":"Base64 Auth Environment Variable"},"usernameEnvVar":{"type":"string","description":"Username Environment Variable"},"passwordEnvVar":{"type":"string","description":"Password Environment Variable"},"emailEnvVar":{"type":"string","description":"Email Environment Variable"},"alwaysAuth":{"type":"boolean","description":"always-auth — send credentials on every request, even anonymous GETs"},"saveExact":{"type":"boolean","description":"save-exact — pin installed versions instead of using a ^ range"},"legacyPeerDeps":{"type":"boolean","description":"legacy-peer-deps — skip peer dependency conflict checks"},"engineStrict":{"type":"boolean","description":"engine-strict — fail install if the \"engines\" field doesn't match"},"auditLevel":{"enum":["info","low","moderate","high","critical","none"],"description":"audit-level"},"proxy":{"type":"string","description":"proxy (HTTP)"},"httpsProxy":{"type":"string","description":"https-proxy"},"noProxy":{"type":"string","description":"noproxy (comma-separated hosts)"},"strictSsl":{"type":"boolean","description":"strict-ssl — verify SSL certificates"}},"required":[]},"examples":{"defaults_public_registry_only":{"summary":"Defaults — public registry only","value":{"registry":"https://registry.npmjs.org/","scopedRegistries":"","authType":"none","authRegistry":"","tokenEnvVar":"NPM_TOKEN","basicAuthEnvVar":"NPM_AUTH_BASE64","usernameEnvVar":"NPM_USERNAME","passwordEnvVar":"NPM_PASSWORD_BASE64","emailEnvVar":"NPM_EMAIL","alwaysAuth":"","saveExact":"","legacyPeerDeps":"","engineStrict":"","auditLevel":"low","proxy":"","httpsProxy":"","noProxy":"","strictSsl":"true"}},"token_auth_scoped_registry_save_exact":{"summary":"Token auth + scoped registry + save-exact","value":{"registry":"https://registry.npmjs.org/","scopedRegistries":"@myorg https://npm.pkg.github.com","authType":"token","authRegistry":"npm.pkg.github.com","tokenEnvVar":"GITHUB_NPM_TOKEN","basicAuthEnvVar":"NPM_AUTH_BASE64","usernameEnvVar":"NPM_USERNAME","passwordEnvVar":"NPM_PASSWORD_BASE64","emailEnvVar":"NPM_EMAIL","alwaysAuth":"true","saveExact":"true","legacyPeerDeps":"","engineStrict":"","auditLevel":"high","proxy":"","httpsProxy":"","noProxy":"","strictSsl":"true"}},"legacy_auth_behind_an_internal_proxy":{"summary":"Legacy auth behind an internal proxy","value":{"registry":"https://registry.internal.example.com/","scopedRegistries":"","authType":"legacy","authRegistry":"","tokenEnvVar":"NPM_TOKEN","basicAuthEnvVar":"NPM_AUTH_BASE64","usernameEnvVar":"NPM_USERNAME","passwordEnvVar":"NPM_PASSWORD_BASE64","emailEnvVar":"NPM_EMAIL","alwaysAuth":"","saveExact":"","legacyPeerDeps":"true","engineStrict":"true","auditLevel":"none","proxy":"http://proxy.example.com:8080/","httpsProxy":"http://proxy.example.com:8080/","noProxy":"localhost,127.0.0.1","strictSsl":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"defaults_public_registry_only":{"summary":"Defaults — public registry only","value":{"tool":"npmrc-config-generator","tool_version":"1.0.2","outputs":{"output":"registry=https://registry.npmjs.org/\n\n; Common settings\naudit-level=low\n\n; Proxy\nstrict-ssl=true\n"},"credits_used":5,"credits_remaining":null}},"token_auth_scoped_registry_save_exact":{"summary":"Token auth + scoped registry + save-exact","value":{"tool":"npmrc-config-generator","tool_version":"1.0.2","outputs":{"output":"registry=https://registry.npmjs.org/\n\n; Scoped registries\n@myorg:registry=https://npm.pkg.github.com/\n\n; Authentication\n//npm.pkg.github.com/:_authToken=${GITHUB_NPM_TOKEN}\n//npm.pkg.github.com/:always-auth=true\n\n; Common settings\nsave-exact=true\naudit-level=high\n\n; Proxy\nstrict-ssl=true\n"},"credits_used":5,"credits_remaining":null}},"legacy_auth_behind_an_internal_proxy":{"summary":"Legacy auth behind an internal proxy","value":{"tool":"npmrc-config-generator","tool_version":"1.0.2","outputs":{"output":"registry=https://registry.internal.example.com/\n\n; Authentication\n//registry.internal.example.com/:username=${NPM_USERNAME}\n//registry.internal.example.com/:_password=${NPM_PASSWORD_BASE64}\n//registry.internal.example.com/:email=${NPM_EMAIL}\n\n; Common settings\nlegacy-peer-deps=true\nengine-strict=true\naudit-level=none\n\n; Proxy\nproxy=http://proxy.example.com:8080/\nhttps-proxy=http://proxy.example.com:8080/\nnoproxy=localhost,127.0.0.1\nstrict-ssl=false\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated .npmrc"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/number-sequence-generator":{"post":{"operationId":"run_number_sequence_generator","summary":"Number Sequence Generator","tags":["Generators"],"description":"Generate arithmetic and geometric number sequences by a common difference or ratio — either the first N terms or every value up to an end value. Choose separators and pad with leading zeros.\n\n[Try Number Sequence Generator in your browser →](https://iotools.cloud/tool/number-sequence-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sequenceType":{"enum":["arithmetic","geometric"],"description":"Sequence type"},"start":{"type":"string","description":"Start value"},"step":{"type":"string","description":"Common difference (step)"},"ratio":{"type":"string","description":"Common ratio"},"mode":{"enum":["count","range"],"description":"Generate"},"count":{"type":"number","description":"Number of terms","minimum":1,"maximum":10000},"end":{"type":"string","description":"End value"},"separator":{"enum":["newline","comma","comma-space","space","custom"],"description":"Separator"},"customSeparator":{"type":"string","description":"Custom separator"},"padZeros":{"type":"boolean","description":"Pad with leading zeros"}},"required":[]},"examples":{"arithmetic_first_10_counting_numbers":{"summary":"Arithmetic: first 10 counting numbers","value":{"sequenceType":"arithmetic","start":"1","step":"1","mode":"count","count":"10","separator":"comma-space"}},"arithmetic_range_multiples_of_5_up_to_30":{"summary":"Arithmetic range: multiples of 5 up to 30","value":{"sequenceType":"arithmetic","start":"0","step":"5","mode":"range","end":"30","separator":"comma-space"}},"geometric_powers_of_2_first_10_terms":{"summary":"Geometric: powers of 2 (first 10 terms)","value":{"sequenceType":"geometric","start":"1","ratio":"2","mode":"count","count":"10","separator":"comma-space"}},"geometric_range_powers_of_2_up_to_100":{"summary":"Geometric range: powers of 2 up to 100","value":{"sequenceType":"geometric","start":"2","ratio":"2","mode":"range","end":"100","separator":"comma-space"}},"descending_with_leading_zeros":{"summary":"Descending with leading zeros","value":{"sequenceType":"arithmetic","start":"10","step":"-1","mode":"count","count":"10","separator":"space","padZeros":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"arithmetic_first_10_counting_numbers":{"summary":"Arithmetic: first 10 counting numbers","value":{"tool":"number-sequence-generator","tool_version":"1.0.2","outputs":{"output":"1, 2, 3, 4, 5, 6, 7, 8, 9, 10","stats":[{"metric":"Terms","value":"10"},{"metric":"Sum","value":"55"},{"metric":"Minimum","value":"1"},{"metric":"Maximum","value":"10"}]},"credits_used":5,"credits_remaining":null}},"arithmetic_range_multiples_of_5_up_to_30":{"summary":"Arithmetic range: multiples of 5 up to 30","value":{"tool":"number-sequence-generator","tool_version":"1.0.2","outputs":{"output":"0, 5, 10, 15, 20, 25, 30","stats":[{"metric":"Terms","value":"7"},{"metric":"Sum","value":"105"},{"metric":"Minimum","value":"0"},{"metric":"Maximum","value":"30"}]},"credits_used":5,"credits_remaining":null}},"geometric_powers_of_2_first_10_terms":{"summary":"Geometric: powers of 2 (first 10 terms)","value":{"tool":"number-sequence-generator","tool_version":"1.0.2","outputs":{"output":"1, 2, 4, 8, 16, 32, 64, 128, 256, 512","stats":[{"metric":"Terms","value":"10"},{"metric":"Sum","value":"1023"},{"metric":"Minimum","value":"1"},{"metric":"Maximum","value":"512"}]},"credits_used":5,"credits_remaining":null}},"geometric_range_powers_of_2_up_to_100":{"summary":"Geometric range: powers of 2 up to 100","value":{"tool":"number-sequence-generator","tool_version":"1.0.2","outputs":{"output":"2, 4, 8, 16, 32, 64","stats":[{"metric":"Terms","value":"6"},{"metric":"Sum","value":"126"},{"metric":"Minimum","value":"2"},{"metric":"Maximum","value":"64"}]},"credits_used":5,"credits_remaining":null}},"descending_with_leading_zeros":{"summary":"Descending with leading zeros","value":{"tool":"number-sequence-generator","tool_version":"1.0.2","outputs":{"output":"10 09 08 07 06 05 04 03 02 01","stats":[{"metric":"Terms","value":"10"},{"metric":"Sum","value":"55"},{"metric":"Minimum","value":"1"},{"metric":"Maximum","value":"10"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated sequence"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/numeronym-generator":{"post":{"operationId":"run_numeronym_generator","summary":"Numeronym Generator","tags":["Generators"],"description":"Generate numeronyms from words by keeping the first and last letter and replacing the middle letters with their count — turn 'internationalization' into 'i18n', 'kubernetes' into 'k8s', or 'accessibility' into 'a11y'. Handles single words or whole paragraphs and runs entirely in your browser.\n\n[Try Numeronym Generator in your browser →](https://iotools.cloud/tool/numeronym-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"minLength":{"type":"number","description":"Minimum word length","minimum":3,"maximum":15}},"required":[]},"examples":{"single_word":{"summary":"Single word","value":{"inputText":"internationalization","minLength":"4"}},"multiple_words_one_per_line":{"summary":"Multiple words, one per line","value":{"inputText":"kubernetes\ninternationalization localization accessibility","minLength":"4"}},"short_words_left_unchanged":{"summary":"Short words left unchanged","value":{"inputText":"The cat sat on Kubernetes","minLength":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_word":{"summary":"Single word","value":{"tool":"numeronym-generator","tool_version":"1.0.2","outputs":{"outputText":"i18n"},"credits_used":5,"credits_remaining":null}},"multiple_words_one_per_line":{"summary":"Multiple words, one per line","value":{"tool":"numeronym-generator","tool_version":"1.0.2","outputs":{"outputText":"k8s\ni18n l10n a11y"},"credits_used":5,"credits_remaining":null}},"short_words_left_unchanged":{"summary":"Short words left unchanged","value":{"tool":"numeronym-generator","tool_version":"1.0.2","outputs":{"outputText":"The cat sat on K8s"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Numeronyms"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/oauth-authorization-url-builder":{"post":{"operationId":"run_oauth_authorization_url_builder","summary":"OAuth Authorization URL Builder","tags":["Generators"],"description":"Build an OAuth 2.0 / OpenID Connect authorization-request URL from an authorization endpoint (or provider preset), client_id, redirect_uri, response_type and scopes — with optional PKCE code_challenge (S256), state and nonce parameters generated by a CSPRNG in your browser.\n\n[Try OAuth Authorization URL Builder in your browser →](https://iotools.cloud/tool/oauth-authorization-url-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["google","github","microsoft","okta","custom"],"description":"Provider"},"authEndpoint":{"type":"string","description":"Authorization Endpoint"},"clientId":{"type":"string","description":"Client ID"},"redirectUri":{"type":"string","description":"Redirect URI"},"responseType":{"enum":["code","token","id_token","code id_token"],"description":"Response Type"},"scopes":{"type":"string","description":"Scopes"},"usePkce":{"type":"boolean","description":"Add PKCE (code_challenge)"},"pkceMethod":{"enum":["S256","plain"],"description":"PKCE Method"},"codeVerifierOverride":{"type":"string","description":"Code Verifier (optional override)"},"useState":{"type":"boolean","description":"Add state parameter (CSRF protection)"},"stateOverride":{"type":"string","description":"State (optional override)"},"useNonce":{"type":"boolean","description":"Add nonce parameter (OpenID Connect)"},"nonceOverride":{"type":"string","description":"Nonce (optional override)"},"extraParams":{"type":"string","description":"Extra Parameters"}},"required":["clientId","redirectUri"]},"examples":{"google_authorization_code_pkce_s256_fixed_state_verifier":{"summary":"Google, Authorization Code + PKCE (S256), fixed state/verifier","value":{"provider":"google","authEndpoint":"","clientId":"my-client-id","redirectUri":"https://example.com/callback","responseType":"code","scopes":"","usePkce":"true","pkceMethod":"S256","codeVerifierOverride":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","useState":"true","stateOverride":"xyzstate123","useNonce":"","nonceOverride":"","extraParams":"access_type=offline"}},"custom_provider_implicit_flow_no_pkce_state_nonce_extra_params":{"summary":"Custom provider, implicit flow, no PKCE/state/nonce, extra params","value":{"provider":"custom","authEndpoint":"https://auth.example.org/oauth2/authorize","clientId":"abc123","redirectUri":"https://app.example.org/cb","responseType":"token","scopes":"read write","usePkce":"","pkceMethod":"S256","codeVerifierOverride":"","useState":"","stateOverride":"","useNonce":"","nonceOverride":"","extraParams":"prompt=consent\nmax_age=3600"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"google_authorization_code_pkce_s256_fixed_state_verifier":{"summary":"Google, Authorization Code + PKCE (S256), fixed state/verifier","value":{"tool":"oauth-authorization-url-builder","tool_version":"1.0.2","outputs":{"authUrl":"https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=my-client-id&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=openid%20email%20profile&state=xyzstate123&code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&code_challenge_method=S256&access_type=offline","codeVerifier":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","state":"xyzstate123","nonce":"","paramBreakdown":[{"parameter":"endpoint","value":"https://accounts.google.com/o/oauth2/v2/auth"},{"parameter":"response_type","value":"code"},{"parameter":"client_id","value":"my-client-id"},{"parameter":"redirect_uri","value":"https://example.com/callback"},{"parameter":"scope","value":"openid email profile"},{"parameter":"state","value":"xyzstate123"},{"parameter":"code_challenge","value":"E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"},{"parameter":"code_challenge_method","value":"S256"},{"parameter":"access_type","value":"offline"}]},"credits_used":5,"credits_remaining":null}},"custom_provider_implicit_flow_no_pkce_state_nonce_extra_params":{"summary":"Custom provider, implicit flow, no PKCE/state/nonce, extra params","value":{"tool":"oauth-authorization-url-builder","tool_version":"1.0.2","outputs":{"authUrl":"https://auth.example.org/oauth2/authorize?response_type=token&client_id=abc123&redirect_uri=https%3A%2F%2Fapp.example.org%2Fcb&scope=read%20write&prompt=consent&max_age=3600","codeVerifier":"","state":"","nonce":"","paramBreakdown":[{"parameter":"endpoint","value":"https://auth.example.org/oauth2/authorize"},{"parameter":"response_type","value":"token"},{"parameter":"client_id","value":"abc123"},{"parameter":"redirect_uri","value":"https://app.example.org/cb"},{"parameter":"scope","value":"read write"},{"parameter":"prompt","value":"consent"},{"parameter":"max_age","value":"3600"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"authUrl":{"type":"string","description":"Authorization URL"},"codeVerifier":{"type":"string","description":"code_verifier (keep secret)"},"state":{"type":"string","description":"state"},"nonce":{"type":"string","description":"nonce"},"paramBreakdown":{"type":"array","description":"URL Breakdown","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Parameter"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["parameter","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/otp-code-generator":{"post":{"operationId":"run_otp_code_generator","summary":"OTP Code Generator","tags":["Generators"],"description":"Generate TOTP (time-based, RFC 6238) and HOTP (counter-based, RFC 4226) one-time passcodes from a Base32 secret — a live, auto-refreshing view with a QR code, the same 2FA codes an authenticator app produces, computed entirely in your browser.\n\n[Try OTP Code Generator in your browser →](https://iotools.cloud/tool/otp-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["totp","hotp"],"description":"Mode"},"secret":{"type":"string","description":"Secret (Base32)"},"algorithm":{"enum":["sha1","sha256","sha512"],"description":"Hash algorithm"},"digits":{"enum":["6","7","8"],"description":"Digits"},"timestamp":{"type":"number","description":"Unix timestamp (seconds)","minimum":0},"period":{"type":"number","description":"Period (seconds)","minimum":1,"maximum":300},"counter":{"type":"number","description":"Counter","minimum":0}},"required":[]},"examples":{"totp_rfc_6238_appendix_b_vector_sha_1_t_59s":{"summary":"TOTP — RFC 6238 Appendix B vector (SHA-1, T=59s)","value":{"mode":"totp","secret":"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ","algorithm":"sha1","digits":"8","timestamp":"59","period":"30"}},"totp_default_6_digit_code_sha_1_t_59s":{"summary":"TOTP — default 6-digit code (SHA-1, T=59s)","value":{"mode":"totp","secret":"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ","algorithm":"sha1","digits":"6","timestamp":"59","period":"30"}},"hotp_rfc_4226_appendix_d_vector_counter_0":{"summary":"HOTP — RFC 4226 Appendix D vector (counter 0)","value":{"mode":"hotp","secret":"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ","algorithm":"sha1","digits":"6","counter":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"totp_rfc_6238_appendix_b_vector_sha_1_t_59s":{"summary":"TOTP — RFC 6238 Appendix B vector (SHA-1, T=59s)","value":{"tool":"otp-code-generator","tool_version":"1.0.2","outputs":{"code":"94287082","counterUsed":"1","secondsRemaining":"1"},"credits_used":5,"credits_remaining":null}},"totp_default_6_digit_code_sha_1_t_59s":{"summary":"TOTP — default 6-digit code (SHA-1, T=59s)","value":{"tool":"otp-code-generator","tool_version":"1.0.2","outputs":{"code":"287082","counterUsed":"1","secondsRemaining":"1"},"credits_used":5,"credits_remaining":null}},"hotp_rfc_4226_appendix_d_vector_counter_0":{"summary":"HOTP — RFC 4226 Appendix D vector (counter 0)","value":{"tool":"otp-code-generator","tool_version":"1.0.2","outputs":{"code":"755224","counterUsed":"0","secondsRemaining":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"Generated code"},"counterUsed":{"type":"string","description":"Counter value used"},"secondsRemaining":{"type":"string","description":"Seconds remaining in period (TOTP only)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/package-json-generator":{"post":{"operationId":"run_package_json_generator","summary":"package.json Generator","tags":["Generators"],"description":"Generate a new package.json from form fields: name, version, description, author, license, ESM/CJS module type, entry point, Node engine, keywords, repository URL, scripts, dependencies and devDependencies. Outputs properly ordered, valid JSON ready to drop into a new project.\n\n[Try package.json Generator in your browser →](https://iotools.cloud/tool/package-json-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pkgName":{"type":"string","description":"Name"},"pkgVersion":{"type":"string","description":"Version"},"pkgDescription":{"type":"string","description":"Description"},"pkgAuthor":{"type":"string","description":"Author"},"pkgLicense":{"enum":["MIT","Apache-2.0","BSD-2-Clause","BSD-3-Clause","ISC","GPL-3.0-or-later","LGPL-3.0-or-later","MPL-2.0","Unlicense","UNLICENSED"],"description":"License"},"pkgModuleType":{"enum":["esm","cjs"],"description":"Module System"},"pkgEntry":{"type":"string","description":"Entry File"},"pkgNodeVersion":{"type":"string","description":"Node Engine"},"pkgKeywords":{"type":"string","description":"Keywords"},"pkgRepository":{"type":"string","description":"Repository URL"},"scripts":{"type":"string","description":"npm scripts"},"dependencies":{"type":"string","description":"dependencies"},"devDependencies":{"type":"string","description":"devDependencies"},"indentStyle":{"enum":["2","4","tab"],"description":"Indent"},"privatePackage":{"type":"boolean","description":"Mark as private (prevents accidental npm publish)"}},"required":[]},"examples":{"default_esm_package":{"summary":"Default ESM package","value":{"pkgName":"my-package","pkgVersion":"1.0.0","pkgDescription":"","pkgAuthor":"","pkgLicense":"MIT","pkgModuleType":"esm","pkgEntry":"index.js","pkgNodeVersion":">=18","pkgKeywords":"","pkgRepository":"","scripts":"dev: node --watch index.js\nbuild: tsc\ntest: node --test\nstart: node index.js","dependencies":"","devDependencies":"","indentStyle":"2","privatePackage":""}},"scoped_cjs_package_with_github_repo_and_dependencies":{"summary":"Scoped CJS package with GitHub repo and dependencies","value":{"pkgName":"@acme/http-client","pkgVersion":"2.1.0","pkgDescription":"A tiny HTTP client.","pkgAuthor":"Jane Doe <jane@example.com>","pkgLicense":"Apache-2.0","pkgModuleType":"cjs","pkgEntry":"lib/index.js","pkgNodeVersion":">=20","pkgKeywords":"http, client, fetch","pkgRepository":"https://github.com/acme/http-client","scripts":"build: tsc\ntest: node --test","dependencies":"undici@^6.0.0","devDependencies":"typescript@^5.4.0, @types/node@^20.0.0","indentStyle":"4","privatePackage":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_esm_package":{"summary":"Default ESM package","value":{"tool":"package-json-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"name\": \"my-package\",\n  \"version\": \"1.0.0\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"main\": \"index.js\",\n  \"module\": \"index.js\",\n  \"scripts\": {\n    \"dev\": \"node --watch index.js\",\n    \"build\": \"tsc\",\n    \"test\": \"node --test\",\n    \"start\": \"node index.js\"\n  },\n  \"engines\": {\n    \"node\": \">=18\"\n  }\n}\n"},"credits_used":5,"credits_remaining":null}},"scoped_cjs_package_with_github_repo_and_dependencies":{"summary":"Scoped CJS package with GitHub repo and dependencies","value":{"tool":"package-json-generator","tool_version":"1.0.2","outputs":{"output":"{\n    \"name\": \"@acme/http-client\",\n    \"version\": \"2.1.0\",\n    \"description\": \"A tiny HTTP client.\",\n    \"keywords\": [\n        \"http\",\n        \"client\",\n        \"fetch\"\n    ],\n    \"homepage\": \"https://github.com/acme/http-client#readme\",\n    \"bugs\": {\n        \"url\": \"https://github.com/acme/http-client/issues\"\n    },\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"git+https://github.com/acme/http-client.git\"\n    },\n    \"author\": \"Jane Doe <jane@example.com>\",\n    \"license\": \"Apache-2.0\",\n    \"private\": true,\n    \"main\": \"lib/index.js\",\n    \"scripts\": {\n        \"build\": \"tsc\",\n        \"test\": \"node --test\"\n    },\n    \"dependencies\": {\n        \"undici\": \"^6.0.0\"\n    },\n    \"devDependencies\": {\n        \"typescript\": \"^5.4.0\",\n        \"@types/node\": \"^20.0.0\"\n    },\n    \"engines\": {\n        \"node\": \">=20\"\n    }\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated package.json"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/passphrase-generator":{"post":{"operationId":"run_passphrase_generator","summary":"Passphrase Generator","tags":["Generators"],"description":"Generate strong, memorable passphrases from random dictionary words. Choose the number of words, a separator, and optional capitalization or numbers. Built in your browser with a cryptographic RNG and never transmitted.\n\n[Try Passphrase Generator in your browser →](https://iotools.cloud/tool/passphrase-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Total phrases","minimum":1,"maximum":100},"wordsLength":{"type":"number","description":"Words per phrase","minimum":2,"maximum":10},"wordMaxLength":{"type":"number","description":"Max word length","minimum":3,"maximum":45},"includeNumbers":{"type":"boolean","description":"Include numbers (each word may get a trailing digit)"},"uppercase":{"type":"boolean","description":"Uppercase (WORD)"},"titlecase":{"type":"boolean","description":"Titlecase (Word)"},"separator":{"enum":["-","_","."," ","","!","?","*","+","=","|","~","@","#","$"],"description":"Word separator"}},"required":[]},"examples":{"four_words_hyphen_separated":{"summary":"Four words, hyphen-separated","value":{"count":"1","wordsLength":"4","wordMaxLength":"8","includeNumbers":"","uppercase":"","titlecase":"","separator":"-"}},"titlecase_with_numbers":{"summary":"Titlecase with numbers","value":{"count":"1","wordsLength":"5","wordMaxLength":"10","includeNumbers":"true","uppercase":"","titlecase":"true","separator":"."}},"five_uppercase_passphrases":{"summary":"Five uppercase passphrases","value":{"count":"5","wordsLength":"4","wordMaxLength":"8","includeNumbers":"","uppercase":"true","titlecase":"","separator":"_"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pbkdf2-key-generator":{"post":{"operationId":"run_pbkdf2_key_generator","summary":"PBKDF2 Key Generator","tags":["Generators"],"description":"Derive a key from a password and salt using PBKDF2-HMAC (SHA-256, SHA-384, or SHA-512) with a configurable iteration count and key length. Salt is randomly generated by default; output is shown in hex and base64.\n\n[Try PBKDF2 Key Generator in your browser →](https://iotools.cloud/tool/pbkdf2-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password / passphrase"},"saltMode":{"enum":["auto","custom"],"description":"Salt"},"customSalt":{"type":"string","description":"Custom salt"},"customSaltEncoding":{"enum":["text","hex"],"description":"Custom salt encoding"},"algorithm":{"enum":["sha256","sha384","sha512"],"description":"Hash algorithm"},"iterations":{"type":"number","description":"Iterations","minimum":1000,"maximum":1000000},"keyLengthBits":{"type":"number","description":"Key length (bits)","minimum":8,"maximum":2048},"expectedKey":{"type":"string","description":"Expected key (optional)"}},"required":["password"]},"examples":{"sha_256_custom_text_salt":{"summary":"SHA-256, custom text salt","value":{"password":"correct horse battery staple","saltMode":"custom","customSalt":"example-salt-256","customSaltEncoding":"text","algorithm":"sha256","iterations":"100000","keyLengthBits":"256","expectedKey":""}},"sha_512_custom_hex_salt_owasp_minimum_iterations":{"summary":"SHA-512, custom hex salt, OWASP minimum iterations","value":{"password":"Tr0ub4dour&3","saltMode":"custom","customSalt":"deadbeefcafef00d","customSaltEncoding":"hex","algorithm":"sha512","iterations":"210000","keyLengthBits":"512","expectedKey":""}},"verify_a_matching_key_hex":{"summary":"Verify a matching key (hex)","value":{"password":"correct horse battery staple","saltMode":"custom","customSalt":"example-salt-256","customSaltEncoding":"text","algorithm":"sha256","iterations":"100000","keyLengthBits":"256","expectedKey":"5240b4f12e37580b77c8e9d152893567f7cf109b4562a805e5c746adb45a82ef"}},"auto_generated_salt_default_settings":{"summary":"Auto-generated salt (default settings)","value":{"password":"My$ecretP@ssw0rd!","saltMode":"auto","customSalt":"","customSaltEncoding":"text","algorithm":"sha256","iterations":"600000","keyLengthBits":"256","expectedKey":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha_256_custom_text_salt":{"summary":"SHA-256, custom text salt","value":{"tool":"pbkdf2-key-generator","tool_version":"1.0.2","outputs":{"derivedKeyHex":"5240b4f12e37580b77c8e9d152893567f7cf109b4562a805e5c746adb45a82ef","derivedKeyBase64":"UkC08S43WAt3yOnRUok1Z/fPEJtFYqgF5cdGrbRagu8=","saltUsed":"6578616d706c652d73616c742d323536","match":"","securityNote":"Below OWASP's 2023 recommended minimum for PBKDF2-HMAC-SHA-256 (600,000 iterations) — consider increasing."},"credits_used":5,"credits_remaining":null}},"sha_512_custom_hex_salt_owasp_minimum_iterations":{"summary":"SHA-512, custom hex salt, OWASP minimum iterations","value":{"tool":"pbkdf2-key-generator","tool_version":"1.0.2","outputs":{"derivedKeyHex":"63134b77bcbacf4f8ec2e050adfc0a2a382c5a1764ebc0fb453180a63db5cd952b07be165945a38bdacc4fca186ab4ba7e96a3e12ab3fd3f9cc5275573f03f6e","derivedKeyBase64":"YxNLd7y6z0+OwuBQrfwKKjgsWhdk68D7RTGApj21zZUrB74WWUWji9rMT8oYarS6fpaj4Sqz/T+cxSdVc/A/bg==","saltUsed":"deadbeefcafef00d","match":"","securityNote":"Meets OWASP's 2023 minimum for PBKDF2-HMAC-SHA-512 (210,000 iterations)."},"credits_used":5,"credits_remaining":null}},"verify_a_matching_key_hex":{"summary":"Verify a matching key (hex)","value":{"tool":"pbkdf2-key-generator","tool_version":"1.0.2","outputs":{"derivedKeyHex":"5240b4f12e37580b77c8e9d152893567f7cf109b4562a805e5c746adb45a82ef","derivedKeyBase64":"UkC08S43WAt3yOnRUok1Z/fPEJtFYqgF5cdGrbRagu8=","saltUsed":"6578616d706c652d73616c742d323536","match":"Match","securityNote":"Below OWASP's 2023 recommended minimum for PBKDF2-HMAC-SHA-256 (600,000 iterations) — consider increasing."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"derivedKeyHex":{"type":"string","description":"Derived key (hex)"},"derivedKeyBase64":{"type":"string","description":"Derived key (base64)"},"saltUsed":{"type":"string","description":"Salt used (hex)"},"match":{"type":"string","description":"Matches expected key?"},"securityNote":{"type":"string","description":"OWASP guidance"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pi-generator":{"post":{"operationId":"run_pi_generator","summary":"Pi Generator","tags":["Generators"],"description":"Generate digits of Pi (π) to a chosen precision, up to 10,000 digits after the decimal point.\n\n[Try Pi Generator in your browser →](https://iotools.cloud/tool/pi-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"digits":{"type":"number","description":"Digits after the decimal point","minimum":1,"maximum":10000}},"required":["digits"]},"examples":{"first_10_digits":{"summary":"First 10 digits","value":{"digits":"10"}},"first_50_digits":{"summary":"First 50 digits","value":{"digits":"50"}},"first_100_digits":{"summary":"First 100 digits","value":{"digits":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"first_10_digits":{"summary":"First 10 digits","value":{"tool":"pi-generator","tool_version":"1.0.2","outputs":{"output":"3.1415926535"},"credits_used":5,"credits_remaining":null}},"first_50_digits":{"summary":"First 50 digits","value":{"tool":"pi-generator","tool_version":"1.0.2","outputs":{"output":"3.14159265358979323846264338327950288419716939937510"},"credits_used":5,"credits_remaining":null}},"first_100_digits":{"summary":"First 100 digits","value":{"tool":"pi-generator","tool_version":"1.0.2","outputs":{"output":"3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Pi"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pkce-code-verifier-challenge-generator":{"post":{"operationId":"run_pkce_code_verifier_challenge_generator","summary":"PKCE Code Verifier & Challenge Generator","tags":["Generators"],"description":"Generate an OAuth 2.0 PKCE code_verifier (a random 43-128 character string) and its code_challenge — base64url(SHA-256(verifier)) for S256, or the verifier itself for plain — per RFC 7636, using a CSPRNG in your browser.\n\n[Try PKCE Code Verifier & Challenge Generator in your browser →](https://iotools.cloud/tool/pkce-code-verifier-challenge-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"verifierLength":{"type":"number","description":"Verifier Length","minimum":43,"maximum":128},"challengeMethod":{"enum":["S256","plain"],"description":"Challenge Method"},"verifierCharset":{"enum":["unreserved","base64url"],"description":"Verifier Charset"},"verifierOverride":{"type":"string","description":"Code Verifier (optional override)"}},"required":[]},"examples":{"s256_rfc_7636_appendix_b_test_vector":{"summary":"S256 — RFC 7636 Appendix B test vector","value":{"verifierLength":"64","challengeMethod":"S256","verifierCharset":"unreserved","verifierOverride":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"}},"plain_method_challenge_equals_verifier":{"summary":"plain method — challenge equals verifier","value":{"verifierLength":"64","challengeMethod":"plain","verifierCharset":"unreserved","verifierOverride":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"}},"random_64_char_verifier_s256":{"summary":"Random 64-char verifier, S256","value":{"verifierLength":"64","challengeMethod":"S256","verifierCharset":"unreserved","verifierOverride":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"s256_rfc_7636_appendix_b_test_vector":{"summary":"S256 — RFC 7636 Appendix B test vector","value":{"tool":"pkce-code-verifier-challenge-generator","tool_version":"1.0.2","outputs":{"codeVerifier":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","codeChallenge":"E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM","codeChallengeMethod":"S256","pkceBreakdown":[{"step":"1. code_verifier","value":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"},{"step":"   generated via","value":"provided override (not randomly generated)"},{"step":"   length","value":"43 characters"},{"step":"2. code_challenge","value":"base64url(SHA-256(code_verifier)) = E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM"},{"step":"3. code_challenge_method","value":"S256"}]},"credits_used":5,"credits_remaining":null}},"plain_method_challenge_equals_verifier":{"summary":"plain method — challenge equals verifier","value":{"tool":"pkce-code-verifier-challenge-generator","tool_version":"1.0.2","outputs":{"codeVerifier":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","codeChallenge":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk","codeChallengeMethod":"plain","pkceBreakdown":[{"step":"1. code_verifier","value":"dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"},{"step":"   generated via","value":"provided override (not randomly generated)"},{"step":"   length","value":"43 characters"},{"step":"2. code_challenge","value":"code_verifier (plain method) = dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"},{"step":"3. code_challenge_method","value":"plain"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"codeVerifier":{"type":"string","description":"code_verifier"},"codeChallenge":{"type":"string","description":"code_challenge"},"codeChallengeMethod":{"type":"string","description":"code_challenge_method"},"pkceBreakdown":{"type":"array","description":"How this was generated","items":{"type":"object","properties":{"step":{"type":"string","description":"Step"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["step","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/prettier-config-generator":{"post":{"operationId":"run_prettier_config_generator","summary":"Prettier Config Generator","tags":["Generators"],"description":"Generate a Prettier configuration file — JSON (.prettierrc.json), YAML (.prettierrc.yaml), a JS module (prettier.config.mjs/cjs), or a package.json \"prettier\" key — from core options (printWidth, tabWidth, quotes, semicolons, trailing commas), JSX and Markdown/HTML options, and per-language overrides.\n\n[Try Prettier Config Generator in your browser →](https://iotools.cloud/tool/prettier-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["json","yaml","esm","cjs","pkg"],"description":"Output Format"},"printWidth":{"type":"number","description":"printWidth","minimum":20,"maximum":200},"tabWidth":{"type":"number","description":"tabWidth","minimum":1,"maximum":16},"useTabs":{"type":"boolean","description":"useTabs — indent with tabs instead of spaces"},"semi":{"type":"boolean","description":"semi — print semicolons at end of statements"},"singleQuote":{"type":"boolean","description":"singleQuote — use single quotes instead of double"},"quoteProps":{"enum":["as-needed","consistent","preserve"],"description":"quoteProps"},"trailingComma":{"enum":["all","es5","none"],"description":"trailingComma"},"bracketSpacing":{"type":"boolean","description":"bracketSpacing — spaces inside object literals { foo }"},"bracketSameLine":{"type":"boolean","description":"bracketSameLine — keep > of multi-line HTML/JSX on last line"},"arrowParens":{"enum":["always","avoid"],"description":"arrowParens"},"endOfLine":{"enum":["lf","crlf","cr","auto"],"description":"endOfLine"},"jsxSingleQuote":{"type":"boolean","description":"jsxSingleQuote — use single quotes in JSX attributes"},"singleAttributePerLine":{"type":"boolean","description":"singleAttributePerLine — one HTML/JSX attribute per line"},"proseWrap":{"enum":["preserve","always","never"],"description":"proseWrap"},"htmlWhitespace":{"enum":["css","strict","ignore"],"description":"htmlWhitespaceSensitivity"},"overrideMarkdown":{"type":"boolean","description":"Markdown (*.md, *.mdx) — proseWrap: always, printWidth: 100"},"overrideHtml":{"type":"boolean","description":"HTML (*.html) — printWidth: 120, singleAttributePerLine: true"},"overrideYaml":{"type":"boolean","description":"YAML (*.yml, *.yaml) — tabWidth: 2, singleQuote: false"},"overrideJson":{"type":"boolean","description":"JSON (*.json) — printWidth: 200, trailingComma: none"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment (JS/YAML formats only)"},"includeIgnore":{"type":"boolean","description":"Also generate a .prettierignore template"}},"required":[]},"examples":{"json_defaults":{"summary":"JSON — defaults","value":{"format":"json","printWidth":"80","tabWidth":"2","useTabs":"","semi":"true","singleQuote":"","quoteProps":"as-needed","trailingComma":"all","bracketSpacing":"true","bracketSameLine":"","arrowParens":"always","endOfLine":"lf","jsxSingleQuote":"","singleAttributePerLine":"","proseWrap":"preserve","htmlWhitespace":"css","overrideMarkdown":"","overrideHtml":"","overrideYaml":"","overrideJson":"","includeHeader":"true","includeIgnore":"true"}},"yaml_single_quotes_100_width_with_overrides":{"summary":"YAML — single quotes, 100 width, with overrides","value":{"format":"yaml","printWidth":"100","tabWidth":"2","useTabs":"","semi":"false","singleQuote":"true","quoteProps":"as-needed","trailingComma":"es5","bracketSpacing":"true","bracketSameLine":"","arrowParens":"avoid","endOfLine":"lf","jsxSingleQuote":"","singleAttributePerLine":"","proseWrap":"preserve","htmlWhitespace":"css","overrideMarkdown":"true","overrideHtml":"","overrideYaml":"","overrideJson":"","includeHeader":"true","includeIgnore":""}},"js_module_esm_tabs_no_semicolons":{"summary":"JS module (ESM) — tabs, no semicolons","value":{"format":"esm","printWidth":"80","tabWidth":"4","useTabs":"true","semi":"","singleQuote":"true","quoteProps":"consistent","trailingComma":"none","bracketSpacing":"false","bracketSameLine":"true","arrowParens":"always","endOfLine":"lf","jsxSingleQuote":"true","singleAttributePerLine":"","proseWrap":"always","htmlWhitespace":"strict","overrideMarkdown":"","overrideHtml":"","overrideYaml":"","overrideJson":"true","includeHeader":"true","includeIgnore":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"json_defaults":{"summary":"JSON — defaults","value":{"tool":"prettier-config-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"printWidth\": 80,\n  \"tabWidth\": 2,\n  \"useTabs\": false,\n  \"semi\": true,\n  \"singleQuote\": false,\n  \"quoteProps\": \"as-needed\",\n  \"jsxSingleQuote\": false,\n  \"trailingComma\": \"all\",\n  \"bracketSpacing\": true,\n  \"bracketSameLine\": false,\n  \"arrowParens\": \"always\",\n  \"proseWrap\": \"preserve\",\n  \"htmlWhitespaceSensitivity\": \"css\",\n  \"endOfLine\": \"lf\",\n  \"singleAttributePerLine\": false\n}\n","ignoreOutput":"# Build output\ndist/\nbuild/\nout/\ncoverage/\n.next/\n.nuxt/\n.svelte-kit/\n\n# Dependencies\nnode_modules/\n\n# Lock files (often auto-generated, formatting them creates noise)\npackage-lock.json\nyarn.lock\npnpm-lock.yaml\nbun.lockb\n\n# Generated / vendored\n*.min.js\n*.min.css\nvendor/\n\n# Misc\n.cache/\n.vercel/\n.turbo/"},"credits_used":5,"credits_remaining":null}},"yaml_single_quotes_100_width_with_overrides":{"summary":"YAML — single quotes, 100 width, with overrides","value":{"tool":"prettier-config-generator","tool_version":"1.0.2","outputs":{"output":"# .prettierrc.yaml — Prettier configuration\n# Docs: https://prettier.io/docs/en/options\n# Generated with iotools.cloud\n\nprintWidth: 100\ntabWidth: 2\nuseTabs: false\nsemi: false\nsingleQuote: true\nquoteProps: as-needed\njsxSingleQuote: false\ntrailingComma: es5\nbracketSpacing: true\nbracketSameLine: false\narrowParens: avoid\nproseWrap: preserve\nhtmlWhitespaceSensitivity: css\nendOfLine: lf\nsingleAttributePerLine: false\noverrides:\n  - files:\n      - \"*.md\"\n      - \"*.mdx\"\n    options:\n      proseWrap: always\n      printWidth: 100\n","ignoreOutput":""},"credits_used":5,"credits_remaining":null}},"js_module_esm_tabs_no_semicolons":{"summary":"JS module (ESM) — tabs, no semicolons","value":{"tool":"prettier-config-generator","tool_version":"1.0.2","outputs":{"output":"// prettier.config.mjs — Prettier configuration (ES module)\n// Docs: https://prettier.io/docs/en/options\n// Generated with iotools.cloud\n\n/** @type {import(\"prettier\").Config} */\nconst config = {\n  printWidth: 80,\n  tabWidth: 4,\n  useTabs: true,\n  semi: false,\n  singleQuote: true,\n  quoteProps: \"consistent\",\n  jsxSingleQuote: true,\n  trailingComma: \"none\",\n  bracketSpacing: false,\n  bracketSameLine: true,\n  arrowParens: \"always\",\n  proseWrap: \"always\",\n  htmlWhitespaceSensitivity: \"strict\",\n  endOfLine: \"lf\",\n  singleAttributePerLine: false,\n  overrides: [\n    {\n      files: \"*.json\",\n      options: {\n        printWidth: 200,\n        trailingComma: \"none\"\n      }\n    }\n  ]\n};\n\nexport default config;\n","ignoreOutput":"# Build output\ndist/\nbuild/\nout/\ncoverage/\n.next/\n.nuxt/\n.svelte-kit/\n\n# Dependencies\nnode_modules/\n\n# Lock files (often auto-generated, formatting them creates noise)\npackage-lock.json\nyarn.lock\npnpm-lock.yaml\nbun.lockb\n\n# Generated / vendored\n*.min.js\n*.min.css\nvendor/\n\n# Misc\n.cache/\n.vercel/\n.turbo/"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Config"},"ignoreOutput":{"type":"string","description":".prettierignore"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/prometheus-alerting-rule-generator":{"post":{"operationId":"run_prometheus_alerting_rule_generator","summary":"Prometheus Alerting Rule Generator","tags":["Generators"],"description":"Generate a valid Prometheus alerting_rules.yaml from a PromQL expression, severity, for: duration and annotation templates — with correct YAML structure and quoting every time.\n\n[Try Prometheus Alerting Rule Generator in your browser →](https://iotools.cloud/tool/prometheus-alerting-rule-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"groupName":{"type":"string","description":"Rule group name"},"interval":{"type":"string","description":"Evaluation interval (optional)"},"alertName":{"type":"string","description":"Alert name"},"expr":{"type":"string","description":"PromQL expression"},"forDuration":{"type":"string","description":"for: duration"},"severity":{"enum":["critical","warning","info"],"description":"Severity"},"summary":{"type":"string","description":"annotations.summary"},"description":{"type":"string","description":"annotations.description"},"additionalRules":{"type":"string","description":"Additional rules (optional)"}},"required":["alertName","expr"]},"examples":{"high_cpu_usage":{"summary":"High CPU usage","value":{"groupName":"example-alerts","interval":"1m","alertName":"HighCpuUsage","expr":"avg(rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) < 0.1","forDuration":"5m","severity":"critical","summary":"{{ $labels.instance }}: high CPU usage","description":"CPU idle time has been below 10% for more than 5 minutes.","additionalRules":""}},"multiple_rules_per_group":{"summary":"Multiple rules per group","value":{"groupName":"node-alerts","interval":"","alertName":"InstanceDown","expr":"up == 0","forDuration":"1m","severity":"critical","summary":"{{ $labels.instance }} is down","description":"","additionalRules":"HighMemoryUsage | avg(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) < 0.1 | 10m | warning"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"high_cpu_usage":{"summary":"High CPU usage","value":{"tool":"prometheus-alerting-rule-generator","tool_version":"1.0.2","outputs":{"yaml":"groups:\n  - name: example-alerts\n    interval: 1m\n    rules:\n      - alert: HighCpuUsage\n        expr: avg(rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) < 0.1\n        for: 5m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"{{ $labels.instance }}: high CPU usage\"\n          description: CPU idle time has been below 10% for more than 5 minutes.\n"},"credits_used":5,"credits_remaining":null}},"multiple_rules_per_group":{"summary":"Multiple rules per group","value":{"tool":"prometheus-alerting-rule-generator","tool_version":"1.0.2","outputs":{"yaml":"groups:\n  - name: node-alerts\n    rules:\n      - alert: InstanceDown\n        expr: up == 0\n        for: 1m\n        labels:\n          severity: critical\n        annotations:\n          summary: \"{{ $labels.instance }} is down\"\n      - alert: HighMemoryUsage\n        expr: avg(node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) < 0.1\n        for: 10m\n        labels:\n          severity: warning\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"yaml":{"type":"string","description":"alerting_rules.yaml"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pwa-web-app-manifest-generator":{"post":{"operationId":"run_pwa_web_app_manifest_generator","summary":"PWA Web App Manifest Generator","tags":["Generators"],"description":"Generate a manifest.json for a Progressive Web App: name, short name, description, start URL, scope, display mode, orientation, theme/background colors, icon set, and categories. Copy or download a ready-to-use manifest plus the HTML &lt;link> tag.\n\n[Try PWA Web App Manifest Generator in your browser →](https://iotools.cloud/tool/pwa-web-app-manifest-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"appName":{"type":"string","description":"Name"},"shortName":{"type":"string","description":"Short Name"},"description":{"type":"string","description":"Description"},"lang":{"type":"string","description":"Lang"},"dir":{"enum":["auto","ltr","rtl"],"description":"Text Direction"},"startUrl":{"type":"string","description":"Start URL"},"scope":{"type":"string","description":"Scope"},"id":{"type":"string","description":"App ID"},"display":{"enum":["standalone","fullscreen","minimal-ui","browser"],"description":"Display Mode"},"orientation":{"enum":["any","natural","portrait","portrait-primary","portrait-secondary","landscape","landscape-primary","landscape-secondary"],"description":"Orientation"},"themeColor":{"type":"string","description":"Theme Color"},"backgroundColor":{"type":"string","description":"Background Color"},"iconsPath":{"type":"string","description":"Icons Base Path"},"iconFilename":{"type":"string","description":"Icon Filename Pattern"},"iconType":{"enum":["image/png","image/svg+xml","image/webp","image/jpeg"],"description":"Icon MIME Type"},"iconPurpose":{"enum":["any","maskable","any maskable","monochrome"],"description":"Icon Purpose"},"size72":{"type":"boolean","description":"Include 72×72"},"size96":{"type":"boolean","description":"Include 96×96"},"size128":{"type":"boolean","description":"Include 128×128"},"size144":{"type":"boolean","description":"Include 144×144"},"size152":{"type":"boolean","description":"Include 152×152"},"size192":{"type":"boolean","description":"Include 192×192"},"size384":{"type":"boolean","description":"Include 384×384"},"size512":{"type":"boolean","description":"Include 512×512"},"categories":{"type":"string","description":"Categories"}},"required":[]},"examples":{"full_pwa_config_with_icons_and_categories":{"summary":"Full PWA config with icons and categories","value":{"appName":"IO Tools","shortName":"IO Tools","description":"Free online developer and SEO tools that run entirely in your browser.","lang":"en-US","dir":"auto","startUrl":"/","scope":"/","id":"/?source=pwa","display":"standalone","orientation":"any","themeColor":"#464aff","backgroundColor":"#ffffff","iconsPath":"/icons/","iconFilename":"icon-{size}.png","iconType":"image/png","iconPurpose":"any maskable","size72":"","size96":"true","size128":"true","size144":"true","size152":"","size192":"true","size384":"","size512":"true","categories":"productivity, utilities"}},"minimal_fullscreen_app_no_icons_or_categories":{"summary":"Minimal fullscreen app, no icons or categories","value":{"appName":"Simple Notes","shortName":"Notes","description":"","lang":"","dir":"auto","startUrl":"/app/","scope":"","id":"","display":"fullscreen","orientation":"landscape-primary","themeColor":"#000000","backgroundColor":"#111111","iconsPath":"","iconFilename":"icon-{size}.png","iconType":"image/png","iconPurpose":"any","size72":"","size96":"","size128":"","size144":"","size152":"","size192":"","size384":"","size512":"","categories":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_pwa_config_with_icons_and_categories":{"summary":"Full PWA config with icons and categories","value":{"tool":"pwa-web-app-manifest-generator","tool_version":"1.0.2","outputs":{"manifestOutput":"{\n  \"name\": \"IO Tools\",\n  \"short_name\": \"IO Tools\",\n  \"description\": \"Free online developer and SEO tools that run entirely in your browser.\",\n  \"lang\": \"en-US\",\n  \"id\": \"/?source=pwa\",\n  \"start_url\": \"/\",\n  \"scope\": \"/\",\n  \"display\": \"standalone\",\n  \"theme_color\": \"#464aff\",\n  \"background_color\": \"#ffffff\",\n  \"categories\": [\n    \"productivity\",\n    \"utilities\"\n  ],\n  \"icons\": [\n    {\n      \"src\": \"/icons/icon-96.png\",\n      \"sizes\": \"96x96\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    },\n    {\n      \"src\": \"/icons/icon-128.png\",\n      \"sizes\": \"128x128\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    },\n    {\n      \"src\": \"/icons/icon-144.png\",\n      \"sizes\": \"144x144\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    },\n    {\n      \"src\": \"/icons/icon-192.png\",\n      \"sizes\": \"192x192\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    },\n    {\n      \"src\": \"/icons/icon-512.png\",\n      \"sizes\": \"512x512\",\n      \"type\": \"image/png\",\n      \"purpose\": \"any maskable\"\n    }\n  ]\n}\n","linkTag":"<link rel=\"manifest\" href=\"/manifest.json\">"},"credits_used":5,"credits_remaining":null}},"minimal_fullscreen_app_no_icons_or_categories":{"summary":"Minimal fullscreen app, no icons or categories","value":{"tool":"pwa-web-app-manifest-generator","tool_version":"1.0.2","outputs":{"manifestOutput":"{\n  \"name\": \"Simple Notes\",\n  \"short_name\": \"Notes\",\n  \"start_url\": \"/app/\",\n  \"display\": \"fullscreen\",\n  \"orientation\": \"landscape-primary\",\n  \"theme_color\": \"#000000\",\n  \"background_color\": \"#111111\"\n}\n","linkTag":"<link rel=\"manifest\" href=\"/manifest.json\">"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"manifestOutput":{"type":"string","description":"manifest.json"},"linkTag":{"type":"string","description":"HTML Link Tag"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ssh-key-generator":{"post":{"operationId":"run_ssh_key_generator","summary":"SSH Key Generator","tags":["Generators"],"description":"Generate a real SSH keypair (Ed25519, ECDSA P-256, or ECDSA P-384) in native OpenSSH format, with SHA-256 and MD5 fingerprints. Generated in your browser and never transmitted.\n\n[Try SSH Key Generator in your browser →](https://iotools.cloud/tool/ssh-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"algorithm":{"enum":["ed25519","ecdsa-p256","ecdsa-p384"],"description":"Algorithm"},"comment":{"type":"string","description":"Comment"}},"required":[]},"examples":{"ed25519_key_pair":{"summary":"Ed25519 key pair","value":{"algorithm":"ed25519","comment":"user@hostname"}},"ecdsa_p_256_key_pair":{"summary":"ECDSA P-256 key pair","value":{"algorithm":"ecdsa-p256","comment":"user@hostname"}},"ecdsa_p_384_key_pair":{"summary":"ECDSA P-384 key pair","value":{"algorithm":"ecdsa-p384","comment":"user@hostname"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"privateKey":{"type":"string","description":"Private key"},"publicKey":{"type":"string","description":"Public key"},"fingerprintSha256":{"type":"string","description":"SHA-256 fingerprint"},"fingerprintMd5":{"type":"string","description":"MD5 fingerprint"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/md5-hash-generator":{"post":{"operationId":"run_md5_hash_generator","summary":"MD5 Hash Generator","tags":["Generators"],"description":"Generate the MD5 hash of any text, in hexadecimal or base64, and optionally verify it against an expected hash.\n\n[Try MD5 Hash Generator in your browser →](https://iotools.cloud/tool/md5-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message to hash"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"md5_of_hello":{"summary":"MD5 of \"hello\"","value":{"inputText":"hello","outputFormat":"hex","expectedHash":""}},"md5_of_the_empty_string":{"summary":"MD5 of the empty string","value":{"inputText":"","outputFormat":"hex","expectedHash":""}},"base64_output":{"summary":"Base64 output","value":{"inputText":"The quick brown fox jumps over the lazy dog","outputFormat":"base64","expectedHash":""}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"inputText":"hello","outputFormat":"hex","expectedHash":"5D41402ABC4B2A76B9719D911017C592"}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"inputText":"hello","outputFormat":"hex","expectedHash":"deadbeef"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"md5_of_hello":{"summary":"MD5 of \"hello\"","value":{"tool":"md5-hash-generator","tool_version":"1.0.2","outputs":{"output":"5d41402abc4b2a76b9719d911017c592","match":""},"credits_used":5,"credits_remaining":null}},"md5_of_the_empty_string":{"summary":"MD5 of the empty string","value":{"tool":"md5-hash-generator","tool_version":"1.0.2","outputs":{"output":"d41d8cd98f00b204e9800998ecf8427e","match":""},"credits_used":5,"credits_remaining":null}},"base64_output":{"summary":"Base64 output","value":{"tool":"md5-hash-generator","tool_version":"1.0.2","outputs":{"output":"nhB9nTcrtoJr2B01QqQZ1g==","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"tool":"md5-hash-generator","tool_version":"1.0.2","outputs":{"output":"5d41402abc4b2a76b9719d911017c592","match":"Match"},"credits_used":5,"credits_remaining":null}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"tool":"md5-hash-generator","tool_version":"1.0.2","outputs":{"output":"5d41402abc4b2a76b9719d911017c592","match":"No match"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"MD5 hash"},"match":{"type":"string","description":"Matches expected hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sha-hash-generator":{"post":{"operationId":"run_sha_hash_generator","summary":"SHA Hash Generator","tags":["Generators"],"description":"Generate a SHA hash (SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512) of any text, in hexadecimal or base64, and optionally verify it against an expected hash.\n\n[Try SHA Hash Generator in your browser →](https://iotools.cloud/tool/sha-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message to hash"},"algorithm":{"enum":["sha1","sha224","sha256","sha384","sha512","sha3-256","sha3-512"],"description":"SHA variant"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"sha_256_of_abc":{"summary":"SHA-256 of \"abc\"","value":{"inputText":"abc","algorithm":"sha256","outputFormat":"hex","expectedHash":""}},"sha_256_of_the_empty_string":{"summary":"SHA-256 of the empty string","value":{"inputText":"","algorithm":"sha256","outputFormat":"hex","expectedHash":""}},"sha_1_of_abc":{"summary":"SHA-1 of \"abc\"","value":{"inputText":"abc","algorithm":"sha1","outputFormat":"hex","expectedHash":""}},"sha_512_of_abc":{"summary":"SHA-512 of \"abc\"","value":{"inputText":"abc","algorithm":"sha512","outputFormat":"hex","expectedHash":""}},"sha3_256_of_abc":{"summary":"SHA3-256 of \"abc\"","value":{"inputText":"abc","algorithm":"sha3-256","outputFormat":"hex","expectedHash":""}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"inputText":"abc","algorithm":"sha256","outputFormat":"hex","expectedHash":"BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha_256_of_abc":{"summary":"SHA-256 of \"abc\"","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad","match":""},"credits_used":5,"credits_remaining":null}},"sha_256_of_the_empty_string":{"summary":"SHA-256 of the empty string","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","match":""},"credits_used":5,"credits_remaining":null}},"sha_1_of_abc":{"summary":"SHA-1 of \"abc\"","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"a9993e364706816aba3e25717850c26c9cd0d89d","match":""},"credits_used":5,"credits_remaining":null}},"sha_512_of_abc":{"summary":"SHA-512 of \"abc\"","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f","match":""},"credits_used":5,"credits_remaining":null}},"sha3_256_of_abc":{"summary":"SHA3-256 of \"abc\"","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"tool":"sha-hash-generator","tool_version":"1.0.2","outputs":{"output":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad","match":"Match"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Computed hash"},"match":{"type":"string","description":"Matches expected hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mac-address-generator":{"post":{"operationId":"run_mac_address_generator","summary":"MAC Address Generator","tags":["Generators"],"description":"Generate random MAC addresses in bulk — optionally locked to a vendor prefix (OUI) — with a colon, hyphen or period separator and upper- or lowercase output.\n\n[Try MAC Address Generator in your browser →](https://iotools.cloud/tool/mac-address-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of addresses","minimum":1,"maximum":100},"prefix":{"type":"string","description":"Prefix (OUI)"},"separator":{"enum":[":","-","."],"description":"Separator"},"uppercase":{"type":"boolean","description":"Uppercase output"}},"required":["count"]},"examples":{"five_random_addresses":{"summary":"Five random addresses","value":{"count":"5","prefix":"","separator":":","uppercase":"true"}},"fixed_vendor_prefix":{"summary":"Fixed vendor prefix","value":{"count":"5","prefix":"32:92:d4","separator":":","uppercase":"true"}},"hyphen_separated_lowercase":{"summary":"Hyphen-separated, lowercase","value":{"count":"10","prefix":"","separator":"-","uppercase":""}},"separator_less_prefix":{"summary":"Separator-less prefix","value":{"count":"3","prefix":"aabbcc","separator":":","uppercase":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"addresses":{"type":"string","description":"Generated addresses"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator":{"post":{"operationId":"run_name_generator","summary":"AI Name Generator","tags":["Generators"],"description":"Generate original names for characters, places, brands or projects with AI — set the complexity, the length and how many you need, and steer the theme in your own words.\n\n[Try AI Name Generator in your browser →](https://iotools.cloud/tool/name-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/aarakocra-names":{"post":{"operationId":"run_name_generator_aarakocra_names","summary":"Aarakocra Name Generator","tags":["Generators"],"description":"Generate avian Aarakocra names with AI — wind-swept, tribal and explained. Perfect for D&D characters, homebrew and fantasy worldbuilding.\n\n[Try Aarakocra Name Generator in your browser →](https://iotools.cloud/tool/name-generator/aarakocra-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/aasimar-names":{"post":{"operationId":"run_name_generator_aasimar_names","summary":"Aasimar Name Generator","tags":["Generators"],"description":"Generate celestial Aasimar names with AI — divine, otherworldly and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Aasimar Name Generator in your browser →](https://iotools.cloud/tool/name-generator/aasimar-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/album-names":{"post":{"operationId":"run_name_generator_album_names","summary":"Album Name Generator","tags":["Generators"],"description":"Generate creative, evocative album names with AI — poetic, provocative and explained. Perfect for musicians, bands and concept records.\n\n[Try Album Name Generator in your browser →](https://iotools.cloud/tool/name-generator/album-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/angel-names":{"post":{"operationId":"run_name_generator_angel_names","summary":"Angel Name Generator","tags":["Generators"],"description":"Generate divine angel names with AI — celestial, meaningful and explained. Perfect for fantasy fiction, games and worldbuilding.\n\n[Try Angel Name Generator in your browser →](https://iotools.cloud/tool/name-generator/angel-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/animal-names":{"post":{"operationId":"run_name_generator_animal_names","summary":"Animal Name Generator","tags":["Generators"],"description":"Generate fantastical creature names with AI — exotic, believable and explained. Perfect for fantasy fiction, games and worldbuilding.\n\n[Try Animal Name Generator in your browser →](https://iotools.cloud/tool/name-generator/animal-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/arabic-names":{"post":{"operationId":"run_name_generator_arabic_names","summary":"Arabic Name Generator","tags":["Generators"],"description":"Generate authentic Arabic names with AI — meaningful, culturally grounded and explained. Perfect for characters, worldbuilding and naming inspiration.\n\n[Try Arabic Name Generator in your browser →](https://iotools.cloud/tool/name-generator/arabic-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/baby-names":{"post":{"operationId":"run_name_generator_baby_names","summary":"Baby Name Generator","tags":["Generators"],"description":"Generate meaningful baby names with AI — each with its origin and meaning explained. Steer the results towards a culture, a sound or a family tradition.\n\n[Try Baby Name Generator in your browser →](https://iotools.cloud/tool/name-generator/baby-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/bakery-names":{"post":{"operationId":"run_name_generator_bakery_names","summary":"Bakery Name Generator","tags":["Generators"],"description":"Generate charming bakery names with AI — warm, appetising and explained. Perfect for new shops, cafes and food-business branding.\n\n[Try Bakery Name Generator in your browser →](https://iotools.cloud/tool/name-generator/bakery-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/barbarian-names":{"post":{"operationId":"run_name_generator_barbarian_names","summary":"Barbarian Name Generator","tags":["Generators"],"description":"Generate fearsome barbarian names with AI — powerful, tribal and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Barbarian Name Generator in your browser →](https://iotools.cloud/tool/name-generator/barbarian-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/blood-elf-names":{"post":{"operationId":"run_name_generator_blood_elf_names","summary":"Blood Elf Name Generator","tags":["Generators"],"description":"Generate Blood Elf names with AI — elegant, arcane and rooted in Thalassian sound, each with its meaning explained. Perfect for Warcraft roleplay, fan fiction and RPG characters.\n\n[Try Blood Elf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/blood-elf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/blood-hunter-names":{"post":{"operationId":"run_name_generator_blood_hunter_names","summary":"Blood Hunter Name Generator","tags":["Generators"],"description":"Generate Blood Hunter names with AI — dark, gothic and steeped in blood magic, each with a line of inspiration. Perfect for D&D characters and grimdark fiction.\n\n[Try Blood Hunter Name Generator in your browser →](https://iotools.cloud/tool/name-generator/blood-hunter-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/book-names":{"post":{"operationId":"run_name_generator_book_names","summary":"Book Name Generator","tags":["Generators"],"description":"Generate compelling book titles with AI — intriguing, memorable and genre-aware, each with a note on what it evokes. Perfect for novelists, authors and writing prompts.\n\n[Try Book Name Generator in your browser →](https://iotools.cloud/tool/name-generator/book-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/british-girl-names":{"post":{"operationId":"run_name_generator_british_girl_names","summary":"British Girl Name Generator","tags":["Generators"],"description":"Generate British girl names with AI — spanning Anglo-Saxon, Norman, Celtic and modern traditions, each with its origin and meaning. Perfect for baby-naming, characters and fiction.\n\n[Try British Girl Name Generator in your browser →](https://iotools.cloud/tool/name-generator/british-girl-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/cafe-names":{"post":{"operationId":"run_name_generator_cafe_names","summary":"Cafe Name Generator","tags":["Generators"],"description":"Generate catchy cafe names with AI — cozy, brandable and easy to remember, each with the idea behind it. Perfect for coffee shops, roasteries and small-business branding.\n\n[Try Cafe Name Generator in your browser →](https://iotools.cloud/tool/name-generator/cafe-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/changeling-names":{"post":{"operationId":"run_name_generator_changeling_names","summary":"Changeling Name Generator","tags":["Generators"],"description":"Generate Changeling names with AI — fluid, mutable and suited to a shapeshifter's many faces, each with a note on its flavour. Perfect for D&D characters and Eberron campaigns.\n\n[Try Changeling Name Generator in your browser →](https://iotools.cloud/tool/name-generator/changeling-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/chicken-names":{"post":{"operationId":"run_name_generator_chicken_names","summary":"Chicken Name Generator","tags":["Generators"],"description":"Generate chicken names with AI — funny, cute or punny for your backyard flock, each with the joke behind it. Perfect for hens, roosters and pet poultry.\n\n[Try Chicken Name Generator in your browser →](https://iotools.cloud/tool/name-generator/chicken-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/continent-names":{"post":{"operationId":"run_name_generator_continent_names","summary":"Continent Name Generator","tags":["Generators"],"description":"Generate continent names with AI — evocative, map-ready and geographically believable, each with a note on the land it names. Perfect for fantasy worldbuilding, maps and fiction.\n\n[Try Continent Name Generator in your browser →](https://iotools.cloud/tool/name-generator/continent-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/country-names":{"post":{"operationId":"run_name_generator_country_names","summary":"Country Name Generator","tags":["Generators"],"description":"Generate names for fictional countries, lands and nations with AI — culturally resonant, evocative and explained. Perfect for worldbuilding, maps and fantasy fiction.\n\n[Try Country Name Generator in your browser →](https://iotools.cloud/tool/name-generator/country-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/couple-names":{"post":{"operationId":"run_name_generator_couple_names","summary":"Couple Name Generator","tags":["Generators"],"description":"Generate cute couple names by blending two partners' names with AI — catchy, harmonious and explained. Perfect for ship names, nicknames and social handles.\n\n[Try Couple Name Generator in your browser →](https://iotools.cloud/tool/name-generator/couple-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/cow-names":{"post":{"operationId":"run_name_generator_cow_names","summary":"Cow Name Generator","tags":["Generators"],"description":"Generate friendly, punny and classic cow names with AI — each with a line on why it fits. Perfect for dairy cows, pet cattle, farms and 4-H projects.\n\n[Try Cow Name Generator in your browser →](https://iotools.cloud/tool/name-generator/cow-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/dark-elf-names":{"post":{"operationId":"run_name_generator_dark_elf_names","summary":"Dark Elf Name Generator","tags":["Generators"],"description":"Generate mysterious dark elf names with AI — melodic, shadowed and explained. Perfect for Skyrim, Elder Scrolls, Forgotten Realms and D&D characters.\n\n[Try Dark Elf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/dark-elf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/demon-names":{"post":{"operationId":"run_name_generator_demon_names","summary":"Demon Name Generator","tags":["Generators"],"description":"Generate menacing demon names with AI — dreadful, lore-inspired and explained. Perfect for D&D villains, fantasy fiction, occult horror and games.\n\n[Try Demon Name Generator in your browser →](https://iotools.cloud/tool/name-generator/demon-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/discord-names":{"post":{"operationId":"run_name_generator_discord_names","summary":"Discord Username Generator","tags":["Generators"],"description":"Generate catchy, available Discord usernames with AI — unique, readable and explained. Perfect for gaming handles, servers and new accounts.\n\n[Try Discord Username Generator in your browser →](https://iotools.cloud/tool/name-generator/discord-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/dragon-names":{"post":{"operationId":"run_name_generator_dragon_names","summary":"Dragon Name Generator","tags":["Generators"],"description":"Generate powerful dragon names with AI — elemental, ancient and explained. Perfect for D&D campaigns, fantasy fiction and worldbuilding.\n\n[Try Dragon Name Generator in your browser →](https://iotools.cloud/tool/name-generator/dragon-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/dragonborn-names":{"post":{"operationId":"run_name_generator_dragonborn_names","summary":"Dragonborn Name Generator","tags":["Generators"],"description":"Generate Dragonborn names with AI — draconic, proud and explained. Perfect for D&D characters, both metallic and chromatic ancestry, and fantasy fiction.\n\n[Try Dragonborn Name Generator in your browser →](https://iotools.cloud/tool/name-generator/dragonborn-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/drow-names":{"post":{"operationId":"run_name_generator_drow_names","summary":"Drow Name Generator","tags":["Generators"],"description":"Generate authentic Drow names with AI — exotic, house-bound and explained. Perfect for D&D characters, the Underdark and Forgotten Realms campaigns.\n\n[Try Drow Name Generator in your browser →](https://iotools.cloud/tool/name-generator/drow-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/druid-names":{"post":{"operationId":"run_name_generator_druid_names","summary":"Druid Name Generator","tags":["Generators"],"description":"Generate mystical, nature-inspired druid names with AI — Celtic-rooted, meaningful and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Druid Name Generator in your browser →](https://iotools.cloud/tool/name-generator/druid-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/dwarf-names":{"post":{"operationId":"run_name_generator_dwarf_names","summary":"Dwarf Name Generator","tags":["Generators"],"description":"Generate sturdy dwarf names with AI — Norse-rooted, clan-worthy and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Dwarf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/dwarf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/elf-names":{"post":{"operationId":"run_name_generator_elf_names","summary":"Elf Name Generator","tags":["Generators"],"description":"Generate elven names for wood elves, high elves and dark elves with AI — melodic, meaningful, and explained. Perfect for D&D characters and fantasy fiction.\n\n[Try Elf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/elf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/fairy-names":{"post":{"operationId":"run_name_generator_fairy_names","summary":"Fairy Name Generator","tags":["Generators"],"description":"Generate enchanting, whimsical fairy names with AI — nature-woven, melodic and explained. Perfect for D&D characters, fantasy fiction and storytelling.\n\n[Try Fairy Name Generator in your browser →](https://iotools.cloud/tool/name-generator/fairy-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/fantasy-city-names":{"post":{"operationId":"run_name_generator_fantasy_city_names","summary":"Fantasy City Name Generator","tags":["Generators"],"description":"Generate evocative fantasy city names with AI — each with a line of lore about the place it names. Built for worldbuilders, GMs and fantasy authors.\n\n[Try Fantasy City Name Generator in your browser →](https://iotools.cloud/tool/name-generator/fantasy-city-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/fantasy-town-names":{"post":{"operationId":"run_name_generator_fantasy_town_names","summary":"Fantasy Town Name Generator","tags":["Generators"],"description":"Generate charming fantasy town names with AI — evocative, geography-rooted and explained. Perfect for D&D settings, fantasy fiction and worldbuilding.\n\n[Try Fantasy Town Name Generator in your browser →](https://iotools.cloud/tool/name-generator/fantasy-town-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/firbolg-names":{"post":{"operationId":"run_name_generator_firbolg_names","summary":"Firbolg Name Generator","tags":["Generators"],"description":"Generate Firbolg names with AI — nature-bound, Celtic-flavoured and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Firbolg Name Generator in your browser →](https://iotools.cloud/tool/name-generator/firbolg-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/french-names":{"post":{"operationId":"run_name_generator_french_names","summary":"French Name Generator","tags":["Generators"],"description":"Generate charming French names with AI — elegant, culturally grounded and explained. Perfect for characters, baby-name inspiration and worldbuilding.\n\n[Try French Name Generator in your browser →](https://iotools.cloud/tool/name-generator/french-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/german-names":{"post":{"operationId":"run_name_generator_german_names","summary":"German Name Generator","tags":["Generators"],"description":"Generate authentic German names with AI — heritage-rooted, meaningful and explained. Perfect for characters, baby-name inspiration and worldbuilding.\n\n[Try German Name Generator in your browser →](https://iotools.cloud/tool/name-generator/german-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/githyanki-names":{"post":{"operationId":"run_name_generator_githyanki_names","summary":"Githyanki Name Generator","tags":["Generators"],"description":"Generate harsh, otherworldly Githyanki names with AI — militaristic, psionic and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try Githyanki Name Generator in your browser →](https://iotools.cloud/tool/name-generator/githyanki-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/gnome-names":{"post":{"operationId":"run_name_generator_gnome_names","summary":"Gnome Name Generator","tags":["Generators"],"description":"Generate whimsical gnome names with AI — inventive, funny and explained. Perfect for D&D, Pathfinder and World of Warcraft characters.\n\n[Try Gnome Name Generator in your browser →](https://iotools.cloud/tool/name-generator/gnome-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/goblin-names":{"post":{"operationId":"run_name_generator_goblin_names","summary":"Goblin Name Generator","tags":["Generators"],"description":"Generate cunning, chaotic goblin names with AI — mischievous, memorable and explained. Perfect for D&D campaigns and fantasy fiction.\n\n[Try Goblin Name Generator in your browser →](https://iotools.cloud/tool/name-generator/goblin-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/greek-names":{"post":{"operationId":"run_name_generator_greek_names","summary":"Greek Name Generator","tags":["Generators"],"description":"Generate authentic Greek names with AI — rooted in history and mythology, with each meaning explained. Perfect for characters, worldbuilding and baby-name inspiration.\n\n[Try Greek Name Generator in your browser →](https://iotools.cloud/tool/name-generator/greek-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/half-elf-names":{"post":{"operationId":"run_name_generator_half_elf_names","summary":"Half-Elf Name Generator","tags":["Generators"],"description":"Generate half-elf names with AI — blending elven melody with human grounding, each meaning explained. Perfect for D&D characters and fantasy fiction.\n\n[Try Half-Elf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/half-elf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/half-orc-names":{"post":{"operationId":"run_name_generator_half_orc_names","summary":"Half-Orc Name Generator","tags":["Generators"],"description":"Generate fierce half-orc names with AI — guttural orcish strength with a human edge, each explained. Perfect for D&D and Pathfinder characters.\n\n[Try Half-Orc Name Generator in your browser →](https://iotools.cloud/tool/name-generator/half-orc-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/halfling-names":{"post":{"operationId":"run_name_generator_halfling_names","summary":"Halfling Name Generator","tags":["Generators"],"description":"Generate charming halfling names with AI — cheerful, homely and explained. Perfect for D&D characters, Pathfinder and cozy fantasy fiction.\n\n[Try Halfling Name Generator in your browser →](https://iotools.cloud/tool/name-generator/halfling-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/harry-potter-names":{"post":{"operationId":"run_name_generator_harry_potter_names","summary":"Harry Potter Name Generator","tags":["Generators"],"description":"Generate witch and wizard names with AI in the style of the Harry Potter universe — magical, distinctive and explained. Perfect for fan fiction and roleplay.\n\n[Try Harry Potter Name Generator in your browser →](https://iotools.cloud/tool/name-generator/harry-potter-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/high-elf-names":{"post":{"operationId":"run_name_generator_high_elf_names","summary":"High-Elf Name Generator","tags":["Generators"],"description":"Generate noble high-elf names with AI — elegant, melodic and explained. Perfect for D&D characters, fantasy fiction and worldbuilding.\n\n[Try High-Elf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/high-elf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/human-names":{"post":{"operationId":"run_name_generator_human_names","summary":"Human Name Generator","tags":["Generators"],"description":"Generate human character names for D&D and fantasy fiction with AI — spanning cultures from the Sword Coast to Chult, each pronounceable, distinctive and explained.\n\n[Try Human Name Generator in your browser →](https://iotools.cloud/tool/name-generator/human-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/island-names":{"post":{"operationId":"run_name_generator_island_names","summary":"Island Name Generator","tags":["Generators"],"description":"Generate evocative island, atoll and archipelago names with AI — rooted in local culture and natural beauty, each catchy, pronounceable and explained. Perfect for worldbuilding and fiction.\n\n[Try Island Name Generator in your browser →](https://iotools.cloud/tool/name-generator/island-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/japanese-names":{"post":{"operationId":"run_name_generator_japanese_names","summary":"Japanese Name Generator","tags":["Generators"],"description":"Generate authentic Japanese names with AI — family name and given name, traditional and modern, each drawing on Japanese culture and mythology and explained.\n\n[Try Japanese Name Generator in your browser →](https://iotools.cloud/tool/name-generator/japanese-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/kenku-name-generator":{"post":{"operationId":"run_name_generator_kenku_name_generator","summary":"Kenku Name Generator","tags":["Generators"],"description":"Generate kenku names for D&D with AI — onomatopoeic, borrowed-sound names true to the crow-folk's mimicry, each explained. Perfect for tabletop characters and fantasy fiction.\n\n[Try Kenku Name Generator in your browser →](https://iotools.cloud/tool/name-generator/kenku-name-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/kingdom-names":{"post":{"operationId":"run_name_generator_kingdom_names","summary":"Kingdom Name Generator","tags":["Generators"],"description":"Generate majestic kingdom, empire and dynasty names with AI — steeped in history, myth and symbolism, each authoritative and explained. Perfect for fantasy fiction and worldbuilding.\n\n[Try Kingdom Name Generator in your browser →](https://iotools.cloud/tool/name-generator/kingdom-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/kitsune-names":{"post":{"operationId":"run_name_generator_kitsune_names","summary":"Kitsune Name Generator","tags":["Generators"],"description":"Generate mystical Japanese kitsune fox-spirit names with AI — steeped in folklore, magic and the nine tails, each meaningful and explained. Perfect for fantasy fiction and tabletop characters.\n\n[Try Kitsune Name Generator in your browser →](https://iotools.cloud/tool/name-generator/kitsune-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/knight-names":{"post":{"operationId":"run_name_generator_knight_names","summary":"Knight Name Generator","tags":["Generators"],"description":"Generate valiant knight names with AI — noble titles and European roots ringing with chivalry and honour, each explained. Perfect for medieval and fantasy fiction.\n\n[Try Knight Name Generator in your browser →](https://iotools.cloud/tool/name-generator/knight-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/kobold-names":{"post":{"operationId":"run_name_generator_kobold_names","summary":"Kobold Name Generator","tags":["Generators"],"description":"Generate kobold names for D&D with AI — draconic, tribal and pronounceable, each hinting at the kobold's role and explained. Perfect for tabletop characters and fantasy fiction.\n\n[Try Kobold Name Generator in your browser →](https://iotools.cloud/tool/name-generator/kobold-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/korean-names":{"post":{"operationId":"run_name_generator_korean_names","summary":"Korean Name Generator","tags":["Generators"],"description":"Generate authentic Korean names with AI — family name plus given name, in Hangul and romanised form, each with its meaning explained. Perfect for characters, pen names and cultural research.\n\n[Try Korean Name Generator in your browser →](https://iotools.cloud/tool/name-generator/korean-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/last-names":{"post":{"operationId":"run_name_generator_last_names","summary":"Last Name Generator","tags":["Generators"],"description":"Generate realistic last names with AI — surnames spanning cultures and origins, each with its meaning explained. Perfect for characters, pen names and worldbuilding.\n\n[Try Last Name Generator in your browser →](https://iotools.cloud/tool/name-generator/last-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/legendary-creature-names":{"post":{"operationId":"run_name_generator_legendary_creature_names","summary":"Legendary Creature Name Generator","tags":["Generators"],"description":"Generate legendary creature names with AI — grand, mythic and explained. Perfect for fantasy fiction, tabletop campaigns and worldbuilding.\n\n[Try Legendary Creature Name Generator in your browser →](https://iotools.cloud/tool/name-generator/legendary-creature-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/mage-names":{"post":{"operationId":"run_name_generator_mage_names","summary":"Mage Name Generator","tags":["Generators"],"description":"Generate mystical mage names with AI — arcane, otherworldly and explained. Perfect for D&D characters, fantasy fiction and RPGs.\n\n[Try Mage Name Generator in your browser →](https://iotools.cloud/tool/name-generator/mage-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/mermaid-names":{"post":{"operationId":"run_name_generator_mermaid_names","summary":"Mermaid Name Generator","tags":["Generators"],"description":"Generate enchanting mermaid names with AI — oceanic, melodic and explained. Perfect for fantasy fiction, games and worldbuilding.\n\n[Try Mermaid Name Generator in your browser →](https://iotools.cloud/tool/name-generator/mermaid-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/middle-names":{"post":{"operationId":"run_name_generator_middle_names","summary":"Middle Name Generator","tags":["Generators"],"description":"Generate middle names with AI — each pairing naturally with the full name and explained. Perfect for expecting parents, characters and honouring family.\n\n[Try Middle Name Generator in your browser →](https://iotools.cloud/tool/name-generator/middle-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/norse-names":{"post":{"operationId":"run_name_generator_norse_names","summary":"Norse Name Generator","tags":["Generators"],"description":"Generate authentic Norse names with AI — rooted in Viking naming conventions and mythology, each with its meaning explained. Perfect for characters, fiction and worldbuilding.\n\n[Try Norse Name Generator in your browser →](https://iotools.cloud/tool/name-generator/norse-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/orc-names":{"post":{"operationId":"run_name_generator_orc_names","summary":"Orc Name Generator","tags":["Generators"],"description":"Generate fierce orc names with AI — harsh, guttural and explained. Perfect for D&D characters, fantasy fiction and RPGs.\n\n[Try Orc Name Generator in your browser →](https://iotools.cloud/tool/name-generator/orc-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/project-names":{"post":{"operationId":"run_name_generator_project_names","summary":"Project Name Generator","tags":["Generators"],"description":"Generate memorable project names with AI — each catchy, on-mission and explained. Perfect for codenames, initiatives, hackathons and product launches.\n\n[Try Project Name Generator in your browser →](https://iotools.cloud/tool/name-generator/project-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/random-names":{"post":{"operationId":"run_name_generator_random_names","summary":"Realistic Name Generator","tags":["Generators"],"description":"Generate random names for people with AI — any culture, any gender, each with its origin explained. Perfect for characters, test data and placeholder identities.\n\n[Try Realistic Name Generator in your browser →](https://iotools.cloud/tool/name-generator/random-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/restaurant-names":{"post":{"operationId":"run_name_generator_restaurant_names","summary":"Restaurant Name Generator","tags":["Generators"],"description":"Generate catchy restaurant names with AI — each tied to your cuisine and explained. Perfect for cafes, bistros, food trucks and new dining concepts.\n\n[Try Restaurant Name Generator in your browser →](https://iotools.cloud/tool/name-generator/restaurant-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/roman-names":{"post":{"operationId":"run_name_generator_roman_names","summary":"Roman Name Generator","tags":["Generators"],"description":"Generate authentic ancient Roman names with AI — following the praenomen, nomen and cognomen convention, each explained. Perfect for history, fiction and games.\n\n[Try Roman Name Generator in your browser →](https://iotools.cloud/tool/name-generator/roman-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/samurai-names":{"post":{"operationId":"run_name_generator_samurai_names","summary":"Samurai Name Generator","tags":["Generators"],"description":"Generate authentic Japanese samurai names with AI — each with its meaning and pronunciation explained. Perfect for characters, fiction and games.\n\n[Try Samurai Name Generator in your browser →](https://iotools.cloud/tool/name-generator/samurai-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/school-names":{"post":{"operationId":"run_name_generator_school_names","summary":"School Name Generator","tags":["Generators"],"description":"Generate distinctive school names with AI — each evoking learning and community, and explained. Perfect for fictional academies, real institutions and worldbuilding.\n\n[Try School Name Generator in your browser →](https://iotools.cloud/tool/name-generator/school-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/ship-names":{"post":{"operationId":"run_name_generator_ship_names","summary":"Ship Name Generator","tags":["Generators"],"description":"Generate evocative ship names with AI — traditional or modern, for any vessel, each explained. Perfect for boats, fiction, games and worldbuilding.\n\n[Try Ship Name Generator in your browser →](https://iotools.cloud/tool/name-generator/ship-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/song-names":{"post":{"operationId":"run_name_generator_song_names","summary":"Song Name Generator","tags":["Generators"],"description":"Generate catchy song titles with AI — matched to your lyrics, mood or genre, each explained. Perfect for songwriters, producers and playlist ideas.\n\n[Try Song Name Generator in your browser →](https://iotools.cloud/tool/name-generator/song-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/spanish-names":{"post":{"operationId":"run_name_generator_spanish_names","summary":"Spanish Name Generator","tags":["Generators"],"description":"Generate authentic Spanish names with AI — first names paired with two traditional surnames, spanning Spain's regions, with the meaning and origin of each explained.\n\n[Try Spanish Name Generator in your browser →](https://iotools.cloud/tool/name-generator/spanish-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/species-names":{"post":{"operationId":"run_name_generator_species_names","summary":"Species Name Generator","tags":["Generators"],"description":"Generate imaginative species names for alien life forms, mythical creatures and fantastical beings with AI — evocative, original, and explained. Perfect for worldbuilding and sci-fi.\n\n[Try Species Name Generator in your browser →](https://iotools.cloud/tool/name-generator/species-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/succubus-names":{"post":{"operationId":"run_name_generator_succubus_names","summary":"Succubus Name Generator","tags":["Generators"],"description":"Generate seductive, mysterious succubus names with AI — alluring, demonic and explained. Perfect for fantasy characters, horror fiction and tabletop campaigns.\n\n[Try Succubus Name Generator in your browser →](https://iotools.cloud/tool/name-generator/succubus-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/superhero-names":{"post":{"operationId":"run_name_generator_superhero_names","summary":"Superhero Name Generator","tags":["Generators"],"description":"Generate catchy superhero names with AI — powers hinted at, symbolism built in, and each one explained. Perfect for comics, games and original characters.\n\n[Try Superhero Name Generator in your browser →](https://iotools.cloud/tool/name-generator/superhero-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/tabaxi-names":{"post":{"operationId":"run_name_generator_tabaxi_names","summary":"Tabaxi Name Generator","tags":["Generators"],"description":"Generate Tabaxi names with AI — descriptive cat-folk phrases that capture a personality or life experience, each one explained. Perfect for D&D characters.\n\n[Try Tabaxi Name Generator in your browser →](https://iotools.cloud/tool/name-generator/tabaxi-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/team-names":{"post":{"operationId":"run_name_generator_team_names","summary":"Team Name Generator","tags":["Generators"],"description":"Generate distinctive team names with AI — memorable, unifying and explained. Perfect for sports squads, esports rosters, work groups and clubs.\n\n[Try Team Name Generator in your browser →](https://iotools.cloud/tool/name-generator/team-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/tiefling-names":{"post":{"operationId":"run_name_generator_tiefling_names","summary":"Tiefling Name Generator","tags":["Generators"],"description":"Generate Tiefling names with AI — infernal, evocative and explained, blending harsh and melodic sounds. Perfect for D&D characters and fantasy fiction.\n\n[Try Tiefling Name Generator in your browser →](https://iotools.cloud/tool/name-generator/tiefling-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/troll-names":{"post":{"operationId":"run_name_generator_troll_names","summary":"Troll Name Generator","tags":["Generators"],"description":"Generate troll names with AI — hulking, mythic and explained, from menacing to mischievous. Perfect for fantasy characters, games and folklore-inspired worlds.\n\n[Try Troll Name Generator in your browser →](https://iotools.cloud/tool/name-generator/troll-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/vampire-names":{"post":{"operationId":"run_name_generator_vampire_names","summary":"Vampire Name Generator","tags":["Generators"],"description":"Generate darkly alluring, immortal vampire names with AI — seductive, gothic and explained. Perfect for tabletop characters, urban fantasy and horror fiction.\n\n[Try Vampire Name Generator in your browser →](https://iotools.cloud/tool/name-generator/vampire-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/warforged-names":{"post":{"operationId":"run_name_generator_warforged_names","summary":"Warforged Name Generator","tags":["Generators"],"description":"Generate Warforged names with AI — mechanical, purpose-driven and explained. Perfect for D&D Eberron characters and construct NPCs.\n\n[Try Warforged Name Generator in your browser →](https://iotools.cloud/tool/name-generator/warforged-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/warrior-cat-names":{"post":{"operationId":"run_name_generator_warrior_cat_names","summary":"Warrior Cat Name Generator","tags":["Generators"],"description":"Generate Warrior Cats names for cats and Clans with AI — nature-inspired, descriptive and explained. Perfect for fan fiction and roleplay.\n\n[Try Warrior Cat Name Generator in your browser →](https://iotools.cloud/tool/name-generator/warrior-cat-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/werewolf-names":{"post":{"operationId":"run_name_generator_werewolf_names","summary":"Werewolf Name Generator","tags":["Generators"],"description":"Generate fierce werewolf names with AI — primal, mysterious and explained. Perfect for tabletop characters, urban fantasy and horror stories.\n\n[Try Werewolf Name Generator in your browser →](https://iotools.cloud/tool/name-generator/werewolf-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/witch-names":{"post":{"operationId":"run_name_generator_witch_names","summary":"Witch Name Generator","tags":["Generators"],"description":"Generate mystical witch names with AI — atmospheric, powerful and explained. Perfect for tabletop characters, fantasy fiction and games.\n\n[Try Witch Name Generator in your browser →](https://iotools.cloud/tool/name-generator/witch-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/wizard-names":{"post":{"operationId":"run_name_generator_wizard_names","summary":"Wizard Name Generator","tags":["Generators"],"description":"Generate wizard names with AI — arcane, ancient-sounding and explained. Perfect for D&D spellcasters, fantasy fiction and games.\n\n[Try Wizard Name Generator in your browser →](https://iotools.cloud/tool/name-generator/wizard-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/world-names":{"post":{"operationId":"run_name_generator_world_names","summary":"World Name Generator","tags":["Generators"],"description":"Generate evocative names for fictional worlds and realms with AI — wondrous, memorable and explained. Perfect for worldbuilding, tabletop settings and fantasy fiction.\n\n[Try World Name Generator in your browser →](https://iotools.cloud/tool/name-generator/world-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/name-generator/yuan-ti-names":{"post":{"operationId":"run_name_generator_yuan_ti_names","summary":"Yuan-ti Name Generator","tags":["Generators"],"description":"Generate serpentine yuan-ti names with AI — hissing, Aztec-flavoured and explained. Perfect for D&D characters and snake-cult NPCs.\n\n[Try Yuan-ti Name Generator in your browser →](https://iotools.cloud/tool/name-generator/yuan-ti-names/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"complexity":{"enum":["simple","balanced","elaborate"],"description":"Complexity"},"length":{"enum":["short","medium","long"],"description":"Name length"},"context":{"type":"string","description":"Extra context"},"describe":{"type":"boolean","description":"Include a short description for each name"},"count":{"type":"number","description":"How many names","minimum":1,"maximum":20}},"required":[]},"examples":{"five_balanced_names":{"summary":"Five balanced names","value":{"complexity":"balanced","length":"medium","context":"","count":"5","describe":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"names":{"type":"array","description":"Names","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["name","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/password-generator":{"post":{"operationId":"run_password_generator","summary":"Password Generator","tags":["Generators"],"description":"Generate a strong random password of any length from 6 to 128 characters — choose uppercase, lowercase, numbers and symbols, and optionally exclude similar or ambiguous characters. Created in your browser with a cryptographic RNG and never transmitted.\n\n[Try Password Generator in your browser →](https://iotools.cloud/tool/password-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"Password length","minimum":6,"maximum":128},"symbols":{"type":"boolean","description":"Include symbols (e.g. @#$%)"},"numbers":{"type":"boolean","description":"Include numbers (e.g. 123456)"},"lowercase":{"type":"boolean","description":"Include lowercase characters (e.g. abcdefgh)"},"uppercase":{"type":"boolean","description":"Include uppercase characters (e.g. ABCDEFGH)"},"excludeSimilar":{"type":"boolean","description":"Exclude similar characters (i, l, 1, L, o, 0, O)"},"excludeAmbiguous":{"type":"boolean","description":"Exclude ambiguous characters ( { } [ ] ( ) / \\ ' \" ` ~ , ; : . &lt; > )"}},"required":[]},"examples":{"16_characters_all_types":{"summary":"16 characters, all types","value":{"length":"16","symbols":"true","numbers":"true","lowercase":"true","uppercase":"true","excludeSimilar":"","excludeAmbiguous":""}},"20_characters_easy_to_read_out_loud":{"summary":"20 characters, easy to read out loud","value":{"length":"20","symbols":"","numbers":"true","lowercase":"true","uppercase":"true","excludeSimilar":"true","excludeAmbiguous":"true"}},"32_characters_no_ambiguous_symbols":{"summary":"32 characters, no ambiguous symbols","value":{"length":"32","symbols":"true","numbers":"true","lowercase":"true","uppercase":"true","excludeSimilar":"","excludeAmbiguous":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"password":{"type":"string","description":"Generated password"},"strength":{"type":"string","description":"Strength"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/phone-number-generator":{"post":{"operationId":"run_phone_number_generator","summary":"Phone Number Generator","tags":["Generators"],"description":"Generate realistic fake phone numbers for the US, UK, Canada, Australia, Germany, France, Japan, India and Brazil — in international, national or digits-only format, for testing forms and seeding data.\n\n[Try Phone Number Generator in your browser →](https://iotools.cloud/tool/phone-number-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many numbers","minimum":1,"maximum":50},"country":{"enum":["random","us","ca","uk","au","de","fr","jp","in","br"],"description":"Country"},"format":{"enum":["international","national","digits"],"description":"Format"}},"required":["count"]},"examples":{"10_random_numbers":{"summary":"10 random numbers","value":{"count":"10","country":"random","format":"international"}},"5_us_numbers_national_format":{"summary":"5 US numbers, national format","value":{"count":"5","country":"us","format":"national"}},"5_uk_numbers_digits_only":{"summary":"5 UK numbers, digits only","value":{"count":"5","country":"uk","format":"digits"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated phone numbers"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/qr-code-generator":{"post":{"operationId":"run_qr_code_generator","summary":"QR Code Generator","tags":["Generators"],"description":"Generate a QR code as a crisp, scalable SVG — plain text, a phone number, a pre-filled email, or Wi-Fi credentials — with your own colours, quiet zone and error-correction level. Runs entirely in your browser.\n\n[Try QR Code Generator in your browser →](https://iotools.cloud/tool/qr-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["text","phone","email","wifi"],"description":"Type"},"text":{"type":"string","description":"Message"},"phone":{"type":"string","description":"Phone number"},"email":{"type":"string","description":"Email address"},"emailSubject":{"type":"string","description":"Subject"},"emailCc":{"type":"string","description":"CC"},"emailBcc":{"type":"string","description":"BCC"},"emailBody":{"type":"string","description":"Message body"},"wifiSsid":{"type":"string","description":"Network name (SSID)"},"wifiPassword":{"type":"string","description":"Password"},"wifiSecurity":{"enum":["WPA","WEP","nopass"],"description":"Security"},"ecLevel":{"enum":["L","M","Q","H"],"description":"Error correction"},"margin":{"type":"number","description":"Space around","minimum":0,"maximum":20},"dotSize":{"type":"number","description":"Dot size","minimum":1,"maximum":20},"background":{"type":"string","description":"Background"},"color":{"type":"string","description":"QR colour"}},"required":[]},"examples":{"a_url":{"summary":"A URL","value":{"format":"text","text":"https://iotools.cloud/","ecLevel":"M","margin":"4","dotSize":"4","background":"#ffffff","color":"#000000"}},"phone_number":{"summary":"Phone number","value":{"format":"phone","phone":"+442079460958","ecLevel":"M","margin":"4","dotSize":"4","background":"#ffffff","color":"#000000"}},"wi_fi_credentials":{"summary":"Wi-Fi credentials","value":{"format":"wifi","wifiSsid":"IOTools","wifiPassword":"guest1234","wifiSecurity":"WPA","ecLevel":"M","margin":"4","dotSize":"4","background":"#ffffff","color":"#000000"}},"pre_filled_email_high_error_correction":{"summary":"Pre-filled email, high error correction","value":{"format":"email","email":"hello@example.com","emailSubject":"Hi","emailCc":"","emailBcc":"","emailBody":"","ecLevel":"H","margin":"4","dotSize":"6","background":"#ffffff","color":"#000000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_url":{"summary":"A URL","value":{"tool":"qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"132\" height=\"132\" viewBox=\"0 0 33 33\" shape-rendering=\"crispEdges\"><rect width=\"33\" height=\"33\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM15 4h1v1h-1zM16 4h1v1h-1zM17 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM23 4h1v1h-1zM24 4h1v1h-1zM25 4h1v1h-1zM26 4h1v1h-1zM27 4h1v1h-1zM28 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM14 5h1v1h-1zM15 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM28 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM13 6h1v1h-1zM14 6h1v1h-1zM15 6h1v1h-1zM22 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM26 6h1v1h-1zM28 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM14 7h1v1h-1zM16 7h1v1h-1zM17 7h1v1h-1zM18 7h1v1h-1zM19 7h1v1h-1zM22 7h1v1h-1zM24 7h1v1h-1zM25 7h1v1h-1zM26 7h1v1h-1zM28 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM13 8h1v1h-1zM15 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM20 8h1v1h-1zM22 8h1v1h-1zM24 8h1v1h-1zM25 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM16 9h1v1h-1zM17 9h1v1h-1zM18 9h1v1h-1zM19 9h1v1h-1zM22 9h1v1h-1zM28 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM23 10h1v1h-1zM24 10h1v1h-1zM25 10h1v1h-1zM26 10h1v1h-1zM27 10h1v1h-1zM28 10h1v1h-1zM12 11h1v1h-1zM16 11h1v1h-1zM18 11h1v1h-1zM20 11h1v1h-1zM4 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM14 12h1v1h-1zM15 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM22 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM26 12h1v1h-1zM5 13h1v1h-1zM8 13h1v1h-1zM9 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM16 13h1v1h-1zM18 13h1v1h-1zM23 13h1v1h-1zM27 13h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM10 14h1v1h-1zM14 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM23 14h1v1h-1zM25 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM5 15h1v1h-1zM6 15h1v1h-1zM8 15h1v1h-1zM14 15h1v1h-1zM16 15h1v1h-1zM18 15h1v1h-1zM21 15h1v1h-1zM24 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM7 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM12 16h1v1h-1zM17 16h1v1h-1zM18 16h1v1h-1zM19 16h1v1h-1zM20 16h1v1h-1zM21 16h1v1h-1zM22 16h1v1h-1zM24 16h1v1h-1zM26 16h1v1h-1zM27 16h1v1h-1zM28 16h1v1h-1zM4 17h1v1h-1zM5 17h1v1h-1zM8 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM16 17h1v1h-1zM20 17h1v1h-1zM21 17h1v1h-1zM23 17h1v1h-1zM25 17h1v1h-1zM27 17h1v1h-1zM4 18h1v1h-1zM6 18h1v1h-1zM7 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM13 18h1v1h-1zM14 18h1v1h-1zM18 18h1v1h-1zM19 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM23 18h1v1h-1zM24 18h1v1h-1zM25 18h1v1h-1zM27 18h1v1h-1zM28 18h1v1h-1zM4 19h1v1h-1zM7 19h1v1h-1zM13 19h1v1h-1zM16 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM22 19h1v1h-1zM23 19h1v1h-1zM24 19h1v1h-1zM28 19h1v1h-1zM4 20h1v1h-1zM6 20h1v1h-1zM7 20h1v1h-1zM9 20h1v1h-1zM10 20h1v1h-1zM12 20h1v1h-1zM16 20h1v1h-1zM17 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM22 20h1v1h-1zM23 20h1v1h-1zM24 20h1v1h-1zM26 20h1v1h-1zM12 21h1v1h-1zM17 21h1v1h-1zM19 21h1v1h-1zM20 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM9 22h1v1h-1zM10 22h1v1h-1zM13 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM16 22h1v1h-1zM17 22h1v1h-1zM18 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1zM24 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM4 23h1v1h-1zM10 23h1v1h-1zM12 23h1v1h-1zM14 23h1v1h-1zM15 23h1v1h-1zM18 23h1v1h-1zM20 23h1v1h-1zM24 23h1v1h-1zM25 23h1v1h-1zM4 24h1v1h-1zM6 24h1v1h-1zM7 24h1v1h-1zM8 24h1v1h-1zM10 24h1v1h-1zM12 24h1v1h-1zM13 24h1v1h-1zM15 24h1v1h-1zM19 24h1v1h-1zM20 24h1v1h-1zM21 24h1v1h-1zM22 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM26 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM4 25h1v1h-1zM6 25h1v1h-1zM7 25h1v1h-1zM8 25h1v1h-1zM10 25h1v1h-1zM12 25h1v1h-1zM14 25h1v1h-1zM16 25h1v1h-1zM17 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM22 25h1v1h-1zM24 25h1v1h-1zM25 25h1v1h-1zM26 25h1v1h-1zM27 25h1v1h-1zM28 25h1v1h-1zM4 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM8 26h1v1h-1zM10 26h1v1h-1zM12 26h1v1h-1zM13 26h1v1h-1zM14 26h1v1h-1zM17 26h1v1h-1zM18 26h1v1h-1zM20 26h1v1h-1zM25 26h1v1h-1zM26 26h1v1h-1zM28 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM16 27h1v1h-1zM17 27h1v1h-1zM19 27h1v1h-1zM20 27h1v1h-1zM21 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM25 27h1v1h-1zM28 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM9 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM13 28h1v1h-1zM14 28h1v1h-1zM16 28h1v1h-1zM18 28h1v1h-1zM21 28h1v1h-1zM23 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}},"phone_number":{"summary":"Phone number","value":{"tool":"qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"132\" height=\"132\" viewBox=\"0 0 33 33\" shape-rendering=\"crispEdges\"><rect width=\"33\" height=\"33\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM13 4h1v1h-1zM14 4h1v1h-1zM17 4h1v1h-1zM19 4h1v1h-1zM22 4h1v1h-1zM23 4h1v1h-1zM24 4h1v1h-1zM25 4h1v1h-1zM26 4h1v1h-1zM27 4h1v1h-1zM28 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM15 5h1v1h-1zM17 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM22 5h1v1h-1zM28 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM14 6h1v1h-1zM15 6h1v1h-1zM16 6h1v1h-1zM17 6h1v1h-1zM19 6h1v1h-1zM22 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM26 6h1v1h-1zM28 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM14 7h1v1h-1zM16 7h1v1h-1zM18 7h1v1h-1zM20 7h1v1h-1zM22 7h1v1h-1zM24 7h1v1h-1zM25 7h1v1h-1zM26 7h1v1h-1zM28 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM22 8h1v1h-1zM24 8h1v1h-1zM25 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM16 9h1v1h-1zM19 9h1v1h-1zM20 9h1v1h-1zM22 9h1v1h-1zM28 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM23 10h1v1h-1zM24 10h1v1h-1zM25 10h1v1h-1zM26 10h1v1h-1zM27 10h1v1h-1zM28 10h1v1h-1zM12 11h1v1h-1zM13 11h1v1h-1zM16 11h1v1h-1zM18 11h1v1h-1zM19 11h1v1h-1zM20 11h1v1h-1zM4 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM13 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM22 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM26 12h1v1h-1zM4 13h1v1h-1zM5 13h1v1h-1zM6 13h1v1h-1zM9 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM15 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM18 13h1v1h-1zM21 13h1v1h-1zM26 13h1v1h-1zM4 14h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM10 14h1v1h-1zM12 14h1v1h-1zM15 14h1v1h-1zM17 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM22 14h1v1h-1zM25 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM5 15h1v1h-1zM7 15h1v1h-1zM8 15h1v1h-1zM9 15h1v1h-1zM12 15h1v1h-1zM14 15h1v1h-1zM15 15h1v1h-1zM16 15h1v1h-1zM17 15h1v1h-1zM19 15h1v1h-1zM21 15h1v1h-1zM25 15h1v1h-1zM27 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM12 16h1v1h-1zM15 16h1v1h-1zM16 16h1v1h-1zM18 16h1v1h-1zM20 16h1v1h-1zM22 16h1v1h-1zM23 16h1v1h-1zM24 16h1v1h-1zM26 16h1v1h-1zM27 16h1v1h-1zM28 16h1v1h-1zM4 17h1v1h-1zM8 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM14 17h1v1h-1zM21 17h1v1h-1zM25 17h1v1h-1zM26 17h1v1h-1zM4 18h1v1h-1zM7 18h1v1h-1zM9 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM13 18h1v1h-1zM15 18h1v1h-1zM16 18h1v1h-1zM19 18h1v1h-1zM24 18h1v1h-1zM25 18h1v1h-1zM26 18h1v1h-1zM27 18h1v1h-1zM28 18h1v1h-1zM4 19h1v1h-1zM7 19h1v1h-1zM8 19h1v1h-1zM9 19h1v1h-1zM11 19h1v1h-1zM15 19h1v1h-1zM18 19h1v1h-1zM19 19h1v1h-1zM21 19h1v1h-1zM22 19h1v1h-1zM25 19h1v1h-1zM28 19h1v1h-1zM4 20h1v1h-1zM6 20h1v1h-1zM7 20h1v1h-1zM10 20h1v1h-1zM11 20h1v1h-1zM12 20h1v1h-1zM13 20h1v1h-1zM14 20h1v1h-1zM15 20h1v1h-1zM19 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM22 20h1v1h-1zM23 20h1v1h-1zM24 20h1v1h-1zM25 20h1v1h-1zM26 20h1v1h-1zM27 20h1v1h-1zM28 20h1v1h-1zM12 21h1v1h-1zM14 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM18 21h1v1h-1zM20 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM26 21h1v1h-1zM27 21h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM9 22h1v1h-1zM10 22h1v1h-1zM17 22h1v1h-1zM18 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1zM24 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM4 23h1v1h-1zM10 23h1v1h-1zM12 23h1v1h-1zM14 23h1v1h-1zM16 23h1v1h-1zM17 23h1v1h-1zM19 23h1v1h-1zM20 23h1v1h-1zM24 23h1v1h-1zM25 23h1v1h-1zM27 23h1v1h-1zM28 23h1v1h-1zM4 24h1v1h-1zM6 24h1v1h-1zM7 24h1v1h-1zM8 24h1v1h-1zM10 24h1v1h-1zM12 24h1v1h-1zM13 24h1v1h-1zM14 24h1v1h-1zM16 24h1v1h-1zM18 24h1v1h-1zM19 24h1v1h-1zM20 24h1v1h-1zM21 24h1v1h-1zM22 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM26 24h1v1h-1zM28 24h1v1h-1zM4 25h1v1h-1zM6 25h1v1h-1zM7 25h1v1h-1zM8 25h1v1h-1zM10 25h1v1h-1zM12 25h1v1h-1zM13 25h1v1h-1zM19 25h1v1h-1zM20 25h1v1h-1zM22 25h1v1h-1zM23 25h1v1h-1zM24 25h1v1h-1zM27 25h1v1h-1zM28 25h1v1h-1zM4 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM8 26h1v1h-1zM10 26h1v1h-1zM12 26h1v1h-1zM15 26h1v1h-1zM16 26h1v1h-1zM21 26h1v1h-1zM25 26h1v1h-1zM28 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM13 27h1v1h-1zM15 27h1v1h-1zM18 27h1v1h-1zM20 27h1v1h-1zM21 27h1v1h-1zM22 27h1v1h-1zM25 27h1v1h-1zM28 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM9 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM15 28h1v1h-1zM19 28h1v1h-1zM22 28h1v1h-1zM23 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}},"wi_fi_credentials":{"summary":"Wi-Fi credentials","value":{"tool":"qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"148\" height=\"148\" viewBox=\"0 0 37 37\" shape-rendering=\"crispEdges\"><rect width=\"37\" height=\"37\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM15 4h1v1h-1zM17 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM21 4h1v1h-1zM23 4h1v1h-1zM26 4h1v1h-1zM27 4h1v1h-1zM28 4h1v1h-1zM29 4h1v1h-1zM30 4h1v1h-1zM31 4h1v1h-1zM32 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM14 5h1v1h-1zM17 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM21 5h1v1h-1zM22 5h1v1h-1zM26 5h1v1h-1zM32 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM13 6h1v1h-1zM14 6h1v1h-1zM16 6h1v1h-1zM17 6h1v1h-1zM19 6h1v1h-1zM22 6h1v1h-1zM26 6h1v1h-1zM28 6h1v1h-1zM29 6h1v1h-1zM30 6h1v1h-1zM32 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM15 7h1v1h-1zM18 7h1v1h-1zM19 7h1v1h-1zM21 7h1v1h-1zM24 7h1v1h-1zM26 7h1v1h-1zM28 7h1v1h-1zM29 7h1v1h-1zM30 7h1v1h-1zM32 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM15 8h1v1h-1zM19 8h1v1h-1zM20 8h1v1h-1zM22 8h1v1h-1zM24 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM29 8h1v1h-1zM30 8h1v1h-1zM32 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM14 9h1v1h-1zM15 9h1v1h-1zM21 9h1v1h-1zM24 9h1v1h-1zM26 9h1v1h-1zM32 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM27 10h1v1h-1zM28 10h1v1h-1zM29 10h1v1h-1zM30 10h1v1h-1zM31 10h1v1h-1zM32 10h1v1h-1zM12 11h1v1h-1zM15 11h1v1h-1zM18 11h1v1h-1zM20 11h1v1h-1zM23 11h1v1h-1zM4 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM15 12h1v1h-1zM16 12h1v1h-1zM21 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM26 12h1v1h-1zM27 12h1v1h-1zM28 12h1v1h-1zM29 12h1v1h-1zM30 12h1v1h-1zM6 13h1v1h-1zM7 13h1v1h-1zM8 13h1v1h-1zM11 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM15 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM18 13h1v1h-1zM19 13h1v1h-1zM23 13h1v1h-1zM26 13h1v1h-1zM28 13h1v1h-1zM30 13h1v1h-1zM31 13h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM10 14h1v1h-1zM13 14h1v1h-1zM16 14h1v1h-1zM17 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM24 14h1v1h-1zM25 14h1v1h-1zM26 14h1v1h-1zM27 14h1v1h-1zM29 14h1v1h-1zM4 15h1v1h-1zM6 15h1v1h-1zM8 15h1v1h-1zM9 15h1v1h-1zM11 15h1v1h-1zM16 15h1v1h-1zM17 15h1v1h-1zM23 15h1v1h-1zM25 15h1v1h-1zM26 15h1v1h-1zM28 15h1v1h-1zM31 15h1v1h-1zM32 15h1v1h-1zM7 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM12 16h1v1h-1zM13 16h1v1h-1zM18 16h1v1h-1zM20 16h1v1h-1zM21 16h1v1h-1zM24 16h1v1h-1zM27 16h1v1h-1zM28 16h1v1h-1zM29 16h1v1h-1zM30 16h1v1h-1zM5 17h1v1h-1zM6 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM15 17h1v1h-1zM16 17h1v1h-1zM22 17h1v1h-1zM23 17h1v1h-1zM24 17h1v1h-1zM25 17h1v1h-1zM27 17h1v1h-1zM28 17h1v1h-1zM30 17h1v1h-1zM31 17h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM12 18h1v1h-1zM14 18h1v1h-1zM19 18h1v1h-1zM20 18h1v1h-1zM25 18h1v1h-1zM26 18h1v1h-1zM27 18h1v1h-1zM30 18h1v1h-1zM5 19h1v1h-1zM8 19h1v1h-1zM14 19h1v1h-1zM18 19h1v1h-1zM24 19h1v1h-1zM29 19h1v1h-1zM4 20h1v1h-1zM6 20h1v1h-1zM8 20h1v1h-1zM10 20h1v1h-1zM12 20h1v1h-1zM13 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM23 20h1v1h-1zM27 20h1v1h-1zM29 20h1v1h-1zM31 20h1v1h-1zM32 20h1v1h-1zM4 21h1v1h-1zM6 21h1v1h-1zM8 21h1v1h-1zM11 21h1v1h-1zM15 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM18 21h1v1h-1zM23 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM28 21h1v1h-1zM29 21h1v1h-1zM31 21h1v1h-1zM4 22h1v1h-1zM6 22h1v1h-1zM10 22h1v1h-1zM11 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM17 22h1v1h-1zM18 22h1v1h-1zM19 22h1v1h-1zM21 22h1v1h-1zM22 22h1v1h-1zM24 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM4 23h1v1h-1zM6 23h1v1h-1zM9 23h1v1h-1zM12 23h1v1h-1zM14 23h1v1h-1zM17 23h1v1h-1zM19 23h1v1h-1zM20 23h1v1h-1zM23 23h1v1h-1zM24 23h1v1h-1zM26 23h1v1h-1zM28 23h1v1h-1zM32 23h1v1h-1zM4 24h1v1h-1zM7 24h1v1h-1zM10 24h1v1h-1zM12 24h1v1h-1zM15 24h1v1h-1zM18 24h1v1h-1zM19 24h1v1h-1zM20 24h1v1h-1zM21 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM25 24h1v1h-1zM26 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM29 24h1v1h-1zM30 24h1v1h-1zM12 25h1v1h-1zM24 25h1v1h-1zM28 25h1v1h-1zM30 25h1v1h-1zM4 26h1v1h-1zM5 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM8 26h1v1h-1zM9 26h1v1h-1zM10 26h1v1h-1zM14 26h1v1h-1zM15 26h1v1h-1zM19 26h1v1h-1zM20 26h1v1h-1zM23 26h1v1h-1zM24 26h1v1h-1zM26 26h1v1h-1zM28 26h1v1h-1zM30 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM12 27h1v1h-1zM18 27h1v1h-1zM22 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM28 27h1v1h-1zM29 27h1v1h-1zM31 27h1v1h-1zM32 27h1v1h-1zM4 28h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM13 28h1v1h-1zM14 28h1v1h-1zM19 28h1v1h-1zM20 28h1v1h-1zM21 28h1v1h-1zM22 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1zM29 28h1v1h-1zM31 28h1v1h-1zM4 29h1v1h-1zM6 29h1v1h-1zM7 29h1v1h-1zM8 29h1v1h-1zM10 29h1v1h-1zM12 29h1v1h-1zM15 29h1v1h-1zM16 29h1v1h-1zM17 29h1v1h-1zM18 29h1v1h-1zM23 29h1v1h-1zM24 29h1v1h-1zM28 29h1v1h-1zM29 29h1v1h-1zM31 29h1v1h-1zM32 29h1v1h-1zM4 30h1v1h-1zM6 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM10 30h1v1h-1zM12 30h1v1h-1zM14 30h1v1h-1zM15 30h1v1h-1zM16 30h1v1h-1zM17 30h1v1h-1zM18 30h1v1h-1zM19 30h1v1h-1zM22 30h1v1h-1zM23 30h1v1h-1zM24 30h1v1h-1zM27 30h1v1h-1zM28 30h1v1h-1zM29 30h1v1h-1zM30 30h1v1h-1zM31 30h1v1h-1zM4 31h1v1h-1zM10 31h1v1h-1zM16 31h1v1h-1zM17 31h1v1h-1zM18 31h1v1h-1zM24 31h1v1h-1zM28 31h1v1h-1zM29 31h1v1h-1zM31 31h1v1h-1zM4 32h1v1h-1zM5 32h1v1h-1zM6 32h1v1h-1zM7 32h1v1h-1zM8 32h1v1h-1zM9 32h1v1h-1zM10 32h1v1h-1zM12 32h1v1h-1zM16 32h1v1h-1zM18 32h1v1h-1zM19 32h1v1h-1zM20 32h1v1h-1zM21 32h1v1h-1zM22 32h1v1h-1zM23 32h1v1h-1zM25 32h1v1h-1zM28 32h1v1h-1zM29 32h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}},"pre_filled_email_high_error_correction":{"summary":"Pre-filled email, high error correction","value":{"tool":"qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"270\" height=\"270\" viewBox=\"0 0 45 45\" shape-rendering=\"crispEdges\"><rect width=\"45\" height=\"45\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM13 4h1v1h-1zM16 4h1v1h-1zM17 4h1v1h-1zM18 4h1v1h-1zM21 4h1v1h-1zM26 4h1v1h-1zM28 4h1v1h-1zM30 4h1v1h-1zM34 4h1v1h-1zM35 4h1v1h-1zM36 4h1v1h-1zM37 4h1v1h-1zM38 4h1v1h-1zM39 4h1v1h-1zM40 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM14 5h1v1h-1zM16 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM25 5h1v1h-1zM30 5h1v1h-1zM34 5h1v1h-1zM40 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM13 6h1v1h-1zM16 6h1v1h-1zM17 6h1v1h-1zM20 6h1v1h-1zM21 6h1v1h-1zM25 6h1v1h-1zM27 6h1v1h-1zM29 6h1v1h-1zM31 6h1v1h-1zM32 6h1v1h-1zM34 6h1v1h-1zM36 6h1v1h-1zM37 6h1v1h-1zM38 6h1v1h-1zM40 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM17 7h1v1h-1zM19 7h1v1h-1zM20 7h1v1h-1zM25 7h1v1h-1zM27 7h1v1h-1zM29 7h1v1h-1zM32 7h1v1h-1zM34 7h1v1h-1zM36 7h1v1h-1zM37 7h1v1h-1zM38 7h1v1h-1zM40 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM13 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM25 8h1v1h-1zM28 8h1v1h-1zM30 8h1v1h-1zM32 8h1v1h-1zM34 8h1v1h-1zM36 8h1v1h-1zM37 8h1v1h-1zM38 8h1v1h-1zM40 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM13 9h1v1h-1zM14 9h1v1h-1zM17 9h1v1h-1zM18 9h1v1h-1zM19 9h1v1h-1zM23 9h1v1h-1zM27 9h1v1h-1zM28 9h1v1h-1zM32 9h1v1h-1zM34 9h1v1h-1zM40 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM28 10h1v1h-1zM30 10h1v1h-1zM32 10h1v1h-1zM34 10h1v1h-1zM35 10h1v1h-1zM36 10h1v1h-1zM37 10h1v1h-1zM38 10h1v1h-1zM39 10h1v1h-1zM40 10h1v1h-1zM14 11h1v1h-1zM16 11h1v1h-1zM17 11h1v1h-1zM18 11h1v1h-1zM20 11h1v1h-1zM23 11h1v1h-1zM24 11h1v1h-1zM25 11h1v1h-1zM27 11h1v1h-1zM29 11h1v1h-1zM31 11h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM10 12h1v1h-1zM11 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM27 12h1v1h-1zM28 12h1v1h-1zM29 12h1v1h-1zM32 12h1v1h-1zM37 12h1v1h-1zM38 12h1v1h-1zM5 13h1v1h-1zM6 13h1v1h-1zM12 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM17 13h1v1h-1zM18 13h1v1h-1zM19 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM23 13h1v1h-1zM25 13h1v1h-1zM27 13h1v1h-1zM29 13h1v1h-1zM33 13h1v1h-1zM34 13h1v1h-1zM36 13h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM10 14h1v1h-1zM12 14h1v1h-1zM15 14h1v1h-1zM16 14h1v1h-1zM17 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM23 14h1v1h-1zM26 14h1v1h-1zM27 14h1v1h-1zM30 14h1v1h-1zM35 14h1v1h-1zM36 14h1v1h-1zM37 14h1v1h-1zM40 14h1v1h-1zM6 15h1v1h-1zM8 15h1v1h-1zM9 15h1v1h-1zM12 15h1v1h-1zM14 15h1v1h-1zM16 15h1v1h-1zM17 15h1v1h-1zM19 15h1v1h-1zM20 15h1v1h-1zM23 15h1v1h-1zM24 15h1v1h-1zM26 15h1v1h-1zM31 15h1v1h-1zM33 15h1v1h-1zM34 15h1v1h-1zM37 15h1v1h-1zM38 15h1v1h-1zM4 16h1v1h-1zM8 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM12 16h1v1h-1zM14 16h1v1h-1zM15 16h1v1h-1zM17 16h1v1h-1zM19 16h1v1h-1zM21 16h1v1h-1zM22 16h1v1h-1zM25 16h1v1h-1zM26 16h1v1h-1zM32 16h1v1h-1zM34 16h1v1h-1zM37 16h1v1h-1zM39 16h1v1h-1zM40 16h1v1h-1zM4 17h1v1h-1zM5 17h1v1h-1zM6 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM13 17h1v1h-1zM15 17h1v1h-1zM17 17h1v1h-1zM19 17h1v1h-1zM20 17h1v1h-1zM22 17h1v1h-1zM23 17h1v1h-1zM27 17h1v1h-1zM28 17h1v1h-1zM30 17h1v1h-1zM31 17h1v1h-1zM32 17h1v1h-1zM33 17h1v1h-1zM36 17h1v1h-1zM37 17h1v1h-1zM38 17h1v1h-1zM4 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM17 18h1v1h-1zM18 18h1v1h-1zM20 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM25 18h1v1h-1zM26 18h1v1h-1zM27 18h1v1h-1zM29 18h1v1h-1zM30 18h1v1h-1zM31 18h1v1h-1zM32 18h1v1h-1zM36 18h1v1h-1zM38 18h1v1h-1zM39 18h1v1h-1zM40 18h1v1h-1zM7 19h1v1h-1zM9 19h1v1h-1zM11 19h1v1h-1zM12 19h1v1h-1zM13 19h1v1h-1zM15 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM24 19h1v1h-1zM27 19h1v1h-1zM28 19h1v1h-1zM30 19h1v1h-1zM31 19h1v1h-1zM32 19h1v1h-1zM34 19h1v1h-1zM35 19h1v1h-1zM37 19h1v1h-1zM38 19h1v1h-1zM40 19h1v1h-1zM4 20h1v1h-1zM8 20h1v1h-1zM10 20h1v1h-1zM13 20h1v1h-1zM14 20h1v1h-1zM15 20h1v1h-1zM16 20h1v1h-1zM17 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM23 20h1v1h-1zM25 20h1v1h-1zM26 20h1v1h-1zM28 20h1v1h-1zM29 20h1v1h-1zM31 20h1v1h-1zM32 20h1v1h-1zM34 20h1v1h-1zM35 20h1v1h-1zM37 20h1v1h-1zM38 20h1v1h-1zM5 21h1v1h-1zM7 21h1v1h-1zM8 21h1v1h-1zM12 21h1v1h-1zM13 21h1v1h-1zM14 21h1v1h-1zM15 21h1v1h-1zM16 21h1v1h-1zM20 21h1v1h-1zM21 21h1v1h-1zM26 21h1v1h-1zM27 21h1v1h-1zM28 21h1v1h-1zM31 21h1v1h-1zM33 21h1v1h-1zM35 21h1v1h-1zM37 21h1v1h-1zM39 21h1v1h-1zM7 22h1v1h-1zM9 22h1v1h-1zM10 22h1v1h-1zM11 22h1v1h-1zM12 22h1v1h-1zM16 22h1v1h-1zM18 22h1v1h-1zM19 22h1v1h-1zM20 22h1v1h-1zM21 22h1v1h-1zM23 22h1v1h-1zM24 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM29 22h1v1h-1zM31 22h1v1h-1zM33 22h1v1h-1zM34 22h1v1h-1zM36 22h1v1h-1zM40 22h1v1h-1zM5 23h1v1h-1zM13 23h1v1h-1zM15 23h1v1h-1zM16 23h1v1h-1zM18 23h1v1h-1zM21 23h1v1h-1zM22 23h1v1h-1zM23 23h1v1h-1zM24 23h1v1h-1zM25 23h1v1h-1zM26 23h1v1h-1zM28 23h1v1h-1zM29 23h1v1h-1zM32 23h1v1h-1zM33 23h1v1h-1zM36 23h1v1h-1zM37 23h1v1h-1zM39 23h1v1h-1zM6 24h1v1h-1zM10 24h1v1h-1zM11 24h1v1h-1zM13 24h1v1h-1zM14 24h1v1h-1zM16 24h1v1h-1zM17 24h1v1h-1zM18 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM25 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM30 24h1v1h-1zM33 24h1v1h-1zM34 24h1v1h-1zM35 24h1v1h-1zM36 24h1v1h-1zM37 24h1v1h-1zM38 24h1v1h-1zM40 24h1v1h-1zM6 25h1v1h-1zM8 25h1v1h-1zM9 25h1v1h-1zM12 25h1v1h-1zM13 25h1v1h-1zM16 25h1v1h-1zM18 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM22 25h1v1h-1zM29 25h1v1h-1zM30 25h1v1h-1zM31 25h1v1h-1zM32 25h1v1h-1zM33 25h1v1h-1zM35 25h1v1h-1zM36 25h1v1h-1zM37 25h1v1h-1zM40 25h1v1h-1zM8 26h1v1h-1zM10 26h1v1h-1zM11 26h1v1h-1zM12 26h1v1h-1zM13 26h1v1h-1zM14 26h1v1h-1zM16 26h1v1h-1zM17 26h1v1h-1zM18 26h1v1h-1zM19 26h1v1h-1zM20 26h1v1h-1zM22 26h1v1h-1zM23 26h1v1h-1zM25 26h1v1h-1zM27 26h1v1h-1zM28 26h1v1h-1zM29 26h1v1h-1zM31 26h1v1h-1zM32 26h1v1h-1zM35 26h1v1h-1zM36 26h1v1h-1zM38 26h1v1h-1zM40 26h1v1h-1zM4 27h1v1h-1zM7 27h1v1h-1zM9 27h1v1h-1zM12 27h1v1h-1zM14 27h1v1h-1zM18 27h1v1h-1zM19 27h1v1h-1zM21 27h1v1h-1zM25 27h1v1h-1zM26 27h1v1h-1zM28 27h1v1h-1zM29 27h1v1h-1zM31 27h1v1h-1zM33 27h1v1h-1zM36 27h1v1h-1zM37 27h1v1h-1zM38 27h1v1h-1zM40 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM6 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM14 28h1v1h-1zM16 28h1v1h-1zM22 28h1v1h-1zM23 28h1v1h-1zM26 28h1v1h-1zM28 28h1v1h-1zM29 28h1v1h-1zM35 28h1v1h-1zM36 28h1v1h-1zM37 28h1v1h-1zM4 29h1v1h-1zM6 29h1v1h-1zM11 29h1v1h-1zM13 29h1v1h-1zM15 29h1v1h-1zM19 29h1v1h-1zM21 29h1v1h-1zM25 29h1v1h-1zM29 29h1v1h-1zM30 29h1v1h-1zM34 29h1v1h-1zM38 29h1v1h-1zM4 30h1v1h-1zM5 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM9 30h1v1h-1zM10 30h1v1h-1zM13 30h1v1h-1zM15 30h1v1h-1zM18 30h1v1h-1zM19 30h1v1h-1zM25 30h1v1h-1zM26 30h1v1h-1zM27 30h1v1h-1zM28 30h1v1h-1zM29 30h1v1h-1zM30 30h1v1h-1zM31 30h1v1h-1zM33 30h1v1h-1zM34 30h1v1h-1zM35 30h1v1h-1zM36 30h1v1h-1zM38 30h1v1h-1zM39 30h1v1h-1zM40 30h1v1h-1zM4 31h1v1h-1zM9 31h1v1h-1zM12 31h1v1h-1zM13 31h1v1h-1zM16 31h1v1h-1zM17 31h1v1h-1zM18 31h1v1h-1zM19 31h1v1h-1zM20 31h1v1h-1zM23 31h1v1h-1zM27 31h1v1h-1zM32 31h1v1h-1zM34 31h1v1h-1zM35 31h1v1h-1zM38 31h1v1h-1zM4 32h1v1h-1zM6 32h1v1h-1zM9 32h1v1h-1zM10 32h1v1h-1zM12 32h1v1h-1zM13 32h1v1h-1zM17 32h1v1h-1zM18 32h1v1h-1zM21 32h1v1h-1zM22 32h1v1h-1zM24 32h1v1h-1zM25 32h1v1h-1zM29 32h1v1h-1zM31 32h1v1h-1zM32 32h1v1h-1zM33 32h1v1h-1zM34 32h1v1h-1zM35 32h1v1h-1zM36 32h1v1h-1zM37 32h1v1h-1zM12 33h1v1h-1zM13 33h1v1h-1zM15 33h1v1h-1zM16 33h1v1h-1zM19 33h1v1h-1zM20 33h1v1h-1zM28 33h1v1h-1zM32 33h1v1h-1zM36 33h1v1h-1zM38 33h1v1h-1zM39 33h1v1h-1zM4 34h1v1h-1zM5 34h1v1h-1zM6 34h1v1h-1zM7 34h1v1h-1zM8 34h1v1h-1zM9 34h1v1h-1zM10 34h1v1h-1zM12 34h1v1h-1zM14 34h1v1h-1zM18 34h1v1h-1zM19 34h1v1h-1zM22 34h1v1h-1zM24 34h1v1h-1zM26 34h1v1h-1zM27 34h1v1h-1zM28 34h1v1h-1zM29 34h1v1h-1zM32 34h1v1h-1zM34 34h1v1h-1zM36 34h1v1h-1zM38 34h1v1h-1zM40 34h1v1h-1zM4 35h1v1h-1zM10 35h1v1h-1zM13 35h1v1h-1zM14 35h1v1h-1zM16 35h1v1h-1zM20 35h1v1h-1zM22 35h1v1h-1zM24 35h1v1h-1zM26 35h1v1h-1zM29 35h1v1h-1zM31 35h1v1h-1zM32 35h1v1h-1zM36 35h1v1h-1zM37 35h1v1h-1zM40 35h1v1h-1zM4 36h1v1h-1zM6 36h1v1h-1zM7 36h1v1h-1zM8 36h1v1h-1zM10 36h1v1h-1zM12 36h1v1h-1zM13 36h1v1h-1zM18 36h1v1h-1zM19 36h1v1h-1zM20 36h1v1h-1zM22 36h1v1h-1zM26 36h1v1h-1zM31 36h1v1h-1zM32 36h1v1h-1zM33 36h1v1h-1zM34 36h1v1h-1zM35 36h1v1h-1zM36 36h1v1h-1zM37 36h1v1h-1zM39 36h1v1h-1zM4 37h1v1h-1zM6 37h1v1h-1zM7 37h1v1h-1zM8 37h1v1h-1zM10 37h1v1h-1zM12 37h1v1h-1zM13 37h1v1h-1zM15 37h1v1h-1zM16 37h1v1h-1zM18 37h1v1h-1zM22 37h1v1h-1zM25 37h1v1h-1zM26 37h1v1h-1zM28 37h1v1h-1zM30 37h1v1h-1zM31 37h1v1h-1zM32 37h1v1h-1zM33 37h1v1h-1zM34 37h1v1h-1zM35 37h1v1h-1zM38 37h1v1h-1zM4 38h1v1h-1zM6 38h1v1h-1zM7 38h1v1h-1zM8 38h1v1h-1zM10 38h1v1h-1zM13 38h1v1h-1zM17 38h1v1h-1zM18 38h1v1h-1zM23 38h1v1h-1zM24 38h1v1h-1zM26 38h1v1h-1zM27 38h1v1h-1zM29 38h1v1h-1zM30 38h1v1h-1zM33 38h1v1h-1zM36 38h1v1h-1zM37 38h1v1h-1zM39 38h1v1h-1zM40 38h1v1h-1zM4 39h1v1h-1zM10 39h1v1h-1zM13 39h1v1h-1zM14 39h1v1h-1zM15 39h1v1h-1zM17 39h1v1h-1zM19 39h1v1h-1zM20 39h1v1h-1zM21 39h1v1h-1zM22 39h1v1h-1zM25 39h1v1h-1zM27 39h1v1h-1zM28 39h1v1h-1zM30 39h1v1h-1zM33 39h1v1h-1zM34 39h1v1h-1zM35 39h1v1h-1zM37 39h1v1h-1zM38 39h1v1h-1zM39 39h1v1h-1zM40 39h1v1h-1zM4 40h1v1h-1zM5 40h1v1h-1zM6 40h1v1h-1zM7 40h1v1h-1zM8 40h1v1h-1zM9 40h1v1h-1zM10 40h1v1h-1zM17 40h1v1h-1zM18 40h1v1h-1zM20 40h1v1h-1zM23 40h1v1h-1zM25 40h1v1h-1zM27 40h1v1h-1zM32 40h1v1h-1zM34 40h1v1h-1zM37 40h1v1h-1zM40 40h1v1h-1z\" fill=\"#000000\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/batch-qr-code-generator":{"post":{"operationId":"run_batch_qr_code_generator","summary":"Batch QR Code Generator","tags":["Generators"],"description":"Generate a QR code for every line of a list — URLs, serial numbers, contact details, anything — tiled into one combined, scalable SVG you can copy or download in a single file. Runs entirely in your browser.\n\n[Try Batch QR Code Generator in your browser →](https://iotools.cloud/tool/batch-qr-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"lines":{"type":"string","description":"Text values (one per line)"},"ecLevel":{"enum":["L","M","Q","H"],"description":"Error correction"},"columns":{"type":"number","description":"Codes per row","minimum":1,"maximum":10},"showLabels":{"type":"boolean","description":"Show text below each code"},"margin":{"type":"number","description":"Space around","minimum":0,"maximum":20},"dotSize":{"type":"number","description":"Dot size","minimum":1,"maximum":20},"background":{"type":"string","description":"Background"},"color":{"type":"string","description":"QR colour"}},"required":[]},"examples":{"three_urls":{"summary":"Three URLs","value":{"lines":"https://iotools.cloud/\nhttps://iotools.cloud/tools/generators/\nhttps://iotools.cloud/tool/qr-code-generator/","ecLevel":"M","columns":"3","showLabels":"true","margin":"4","dotSize":"4","background":"#ffffff","color":"#000000"}},"serial_numbers_no_labels":{"summary":"Serial numbers, no labels","value":{"lines":"SKU-00042\nSKU-00043\nSKU-00044\nSKU-00045","ecLevel":"Q","columns":"2","showLabels":"","margin":"2","dotSize":"6","background":"#ffffff","color":"#000000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"three_urls":{"summary":"Three URLs","value":{"tool":"batch-qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"516\" height=\"182\" viewBox=\"0 0 516 182\" shape-rendering=\"crispEdges\"><rect width=\"516\" height=\"182\" fill=\"#ffffff\"/><g transform=\"translate(0 0)\"><g transform=\"translate(16 16) scale(4)\"><rect width=\"33\" height=\"33\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM15 4h1v1h-1zM16 4h1v1h-1zM17 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM23 4h1v1h-1zM24 4h1v1h-1zM25 4h1v1h-1zM26 4h1v1h-1zM27 4h1v1h-1zM28 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM14 5h1v1h-1zM15 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM28 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM13 6h1v1h-1zM14 6h1v1h-1zM15 6h1v1h-1zM22 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM26 6h1v1h-1zM28 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM14 7h1v1h-1zM16 7h1v1h-1zM17 7h1v1h-1zM18 7h1v1h-1zM19 7h1v1h-1zM22 7h1v1h-1zM24 7h1v1h-1zM25 7h1v1h-1zM26 7h1v1h-1zM28 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM13 8h1v1h-1zM15 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM20 8h1v1h-1zM22 8h1v1h-1zM24 8h1v1h-1zM25 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM16 9h1v1h-1zM17 9h1v1h-1zM18 9h1v1h-1zM19 9h1v1h-1zM22 9h1v1h-1zM28 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM23 10h1v1h-1zM24 10h1v1h-1zM25 10h1v1h-1zM26 10h1v1h-1zM27 10h1v1h-1zM28 10h1v1h-1zM12 11h1v1h-1zM16 11h1v1h-1zM18 11h1v1h-1zM20 11h1v1h-1zM4 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM14 12h1v1h-1zM15 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM22 12h1v1h-1zM23 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM26 12h1v1h-1zM5 13h1v1h-1zM8 13h1v1h-1zM9 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM16 13h1v1h-1zM18 13h1v1h-1zM23 13h1v1h-1zM27 13h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM10 14h1v1h-1zM14 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM23 14h1v1h-1zM25 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM5 15h1v1h-1zM6 15h1v1h-1zM8 15h1v1h-1zM14 15h1v1h-1zM16 15h1v1h-1zM18 15h1v1h-1zM21 15h1v1h-1zM24 15h1v1h-1zM28 15h1v1h-1zM4 16h1v1h-1zM7 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM12 16h1v1h-1zM17 16h1v1h-1zM18 16h1v1h-1zM19 16h1v1h-1zM20 16h1v1h-1zM21 16h1v1h-1zM22 16h1v1h-1zM24 16h1v1h-1zM26 16h1v1h-1zM27 16h1v1h-1zM28 16h1v1h-1zM4 17h1v1h-1zM5 17h1v1h-1zM8 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM16 17h1v1h-1zM20 17h1v1h-1zM21 17h1v1h-1zM23 17h1v1h-1zM25 17h1v1h-1zM27 17h1v1h-1zM4 18h1v1h-1zM6 18h1v1h-1zM7 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM13 18h1v1h-1zM14 18h1v1h-1zM18 18h1v1h-1zM19 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM23 18h1v1h-1zM24 18h1v1h-1zM25 18h1v1h-1zM27 18h1v1h-1zM28 18h1v1h-1zM4 19h1v1h-1zM7 19h1v1h-1zM13 19h1v1h-1zM16 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM22 19h1v1h-1zM23 19h1v1h-1zM24 19h1v1h-1zM28 19h1v1h-1zM4 20h1v1h-1zM6 20h1v1h-1zM7 20h1v1h-1zM9 20h1v1h-1zM10 20h1v1h-1zM12 20h1v1h-1zM16 20h1v1h-1zM17 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM22 20h1v1h-1zM23 20h1v1h-1zM24 20h1v1h-1zM26 20h1v1h-1zM12 21h1v1h-1zM17 21h1v1h-1zM19 21h1v1h-1zM20 21h1v1h-1zM24 21h1v1h-1zM25 21h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM9 22h1v1h-1zM10 22h1v1h-1zM13 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM16 22h1v1h-1zM17 22h1v1h-1zM18 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1zM24 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM28 22h1v1h-1zM4 23h1v1h-1zM10 23h1v1h-1zM12 23h1v1h-1zM14 23h1v1h-1zM15 23h1v1h-1zM18 23h1v1h-1zM20 23h1v1h-1zM24 23h1v1h-1zM25 23h1v1h-1zM4 24h1v1h-1zM6 24h1v1h-1zM7 24h1v1h-1zM8 24h1v1h-1zM10 24h1v1h-1zM12 24h1v1h-1zM13 24h1v1h-1zM15 24h1v1h-1zM19 24h1v1h-1zM20 24h1v1h-1zM21 24h1v1h-1zM22 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM26 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM4 25h1v1h-1zM6 25h1v1h-1zM7 25h1v1h-1zM8 25h1v1h-1zM10 25h1v1h-1zM12 25h1v1h-1zM14 25h1v1h-1zM16 25h1v1h-1zM17 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM22 25h1v1h-1zM24 25h1v1h-1zM25 25h1v1h-1zM26 25h1v1h-1zM27 25h1v1h-1zM28 25h1v1h-1zM4 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM8 26h1v1h-1zM10 26h1v1h-1zM12 26h1v1h-1zM13 26h1v1h-1zM14 26h1v1h-1zM17 26h1v1h-1zM18 26h1v1h-1zM20 26h1v1h-1zM25 26h1v1h-1zM26 26h1v1h-1zM28 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM16 27h1v1h-1zM17 27h1v1h-1zM19 27h1v1h-1zM20 27h1v1h-1zM21 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM25 27h1v1h-1zM28 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM9 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM13 28h1v1h-1zM14 28h1v1h-1zM16 28h1v1h-1zM18 28h1v1h-1zM21 28h1v1h-1zM23 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1z\" fill=\"#000000\"/></g><text x=\"82\" y=\"178\" font-size=\"12\" font-family=\"sans-serif\" text-anchor=\"middle\" fill=\"#111111\">https://iotools.cloud/</text></g><g transform=\"translate(176 0)\"><g transform=\"translate(8 8) scale(4)\"><rect width=\"37\" height=\"37\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM13 4h1v1h-1zM15 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM20 4h1v1h-1zM23 4h1v1h-1zM24 4h1v1h-1zM26 4h1v1h-1zM27 4h1v1h-1zM28 4h1v1h-1zM29 4h1v1h-1zM30 4h1v1h-1zM31 4h1v1h-1zM32 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM14 5h1v1h-1zM15 5h1v1h-1zM16 5h1v1h-1zM17 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM24 5h1v1h-1zM26 5h1v1h-1zM32 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM13 6h1v1h-1zM15 6h1v1h-1zM20 6h1v1h-1zM22 6h1v1h-1zM23 6h1v1h-1zM24 6h1v1h-1zM26 6h1v1h-1zM28 6h1v1h-1zM29 6h1v1h-1zM30 6h1v1h-1zM32 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM14 7h1v1h-1zM15 7h1v1h-1zM17 7h1v1h-1zM18 7h1v1h-1zM21 7h1v1h-1zM23 7h1v1h-1zM26 7h1v1h-1zM28 7h1v1h-1zM29 7h1v1h-1zM30 7h1v1h-1zM32 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM13 8h1v1h-1zM15 8h1v1h-1zM18 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM23 8h1v1h-1zM26 8h1v1h-1zM28 8h1v1h-1zM29 8h1v1h-1zM30 8h1v1h-1zM32 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM14 9h1v1h-1zM16 9h1v1h-1zM17 9h1v1h-1zM19 9h1v1h-1zM21 9h1v1h-1zM26 9h1v1h-1zM32 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM27 10h1v1h-1zM28 10h1v1h-1zM29 10h1v1h-1zM30 10h1v1h-1zM31 10h1v1h-1zM32 10h1v1h-1zM12 11h1v1h-1zM14 11h1v1h-1zM16 11h1v1h-1zM18 11h1v1h-1zM19 11h1v1h-1zM20 11h1v1h-1zM24 11h1v1h-1zM4 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM13 12h1v1h-1zM17 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM21 12h1v1h-1zM26 12h1v1h-1zM27 12h1v1h-1zM28 12h1v1h-1zM29 12h1v1h-1zM30 12h1v1h-1zM5 13h1v1h-1zM6 13h1v1h-1zM7 13h1v1h-1zM8 13h1v1h-1zM11 13h1v1h-1zM13 13h1v1h-1zM17 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM22 13h1v1h-1zM23 13h1v1h-1zM24 13h1v1h-1zM25 13h1v1h-1zM26 13h1v1h-1zM27 13h1v1h-1zM28 13h1v1h-1zM32 13h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM9 14h1v1h-1zM10 14h1v1h-1zM11 14h1v1h-1zM12 14h1v1h-1zM14 14h1v1h-1zM17 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM24 14h1v1h-1zM26 14h1v1h-1zM27 14h1v1h-1zM4 15h1v1h-1zM6 15h1v1h-1zM9 15h1v1h-1zM13 15h1v1h-1zM18 15h1v1h-1zM19 15h1v1h-1zM24 15h1v1h-1zM26 15h1v1h-1zM27 15h1v1h-1zM29 15h1v1h-1zM31 15h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM7 16h1v1h-1zM8 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM12 16h1v1h-1zM13 16h1v1h-1zM14 16h1v1h-1zM16 16h1v1h-1zM19 16h1v1h-1zM21 16h1v1h-1zM24 16h1v1h-1zM29 16h1v1h-1zM30 16h1v1h-1zM5 17h1v1h-1zM7 17h1v1h-1zM8 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM14 17h1v1h-1zM17 17h1v1h-1zM20 17h1v1h-1zM21 17h1v1h-1zM22 17h1v1h-1zM23 17h1v1h-1zM24 17h1v1h-1zM25 17h1v1h-1zM26 17h1v1h-1zM27 17h1v1h-1zM28 17h1v1h-1zM32 17h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM9 18h1v1h-1zM10 18h1v1h-1zM14 18h1v1h-1zM16 18h1v1h-1zM17 18h1v1h-1zM18 18h1v1h-1zM19 18h1v1h-1zM24 18h1v1h-1zM26 18h1v1h-1zM28 18h1v1h-1zM29 18h1v1h-1zM30 18h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM8 19h1v1h-1zM12 19h1v1h-1zM14 19h1v1h-1zM15 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM22 19h1v1h-1zM23 19h1v1h-1zM24 19h1v1h-1zM25 19h1v1h-1zM27 19h1v1h-1zM28 19h1v1h-1zM31 19h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM7 20h1v1h-1zM8 20h1v1h-1zM9 20h1v1h-1zM10 20h1v1h-1zM12 20h1v1h-1zM15 20h1v1h-1zM18 20h1v1h-1zM19 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM23 20h1v1h-1zM27 20h1v1h-1zM29 20h1v1h-1zM30 20h1v1h-1zM4 21h1v1h-1zM5 21h1v1h-1zM6 21h1v1h-1zM8 21h1v1h-1zM9 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM14 21h1v1h-1zM20 21h1v1h-1zM23 21h1v1h-1zM24 21h1v1h-1zM26 21h1v1h-1zM27 21h1v1h-1zM28 21h1v1h-1zM30 21h1v1h-1zM32 21h1v1h-1zM4 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM9 22h1v1h-1zM10 22h1v1h-1zM11 22h1v1h-1zM16 22h1v1h-1zM19 22h1v1h-1zM20 22h1v1h-1zM21 22h1v1h-1zM22 22h1v1h-1zM25 22h1v1h-1zM27 22h1v1h-1zM30 22h1v1h-1zM4 23h1v1h-1zM6 23h1v1h-1zM7 23h1v1h-1zM9 23h1v1h-1zM15 23h1v1h-1zM16 23h1v1h-1zM18 23h1v1h-1zM19 23h1v1h-1zM20 23h1v1h-1zM24 23h1v1h-1zM26 23h1v1h-1zM27 23h1v1h-1zM31 23h1v1h-1zM4 24h1v1h-1zM7 24h1v1h-1zM10 24h1v1h-1zM11 24h1v1h-1zM19 24h1v1h-1zM21 24h1v1h-1zM22 24h1v1h-1zM23 24h1v1h-1zM24 24h1v1h-1zM25 24h1v1h-1zM26 24h1v1h-1zM27 24h1v1h-1zM28 24h1v1h-1zM30 24h1v1h-1zM31 24h1v1h-1zM32 24h1v1h-1zM12 25h1v1h-1zM13 25h1v1h-1zM14 25h1v1h-1zM15 25h1v1h-1zM16 25h1v1h-1zM17 25h1v1h-1zM18 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM22 25h1v1h-1zM24 25h1v1h-1zM28 25h1v1h-1zM29 25h1v1h-1zM30 25h1v1h-1zM31 25h1v1h-1zM32 25h1v1h-1zM4 26h1v1h-1zM5 26h1v1h-1zM6 26h1v1h-1zM7 26h1v1h-1zM8 26h1v1h-1zM9 26h1v1h-1zM10 26h1v1h-1zM13 26h1v1h-1zM15 26h1v1h-1zM17 26h1v1h-1zM18 26h1v1h-1zM19 26h1v1h-1zM21 26h1v1h-1zM23 26h1v1h-1zM24 26h1v1h-1zM26 26h1v1h-1zM28 26h1v1h-1zM29 26h1v1h-1zM30 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM12 27h1v1h-1zM13 27h1v1h-1zM14 27h1v1h-1zM15 27h1v1h-1zM17 27h1v1h-1zM20 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM28 27h1v1h-1zM32 27h1v1h-1zM4 28h1v1h-1zM6 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM10 28h1v1h-1zM12 28h1v1h-1zM13 28h1v1h-1zM14 28h1v1h-1zM15 28h1v1h-1zM16 28h1v1h-1zM18 28h1v1h-1zM21 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM27 28h1v1h-1zM28 28h1v1h-1zM30 28h1v1h-1zM4 29h1v1h-1zM6 29h1v1h-1zM7 29h1v1h-1zM8 29h1v1h-1zM10 29h1v1h-1zM12 29h1v1h-1zM14 29h1v1h-1zM17 29h1v1h-1zM20 29h1v1h-1zM22 29h1v1h-1zM23 29h1v1h-1zM24 29h1v1h-1zM25 29h1v1h-1zM29 29h1v1h-1zM30 29h1v1h-1zM31 29h1v1h-1zM32 29h1v1h-1zM4 30h1v1h-1zM6 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM10 30h1v1h-1zM12 30h1v1h-1zM13 30h1v1h-1zM15 30h1v1h-1zM17 30h1v1h-1zM18 30h1v1h-1zM19 30h1v1h-1zM20 30h1v1h-1zM21 30h1v1h-1zM25 30h1v1h-1zM26 30h1v1h-1zM27 30h1v1h-1zM28 30h1v1h-1zM29 30h1v1h-1zM30 30h1v1h-1zM31 30h1v1h-1zM4 31h1v1h-1zM10 31h1v1h-1zM13 31h1v1h-1zM14 31h1v1h-1zM18 31h1v1h-1zM19 31h1v1h-1zM20 31h1v1h-1zM24 31h1v1h-1zM26 31h1v1h-1zM27 31h1v1h-1zM28 31h1v1h-1zM29 31h1v1h-1zM31 31h1v1h-1zM4 32h1v1h-1zM5 32h1v1h-1zM6 32h1v1h-1zM7 32h1v1h-1zM8 32h1v1h-1zM9 32h1v1h-1zM10 32h1v1h-1zM12 32h1v1h-1zM13 32h1v1h-1zM14 32h1v1h-1zM19 32h1v1h-1zM21 32h1v1h-1zM23 32h1v1h-1zM25 32h1v1h-1zM26 32h1v1h-1zM30 32h1v1h-1z\" fill=\"#000000\"/></g><text x=\"82\" y=\"178\" font-size=\"12\" font-family=\"sans-serif\" text-anchor=\"middle\" fill=\"#111111\">https://iotools.cloud/tools/gen…</text></g><g transform=\"translate(352 0)\"><g transform=\"translate(0 0) scale(4)\"><rect width=\"41\" height=\"41\" fill=\"#ffffff\"/><path d=\"M4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM7 4h1v1h-1zM8 4h1v1h-1zM9 4h1v1h-1zM10 4h1v1h-1zM12 4h1v1h-1zM14 4h1v1h-1zM16 4h1v1h-1zM17 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM22 4h1v1h-1zM24 4h1v1h-1zM25 4h1v1h-1zM27 4h1v1h-1zM30 4h1v1h-1zM31 4h1v1h-1zM32 4h1v1h-1zM33 4h1v1h-1zM34 4h1v1h-1zM35 4h1v1h-1zM36 4h1v1h-1zM4 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM14 5h1v1h-1zM15 5h1v1h-1zM17 5h1v1h-1zM18 5h1v1h-1zM22 5h1v1h-1zM23 5h1v1h-1zM24 5h1v1h-1zM25 5h1v1h-1zM26 5h1v1h-1zM30 5h1v1h-1zM36 5h1v1h-1zM4 6h1v1h-1zM6 6h1v1h-1zM7 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM13 6h1v1h-1zM14 6h1v1h-1zM16 6h1v1h-1zM18 6h1v1h-1zM20 6h1v1h-1zM21 6h1v1h-1zM22 6h1v1h-1zM24 6h1v1h-1zM25 6h1v1h-1zM28 6h1v1h-1zM30 6h1v1h-1zM32 6h1v1h-1zM33 6h1v1h-1zM34 6h1v1h-1zM36 6h1v1h-1zM4 7h1v1h-1zM6 7h1v1h-1zM7 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM15 7h1v1h-1zM16 7h1v1h-1zM19 7h1v1h-1zM20 7h1v1h-1zM21 7h1v1h-1zM25 7h1v1h-1zM26 7h1v1h-1zM30 7h1v1h-1zM32 7h1v1h-1zM33 7h1v1h-1zM34 7h1v1h-1zM36 7h1v1h-1zM4 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM13 8h1v1h-1zM16 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM23 8h1v1h-1zM25 8h1v1h-1zM27 8h1v1h-1zM28 8h1v1h-1zM30 8h1v1h-1zM32 8h1v1h-1zM33 8h1v1h-1zM34 8h1v1h-1zM36 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM14 9h1v1h-1zM17 9h1v1h-1zM19 9h1v1h-1zM21 9h1v1h-1zM24 9h1v1h-1zM26 9h1v1h-1zM28 9h1v1h-1zM30 9h1v1h-1zM36 9h1v1h-1zM4 10h1v1h-1zM5 10h1v1h-1zM6 10h1v1h-1zM7 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h1v1h-1zM28 10h1v1h-1zM30 10h1v1h-1zM31 10h1v1h-1zM32 10h1v1h-1zM33 10h1v1h-1zM34 10h1v1h-1zM35 10h1v1h-1zM36 10h1v1h-1zM12 11h1v1h-1zM13 11h1v1h-1zM14 11h1v1h-1zM15 11h1v1h-1zM16 11h1v1h-1zM18 11h1v1h-1zM21 11h1v1h-1zM22 11h1v1h-1zM23 11h1v1h-1zM24 11h1v1h-1zM25 11h1v1h-1zM26 11h1v1h-1zM4 12h1v1h-1zM8 12h1v1h-1zM10 12h1v1h-1zM11 12h1v1h-1zM12 12h1v1h-1zM13 12h1v1h-1zM14 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM21 12h1v1h-1zM24 12h1v1h-1zM25 12h1v1h-1zM26 12h1v1h-1zM28 12h1v1h-1zM29 12h1v1h-1zM30 12h1v1h-1zM31 12h1v1h-1zM32 12h1v1h-1zM33 12h1v1h-1zM36 12h1v1h-1zM4 13h1v1h-1zM7 13h1v1h-1zM11 13h1v1h-1zM12 13h1v1h-1zM14 13h1v1h-1zM18 13h1v1h-1zM19 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM25 13h1v1h-1zM26 13h1v1h-1zM27 13h1v1h-1zM29 13h1v1h-1zM33 13h1v1h-1zM34 13h1v1h-1zM35 13h1v1h-1zM4 14h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM8 14h1v1h-1zM9 14h1v1h-1zM10 14h1v1h-1zM11 14h1v1h-1zM12 14h1v1h-1zM13 14h1v1h-1zM15 14h1v1h-1zM17 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM22 14h1v1h-1zM24 14h1v1h-1zM27 14h1v1h-1zM28 14h1v1h-1zM29 14h1v1h-1zM33 14h1v1h-1zM35 14h1v1h-1zM5 15h1v1h-1zM8 15h1v1h-1zM11 15h1v1h-1zM12 15h1v1h-1zM13 15h1v1h-1zM14 15h1v1h-1zM17 15h1v1h-1zM19 15h1v1h-1zM20 15h1v1h-1zM24 15h1v1h-1zM26 15h1v1h-1zM28 15h1v1h-1zM29 15h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM8 16h1v1h-1zM9 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM14 16h1v1h-1zM15 16h1v1h-1zM16 16h1v1h-1zM17 16h1v1h-1zM20 16h1v1h-1zM23 16h1v1h-1zM26 16h1v1h-1zM27 16h1v1h-1zM30 16h1v1h-1zM32 16h1v1h-1zM33 16h1v1h-1zM36 16h1v1h-1zM6 17h1v1h-1zM8 17h1v1h-1zM9 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM15 17h1v1h-1zM16 17h1v1h-1zM17 17h1v1h-1zM18 17h1v1h-1zM22 17h1v1h-1zM23 17h1v1h-1zM24 17h1v1h-1zM27 17h1v1h-1zM31 17h1v1h-1zM33 17h1v1h-1zM34 17h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM7 18h1v1h-1zM10 18h1v1h-1zM12 18h1v1h-1zM14 18h1v1h-1zM15 18h1v1h-1zM16 18h1v1h-1zM17 18h1v1h-1zM19 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM24 18h1v1h-1zM26 18h1v1h-1zM27 18h1v1h-1zM28 18h1v1h-1zM29 18h1v1h-1zM30 18h1v1h-1zM31 18h1v1h-1zM35 18h1v1h-1zM4 19h1v1h-1zM6 19h1v1h-1zM7 19h1v1h-1zM11 19h1v1h-1zM14 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM18 19h1v1h-1zM19 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM25 19h1v1h-1zM28 19h1v1h-1zM29 19h1v1h-1zM30 19h1v1h-1zM33 19h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM9 20h1v1h-1zM10 20h1v1h-1zM11 20h1v1h-1zM13 20h1v1h-1zM14 20h1v1h-1zM16 20h1v1h-1zM20 20h1v1h-1zM21 20h1v1h-1zM23 20h1v1h-1zM25 20h1v1h-1zM27 20h1v1h-1zM28 20h1v1h-1zM30 20h1v1h-1zM32 20h1v1h-1zM35 20h1v1h-1zM5 21h1v1h-1zM7 21h1v1h-1zM8 21h1v1h-1zM12 21h1v1h-1zM13 21h1v1h-1zM19 21h1v1h-1zM20 21h1v1h-1zM22 21h1v1h-1zM27 21h1v1h-1zM29 21h1v1h-1zM33 21h1v1h-1zM34 21h1v1h-1zM35 21h1v1h-1zM10 22h1v1h-1zM11 22h1v1h-1zM12 22h1v1h-1zM13 22h1v1h-1zM14 22h1v1h-1zM18 22h1v1h-1zM19 22h1v1h-1zM21 22h1v1h-1zM24 22h1v1h-1zM25 22h1v1h-1zM26 22h1v1h-1zM27 22h1v1h-1zM31 22h1v1h-1zM33 22h1v1h-1zM35 22h1v1h-1zM6 23h1v1h-1zM9 23h1v1h-1zM13 23h1v1h-1zM16 23h1v1h-1zM18 23h1v1h-1zM21 23h1v1h-1zM22 23h1v1h-1zM23 23h1v1h-1zM24 23h1v1h-1zM25 23h1v1h-1zM27 23h1v1h-1zM28 23h1v1h-1zM30 23h1v1h-1zM31 23h1v1h-1zM35 23h1v1h-1zM36 23h1v1h-1zM5 24h1v1h-1zM7 24h1v1h-1zM9 24h1v1h-1zM10 24h1v1h-1zM14 24h1v1h-1zM15 24h1v1h-1zM18 24h1v1h-1zM19 24h1v1h-1zM22 24h1v1h-1zM24 24h1v1h-1zM28 24h1v1h-1zM30 24h1v1h-1zM32 24h1v1h-1zM33 24h1v1h-1zM4 25h1v1h-1zM6 25h1v1h-1zM8 25h1v1h-1zM9 25h1v1h-1zM11 25h1v1h-1zM13 25h1v1h-1zM16 25h1v1h-1zM20 25h1v1h-1zM21 25h1v1h-1zM23 25h1v1h-1zM25 25h1v1h-1zM26 25h1v1h-1zM27 25h1v1h-1zM29 25h1v1h-1zM31 25h1v1h-1zM33 25h1v1h-1zM35 25h1v1h-1zM6 26h1v1h-1zM10 26h1v1h-1zM11 26h1v1h-1zM13 26h1v1h-1zM14 26h1v1h-1zM15 26h1v1h-1zM16 26h1v1h-1zM17 26h1v1h-1zM18 26h1v1h-1zM20 26h1v1h-1zM22 26h1v1h-1zM23 26h1v1h-1zM27 26h1v1h-1zM30 26h1v1h-1zM32 26h1v1h-1zM35 26h1v1h-1zM8 27h1v1h-1zM12 27h1v1h-1zM13 27h1v1h-1zM14 27h1v1h-1zM17 27h1v1h-1zM21 27h1v1h-1zM22 27h1v1h-1zM23 27h1v1h-1zM24 27h1v1h-1zM25 27h1v1h-1zM26 27h1v1h-1zM27 27h1v1h-1zM28 27h1v1h-1zM29 27h1v1h-1zM32 27h1v1h-1zM35 27h1v1h-1zM4 28h1v1h-1zM5 28h1v1h-1zM7 28h1v1h-1zM8 28h1v1h-1zM10 28h1v1h-1zM11 28h1v1h-1zM12 28h1v1h-1zM16 28h1v1h-1zM18 28h1v1h-1zM19 28h1v1h-1zM21 28h1v1h-1zM24 28h1v1h-1zM25 28h1v1h-1zM26 28h1v1h-1zM28 28h1v1h-1zM29 28h1v1h-1zM30 28h1v1h-1zM31 28h1v1h-1zM32 28h1v1h-1zM12 29h1v1h-1zM13 29h1v1h-1zM18 29h1v1h-1zM19 29h1v1h-1zM21 29h1v1h-1zM22 29h1v1h-1zM25 29h1v1h-1zM27 29h1v1h-1zM28 29h1v1h-1zM32 29h1v1h-1zM34 29h1v1h-1zM35 29h1v1h-1zM4 30h1v1h-1zM5 30h1v1h-1zM6 30h1v1h-1zM7 30h1v1h-1zM8 30h1v1h-1zM9 30h1v1h-1zM10 30h1v1h-1zM12 30h1v1h-1zM13 30h1v1h-1zM14 30h1v1h-1zM15 30h1v1h-1zM18 30h1v1h-1zM19 30h1v1h-1zM20 30h1v1h-1zM22 30h1v1h-1zM28 30h1v1h-1zM30 30h1v1h-1zM32 30h1v1h-1zM33 30h1v1h-1zM35 30h1v1h-1zM4 31h1v1h-1zM10 31h1v1h-1zM14 31h1v1h-1zM19 31h1v1h-1zM24 31h1v1h-1zM26 31h1v1h-1zM28 31h1v1h-1zM32 31h1v1h-1zM35 31h1v1h-1zM36 31h1v1h-1zM4 32h1v1h-1zM6 32h1v1h-1zM7 32h1v1h-1zM8 32h1v1h-1zM10 32h1v1h-1zM12 32h1v1h-1zM13 32h1v1h-1zM14 32h1v1h-1zM15 32h1v1h-1zM17 32h1v1h-1zM19 32h1v1h-1zM20 32h1v1h-1zM26 32h1v1h-1zM28 32h1v1h-1zM29 32h1v1h-1zM30 32h1v1h-1zM31 32h1v1h-1zM32 32h1v1h-1zM33 32h1v1h-1zM35 32h1v1h-1zM36 32h1v1h-1zM4 33h1v1h-1zM6 33h1v1h-1zM7 33h1v1h-1zM8 33h1v1h-1zM10 33h1v1h-1zM13 33h1v1h-1zM15 33h1v1h-1zM17 33h1v1h-1zM18 33h1v1h-1zM21 33h1v1h-1zM22 33h1v1h-1zM23 33h1v1h-1zM24 33h1v1h-1zM27 33h1v1h-1zM30 33h1v1h-1zM31 33h1v1h-1zM32 33h1v1h-1zM33 33h1v1h-1zM34 33h1v1h-1zM35 33h1v1h-1zM4 34h1v1h-1zM6 34h1v1h-1zM7 34h1v1h-1zM8 34h1v1h-1zM10 34h1v1h-1zM14 34h1v1h-1zM15 34h1v1h-1zM16 34h1v1h-1zM17 34h1v1h-1zM18 34h1v1h-1zM19 34h1v1h-1zM22 34h1v1h-1zM24 34h1v1h-1zM26 34h1v1h-1zM28 34h1v1h-1zM30 34h1v1h-1zM31 34h1v1h-1zM32 34h1v1h-1zM34 34h1v1h-1zM4 35h1v1h-1zM10 35h1v1h-1zM14 35h1v1h-1zM15 35h1v1h-1zM17 35h1v1h-1zM19 35h1v1h-1zM20 35h1v1h-1zM21 35h1v1h-1zM22 35h1v1h-1zM25 35h1v1h-1zM28 35h1v1h-1zM4 36h1v1h-1zM5 36h1v1h-1zM6 36h1v1h-1zM7 36h1v1h-1zM8 36h1v1h-1zM9 36h1v1h-1zM10 36h1v1h-1zM12 36h1v1h-1zM13 36h1v1h-1zM14 36h1v1h-1zM15 36h1v1h-1zM16 36h1v1h-1zM18 36h1v1h-1zM21 36h1v1h-1zM23 36h1v1h-1zM24 36h1v1h-1zM25 36h1v1h-1zM26 36h1v1h-1zM27 36h1v1h-1zM28 36h1v1h-1zM30 36h1v1h-1zM36 36h1v1h-1z\" fill=\"#000000\"/></g><text x=\"82\" y=\"178\" font-size=\"12\" font-family=\"sans-serif\" text-anchor=\"middle\" fill=\"#111111\">https://iotools.cloud/tool/qr-c…</text></g></svg>"},"credits_used":5,"credits_remaining":null}},"serial_numbers_no_labels":{"summary":"Serial numbers, no labels","value":{"tool":"batch-qr-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"312\" height=\"312\" viewBox=\"0 0 312 312\" shape-rendering=\"crispEdges\"><rect width=\"312\" height=\"312\" fill=\"#ffffff\"/><g transform=\"translate(0 0)\"><g transform=\"translate(0 0) scale(6)\"><rect width=\"25\" height=\"25\" fill=\"#ffffff\"/><path d=\"M2 2h1v1h-1zM3 2h1v1h-1zM4 2h1v1h-1zM5 2h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1zM8 2h1v1h-1zM11 2h1v1h-1zM12 2h1v1h-1zM13 2h1v1h-1zM16 2h1v1h-1zM17 2h1v1h-1zM18 2h1v1h-1zM19 2h1v1h-1zM20 2h1v1h-1zM21 2h1v1h-1zM22 2h1v1h-1zM2 3h1v1h-1zM8 3h1v1h-1zM11 3h1v1h-1zM14 3h1v1h-1zM16 3h1v1h-1zM22 3h1v1h-1zM2 4h1v1h-1zM4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM8 4h1v1h-1zM10 4h1v1h-1zM11 4h1v1h-1zM13 4h1v1h-1zM14 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM2 5h1v1h-1zM4 5h1v1h-1zM5 5h1v1h-1zM6 5h1v1h-1zM8 5h1v1h-1zM11 5h1v1h-1zM12 5h1v1h-1zM13 5h1v1h-1zM16 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM2 6h1v1h-1zM4 6h1v1h-1zM5 6h1v1h-1zM6 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM13 6h1v1h-1zM16 6h1v1h-1zM18 6h1v1h-1zM19 6h1v1h-1zM20 6h1v1h-1zM22 6h1v1h-1zM2 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM14 7h1v1h-1zM16 7h1v1h-1zM22 7h1v1h-1zM2 8h1v1h-1zM3 8h1v1h-1zM4 8h1v1h-1zM5 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM11 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM14 9h1v1h-1zM3 10h1v1h-1zM6 10h1v1h-1zM8 10h1v1h-1zM10 10h1v1h-1zM11 10h1v1h-1zM13 10h1v1h-1zM14 10h1v1h-1zM15 10h1v1h-1zM17 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM2 11h1v1h-1zM4 11h1v1h-1zM5 11h1v1h-1zM6 11h1v1h-1zM7 11h1v1h-1zM9 11h1v1h-1zM10 11h1v1h-1zM12 11h1v1h-1zM13 11h1v1h-1zM21 11h1v1h-1zM22 11h1v1h-1zM3 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM11 12h1v1h-1zM13 12h1v1h-1zM14 12h1v1h-1zM16 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM4 13h1v1h-1zM6 13h1v1h-1zM7 13h1v1h-1zM12 13h1v1h-1zM15 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM18 13h1v1h-1zM20 13h1v1h-1zM4 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM11 14h1v1h-1zM12 14h1v1h-1zM14 14h1v1h-1zM15 14h1v1h-1zM16 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM22 14h1v1h-1zM10 15h1v1h-1zM12 15h1v1h-1zM13 15h1v1h-1zM15 15h1v1h-1zM16 15h1v1h-1zM19 15h1v1h-1zM22 15h1v1h-1zM2 16h1v1h-1zM3 16h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM7 16h1v1h-1zM8 16h1v1h-1zM11 16h1v1h-1zM12 16h1v1h-1zM15 16h1v1h-1zM18 16h1v1h-1zM19 16h1v1h-1zM20 16h1v1h-1zM21 16h1v1h-1zM22 16h1v1h-1zM2 17h1v1h-1zM8 17h1v1h-1zM11 17h1v1h-1zM14 17h1v1h-1zM17 17h1v1h-1zM18 17h1v1h-1zM19 17h1v1h-1zM2 18h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM16 18h1v1h-1zM20 18h1v1h-1zM22 18h1v1h-1zM2 19h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM8 19h1v1h-1zM12 19h1v1h-1zM13 19h1v1h-1zM14 19h1v1h-1zM18 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM22 19h1v1h-1zM2 20h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM8 20h1v1h-1zM11 20h1v1h-1zM12 20h1v1h-1zM13 20h1v1h-1zM16 20h1v1h-1zM17 20h1v1h-1zM18 20h1v1h-1zM19 20h1v1h-1zM2 21h1v1h-1zM8 21h1v1h-1zM10 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM15 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM18 21h1v1h-1zM19 21h1v1h-1zM22 21h1v1h-1zM2 22h1v1h-1zM3 22h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM12 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM16 22h1v1h-1zM20 22h1v1h-1zM21 22h1v1h-1zM22 22h1v1h-1z\" fill=\"#000000\"/></g></g><g transform=\"translate(162 0)\"><g transform=\"translate(0 0) scale(6)\"><rect width=\"25\" height=\"25\" fill=\"#ffffff\"/><path d=\"M2 2h1v1h-1zM3 2h1v1h-1zM4 2h1v1h-1zM5 2h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1zM8 2h1v1h-1zM10 2h1v1h-1zM12 2h1v1h-1zM16 2h1v1h-1zM17 2h1v1h-1zM18 2h1v1h-1zM19 2h1v1h-1zM20 2h1v1h-1zM21 2h1v1h-1zM22 2h1v1h-1zM2 3h1v1h-1zM8 3h1v1h-1zM10 3h1v1h-1zM13 3h1v1h-1zM16 3h1v1h-1zM22 3h1v1h-1zM2 4h1v1h-1zM4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM8 4h1v1h-1zM10 4h1v1h-1zM11 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM2 5h1v1h-1zM4 5h1v1h-1zM5 5h1v1h-1zM6 5h1v1h-1zM8 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM16 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM2 6h1v1h-1zM4 6h1v1h-1zM5 6h1v1h-1zM6 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM11 6h1v1h-1zM12 6h1v1h-1zM14 6h1v1h-1zM16 6h1v1h-1zM18 6h1v1h-1zM19 6h1v1h-1zM20 6h1v1h-1zM22 6h1v1h-1zM2 7h1v1h-1zM8 7h1v1h-1zM11 7h1v1h-1zM12 7h1v1h-1zM16 7h1v1h-1zM22 7h1v1h-1zM2 8h1v1h-1zM3 8h1v1h-1zM4 8h1v1h-1zM5 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM10 9h1v1h-1zM14 9h1v1h-1zM3 10h1v1h-1zM4 10h1v1h-1zM6 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM12 10h1v1h-1zM13 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM19 10h1v1h-1zM20 10h1v1h-1zM21 10h1v1h-1zM22 10h1v1h-1zM3 11h1v1h-1zM4 11h1v1h-1zM5 11h1v1h-1zM9 11h1v1h-1zM10 11h1v1h-1zM14 11h1v1h-1zM16 11h1v1h-1zM17 11h1v1h-1zM19 11h1v1h-1zM20 11h1v1h-1zM21 11h1v1h-1zM2 12h1v1h-1zM3 12h1v1h-1zM4 12h1v1h-1zM5 12h1v1h-1zM6 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM10 12h1v1h-1zM12 12h1v1h-1zM13 12h1v1h-1zM18 12h1v1h-1zM22 12h1v1h-1zM3 13h1v1h-1zM9 13h1v1h-1zM10 13h1v1h-1zM12 13h1v1h-1zM13 13h1v1h-1zM14 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM2 14h1v1h-1zM3 14h1v1h-1zM4 14h1v1h-1zM5 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM11 14h1v1h-1zM13 14h1v1h-1zM14 14h1v1h-1zM16 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM22 14h1v1h-1zM10 15h1v1h-1zM11 15h1v1h-1zM12 15h1v1h-1zM13 15h1v1h-1zM15 15h1v1h-1zM17 15h1v1h-1zM18 15h1v1h-1zM20 15h1v1h-1zM2 16h1v1h-1zM3 16h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM7 16h1v1h-1zM8 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM13 16h1v1h-1zM15 16h1v1h-1zM16 16h1v1h-1zM17 16h1v1h-1zM18 16h1v1h-1zM21 16h1v1h-1zM2 17h1v1h-1zM8 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM15 17h1v1h-1zM17 17h1v1h-1zM19 17h1v1h-1zM21 17h1v1h-1zM2 18h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM14 18h1v1h-1zM15 18h1v1h-1zM16 18h1v1h-1zM18 18h1v1h-1zM20 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM2 19h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM8 19h1v1h-1zM11 19h1v1h-1zM12 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM18 19h1v1h-1zM19 19h1v1h-1zM21 19h1v1h-1zM2 20h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM8 20h1v1h-1zM10 20h1v1h-1zM11 20h1v1h-1zM14 20h1v1h-1zM18 20h1v1h-1zM20 20h1v1h-1zM22 20h1v1h-1zM2 21h1v1h-1zM8 21h1v1h-1zM10 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM19 21h1v1h-1zM21 21h1v1h-1zM22 21h1v1h-1zM2 22h1v1h-1zM3 22h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM14 22h1v1h-1zM16 22h1v1h-1zM18 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1z\" fill=\"#000000\"/></g></g><g transform=\"translate(0 162)\"><g transform=\"translate(0 0) scale(6)\"><rect width=\"25\" height=\"25\" fill=\"#ffffff\"/><path d=\"M2 2h1v1h-1zM3 2h1v1h-1zM4 2h1v1h-1zM5 2h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1zM8 2h1v1h-1zM11 2h1v1h-1zM13 2h1v1h-1zM14 2h1v1h-1zM16 2h1v1h-1zM17 2h1v1h-1zM18 2h1v1h-1zM19 2h1v1h-1zM20 2h1v1h-1zM21 2h1v1h-1zM22 2h1v1h-1zM2 3h1v1h-1zM8 3h1v1h-1zM11 3h1v1h-1zM12 3h1v1h-1zM13 3h1v1h-1zM14 3h1v1h-1zM16 3h1v1h-1zM22 3h1v1h-1zM2 4h1v1h-1zM4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM8 4h1v1h-1zM10 4h1v1h-1zM13 4h1v1h-1zM14 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM2 5h1v1h-1zM4 5h1v1h-1zM5 5h1v1h-1zM6 5h1v1h-1zM8 5h1v1h-1zM11 5h1v1h-1zM12 5h1v1h-1zM13 5h1v1h-1zM16 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM2 6h1v1h-1zM4 6h1v1h-1zM5 6h1v1h-1zM6 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM12 6h1v1h-1zM16 6h1v1h-1zM18 6h1v1h-1zM19 6h1v1h-1zM20 6h1v1h-1zM22 6h1v1h-1zM2 7h1v1h-1zM8 7h1v1h-1zM10 7h1v1h-1zM12 7h1v1h-1zM16 7h1v1h-1zM22 7h1v1h-1zM2 8h1v1h-1zM3 8h1v1h-1zM4 8h1v1h-1zM5 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM11 9h1v1h-1zM12 9h1v1h-1zM13 9h1v1h-1zM14 9h1v1h-1zM3 10h1v1h-1zM6 10h1v1h-1zM8 10h1v1h-1zM10 10h1v1h-1zM12 10h1v1h-1zM14 10h1v1h-1zM15 10h1v1h-1zM17 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM2 11h1v1h-1zM5 11h1v1h-1zM6 11h1v1h-1zM10 11h1v1h-1zM11 11h1v1h-1zM12 11h1v1h-1zM21 11h1v1h-1zM22 11h1v1h-1zM4 12h1v1h-1zM5 12h1v1h-1zM6 12h1v1h-1zM8 12h1v1h-1zM10 12h1v1h-1zM11 12h1v1h-1zM14 12h1v1h-1zM16 12h1v1h-1zM17 12h1v1h-1zM18 12h1v1h-1zM19 12h1v1h-1zM20 12h1v1h-1zM4 13h1v1h-1zM14 13h1v1h-1zM15 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM18 13h1v1h-1zM20 13h1v1h-1zM2 14h1v1h-1zM6 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM9 14h1v1h-1zM11 14h1v1h-1zM14 14h1v1h-1zM15 14h1v1h-1zM16 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM21 14h1v1h-1zM22 14h1v1h-1zM10 15h1v1h-1zM15 15h1v1h-1zM16 15h1v1h-1zM19 15h1v1h-1zM22 15h1v1h-1zM2 16h1v1h-1zM3 16h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM7 16h1v1h-1zM8 16h1v1h-1zM11 16h1v1h-1zM13 16h1v1h-1zM14 16h1v1h-1zM15 16h1v1h-1zM17 16h1v1h-1zM19 16h1v1h-1zM20 16h1v1h-1zM21 16h1v1h-1zM22 16h1v1h-1zM2 17h1v1h-1zM8 17h1v1h-1zM11 17h1v1h-1zM12 17h1v1h-1zM13 17h1v1h-1zM17 17h1v1h-1zM18 17h1v1h-1zM19 17h1v1h-1zM2 18h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM11 18h1v1h-1zM12 18h1v1h-1zM14 18h1v1h-1zM16 18h1v1h-1zM20 18h1v1h-1zM22 18h1v1h-1zM2 19h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM8 19h1v1h-1zM13 19h1v1h-1zM14 19h1v1h-1zM18 19h1v1h-1zM20 19h1v1h-1zM21 19h1v1h-1zM22 19h1v1h-1zM2 20h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM8 20h1v1h-1zM12 20h1v1h-1zM13 20h1v1h-1zM16 20h1v1h-1zM17 20h1v1h-1zM18 20h1v1h-1zM19 20h1v1h-1zM2 21h1v1h-1zM8 21h1v1h-1zM10 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM15 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM18 21h1v1h-1zM19 21h1v1h-1zM22 21h1v1h-1zM2 22h1v1h-1zM3 22h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM12 22h1v1h-1zM14 22h1v1h-1zM15 22h1v1h-1zM16 22h1v1h-1zM20 22h1v1h-1zM21 22h1v1h-1zM22 22h1v1h-1z\" fill=\"#000000\"/></g></g><g transform=\"translate(162 162)\"><g transform=\"translate(0 0) scale(6)\"><rect width=\"25\" height=\"25\" fill=\"#ffffff\"/><path d=\"M2 2h1v1h-1zM3 2h1v1h-1zM4 2h1v1h-1zM5 2h1v1h-1zM6 2h1v1h-1zM7 2h1v1h-1zM8 2h1v1h-1zM10 2h1v1h-1zM14 2h1v1h-1zM16 2h1v1h-1zM17 2h1v1h-1zM18 2h1v1h-1zM19 2h1v1h-1zM20 2h1v1h-1zM21 2h1v1h-1zM22 2h1v1h-1zM2 3h1v1h-1zM8 3h1v1h-1zM10 3h1v1h-1zM12 3h1v1h-1zM16 3h1v1h-1zM22 3h1v1h-1zM2 4h1v1h-1zM4 4h1v1h-1zM5 4h1v1h-1zM6 4h1v1h-1zM8 4h1v1h-1zM10 4h1v1h-1zM16 4h1v1h-1zM18 4h1v1h-1zM19 4h1v1h-1zM20 4h1v1h-1zM22 4h1v1h-1zM2 5h1v1h-1zM4 5h1v1h-1zM5 5h1v1h-1zM6 5h1v1h-1zM8 5h1v1h-1zM10 5h1v1h-1zM13 5h1v1h-1zM16 5h1v1h-1zM18 5h1v1h-1zM19 5h1v1h-1zM20 5h1v1h-1zM22 5h1v1h-1zM2 6h1v1h-1zM4 6h1v1h-1zM5 6h1v1h-1zM6 6h1v1h-1zM8 6h1v1h-1zM10 6h1v1h-1zM11 6h1v1h-1zM13 6h1v1h-1zM14 6h1v1h-1zM16 6h1v1h-1zM18 6h1v1h-1zM19 6h1v1h-1zM20 6h1v1h-1zM22 6h1v1h-1zM2 7h1v1h-1zM8 7h1v1h-1zM11 7h1v1h-1zM12 7h1v1h-1zM13 7h1v1h-1zM14 7h1v1h-1zM16 7h1v1h-1zM22 7h1v1h-1zM2 8h1v1h-1zM3 8h1v1h-1zM4 8h1v1h-1zM5 8h1v1h-1zM6 8h1v1h-1zM7 8h1v1h-1zM8 8h1v1h-1zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM16 8h1v1h-1zM17 8h1v1h-1zM18 8h1v1h-1zM19 8h1v1h-1zM20 8h1v1h-1zM21 8h1v1h-1zM22 8h1v1h-1zM10 9h1v1h-1zM14 9h1v1h-1zM3 10h1v1h-1zM4 10h1v1h-1zM6 10h1v1h-1zM8 10h1v1h-1zM9 10h1v1h-1zM11 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM19 10h1v1h-1zM20 10h1v1h-1zM21 10h1v1h-1zM22 10h1v1h-1zM3 11h1v1h-1zM5 11h1v1h-1zM7 11h1v1h-1zM10 11h1v1h-1zM11 11h1v1h-1zM13 11h1v1h-1zM14 11h1v1h-1zM16 11h1v1h-1zM17 11h1v1h-1zM19 11h1v1h-1zM20 11h1v1h-1zM21 11h1v1h-1zM2 12h1v1h-1zM6 12h1v1h-1zM7 12h1v1h-1zM8 12h1v1h-1zM9 12h1v1h-1zM12 12h1v1h-1zM18 12h1v1h-1zM22 12h1v1h-1zM3 13h1v1h-1zM6 13h1v1h-1zM7 13h1v1h-1zM9 13h1v1h-1zM10 13h1v1h-1zM13 13h1v1h-1zM16 13h1v1h-1zM17 13h1v1h-1zM20 13h1v1h-1zM21 13h1v1h-1zM3 14h1v1h-1zM5 14h1v1h-1zM7 14h1v1h-1zM8 14h1v1h-1zM9 14h1v1h-1zM11 14h1v1h-1zM12 14h1v1h-1zM13 14h1v1h-1zM14 14h1v1h-1zM16 14h1v1h-1zM18 14h1v1h-1zM19 14h1v1h-1zM20 14h1v1h-1zM22 14h1v1h-1zM10 15h1v1h-1zM11 15h1v1h-1zM15 15h1v1h-1zM17 15h1v1h-1zM18 15h1v1h-1zM20 15h1v1h-1zM2 16h1v1h-1zM3 16h1v1h-1zM4 16h1v1h-1zM5 16h1v1h-1zM6 16h1v1h-1zM7 16h1v1h-1zM8 16h1v1h-1zM10 16h1v1h-1zM11 16h1v1h-1zM12 16h1v1h-1zM14 16h1v1h-1zM15 16h1v1h-1zM16 16h1v1h-1zM21 16h1v1h-1zM2 17h1v1h-1zM8 17h1v1h-1zM11 17h1v1h-1zM14 17h1v1h-1zM15 17h1v1h-1zM17 17h1v1h-1zM19 17h1v1h-1zM21 17h1v1h-1zM2 18h1v1h-1zM4 18h1v1h-1zM5 18h1v1h-1zM6 18h1v1h-1zM8 18h1v1h-1zM10 18h1v1h-1zM12 18h1v1h-1zM15 18h1v1h-1zM16 18h1v1h-1zM18 18h1v1h-1zM20 18h1v1h-1zM21 18h1v1h-1zM22 18h1v1h-1zM2 19h1v1h-1zM4 19h1v1h-1zM5 19h1v1h-1zM6 19h1v1h-1zM8 19h1v1h-1zM11 19h1v1h-1zM16 19h1v1h-1zM17 19h1v1h-1zM18 19h1v1h-1zM19 19h1v1h-1zM21 19h1v1h-1zM2 20h1v1h-1zM4 20h1v1h-1zM5 20h1v1h-1zM6 20h1v1h-1zM8 20h1v1h-1zM10 20h1v1h-1zM14 20h1v1h-1zM18 20h1v1h-1zM20 20h1v1h-1zM22 20h1v1h-1zM2 21h1v1h-1zM8 21h1v1h-1zM10 21h1v1h-1zM11 21h1v1h-1zM12 21h1v1h-1zM16 21h1v1h-1zM17 21h1v1h-1zM19 21h1v1h-1zM21 21h1v1h-1zM22 21h1v1h-1zM2 22h1v1h-1zM3 22h1v1h-1zM4 22h1v1h-1zM5 22h1v1h-1zM6 22h1v1h-1zM7 22h1v1h-1zM8 22h1v1h-1zM14 22h1v1h-1zM16 22h1v1h-1zM18 22h1v1h-1zM20 22h1v1h-1zM22 22h1v1h-1z\" fill=\"#000000\"/></g></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-address-generator":{"post":{"operationId":"run_random_address_generator","summary":"Random Address Generator","tags":["Generators"],"description":"Generate random, realistic-looking street addresses — street number, street name, city, state/province and ZIP/postal code — for the US, UK, Canada, Australia or Germany. Fabricated test data only, not real locations. Great for form testing, seeding databases and mock fixtures.\n\n[Try Random Address Generator in your browser →](https://iotools.cloud/tool/random-address-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"enum":["random","us","uk","ca","au","de"],"description":"Country"},"count":{"type":"number","description":"Number of addresses","minimum":1,"maximum":50},"format":{"enum":["full","single","json"],"description":"Output Format"}},"required":["count"]},"examples":{"5_random_us_addresses":{"summary":"5 random US addresses","value":{"country":"us","count":"5","format":"full"}},"3_uk_addresses_single_line":{"summary":"3 UK addresses, single line","value":{"country":"uk","count":"3","format":"single"}},"5_addresses_from_any_country_as_json":{"summary":"5 addresses from any country as JSON","value":{"country":"random","count":"5","format":"json"}},"10_german_addresses":{"summary":"10 German addresses","value":{"country":"de","count":"10","format":"full"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Generated Addresses"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-bitcoin-address-generator":{"post":{"operationId":"run_random_bitcoin_address_generator","summary":"Random Bitcoin Address Generator","tags":["Generators"],"description":"Generate random, syntactically-valid-looking Bitcoin addresses (Legacy P2PKH, P2SH, Bech32 SegWit, or Bech32m Taproot) for test data, fixtures, and UI demos. These are randomly generated — no private key exists for them, nobody controls them, and they hold no funds; never use one as a real receiving address.\n\n[Try Random Bitcoin Address Generator in your browser →](https://iotools.cloud/tool/random-bitcoin-address-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of addresses","minimum":1,"maximum":50},"addressType":{"enum":["random","p2pkh","p2sh","bech32","bech32m"],"description":"Address type"}},"required":[]},"examples":{"10_random_format_addresses":{"summary":"10 random-format addresses","value":{"count":"10","addressType":"random"}},"5_legacy_p2pkh_addresses":{"summary":"5 Legacy P2PKH addresses","value":{"count":"5","addressType":"p2pkh"}},"5_bech32_segwit_addresses":{"summary":"5 Bech32 SegWit addresses","value":{"count":"5","addressType":"bech32"}},"3_bech32m_taproot_addresses":{"summary":"3 Bech32m Taproot addresses","value":{"count":"3","addressType":"bech32m"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Bitcoin Addresses"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-color-generator":{"post":{"operationId":"run_random_color_generator","summary":"Random Color Generator","tags":["Generators"],"description":"Generate one or many random colors, each shown with its hex, RGB, and HSL values. Optionally lock hue, saturation, or lightness ranges to bias results toward pastel, vivid, or dark palettes.\n\n[Try Random Color Generator in your browser →](https://iotools.cloud/tool/random-color-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colorCount":{"type":"number","description":"Number of Colors","minimum":1,"maximum":20},"lockHue":{"type":"boolean","description":"Lock Hue Range"},"hueMin":{"type":"number","description":"Min Hue (0-360)","minimum":0,"maximum":360},"hueMax":{"type":"number","description":"Max Hue (0-360)","minimum":0,"maximum":360},"lockSaturation":{"type":"boolean","description":"Lock Saturation Range"},"saturationMin":{"type":"number","description":"Min Saturation % (0-100)","minimum":0,"maximum":100},"saturationMax":{"type":"number","description":"Max Saturation % (0-100)","minimum":0,"maximum":100},"lockLightness":{"type":"boolean","description":"Lock Lightness Range"},"lightnessMin":{"type":"number","description":"Min Lightness % (0-100)","minimum":0,"maximum":100},"lightnessMax":{"type":"number","description":"Max Lightness % (0-100)","minimum":0,"maximum":100}},"required":[]},"examples":{"5_random_colors_full_range":{"summary":"5 random colors, full range","value":{"colorCount":"5","lockHue":"","lockSaturation":"","lockLightness":""}},"3_pastel_colors_locked_saturation_lightness":{"summary":"3 pastel colors (locked saturation & lightness)","value":{"colorCount":"3","lockHue":"","lockSaturation":"true","saturationMin":"40","saturationMax":"60","lockLightness":"true","lightnessMin":"80","lightnessMax":"90"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"colorTable":{"type":"array","description":"Generated Colors","items":{"type":"object","properties":{"hex":{"type":"string","description":"Hex"},"rgb":{"type":"string","description":"RGB"},"hsl":{"type":"string","description":"HSL"}}},"x-iotools-columns":["hex","rgb","hsl"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-date-generator":{"post":{"operationId":"run_random_date_generator","summary":"Random Date Generator","tags":["Generators"],"description":"Generate one or many random dates inside a bounded start/end range — with optional weekend exclusion, no-duplicates, sorting, and day-of-week labels. Runs entirely in your browser.\n\n[Try Random Date Generator in your browser →](https://iotools.cloud/tool/random-date-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startDate":{"type":"string","description":"Start date"},"endDate":{"type":"string","description":"End date"},"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"excludeWeekends":{"type":"boolean","description":"Exclude weekends (Sat/Sun)"},"uniqueDates":{"type":"boolean","description":"No duplicate dates"},"sortResults":{"type":"boolean","description":"Sort chronologically"},"includeWeekday":{"type":"boolean","description":"Include day of week"}},"required":["startDate","endDate"]},"examples":{"5_unique_dates_in_2026":{"summary":"5 unique dates in 2026","value":{"startDate":"2026-01-01","endDate":"2026-12-31","entriesCount":"5","excludeWeekends":"","uniqueDates":"true","sortResults":"true","includeWeekday":"true"}},"1_weekday_only_date":{"summary":"1 weekday-only date","value":{"startDate":"2026-08-01","endDate":"2026-08-31","entriesCount":"1","excludeWeekends":"true","uniqueDates":"true","sortResults":"","includeWeekday":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Random dates"},"count":{"type":"string","description":"Total"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-email-generator":{"post":{"operationId":"run_random_email_generator","summary":"Random Email Generator","tags":["Generators"],"description":"Generate batches of fake, well-formed email addresses for testing, mockups and demos. Choose realistic-name or random-string local parts, a name format, and common, fictional or custom domains. Not real inboxes.\n\n[Try Random Email Generator in your browser →](https://iotools.cloud/tool/random-email-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of Emails","minimum":1,"maximum":100},"usernameStyle":{"enum":["realistic","random"],"description":"Username Style"},"emailFormat":{"enum":["first.last","firstlast","first_last","f.last","flast"],"description":"Name Format"},"domainType":{"enum":["common","fictional","custom"],"description":"Domain Type"},"customDomain":{"type":"string","description":"Custom Domain"}},"required":[]},"examples":{"10_realistic_first_last_common_providers":{"summary":"10 realistic first.last @ common providers","value":{"count":"10","usernameStyle":"realistic","emailFormat":"first.last","domainType":"common"}},"5_random_string_fictional_test_domains":{"summary":"5 random-string @ fictional test domains","value":{"count":"5","usernameStyle":"random","domainType":"fictional"}},"3_f_last_a_custom_domain":{"summary":"3 f.last @ a custom domain","value":{"count":"3","usernameStyle":"realistic","emailFormat":"f.last","domainType":"custom","customDomain":"acme.test"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Generated Emails"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator":{"post":{"operationId":"run_random_generator","summary":"Random Generator","tags":["Generators"],"description":"Pick random entries from any list — or shuffle the whole thing. The general-purpose randomizer behind the specialised pickers: paste anything, one item per line, and draw.\n\n[Try Random Generator in your browser →](https://iotools.cloud/tool/random-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listItems":{"type":"string","description":"List items"},"mode":{"enum":["pick","shuffle"],"description":"Mode"},"pickCount":{"type":"number","description":"Items to pick","minimum":1,"maximum":100},"removeDuplicatedItems":{"type":"boolean","description":"Remove duplicated items"}},"required":["listItems"]},"examples":{"pick_2_of_6_options":{"summary":"Pick 2 of 6 options","value":{"listItems":"Pizza\nSushi\nTacos\nRamen\nBurgers\nPasta","mode":"pick","pickCount":"2","removeDuplicatedItems":""}},"shuffle_a_list":{"summary":"Shuffle a list","value":{"listItems":"Alice\nBob\nCarol\nDave","mode":"shuffle","pickCount":"1","removeDuplicatedItems":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/numbers":{"post":{"operationId":"run_random_generator_numbers","summary":"Random Number Generator","tags":["Generators"],"description":"Generate one or many random numbers in any range — integers or decimals with configurable precision, with or without repeats, exclusions, and sort order. Set a seed to reproduce the exact same draw later. Great for draws, sampling and testing.\n\n[Try Random Number Generator in your browser →](https://iotools.cloud/tool/random-generator/numbers/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number count","minimum":1,"maximum":100},"min":{"type":"number","description":"Min"},"max":{"type":"number","description":"Max"},"allowRepeat":{"type":"boolean","description":"Allow repeated numbers"},"numberTypes":{"enum":["integer","decimal"],"description":"Number type"},"precision":{"type":"number","description":"Decimal places","minimum":0,"maximum":10},"exclude":{"type":"string","description":"Exclude numbers (optional)"},"sortOutput":{"enum":["none","asc","desc"],"description":"Sort output"},"seed":{"type":"string","description":"Seed (optional)"}},"required":[]},"examples":{"5_numbers_between_1_100":{"summary":"5 numbers between 1–100","value":{"count":"5","min":"1","max":"100","allowRepeat":"true","numberTypes":"integer"}},"6_unique_numbers_1_49_excluding_13_and_21_seeded_reproducible":{"summary":"6 unique numbers 1–49, excluding 13 and 21, seeded — reproducible","value":{"count":"6","min":"1","max":"49","allowRepeat":"false","numberTypes":"integer","exclude":"13, 21","sortOutput":"asc","seed":"lottery-night"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_unique_numbers_1_49_excluding_13_and_21_seeded_reproducible":{"summary":"6 unique numbers 1–49, excluding 13 and 21, seeded — reproducible","value":{"tool":"random-generator/numbers","tool_version":"1.0.2","outputs":{"numbers":"5, 6, 9, 14, 17, 39"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"numbers":{"type":"string","description":"Generated numbers"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-animals":{"post":{"operationId":"run_random_generator_random_animals","summary":"Random Animal Generator","tags":["Generators"],"description":"Pick random animals from across the globe, each with a photo. Great for drawing and writing prompts, classroom games, trivia and \"guess the animal\" icebreakers.\n\n[Try Random Animal Generator in your browser →](https://iotools.cloud/tool/random-generator/random-animals/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"formattingStyle":{"enum":["capital","lowerCase","upperCase"],"description":"Name format"}},"required":[]},"examples":{"6_random_animals":{"summary":"6 random animals","value":{"entriesCount":"6","formattingStyle":"capital"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"entries":{"type":"array","description":"Random animals","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-birthday":{"post":{"operationId":"run_random_generator_random_birthday","summary":"Random Birthday Generator","tags":["Generators"],"description":"Generate random birth dates constrained by age range, month or zodiac sign — with the age and star sign of every result. Ideal for test data, characters and personas.\n\n[Try Random Birthday Generator in your browser →](https://iotools.cloud/tool/random-generator/random-birthday/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"minAge":{"type":"number","description":"Minimum age","minimum":0,"maximum":120},"maxAge":{"type":"number","description":"Maximum age","minimum":0,"maximum":120},"month":{"enum":["any","1","2","3","4","5","6","7","8","9","10","11","12"],"description":"Month"},"zodiac":{"enum":["any","Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],"description":"Zodiac sign"}},"required":[]},"examples":{"5_adult_birthdays":{"summary":"5 adult birthdays","value":{"entriesCount":"5","minAge":"18","maxAge":"80","month":"any","zodiac":"any"}},"3_scorpios_in_their_20s":{"summary":"3 Scorpios in their 20s","value":{"entriesCount":"3","minAge":"20","maxAge":"29","month":"any","zodiac":"Scorpio"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"birthdays":{"type":"array","description":"Random birthdays","items":{"type":"object","properties":{"date":{"type":"string","description":"Date"},"birthday":{"type":"string","description":"Birthday"},"age":{"type":"string","description":"Age"},"zodiac":{"type":"string","description":"Zodiac"}}},"x-iotools-columns":["date","birthday","age","zodiac"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-celebrities":{"post":{"operationId":"run_random_generator_random_celebrities","summary":"Random Celebrity Generator","tags":["Generators"],"description":"Pick random celebrities — actors, musicians, athletes and public figures — each with a photo. Great for charades, guessing games, drawing prompts and party icebreakers.\n\n[Try Random Celebrity Generator in your browser →](https://iotools.cloud/tool/random-generator/random-celebrities/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40}},"required":[]},"examples":{"6_random_celebrities":{"summary":"6 random celebrities","value":{"entriesCount":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"entries":{"type":"array","description":"Random celebrities","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-foods":{"post":{"operationId":"run_random_generator_random_foods","summary":"Random Food Generator","tags":["Generators"],"description":"Pick random dishes from cuisines around the world, each with a photo. Beat can't-decide-what-to-eat paralysis, plan themed dinners or find your next recipe to try.\n\n[Try Random Food Generator in your browser →](https://iotools.cloud/tool/random-generator/random-foods/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"formattingStyle":{"enum":["capital","lowerCase","upperCase"],"description":"Name format"}},"required":[]},"examples":{"6_random_foods":{"summary":"6 random foods","value":{"entriesCount":"6","formattingStyle":"capital"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"entries":{"type":"array","description":"Random foods","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-mlb-teams":{"post":{"operationId":"run_random_generator_random_mlb_teams","summary":"Random MLB Team Generator","tags":["Generators"],"description":"Pick one or more Major League Baseball teams at random, each with the story behind its name. Handy for fantasy drafts, trivia nights and pick'em games.\n\n[Try Random MLB Team Generator in your browser →](https://iotools.cloud/tool/random-generator/random-mlb-teams/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":30}},"required":[]},"examples":{"3_random_mlb_teams":{"summary":"3 random MLB teams","value":{"entriesCount":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"teams":{"type":"array","description":"Random MLB teams","items":{"type":"object","properties":{"team":{"type":"string","description":"Team"},"name-origin":{"type":"string","description":"Name origin"}}},"x-iotools-columns":["team","name-origin"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-movies":{"post":{"operationId":"run_random_generator_random_movies","summary":"Random Movie Generator","tags":["Generators"],"description":"Pick random movies from 500 acclaimed titles — poster, year, genre and IMDb rating included. End the what-should-we-watch debate or build a watchlist in one click.\n\n[Try Random Movie Generator in your browser →](https://iotools.cloud/tool/random-generator/random-movies/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"minRating":{"enum":["0","7","8"],"description":"Minimum IMDb rating"}},"required":[]},"examples":{"6_random_movies":{"summary":"6 random movies","value":{"entriesCount":"6","minRating":"0"}},"3_highly_rated_movies":{"summary":"3 highly-rated movies","value":{"entriesCount":"3","minRating":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"movies":{"type":"array","description":"Random movies","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-name-picker":{"post":{"operationId":"run_random_generator_random_name_picker","summary":"Random Name Picker","tags":["Generators"],"description":"Draw one or more winners at random from a list of names — for giveaways, raffles, classroom picks and who-goes-first decisions. Paste or upload the list and pick.\n\n[Try Random Name Picker in your browser →](https://iotools.cloud/tool/random-generator/random-name-picker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nameList":{"type":"string","description":"Name list"},"nameSeparator":{"enum":["newline",","," ","|",";"],"description":"Name separator"},"pickCount":{"type":"number","description":"Winners to pick","minimum":1,"maximum":40}},"required":["nameList"]},"examples":{"pick_1_winner_from_10_names":{"summary":"Pick 1 winner from 10 names","value":{"nameList":"John\nJane\nMichael\nEmily\nDavid\nSarah\nRobert\nOlivia\nWilliam\nSophia","nameSeparator":"newline","pickCount":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"winners":{"type":"string","description":"Winners"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-nba-teams":{"post":{"operationId":"run_random_generator_random_nba_teams","summary":"Random NBA Team Generator","tags":["Generators"],"description":"Pick one or more NBA basketball teams at random, each with the story behind its name. Handy for fantasy drafts, trivia nights and pick'em games.\n\n[Try Random NBA Team Generator in your browser →](https://iotools.cloud/tool/random-generator/random-nba-teams/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":30}},"required":[]},"examples":{"3_random_nba_teams":{"summary":"3 random NBA teams","value":{"entriesCount":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"teams":{"type":"array","description":"Random NBA teams","items":{"type":"object","properties":{"team":{"type":"string","description":"Team"},"name-origin":{"type":"string","description":"Name origin"}}},"x-iotools-columns":["team","name-origin"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-nfl-teams":{"post":{"operationId":"run_random_generator_random_nfl_teams","summary":"Random NFL Team Generator","tags":["Generators"],"description":"Pick one or more NFL football teams at random, each with the story behind its name. Handy for fantasy drafts, trivia nights and pick'em games.\n\n[Try Random NFL Team Generator in your browser →](https://iotools.cloud/tool/random-generator/random-nfl-teams/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":32}},"required":[]},"examples":{"3_random_nfl_teams":{"summary":"3 random NFL teams","value":{"entriesCount":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"teams":{"type":"array","description":"Random NFL teams","items":{"type":"object","properties":{"team":{"type":"string","description":"Team"},"name-origin":{"type":"string","description":"Name origin"}}},"x-iotools-columns":["team","name-origin"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-objects":{"post":{"operationId":"run_random_generator_random_objects","summary":"Random Object Generator","tags":["Generators"],"description":"Pick random everyday objects, each with a photo. Perfect for drawing and writing prompts, pictionary, improv games, scavenger hunts and memory training.\n\n[Try Random Object Generator in your browser →](https://iotools.cloud/tool/random-generator/random-objects/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"formattingStyle":{"enum":["capital","lowerCase","upperCase"],"description":"Name format"}},"required":[]},"examples":{"6_random_objects":{"summary":"6 random objects","value":{"entriesCount":"6","formattingStyle":"capital"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"entries":{"type":"array","description":"Random objects","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-quotes":{"post":{"operationId":"run_random_generator_random_quotes","summary":"Random Quote Generator","tags":["Generators"],"description":"Generate random famous quotes, or search a bundled quote library by category, author, or keyword — 135 curated quotes across 10 topics.\n\n[Try Random Quote Generator in your browser →](https://iotools.cloud/tool/random-generator/random-quotes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":10},"category":{"enum":["","life","love","motivation","success","wisdom","humor","friendship","happiness","leadership","creativity"],"description":"Category"},"author":{"type":"string","description":"Author contains"},"keyword":{"type":"string","description":"Quote contains keyword"}},"required":[]},"examples":{"3_random_quotes":{"summary":"3 random quotes","value":{"entriesCount":"3","category":"","author":"","keyword":""}},"success_quotes_about_failure":{"summary":"Success quotes about failure","value":{"entriesCount":"2","category":"success","author":"","keyword":"failure"}},"quotes_by_einstein":{"summary":"Quotes by Einstein","value":{"entriesCount":"3","category":"","author":"Einstein","keyword":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"quotes":{"type":"string","description":"Quotes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-team-generator":{"post":{"operationId":"run_random_generator_random_team_generator","summary":"Random Team Generator","tags":["Generators"],"description":"Split a list of names into random, evenly-sized teams — by a fixed number of teams or a fixed team size. Paste or upload the names, and get a fair draw with no picking captains, no arguments. Set a seed to reproduce the exact same split later.\n\n[Try Random Team Generator in your browser →](https://iotools.cloud/tool/random-generator/random-team-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"listItems":{"type":"string","description":"List names"},"splitMode":{"enum":["count","size"],"description":"Split by"},"numberOfTeams":{"type":"number","description":"Number of teams","minimum":2,"maximum":100},"teamSize":{"type":"number","description":"People per team","minimum":2,"maximum":100},"removeDuplicatedItems":{"type":"boolean","description":"Remove duplicated names"},"seed":{"type":"string","description":"Seed (optional)"}},"required":["listItems"]},"examples":{"8_names_into_2_teams":{"summary":"8 names into 2 teams","value":{"listItems":"Leona\nCora\nDanila\nLarissa\nDell\nDonetta\nMichaella\nSherye","splitMode":"count","numberOfTeams":"2","teamSize":"3","removeDuplicatedItems":"","seed":""}},"8_names_teams_of_3_seeded_reproducible":{"summary":"8 names, teams of 3, seeded — reproducible","value":{"listItems":"Leona\nCora\nDanila\nLarissa\nDell\nDonetta\nMichaella\nSherye","splitMode":"size","numberOfTeams":"2","teamSize":"3","removeDuplicatedItems":"","seed":"sprint-planning"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"8_names_teams_of_3_seeded_reproducible":{"summary":"8 names, teams of 3, seeded — reproducible","value":{"tool":"random-generator/random-team-generator","tool_version":"1.0.2","outputs":{"teams":[{"team":"Team 1","members":"Cora, Larissa, Sherye"},{"team":"Team 2","members":"Dell, Michaella, Leona"},{"team":"Team 3","members":"Danila, Donetta"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"teams":{"type":"array","description":"Teams","items":{"type":"object","properties":{"team":{"type":"string","description":"Team"},"members":{"type":"string","description":"Members"}}},"x-iotools-columns":["team","members"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-generator/random-us-zip-codes":{"post":{"operationId":"run_random_generator_random_us_zip_codes","summary":"Random US Zip Code Generator","tags":["Generators"],"description":"Generate random real US zip codes — optionally limited to one state — with the city, county and state each code belongs to. Useful for test data, sampling and geography games.\n\n[Try Random US Zip Code Generator in your browser →](https://iotools.cloud/tool/random-generator/random-us-zip-codes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40},"state":{"enum":["any","Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","District Of Columbia","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"description":"State"}},"required":[]},"examples":{"5_zip_codes_anywhere_in_the_us":{"summary":"5 zip codes anywhere in the US","value":{"entriesCount":"5","state":"any"}},"3_california_zip_codes":{"summary":"3 California zip codes","value":{"entriesCount":"3","state":"California"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"zipCodes":{"type":"array","description":"Random zip codes","items":{"type":"object","properties":{"zip-code":{"type":"string","description":"Zip code"},"city":{"type":"string","description":"City"},"county":{"type":"string","description":"County"},"state":{"type":"string","description":"State"}}},"x-iotools-columns":["zip-code","city","county","state"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-letter-generator":{"post":{"operationId":"run_random_letter_generator","summary":"Random Letter Generator","tags":["Generators"],"description":"Generate one or many random letters — choose uppercase, lowercase or mixed case, restrict to vowels or consonants, exclude specific letters, and allow or block duplicates. Runs entirely in your browser.\n\n[Try Random Letter Generator in your browser →](https://iotools.cloud/tool/random-letter-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":100},"caseStyle":{"enum":["upper","lower","mixed"],"description":"Case"},"letterType":{"enum":["any","vowels","consonants"],"description":"Letter type"},"allowDuplicates":{"type":"boolean","description":"Allow repeated letters"},"excludeLetters":{"type":"string","description":"Exclude letters (optional)"}},"required":[]},"examples":{"10_uppercase_letters":{"summary":"10 uppercase letters","value":{"entriesCount":"10","caseStyle":"upper","letterType":"any","allowDuplicates":"true","excludeLetters":""}},"4_unique_lowercase_vowels_excluding_a":{"summary":"4 unique lowercase vowels, excluding A","value":{"entriesCount":"4","caseStyle":"lower","letterType":"vowels","allowDuplicates":"","excludeLetters":"A"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated letters"},"joined":{"type":"string","description":"Joined (no separator)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-playing-card-generator":{"post":{"operationId":"run_random_playing_card_generator","summary":"Random Playing Card Generator","tags":["Generators"],"description":"Draw one or many random playing cards from a standard 52-card deck — add the 2 jokers, allow duplicates, and see the exact odds for that deck. Runs entirely in your browser.\n\n[Try Random Playing Card Generator in your browser →](https://iotools.cloud/tool/random-playing-card-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":54},"includeJokers":{"type":"boolean","description":"Include jokers (2)"},"allowDuplicates":{"type":"boolean","description":"Allow repeated cards"}},"required":[]},"examples":{"5_card_poker_hand":{"summary":"5-card poker hand","value":{"entriesCount":"5","includeJokers":"","allowDuplicates":""}},"10_unique_cards_with_jokers_in_the_deck":{"summary":"10 unique cards with jokers in the deck","value":{"entriesCount":"10","includeJokers":"true","allowDuplicates":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cards":{"type":"array","description":"Drawn cards","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}},"oddsInfo":{"type":"array","description":"Draw odds for this deck","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-pokemon-generator":{"post":{"operationId":"run_random_pokemon_generator","summary":"Random Pokémon Generator","tags":["Generators"],"description":"Roll a random Pokémon team from the full Pokédex, filtered by generation, type and base stats (HP, Attack, Defence, Sp. Attack, Sp. Defence, Speed). Great for Nuzlocke runs, randomiser challenges and drafting a team you'd never have picked yourself.\n\n[Try Random Pokémon Generator in your browser →](https://iotools.cloud/tool/random-pokemon-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Pokémon per team","minimum":1,"maximum":20},"generation":{"enum":["","1","2","3","4","5","6","7","8","9"],"description":"Generation"},"type":{"enum":["","normal","fire","water","electric","grass","ice","fighting","poison","ground","flying","psychic","bug","rock","ghost","dragon","dark","steel","fairy"],"description":"Type"},"hitPoints":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Hit points"},"speed":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Speed"},"attack":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Attack"},"specialAttack":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Sp. Attack"},"defence":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Defence"},"specialDefence":{"enum":["","0-50","51-100","101-150","151-9999"],"description":"Sp. Defence"}},"required":["count"]},"examples":{"a_random_team_of_8":{"summary":"A random team of 8","value":{"count":"8","generation":"","type":"","hitPoints":"","speed":"","attack":"","specialAttack":"","defence":"","specialDefence":""}},"gen_1_fire_types":{"summary":"Gen 1 Fire types","value":{"count":"6","generation":"1","type":"fire","hitPoints":"","speed":"","attack":"","specialAttack":"","defence":"","specialDefence":""}},"glass_cannons_high_attack_high_speed":{"summary":"Glass cannons — high attack, high speed","value":{"count":"6","generation":"","type":"","hitPoints":"","speed":"101-150","attack":"101-150","specialAttack":"","defence":"","specialDefence":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"team":{"type":"array","description":"Your team","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-port-generator":{"post":{"operationId":"run_random_port_generator","summary":"Random Port Generator","tags":["Generators"],"description":"Generate random, unused TCP/UDP port numbers above the reserved range — pick from the registered or dynamic/private IANA ranges and skip ports common services already use.\n\n[Try Random Port Generator in your browser →](https://iotools.cloud/tool/random-port-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many ports","minimum":1,"maximum":50},"range":{"enum":["any","registered","dynamic"],"description":"Range"},"avoidCommon":{"type":"boolean","description":"Avoid ports common services use (3306, 8080, …)"}},"required":["count","range"]},"examples":{"one_port_any_range":{"summary":"One port, any range","value":{"count":"1","range":"any","avoidCommon":"true"}},"five_dynamic_ports":{"summary":"Five dynamic ports","value":{"count":"5","range":"dynamic","avoidCommon":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"ports":{"type":"string","description":"Generated ports"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/random-name-generator":{"post":{"operationId":"run_random_name_generator","summary":"Random Name Generator","tags":["Generators"],"description":"Generate random names from themed dictionaries — names, languages, adjectives, animals, colors, countries, Star Wars characters, Pokémon or music artists. Pick a dictionary, a count and a case style.\n\n[Try Random Name Generator in your browser →](https://iotools.cloud/tool/random-name-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dictionary":{"enum":["names","languages","adjectives","animals","colors","countries","starWars","pokemon","musicArtists"],"description":"Dictionary"},"formattingStyle":{"enum":["capital","lowerCase","upperCase"],"description":"Name format"},"entriesCount":{"type":"number","description":"Count","minimum":1,"maximum":40}},"required":[]},"examples":{"5_random_fantasy_names":{"summary":"5 random fantasy names","value":{"dictionary":"names","formattingStyle":"capital","entriesCount":"5"}},"10_random_pok_mon_uppercase":{"summary":"10 random Pokémon, uppercase","value":{"dictionary":"pokemon","formattingStyle":"upperCase","entriesCount":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated names"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yes-or-no":{"post":{"operationId":"run_yes_or_no","summary":"Yes or No","tags":["Generators"],"description":"Generate one or many random Yes/No answers — like a coin flip for decisions. Optionally bias the odds away from a fair 50/50 split.\n\n[Try Yes or No in your browser →](https://iotools.cloud/tool/yes-or-no/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many answers?","minimum":1,"maximum":100},"yesProbability":{"type":"number","description":"Chance of Yes (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"single_flip_fair_coin":{"summary":"Single flip (fair coin)","value":{"count":"1","yesProbability":"50"}},"10_flips_biased_toward_yes":{"summary":"10 flips, biased toward Yes","value":{"count":"10","yesProbability":"75"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/react-native-shadow-generator":{"post":{"operationId":"run_react_native_shadow_generator","summary":"React Native Shadow Generator","tags":["Generators"],"description":"Generate matching iOS shadow props (shadowColor, shadowOffset, shadowOpacity, shadowRadius) and the Android elevation for React Native from one depth value, with a live preview and copy-ready StyleSheet, style-object or boxShadow output.\n\n[Try React Native Shadow Generator in your browser →](https://iotools.cloud/tool/react-native-shadow-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["depth","manual"],"description":"Shadow Values"},"depth":{"type":"number","description":"Shadow Depth","minimum":1,"maximum":24},"color":{"type":"string","description":"Shadow Color"},"offsetX":{"type":"number","description":"Offset X (px)","minimum":-20,"maximum":20},"offsetY":{"type":"number","description":"Offset Y (px)","minimum":-20,"maximum":20},"opacity":{"type":"number","description":"Shadow Opacity (%)","minimum":0,"maximum":100},"radius":{"type":"number","description":"Shadow Radius (px)","minimum":0,"maximum":40},"elevation":{"type":"number","description":"Android Elevation","minimum":0,"maximum":24},"format":{"enum":["stylesheet","object","boxshadow"],"description":"Output Format"}},"required":[]},"examples":{"depth_4_card_shadow":{"summary":"Depth 4 card shadow","value":{"mode":"depth","depth":"4","color":"#000000","offsetX":"0","offsetY":"2","opacity":"23","radius":"2.6","elevation":"4","format":"stylesheet"}},"deep_modal_shadow_plain_object":{"summary":"Deep modal shadow, plain object","value":{"mode":"depth","depth":"16","color":"#1b2a4a","offsetX":"0","offsetY":"2","opacity":"23","radius":"2.6","elevation":"4","format":"object"}},"custom_values_as_boxshadow":{"summary":"Custom values as boxShadow","value":{"mode":"manual","depth":"4","color":"#3b82f6","offsetX":"-4","offsetY":"6","opacity":"35","radius":"12","elevation":"9","format":"boxshadow"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"depth_4_card_shadow":{"summary":"Depth 4 card shadow","value":{"tool":"react-native-shadow-generator","tool_version":"1.0.2","outputs":{"code":"import { StyleSheet } from \"react-native\";\n\nconst styles = StyleSheet.create({\n  shadow: {\n    shadowColor: \"#000000\",\n    shadowOffset: { width: 0, height: 2 },\n    shadowOpacity: 0.23,\n    shadowRadius: 2.62,\n    elevation: 4,\n  },\n});","previewHtml":"<div style=\"padding: 40px 20px; background: #f1f3f5; border-radius: 10px;\">\n  <div style=\"width: 160px; height: 100px; margin: 0 auto; background: #ffffff; border-radius: 12px; box-shadow: 0px 2px 2.62px rgba(0, 0, 0, 0.23);\"></div>\n</div>"},"credits_used":5,"credits_remaining":null}},"deep_modal_shadow_plain_object":{"summary":"Deep modal shadow, plain object","value":{"tool":"react-native-shadow-generator","tool_version":"1.0.2","outputs":{"code":"const shadow = {\n  shadowColor: \"#1b2a4a\",\n  shadowOffset: { width: 0, height: 8 },\n  shadowOpacity: 0.44,\n  shadowRadius: 10.32,\n  elevation: 16,\n};","previewHtml":"<div style=\"padding: 40px 20px; background: #f1f3f5; border-radius: 10px;\">\n  <div style=\"width: 160px; height: 100px; margin: 0 auto; background: #ffffff; border-radius: 12px; box-shadow: 0px 8px 10.32px rgba(27, 42, 74, 0.44);\"></div>\n</div>"},"credits_used":5,"credits_remaining":null}},"custom_values_as_boxshadow":{"summary":"Custom values as boxShadow","value":{"tool":"react-native-shadow-generator","tool_version":"1.0.2","outputs":{"code":"// React Native 0.76+ (New Architecture) — one prop for both platforms.\nconst shadow = {\n  boxShadow: \"-4px 6px 12px rgba(59, 130, 246, 0.35)\",\n};","previewHtml":"<div style=\"padding: 40px 20px; background: #f1f3f5; border-radius: 10px;\">\n  <div style=\"width: 160px; height: 100px; margin: 0 auto; background: #ffffff; border-radius: 12px; box-shadow: -4px 6px 12px rgba(59, 130, 246, 0.35);\"></div>\n</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"code":{"type":"string","description":"React Native Style"},"previewHtml":{"type":"string","description":"Web Equivalent (HTML)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/readme-badge-generator":{"post":{"operationId":"run_readme_badge_generator","summary":"README Badge Generator","tags":["Generators"],"description":"Generate shields.io-style SVG badges for GitHub READMEs — pick a preset (version, license, build, coverage...) or fully customize the label, message, colors and style, and get SVG, Markdown, HTML and a data-URL to copy.\n\n[Try README Badge Generator in your browser →](https://iotools.cloud/tool/readme-badge-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"badgeTemplate":{"enum":["custom","version","license","build","coverage","downloads","stars","love"],"description":"Preset"},"badgeLabel":{"type":"string","description":"Label"},"badgeMessage":{"type":"string","description":"Message"},"labelColor":{"type":"string","description":"Label Color"},"messageColorPreset":{"enum":["#4c1","#97ca00","#a4a61d","#dfb317","#fe7d37","#e05d44","#007ec6","#9f9f9f","#464aff","custom"],"description":"Message Color"},"messageColor":{"type":"string","description":"Custom Color"},"badgeStyle":{"enum":["flat","flat-square","for-the-badge","plastic"],"description":"Style"}},"required":[]},"examples":{"build_passing_flat":{"summary":"Build passing (flat)","value":{"badgeTemplate":"custom","badgeLabel":"build","badgeMessage":"passing","labelColor":"#555555","messageColorPreset":"#4c1","messageColor":"#4c1","badgeStyle":"flat"}},"license_mit_for_the_badge":{"summary":"License MIT (for-the-badge)","value":{"badgeTemplate":"custom","badgeLabel":"license","badgeMessage":"MIT","labelColor":"#555555","messageColorPreset":"#97ca00","messageColor":"#4c1","badgeStyle":"for-the-badge"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"build_passing_flat":{"summary":"Build passing (flat)","value":{"tool":"readme-badge-generator","tool_version":"1.0.2","outputs":{"badgeUrl":"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2220%22%20role%3D%22img%22%20aria-label%3D%22build%3A%20passing%22%3E%3Ctitle%3Ebuild%3A%20passing%3C%2Ftitle%3E%3Cfilter%20id%3D%22blur%22%3E%3CfeGaussianBlur%20stdDeviation%3D%2216%22%2F%3E%3C%2Ffilter%3E%3ClinearGradient%20id%3D%22s%22%20x2%3D%220%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23bbb%22%20stop-opacity%3D%22.1%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.1%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22r%22%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20rx%3D%223%22%2F%3E%3C%2FclipPath%3E%3Cg%20clip-path%3D%22url(%23r)%22%3E%3Crect%20width%3D%2237%22%20height%3D%2220%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2237%22%20width%3D%2251%22%20height%3D%2220%22%20fill%3D%22%234c1%22%2F%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20fill%3D%22url(%23s)%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22110%22%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22195%22%20y%3D%22140%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22615%22%20y%3D%22140%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E","badgeMarkdown":"![build: passing](data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2220%22%20role%3D%22img%22%20aria-label%3D%22build%3A%20passing%22%3E%3Ctitle%3Ebuild%3A%20passing%3C%2Ftitle%3E%3Cfilter%20id%3D%22blur%22%3E%3CfeGaussianBlur%20stdDeviation%3D%2216%22%2F%3E%3C%2Ffilter%3E%3ClinearGradient%20id%3D%22s%22%20x2%3D%220%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23bbb%22%20stop-opacity%3D%22.1%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.1%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22r%22%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20rx%3D%223%22%2F%3E%3C%2FclipPath%3E%3Cg%20clip-path%3D%22url(%23r)%22%3E%3Crect%20width%3D%2237%22%20height%3D%2220%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2237%22%20width%3D%2251%22%20height%3D%2220%22%20fill%3D%22%234c1%22%2F%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20fill%3D%22url(%23s)%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22110%22%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22195%22%20y%3D%22140%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22615%22%20y%3D%22140%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E)","badgeHtml":"<img src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2288%22%20height%3D%2220%22%20role%3D%22img%22%20aria-label%3D%22build%3A%20passing%22%3E%3Ctitle%3Ebuild%3A%20passing%3C%2Ftitle%3E%3Cfilter%20id%3D%22blur%22%3E%3CfeGaussianBlur%20stdDeviation%3D%2216%22%2F%3E%3C%2Ffilter%3E%3ClinearGradient%20id%3D%22s%22%20x2%3D%220%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22%23bbb%22%20stop-opacity%3D%22.1%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-opacity%3D%22.1%22%2F%3E%3C%2FlinearGradient%3E%3CclipPath%20id%3D%22r%22%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20rx%3D%223%22%2F%3E%3C%2FclipPath%3E%3Cg%20clip-path%3D%22url(%23r)%22%3E%3Crect%20width%3D%2237%22%20height%3D%2220%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2237%22%20width%3D%2251%22%20height%3D%2220%22%20fill%3D%22%234c1%22%2F%3E%3Crect%20width%3D%2288%22%20height%3D%2220%22%20fill%3D%22url(%23s)%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22110%22%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3Ctext%20x%3D%22195%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22195%22%20y%3D%22140%22%20textLength%3D%22270%22%3Ebuild%3C%2Ftext%3E%3C%2Fg%3E%3Cg%20transform%3D%22scale(.1)%22%3E%3Cg%20aria-hidden%3D%22true%22%20fill%3D%22%23010101%22%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.8%22%20filter%3D%22url(%23blur)%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3Ctext%20x%3D%22615%22%20y%3D%22150%22%20fill-opacity%3D%22.3%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3Ctext%20x%3D%22615%22%20y%3D%22140%22%20textLength%3D%22410%22%3Epassing%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\" alt=\"build: passing\">","badgeSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"88\" height=\"20\" role=\"img\" aria-label=\"build: passing\"><title>build: passing</title><filter id=\"blur\"><feGaussianBlur stdDeviation=\"16\"/></filter><linearGradient id=\"s\" x2=\"0\" y2=\"100%\"><stop offset=\"0\" stop-color=\"#bbb\" stop-opacity=\".1\"/><stop offset=\"1\" stop-opacity=\".1\"/></linearGradient><clipPath id=\"r\"><rect width=\"88\" height=\"20\" rx=\"3\"/></clipPath><g clip-path=\"url(#r)\"><rect width=\"37\" height=\"20\" fill=\"#555555\"/><rect x=\"37\" width=\"51\" height=\"20\" fill=\"#4c1\"/><rect width=\"88\" height=\"20\" fill=\"url(#s)\"/></g><g fill=\"#fff\" text-anchor=\"middle\" font-family=\"Verdana,Geneva,DejaVu Sans,sans-serif\" text-rendering=\"geometricPrecision\" font-size=\"110\"><g transform=\"scale(.1)\"><g aria-hidden=\"true\" fill=\"#010101\"><text x=\"195\" y=\"150\" fill-opacity=\".8\" filter=\"url(#blur)\" textLength=\"270\">build</text><text x=\"195\" y=\"150\" fill-opacity=\".3\" textLength=\"270\">build</text></g><text x=\"195\" y=\"140\" textLength=\"270\">build</text></g><g transform=\"scale(.1)\"><g aria-hidden=\"true\" fill=\"#010101\"><text x=\"615\" y=\"150\" fill-opacity=\".8\" filter=\"url(#blur)\" textLength=\"410\">passing</text><text x=\"615\" y=\"150\" fill-opacity=\".3\" textLength=\"410\">passing</text></g><text x=\"615\" y=\"140\" textLength=\"410\">passing</text></g></g></svg>"},"credits_used":5,"credits_remaining":null}},"license_mit_for_the_badge":{"summary":"License MIT (for-the-badge)","value":{"tool":"readme-badge-generator","tool_version":"1.0.2","outputs":{"badgeUrl":"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22124.5%22%20height%3D%2228%22%20role%3D%22img%22%20aria-label%3D%22LICENSE%3A%20MIT%22%3E%3Ctitle%3ELICENSE%3A%20MIT%3C%2Ftitle%3E%3Cg%20shape-rendering%3D%22crispEdges%22%3E%3Crect%20width%3D%2275.75%22%20height%3D%2228%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2275.75%22%20width%3D%2248.75%22%20height%3D%2228%22%20fill%3D%22%2397ca00%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22100%22%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%22378.75%22%20y%3D%22175%22%20textLength%3D%22517.5%22%3ELICENSE%3C%2Ftext%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%221001.25%22%20y%3D%22175%22%20textLength%3D%22247.5%22%20font-weight%3D%22bold%22%3EMIT%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E","badgeMarkdown":"![license: MIT](data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22124.5%22%20height%3D%2228%22%20role%3D%22img%22%20aria-label%3D%22LICENSE%3A%20MIT%22%3E%3Ctitle%3ELICENSE%3A%20MIT%3C%2Ftitle%3E%3Cg%20shape-rendering%3D%22crispEdges%22%3E%3Crect%20width%3D%2275.75%22%20height%3D%2228%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2275.75%22%20width%3D%2248.75%22%20height%3D%2228%22%20fill%3D%22%2397ca00%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22100%22%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%22378.75%22%20y%3D%22175%22%20textLength%3D%22517.5%22%3ELICENSE%3C%2Ftext%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%221001.25%22%20y%3D%22175%22%20textLength%3D%22247.5%22%20font-weight%3D%22bold%22%3EMIT%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E)","badgeHtml":"<img src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22124.5%22%20height%3D%2228%22%20role%3D%22img%22%20aria-label%3D%22LICENSE%3A%20MIT%22%3E%3Ctitle%3ELICENSE%3A%20MIT%3C%2Ftitle%3E%3Cg%20shape-rendering%3D%22crispEdges%22%3E%3Crect%20width%3D%2275.75%22%20height%3D%2228%22%20fill%3D%22%23555555%22%2F%3E%3Crect%20x%3D%2275.75%22%20width%3D%2248.75%22%20height%3D%2228%22%20fill%3D%22%2397ca00%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23fff%22%20text-anchor%3D%22middle%22%20font-family%3D%22Verdana%2CGeneva%2CDejaVu%20Sans%2Csans-serif%22%20text-rendering%3D%22geometricPrecision%22%20font-size%3D%22100%22%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%22378.75%22%20y%3D%22175%22%20textLength%3D%22517.5%22%3ELICENSE%3C%2Ftext%3E%3Ctext%20transform%3D%22scale(.1)%22%20x%3D%221001.25%22%20y%3D%22175%22%20textLength%3D%22247.5%22%20font-weight%3D%22bold%22%3EMIT%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fsvg%3E\" alt=\"license: MIT\">","badgeSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"124.5\" height=\"28\" role=\"img\" aria-label=\"LICENSE: MIT\"><title>LICENSE: MIT</title><g shape-rendering=\"crispEdges\"><rect width=\"75.75\" height=\"28\" fill=\"#555555\"/><rect x=\"75.75\" width=\"48.75\" height=\"28\" fill=\"#97ca00\"/></g><g fill=\"#fff\" text-anchor=\"middle\" font-family=\"Verdana,Geneva,DejaVu Sans,sans-serif\" text-rendering=\"geometricPrecision\" font-size=\"100\"><text transform=\"scale(.1)\" x=\"378.75\" y=\"175\" textLength=\"517.5\">LICENSE</text><text transform=\"scale(.1)\" x=\"1001.25\" y=\"175\" textLength=\"247.5\" font-weight=\"bold\">MIT</text></g></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"badgeUrl":{"type":"string","description":"Data URL"},"badgeMarkdown":{"type":"string","description":"Markdown"},"badgeHtml":{"type":"string","description":"HTML"},"badgeSvg":{"type":"string","description":"SVG Source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/regex-sample-generator":{"post":{"operationId":"run_regex_sample_generator","summary":"Regex Sample String Generator","tags":["Generators"],"description":"Generate random strings that actually match a JavaScript regular expression, plus near-miss counterexamples that almost match but don't — useful for test fixtures, validating a pattern, or just seeing what it accepts.\n\n[Try Regex Sample String Generator in your browser →](https://iotools.cloud/tool/regex-sample-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"pattern":{"type":"string","description":"Regular Expression Pattern"},"flagIgnoreCase":{"type":"boolean","description":"i — Ignore case"},"flagMultiline":{"type":"boolean","description":"m — Multiline (^ and $ match line boundaries)"},"flagDotAll":{"type":"boolean","description":"s — Dot matches newline"},"flagUnicode":{"type":"boolean","description":"u — Unicode mode"},"count":{"type":"number","description":"Number of samples","minimum":1,"maximum":20},"maxRepeat":{"type":"number","description":"Max repeats for open-ended quantifiers (*, +, {n,})","minimum":1,"maximum":20},"includeCounterexamples":{"type":"boolean","description":"Also show near-miss counterexamples"},"seed":{"type":"string","description":"Seed (optional)"}},"required":["pattern"]},"examples":{"us_style_zip_4_pattern_seeded_reproducible":{"summary":"US-style ZIP+4 pattern, seeded — reproducible","value":{"pattern":"^\\d{5}-\\d{4}$","count":"3","maxRepeat":"6","includeCounterexamples":"true","seed":"iotools"}},"email_like_pattern_with_alternation":{"summary":"Email-like pattern with alternation","value":{"pattern":"[a-z]+(\\.[a-z]+)?@(gmail|yahoo|outlook)\\.com","count":"5","maxRepeat":"8","includeCounterexamples":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"us_style_zip_4_pattern_seeded_reproducible":{"summary":"US-style ZIP+4 pattern, seeded — reproducible","value":{"tool":"regex-sample-generator","tool_version":"1.0.2","outputs":{"summary":"Generated 3 of 3 requested samples, plus 3 near-miss counterexamples.","samples":[{"index":"1","sample":"29068-0647"},{"index":"2","sample":"55137-6123"},{"index":"3","sample":"67562-2157"}],"counterexamples":[{"index":"1","near-miss":"29068-0647\"","how-it-differs-from-a-match":"one extra character appended"},{"index":"2","near-miss":"55137-6123V","how-it-differs-from-a-match":"one extra character appended"},{"index":"3","near-miss":"67562-21g7","how-it-differs-from-a-match":"character 9 swapped for \"g\""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"samples":{"type":"array","description":"Matching Samples","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"sample":{"type":"string","description":"Sample"}}},"x-iotools-columns":["index","sample"]},"counterexamples":{"type":"array","description":"Near-Miss Counterexamples","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"near-miss":{"type":"string","description":"Near-miss"},"how-it-differs-from-a-match":{"type":"string","description":"How it differs from a match"}}},"x-iotools-columns":["index","near-miss","how-it-differs-from-a-match"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/responsive-image-srcset-sizes-generator":{"post":{"operationId":"run_responsive_image_srcset_sizes_generator","summary":"Responsive Image srcset/sizes Generator","tags":["Generators"],"description":"Generate the srcset and sizes attributes for a responsive &lt;img> tag from a base filename/URL pattern and a list of target widths — plus a ready-to-paste &lt;img> tag with loading=\"lazy\" and decoding=\"async\".\n\n[Try Responsive Image srcset/sizes Generator in your browser →](https://iotools.cloud/tool/responsive-image-srcset-sizes-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"imageUrl":{"type":"string","description":"Image Filename or URL Pattern"},"widths":{"type":"string","description":"Target Widths (px)"},"sizes":{"type":"string","description":"sizes Attribute"},"alt":{"type":"string","description":"Alt Text"},"lazy":{"type":"boolean","description":"Add loading=\"lazy\" and decoding=\"async\""}},"required":["imageUrl","widths"]},"examples":{"placeholder_pattern_with_breakpoints":{"summary":"Placeholder pattern with breakpoints","value":{"imageUrl":"/images/photo-{w}.jpg","widths":"320, 640, 960, 1280, 1920","sizes":"(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw","alt":"A mountain landscape at sunrise","lazy":"true"}},"extension_insertion_naming_no_lazy_loading":{"summary":"Extension-insertion naming, no lazy loading","value":{"imageUrl":"photo.jpg","widths":"400, 800","sizes":"","alt":"","lazy":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"placeholder_pattern_with_breakpoints":{"summary":"Placeholder pattern with breakpoints","value":{"tool":"responsive-image-srcset-sizes-generator","tool_version":"1.0.2","outputs":{"srcset":"/images/photo-320.jpg 320w,\n/images/photo-640.jpg 640w,\n/images/photo-960.jpg 960w,\n/images/photo-1280.jpg 1280w,\n/images/photo-1920.jpg 1920w","sizesOutput":"(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw","imgTag":"<img\n  src=\"/images/photo-1920.jpg\"\n  srcset=\"/images/photo-320.jpg 320w,\n/images/photo-640.jpg 640w,\n/images/photo-960.jpg 960w,\n/images/photo-1280.jpg 1280w,\n/images/photo-1920.jpg 1920w\"\n  sizes=\"(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 33vw\"\n  alt=\"A mountain landscape at sunrise\"\n  loading=\"lazy\"\n  decoding=\"async\"\n/>"},"credits_used":5,"credits_remaining":null}},"extension_insertion_naming_no_lazy_loading":{"summary":"Extension-insertion naming, no lazy loading","value":{"tool":"responsive-image-srcset-sizes-generator","tool_version":"1.0.2","outputs":{"srcset":"photo-400.jpg 400w,\nphoto-800.jpg 800w","sizesOutput":"100vw","imgTag":"<img\n  src=\"photo-800.jpg\"\n  srcset=\"photo-400.jpg 400w,\nphoto-800.jpg 800w\"\n  sizes=\"100vw\"\n/>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"srcset":{"type":"string","description":"srcset Attribute Value"},"sizesOutput":{"type":"string","description":"sizes Attribute Value"},"imgTag":{"type":"string","description":"Complete &lt;img> Tag"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/review-generator":{"post":{"operationId":"run_review_generator","summary":"Review Generator","tags":["Generators"],"description":"Generate realistic-looking placeholder product reviews — pick a category, rating distribution, and length, then export as plain text, JSON, CSV, or Markdown. For mockups, UI testing, and sample datasets.\n\n[Try Review Generator in your browser →](https://iotools.cloud/tool/review-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"productName":{"type":"string","description":"Product Name"},"category":{"enum":["general","electronics","home","books","clothing","food","health","sports","toys","software"],"description":"Product Category"},"ratingDist":{"enum":["positive","mixed","negative","all5","specific"],"description":"Rating Distribution"},"specificRating":{"type":"number","description":"Star Rating","minimum":1,"maximum":5},"reviewLength":{"enum":["mixed","short","medium","long"],"description":"Review Length"},"numReviews":{"type":"number","description":"Number of Reviews","minimum":1,"maximum":50},"includeNames":{"type":"boolean","description":"Include Reviewer Names"},"includeDates":{"type":"boolean","description":"Include Dates"},"includeVerified":{"type":"boolean","description":"Include \"Verified Purchase\" Badge"},"outputFormat":{"enum":["text","json","csv","markdown"],"description":"Output Format"}},"required":[]},"examples":{"5_mostly_positive_reviews_for_wireless_earbuds":{"summary":"5 mostly-positive reviews for wireless earbuds","value":{"productName":"Wireless Earbuds","category":"electronics","ratingDist":"positive","specificRating":"4","reviewLength":"mixed","numReviews":"5","includeNames":"true","includeDates":"true","includeVerified":"true","outputFormat":"text"}},"3_mixed_reviews_as_json":{"summary":"3 mixed reviews as JSON","value":{"productName":"Yoga Mat","category":"sports","ratingDist":"mixed","specificRating":"4","reviewLength":"short","numReviews":"3","includeNames":"true","includeDates":"false","includeVerified":"true","outputFormat":"json"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"reviewsOutput":{"type":"string","description":"Generated Reviews"},"summaryStats":{"type":"array","description":"Summary Statistics","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"ratingDistribution":{"type":"array","description":"Rating Distribution","items":{"type":"object","properties":{"rating":{"type":"string","description":"Rating"},"count":{"type":"string","description":"Count"},"share":{"type":"string","description":"Share"}}},"x-iotools-columns":["rating","count","share"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ripemd-160-hash-generator":{"post":{"operationId":"run_ripemd_160_hash_generator","summary":"RIPEMD-160 Hash Generator","tags":["Generators"],"description":"Generate the RIPEMD-160 hash of any text, in hexadecimal or base64, and optionally verify it against an expected hash.\n\n[Try RIPEMD-160 Hash Generator in your browser →](https://iotools.cloud/tool/ripemd-160-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message to hash"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"ripemd_160_of_abc":{"summary":"RIPEMD-160 of \"abc\"","value":{"inputText":"abc","outputFormat":"hex","expectedHash":""}},"ripemd_160_of_the_empty_string":{"summary":"RIPEMD-160 of the empty string","value":{"inputText":"","outputFormat":"hex","expectedHash":""}},"base64_output":{"summary":"Base64 output","value":{"inputText":"The quick brown fox jumps over the lazy dog","outputFormat":"base64","expectedHash":""}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"inputText":"abc","outputFormat":"hex","expectedHash":"8EB208F7E05D987A9B044A8E98C6B087F15A0BFC"}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"inputText":"abc","outputFormat":"hex","expectedHash":"deadbeef"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ripemd_160_of_abc":{"summary":"RIPEMD-160 of \"abc\"","value":{"tool":"ripemd-160-hash-generator","tool_version":"1.0.2","outputs":{"output":"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc","match":""},"credits_used":5,"credits_remaining":null}},"ripemd_160_of_the_empty_string":{"summary":"RIPEMD-160 of the empty string","value":{"tool":"ripemd-160-hash-generator","tool_version":"1.0.2","outputs":{"output":"9c1185a5c5e9fc54612808977ee8f548b2258d31","match":""},"credits_used":5,"credits_remaining":null}},"base64_output":{"summary":"Base64 output","value":{"tool":"ripemd-160-hash-generator","tool_version":"1.0.2","outputs":{"output":"N/My9o23e9nX7dSWlXGtZxz53Ts=","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"tool":"ripemd-160-hash-generator","tool_version":"1.0.2","outputs":{"output":"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc","match":"Match"},"credits_used":5,"credits_remaining":null}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"tool":"ripemd-160-hash-generator","tool_version":"1.0.2","outputs":{"output":"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc","match":"No match"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"RIPEMD-160 hash"},"match":{"type":"string","description":"Matches expected hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/robots-txt-generator":{"post":{"operationId":"run_robots_txt_generator","summary":"Robots.txt Generator","tags":["Generators"],"description":"Generate a valid robots.txt file: a default rule group for all crawlers, an optional rule group for one specific bot (Googlebot, GPTBot, etc.), Crawl-delay, and one or more Sitemap URLs. Produces spec-correct output ready to copy or download.\n\n[Try Robots.txt Generator in your browser →](https://iotools.cloud/tool/robots-txt-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"comment":{"type":"string","description":"Header Comment (optional)"},"defaultDisallow":{"type":"string","description":"Disallow paths"},"defaultAllow":{"type":"string","description":"Allow paths (optional)"},"defaultCrawlDelay":{"type":"number","description":"Crawl-delay (seconds, optional)","minimum":0},"botAgent":{"enum":["","Googlebot","Googlebot-Image","Bingbot","YandexBot","DuckDuckBot","Baiduspider","GPTBot","ChatGPT-User","Google-Extended","CCBot","anthropic-ai","ClaudeBot","PerplexityBot","Twitterbot","AhrefsBot","SemrushBot","Applebot","__custom__"],"description":"User-agent"},"botAgentCustom":{"type":"string","description":"Custom user-agent"},"botDisallow":{"type":"string","description":"Disallow paths"},"botAllow":{"type":"string","description":"Allow paths (optional)"},"botCrawlDelay":{"type":"number","description":"Crawl-delay (seconds, optional)","minimum":0},"sitemapUrls":{"type":"string","description":"Sitemap URL(s)"}},"required":[]},"examples":{"default_only_allow_everything":{"summary":"Default only — allow everything","value":{}},"block_admin_area_allow_googlebot_everywhere_add_a_sitemap":{"summary":"Block admin area, allow Googlebot everywhere, add a sitemap","value":{"comment":"Managed by Example Corp","defaultDisallow":"/admin/\n/private/","defaultAllow":"/admin/public/","botAgent":"Googlebot","botAllow":"/","botCrawlDelay":"5","sitemapUrls":"https://example.com/sitemap.xml"}},"block_ai_crawler_entirely_custom_user_agent_multiple_sitemaps":{"summary":"Block AI crawler entirely, custom user-agent, multiple sitemaps","value":{"defaultDisallow":"/cart/\n/checkout/","botAgent":"__custom__","botAgentCustom":"GPTBot","botDisallow":"/","sitemapUrls":"https://example.com/sitemap.xml\nhttps://example.com/product-sitemap.xml"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_only_allow_everything":{"summary":"Default only — allow everything","value":{"tool":"robots-txt-generator","tool_version":"1.0.2","outputs":{"output":"User-agent: *\nDisallow:\n"},"credits_used":5,"credits_remaining":null}},"block_admin_area_allow_googlebot_everywhere_add_a_sitemap":{"summary":"Block admin area, allow Googlebot everywhere, add a sitemap","value":{"tool":"robots-txt-generator","tool_version":"1.0.2","outputs":{"output":"# Managed by Example Corp\n\nUser-agent: *\nDisallow: /admin/\nDisallow: /private/\nAllow: /admin/public/\n\nUser-agent: Googlebot\nAllow: /\nCrawl-delay: 5\n\nSitemap: https://example.com/sitemap.xml\n"},"credits_used":5,"credits_remaining":null}},"block_ai_crawler_entirely_custom_user_agent_multiple_sitemaps":{"summary":"Block AI crawler entirely, custom user-agent, multiple sitemaps","value":{"tool":"robots-txt-generator","tool_version":"1.0.2","outputs":{"output":"User-agent: *\nDisallow: /cart/\nDisallow: /checkout/\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml\nSitemap: https://example.com/product-sitemap.xml\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated robots.txt"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/routing-number-generator":{"post":{"operationId":"run_routing_number_generator","summary":"Routing Number Generator","tags":["Generators"],"description":"Generate random, checksum-valid fake ABA bank routing numbers for testing and development. Pick how many to create and an optional Federal Reserve district. For test data only — never real bank accounts.\n\n[Try Routing Number Generator in your browser →](https://iotools.cloud/tool/routing-number-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of routing numbers","minimum":1,"maximum":50},"district":{"enum":["random","01","02","03","04","05","06","07","08","09","10","11","12"],"description":"Federal Reserve district"}},"required":[]},"examples":{"10_routing_numbers_any_district":{"summary":"10 routing numbers, any district","value":{"count":"10","district":"random"}},"5_new_york_02_routing_numbers":{"summary":"5 New York (02) routing numbers","value":{"count":"5","district":"02"}},"3_san_francisco_12_routing_numbers":{"summary":"3 San Francisco (12) routing numbers","value":{"count":"3","district":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"routingNumbers":{"type":"array","description":"Generated routing numbers","items":{"type":"object","properties":{"routing-number":{"type":"string","description":"Routing number"},"federal-reserve-district":{"type":"string","description":"Federal Reserve district"}}},"x-iotools-columns":["routing-number","federal-reserve-district"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rss-atom-feed-generator":{"post":{"operationId":"run_rss_atom_feed_generator","summary":"RSS / Atom Feed Generator","tags":["Generators"],"description":"Generate a valid RSS 2.0 or Atom 1.0 feed from feed metadata and a simple key:value item list. Handles XML escaping, RFC 822 / RFC 3339 dates, categories, GUIDs and CDATA content — ready to serve or paste into a feed reader. Runs entirely in your browser.\n\n[Try RSS / Atom Feed Generator in your browser →](https://iotools.cloud/tool/rss-atom-feed-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"feedType":{"enum":["rss","atom"],"description":"Feed Type"},"feedTitle":{"type":"string","description":"Title"},"feedLink":{"type":"string","description":"Site URL"},"feedDescription":{"type":"string","description":"Description"},"feedSelfUrl":{"type":"string","description":"Self URL"},"feedLanguage":{"type":"string","description":"Language"},"feedCopyright":{"type":"string","description":"Copyright"},"feedId":{"type":"string","description":"Feed ID"},"feedAuthorName":{"type":"string","description":"Author Name"},"feedAuthorEmail":{"type":"string","description":"Author Email"},"feedUpdatedNow":{"type":"boolean","description":"Use current time as build/updated timestamp"},"itemsInput":{"type":"string","description":"Items"}},"required":["feedTitle"]},"examples":{"rss_2_0_blog_feed":{"summary":"RSS 2.0 blog feed","value":{"feedType":"rss","feedTitle":"My Awesome Blog","feedLink":"https://example.com/","feedDescription":"Stories, tutorials and updates from the team.","feedSelfUrl":"https://example.com/feed.xml","feedLanguage":"en-us","feedCopyright":"","feedUpdatedNow":"","itemsInput":"title: Welcome to the Blog\nlink: https://example.com/posts/welcome\ndescription: An introduction to what this blog is about.\npubDate: 2025-01-15 10:30:00\nguid: https://example.com/posts/welcome\nauthor: jane@example.com\ncategory: announcements, news\n---\ntitle: How RSS Still Matters\nlink: https://example.com/posts/rss-matters\ndescription: Why feeds are quietly thriving.\npubDate: 2025-02-03 09:00:00\nguid: https://example.com/posts/rss-matters\nauthor: jane@example.com\ncategory: opinion"}},"atom_1_0_feed_with_author":{"summary":"Atom 1.0 feed with author","value":{"feedType":"atom","feedTitle":"My Awesome Blog","feedLink":"https://example.com/","feedDescription":"Stories, tutorials and updates from the team.","feedSelfUrl":"https://example.com/atom.xml","feedId":"https://example.com/","feedAuthorName":"Jane Doe","feedAuthorEmail":"jane@example.com","feedUpdatedNow":"","itemsInput":"title: Welcome to the Blog\nlink: https://example.com/posts/welcome\nsummary: An introduction to what this blog is about.\nupdated: 2025-01-15 10:30:00\npublished: 2025-01-15 10:30:00\nid: https://example.com/posts/welcome\ncategory: announcements"}},"rss_with_html_content_and_entity_escaping":{"summary":"RSS with HTML content and entity escaping","value":{"feedType":"rss","feedTitle":"Tips & Tricks","feedLink":"https://example.com/","feedDescription":"Short how-tos for developers.","feedSelfUrl":"","feedLanguage":"","feedCopyright":"","feedUpdatedNow":"","itemsInput":"title: Using <script> tags safely\nlink: https://example.com/posts/scripts\ndescription: Escaping & encoding user input in HTML.\ncontent: <p>Always escape <strong>&amp;</strong>, &lt;, &gt; in markup.</p>\npubDate: 2025-03-01 08:00:00\nguid: post-scripts-001"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rss_2_0_blog_feed":{"summary":"RSS 2.0 blog feed","value":{"tool":"rss-atom-feed-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n  <channel>\n    <title>My Awesome Blog</title>\n    <link>https://example.com/</link>\n    <description>Stories, tutorials and updates from the team.</description>\n    <language>en-us</language>\n    <atom:link href=\"https://example.com/feed.xml\" rel=\"self\" type=\"application/rss+xml\" />\n    <generator>iotools.cloud RSS / Atom Feed Generator</generator>\n    <item>\n      <title>Welcome to the Blog</title>\n      <link>https://example.com/posts/welcome</link>\n      <description>An introduction to what this blog is about.</description>\n      <author>jane@example.com</author>\n      <category>announcements</category>\n      <category>news</category>\n      <guid isPermaLink=\"true\">https://example.com/posts/welcome</guid>\n      <pubDate>Wed, 15 Jan 2025 10:30:00 +0000</pubDate>\n    </item>\n    <item>\n      <title>How RSS Still Matters</title>\n      <link>https://example.com/posts/rss-matters</link>\n      <description>Why feeds are quietly thriving.</description>\n      <author>jane@example.com</author>\n      <category>opinion</category>\n      <guid isPermaLink=\"true\">https://example.com/posts/rss-matters</guid>\n      <pubDate>Mon, 03 Feb 2025 09:00:00 +0000</pubDate>\n    </item>\n  </channel>\n</rss>"},"credits_used":5,"credits_remaining":null}},"atom_1_0_feed_with_author":{"summary":"Atom 1.0 feed with author","value":{"tool":"rss-atom-feed-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<feed xmlns=\"http://www.w3.org/2005/Atom\">\n  <title>My Awesome Blog</title>\n  <subtitle>Stories, tutorials and updates from the team.</subtitle>\n  <id>https://example.com/</id>\n  <link href=\"https://example.com/\" rel=\"alternate\" type=\"text/html\" />\n  <link href=\"https://example.com/atom.xml\" rel=\"self\" type=\"application/atom+xml\" />\n  <updated>2025-01-15T10:30:00Z</updated>\n  <author>\n    <name>Jane Doe</name>\n    <email>jane@example.com</email>\n  </author>\n  <generator>iotools.cloud RSS / Atom Feed Generator</generator>\n  <entry>\n    <title>Welcome to the Blog</title>\n    <id>https://example.com/posts/welcome</id>\n    <link href=\"https://example.com/posts/welcome\" rel=\"alternate\" type=\"text/html\" />\n    <updated>2025-01-15T10:30:00Z</updated>\n    <published>2025-01-15T10:30:00Z</published>\n    <category term=\"announcements\" />\n    <summary type=\"html\">An introduction to what this blog is about.</summary>\n  </entry>\n</feed>"},"credits_used":5,"credits_remaining":null}},"rss_with_html_content_and_entity_escaping":{"summary":"RSS with HTML content and entity escaping","value":{"tool":"rss-atom-feed-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n  <channel>\n    <title>Tips &amp; Tricks</title>\n    <link>https://example.com/</link>\n    <description>Short how-tos for developers.</description>\n    <generator>iotools.cloud RSS / Atom Feed Generator</generator>\n    <item>\n      <title>Using &lt;script&gt; tags safely</title>\n      <link>https://example.com/posts/scripts</link>\n      <description>Escaping &amp; encoding user input in HTML.</description>\n      <content:encoded><![CDATA[<p>Always escape <strong>&amp;</strong>, &lt;, &gt; in markup.</p>]]></content:encoded>\n      <guid isPermaLink=\"false\">post-scripts-001</guid>\n      <pubDate>Sat, 01 Mar 2025 08:00:00 +0000</pubDate>\n    </item>\n  </channel>\n</rss>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Feed XML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sitemap-xml-generator":{"post":{"operationId":"run_sitemap_xml_generator","summary":"Sitemap XML Generator","tags":["Generators"],"description":"Generate a sitemaps.org-compliant XML sitemap (or sitemap index) from a list of URLs, one per line. Supports per-URL lastmod/changefreq/priority via an optional CSV header row, plus global defaults, with proper XML escaping of query strings and special characters. Runs entirely in your browser.\n\n[Try Sitemap XML Generator in your browser →](https://iotools.cloud/tool/sitemap-xml-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["sitemap","sitemapindex"],"description":"Mode"},"urls":{"type":"string","description":"URLs"},"indexUrls":{"type":"string","description":"Sitemap URLs"},"defaultChangefreq":{"enum":["","always","hourly","daily","weekly","monthly","yearly","never"],"description":"Change Frequency"},"defaultPriority":{"enum":["","1.0","0.9","0.8","0.7","0.6","0.5","0.4","0.3","0.2","0.1","0.0"],"description":"Priority"},"autoLastmod":{"type":"boolean","description":"Use today's date as lastmod for URLs without one"},"autoLastmodIndex":{"type":"boolean","description":"Use today's date as lastmod for every sitemap"}},"required":[]},"examples":{"plain_url_list_with_global_defaults":{"summary":"Plain URL list with global defaults","value":{"mode":"sitemap","urls":"https://example.com/\nhttps://example.com/about\nhttps://example.com/contact","defaultChangefreq":"weekly","defaultPriority":"0.8","autoLastmod":""}},"csv_per_url_overrides_with_a_query_string_url_xml_escaping":{"summary":"CSV per-URL overrides with a query-string URL (XML escaping)","value":{"mode":"sitemap","urls":"url,lastmod,changefreq,priority\nhttps://example.com/,2025-01-15,daily,1.0\nhttps://example.com/search?a=1&b=2,,weekly,\nhttps://example.com/about,,,0.5","defaultChangefreq":"monthly","defaultPriority":"0.5","autoLastmod":""}},"sitemap_index":{"summary":"Sitemap index","value":{"mode":"sitemapindex","indexUrls":"https://example.com/sitemap-posts.xml\nhttps://example.com/sitemap-pages.xml\nhttps://example.com/sitemap-products.xml","autoLastmodIndex":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"plain_url_list_with_global_defaults":{"summary":"Plain URL list with global defaults","value":{"tool":"sitemap-xml-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://example.com/</loc>\n    <changefreq>weekly</changefreq>\n    <priority>0.8</priority>\n  </url>\n  <url>\n    <loc>https://example.com/about</loc>\n    <changefreq>weekly</changefreq>\n    <priority>0.8</priority>\n  </url>\n  <url>\n    <loc>https://example.com/contact</loc>\n    <changefreq>weekly</changefreq>\n    <priority>0.8</priority>\n  </url>\n</urlset>","summary":[{"metric":"URLs","value":"3"},{"metric":"Valid URLs","value":"3"},{"metric":"Invalid URLs","value":"0"},{"metric":"XML size","value":"475 bytes"}]},"credits_used":5,"credits_remaining":null}},"csv_per_url_overrides_with_a_query_string_url_xml_escaping":{"summary":"CSV per-URL overrides with a query-string URL (XML escaping)","value":{"tool":"sitemap-xml-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://example.com/</loc>\n    <lastmod>2025-01-15</lastmod>\n    <changefreq>daily</changefreq>\n    <priority>1.0</priority>\n  </url>\n  <url>\n    <loc>https://example.com/search?a=1&amp;b=2</loc>\n    <changefreq>weekly</changefreq>\n    <priority>0.5</priority>\n  </url>\n  <url>\n    <loc>https://example.com/about</loc>\n    <changefreq>monthly</changefreq>\n    <priority>0.5</priority>\n  </url>\n</urlset>","summary":[{"metric":"URLs","value":"3"},{"metric":"Valid URLs","value":"3"},{"metric":"Invalid URLs","value":"0"},{"metric":"XML size","value":"520 bytes"}]},"credits_used":5,"credits_remaining":null}},"sitemap_index":{"summary":"Sitemap index","value":{"tool":"sitemap-xml-generator","tool_version":"1.0.2","outputs":{"output":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <sitemap>\n    <loc>https://example.com/sitemap-posts.xml</loc>\n  </sitemap>\n  <sitemap>\n    <loc>https://example.com/sitemap-pages.xml</loc>\n  </sitemap>\n  <sitemap>\n    <loc>https://example.com/sitemap-products.xml</loc>\n  </sitemap>\n</sitemapindex>","summary":[{"metric":"Sitemaps","value":"3"},{"metric":"Valid URLs","value":"3"},{"metric":"Invalid URLs","value":"0"},{"metric":"XML size","value":"358 bytes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Sitemap XML"},"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/spf-dkim-dmarc-record-generator":{"post":{"operationId":"run_spf_dkim_dmarc_record_generator","summary":"SPF / DKIM / DMARC Record Generator","tags":["Generators"],"description":"Generate SPF, DKIM and DMARC DNS TXT records for your domain — pick email providers for SPF, count DNS lookups against the RFC 7208 limit, build a DKIM record from a public key, and set a DMARC rollout policy.\n\n[Try SPF / DKIM / DMARC Record Generator in your browser →](https://iotools.cloud/tool/spf-dkim-dmarc-record-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"ttl":{"type":"number","description":"TTL","minimum":60},"spfEnable":{"type":"boolean","description":"Generate SPF record"},"spfGoogle":{"type":"boolean","description":"Google Workspace (include:_spf.google.com)"},"spfMicrosoft":{"type":"boolean","description":"Microsoft 365 (include:spf.protection.outlook.com)"},"spfSendgrid":{"type":"boolean","description":"SendGrid (include:sendgrid.net)"},"spfMailchimp":{"type":"boolean","description":"Mailchimp (include:servers.mcsv.net)"},"spfMailgun":{"type":"boolean","description":"Mailgun (include:mailgun.org)"},"spfSes":{"type":"boolean","description":"Amazon SES (include:amazonses.com)"},"spfZoho":{"type":"boolean","description":"Zoho Mail (include:zoho.com)"},"spfPostmark":{"type":"boolean","description":"Postmark (include:spf.mtasv.net)"},"spfMechA":{"type":"boolean","description":"Authorize A records of this domain (a)"},"spfMechMx":{"type":"boolean","description":"Authorize MX records of this domain (mx)"},"spfIp4":{"type":"string","description":"Extra IPv4"},"spfIp6":{"type":"string","description":"Extra IPv6"},"spfCustomIncludes":{"type":"string","description":"Extra includes"},"spfAll":{"enum":["~all","-all","?all"],"description":"All Mechanism"},"dkimEnable":{"type":"boolean","description":"Generate DKIM record"},"dkimSelector":{"type":"string","description":"Selector"},"dkimKeyType":{"enum":["rsa","ed25519"],"description":"Key Type"},"dkimPublicKey":{"type":"string","description":"Public Key (base64)"},"dmarcEnable":{"type":"boolean","description":"Generate DMARC record"},"dmarcPolicy":{"enum":["none","quarantine","reject"],"description":"Policy"},"dmarcSubdomainPolicy":{"enum":["inherit","none","quarantine","reject"],"description":"Subdomain Policy"},"dmarcPct":{"type":"number","description":"Percent (pct)","minimum":1,"maximum":100},"dmarcRua":{"type":"string","description":"Aggregate (rua)"},"dmarcRuf":{"type":"string","description":"Forensic (ruf)"},"dmarcAdkim":{"enum":["r","s"],"description":"DKIM Alignment"},"dmarcAspf":{"enum":["r","s"],"description":"SPF Alignment"}},"required":[]},"examples":{"example_com_with_google_workspace_strict_spf":{"summary":"example.com with Google Workspace + strict SPF","value":{"domain":"example.com","ttl":"3600","spfEnable":"true","spfGoogle":"true","spfAll":"-all","dkimEnable":"true","dkimSelector":"google","dkimKeyType":"rsa","dkimPublicKey":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQy3p+xQUz8mWvCgZJ7iWZxYJxL5n3X0sIVu0vJq5x2Y9wYJjJ2KhJk3l8xWzXvFq+8K+R4mPp1mZ7r4u3qC6vY0nQXk6mWdY+bN0L1JaTAGtO/8XPV2W2t3hZx0BUmQp4cYj7P2qJaXQwIDAQAB","dmarcEnable":"true","dmarcPolicy":"quarantine","dmarcSubdomainPolicy":"inherit","dmarcPct":"50","dmarcRua":"dmarc-reports@example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"example_com_with_google_workspace_strict_spf":{"summary":"example.com with Google Workspace + strict SPF","value":{"tool":"spf-dkim-dmarc-record-generator","tool_version":"1.0.2","outputs":{"spfOutput":"━━━ SPF Record ━━━━━━━━━━━━━━━━━━\n  Name:    @  (or example.com.)\n  Type:    TXT\n  TTL:     3600\n  Value:\n    v=spf1 include:_spf.google.com -all\n\n━━━ DNS Lookups ━━━━━━━━━━━━━━━━━\n  ✓ OK - 1/10 lookups\n\n  Breakdown:\n  include:_spf.google.com  (Google Workspace) - 1 lookup\n\n━━━ How to Add ━━━━━━━━━━━━━━━━━━\n  Create a TXT record at your DNS provider with:\n    Name:  @ (root)\n    Type:  TXT\n    TTL:   3600\n    Value: the v=spf1 ... line above\n  Only one SPF (v=spf1) record is allowed per domain - merge if you already have one.","dkimOutput":"━━━ DKIM Record ━━━━━━━━━━━━━━━━━\n  Name:    google._domainkey.example.com\n  Type:    TXT\n  TTL:     3600\n  Value:\n    v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxQy3p+xQUz8mWvCgZJ7iWZxYJxL5n3X0sIVu0vJq5x2Y9wYJjJ2KhJk3l8xWzXvFq+8K+R4mPp1mZ7r4u3qC6vY0nQXk6mWdY+bN0L1JaTAGtO/8XPV2W2t3hZx0BUmQp4cYj7P2qJaXQwIDAQAB\n\n━━━ Key Info ━━━━━━━━━━━━━━━━━━━━\n  Selector:   google\n  Algorithm:  RSA\n  Key length: 192 base64 chars (~144 bytes)\n\n━━━ How to Add ━━━━━━━━━━━━━━━━━━\n  Create a TXT record at your DNS provider with:\n    Name:  google._domainkey\n    Type:  TXT\n    TTL:   3600\n    Value: the v=DKIM1 ... line above\n  Use selector \"google\" in your outgoing mail server's DKIM signing config.","dmarcOutput":"━━━ DMARC Record ━━━━━━━━━━━━━━━━\n  Name:    _dmarc.example.com\n  Type:    TXT\n  TTL:     3600\n  Value:\n    v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc-reports@example.com\n\n━━━ Policy ━━━━━━━━━━━━━━━━━━━━━━\n  Main (p):       quarantine  (failing mail goes to spam / quarantine)\n  Subdomain (sp): inherits p=quarantine\n  Enforced on:    50% of failing mail\n  DKIM align:     relaxed (adkim=r)\n  SPF align:      relaxed (aspf=r)\n\n━━━ Reporting ━━━━━━━━━━━━━━━━━━━\n  Aggregate (rua): mailto:dmarc-reports@example.com\n  Forensic (ruf):  none\n\n━━━ Recommended Rollout ━━━━━━━━━\n  1. p=none + rua=  -> collect reports for 2-4 weeks\n  2. p=quarantine pct=10  -> ramp pct 10 -> 25 -> 50 -> 100\n  3. p=reject pct=100  -> full enforcement\n  Authenticate every legitimate sender (SPF + DKIM) before moving past step 1.\n\n━━━ How to Add ━━━━━━━━━━━━━━━━━━\n  Create a TXT record at your DNS provider with:\n    Name:  _dmarc\n    Type:  TXT\n    TTL:   3600\n    Value: the v=DMARC1 ... line above"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"spfOutput":{"type":"string","description":"SPF Record"},"dkimOutput":{"type":"string","description":"DKIM Record"},"dmarcOutput":{"type":"string","description":"DMARC Record"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/redirect-rules-generator":{"post":{"operationId":"run_redirect_rules_generator","summary":"Redirect Rules Generator","tags":["Generators"],"description":"Generate ready-to-paste redirect rules for nginx, Apache (.htaccess) and Next.js from a plain list of old-URL to new-URL mappings. Pick a 301/302/307/308 status and get all three server configs at once.\n\n[Try Redirect Rules Generator in your browser →](https://iotools.cloud/tool/redirect-rules-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mappings":{"type":"string","description":"URL Mappings"},"redirectType":{"enum":["301","302","307","308"],"description":"Redirect Type"}},"required":["mappings"]},"examples":{"two_path_redirects_301":{"summary":"Two path redirects (301)","value":{"mappings":"/old-page => /new-page\n/blog/2020/post-title => /articles/post-title","redirectType":"301"}},"temporary_redirect_method_preserved_307":{"summary":"Temporary redirect, method preserved (307)","value":{"mappings":"/checkout -> /checkout-v2","redirectType":"307"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_path_redirects_301":{"summary":"Two path redirects (301)","value":{"tool":"redirect-rules-generator","tool_version":"1.0.2","outputs":{"nginxConfig":"location = /old-page {\n    return 301 /new-page;\n}\n\nlocation = /blog/2020/post-title {\n    return 301 /articles/post-title;\n}","apacheConfig":"Redirect 301 /old-page /new-page\nRedirect 301 /blog/2020/post-title /articles/post-title","nextjsConfig":"[\n  {\n    source: '/old-page',\n    destination: '/new-page',\n    statusCode: 301,\n  },\n  {\n    source: '/blog/2020/post-title',\n    destination: '/articles/post-title',\n    statusCode: 301,\n  },\n]"},"credits_used":5,"credits_remaining":null}},"temporary_redirect_method_preserved_307":{"summary":"Temporary redirect, method preserved (307)","value":{"tool":"redirect-rules-generator","tool_version":"1.0.2","outputs":{"nginxConfig":"location = /checkout {\n    return 307 /checkout-v2;\n}","apacheConfig":"Redirect 307 /checkout /checkout-v2","nextjsConfig":"[\n  {\n    source: '/checkout',\n    destination: '/checkout-v2',\n    statusCode: 307,\n  },\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"nginxConfig":{"type":"string","description":"nginx"},"apacheConfig":{"type":"string","description":"Apache (.htaccess)"},"nextjsConfig":{"type":"string","description":"Next.js (next.config.js)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rsa-key-generator":{"post":{"operationId":"run_rsa_key_generator","summary":"RSA Key Generator","tags":["Generators"],"description":"Generate an RSA public/private key pair — 2048, 3072 or 4096-bit — in PEM format, ready for SSH, TLS, JWT signing and more.\n\n[Try RSA Key Generator in your browser →](https://iotools.cloud/tool/rsa-key-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keyLength":{"enum":["2048","3072","4096"],"description":"Key length"}},"required":[]},"examples":{"2048_bit_key_pair":{"summary":"2048-bit key pair","value":{"keyLength":"2048"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"publicKey":{"type":"string","description":"Public key (PEM)"},"privateKey":{"type":"string","description":"Private key (PEM)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/share-links-generator":{"post":{"operationId":"run_share_links_generator","summary":"Share Links Generator","tags":["Generators"],"description":"Generate ready-to-use social share links for Facebook, X (Twitter), LinkedIn, Pinterest, Reddit, WhatsApp, Telegram, Tumblr, Weibo, VKontakte and email — no share widget or third-party script required.\n\n[Try Share Links Generator in your browser →](https://iotools.cloud/tool/share-links-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"network":{"enum":["all","email","facebook","twitter","linkedin","pinterest","reddit","whatsapp","tumblr","telegram","weibo","vkontakte"],"description":"Platform"},"url":{"type":"string","description":"URL"},"thumbnailUrl":{"type":"string","description":"Thumbnail image URL"},"phone":{"type":"string","description":"Phone number"},"text":{"type":"string","description":"Text"},"title":{"type":"string","description":"Title"},"description":{"type":"string","description":"Description"},"summary":{"type":"string","description":"Summary"},"source":{"type":"string","description":"Source"},"emailRecipient":{"type":"string","description":"Recipient"},"emailSubject":{"type":"string","description":"Subject"},"emailCc":{"type":"string","description":"CC"},"emailBcc":{"type":"string","description":"BCC"},"emailBody":{"type":"string","description":"Body"}},"required":[]},"examples":{"all_platforms":{"summary":"All platforms","value":{"network":"all","url":"https://iotools.cloud/"}},"x_twitter_post":{"summary":"X (Twitter) post","value":{"network":"twitter","url":"https://iotools.cloud/","text":"800+ free developer tools, no signup"}},"linkedin_article":{"summary":"LinkedIn article","value":{"network":"linkedin","url":"https://iotools.cloud/","title":"IO Tools","summary":"A fast, private toolbox for developers.","source":"iotools.cloud"}},"email":{"summary":"Email","value":{"network":"email","emailRecipient":"friend@example.com","emailSubject":"Check this out","emailBody":"I found this useful: https://iotools.cloud/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"all_platforms":{"summary":"All platforms","value":{"tool":"share-links-generator","tool_version":"1.0.2","outputs":{"emailLink":"mailto:?body=https%3A%2F%2Fiotools.cloud%2F","facebookLink":"https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fiotools.cloud%2F","twitterLink":"https://x.com/intent/tweet?url=https%3A%2F%2Fiotools.cloud%2F","linkedinLink":"https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fiotools.cloud%2F","pinterestLink":"https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fiotools.cloud%2F","redditLink":"https://reddit.com/submit?url=https%3A%2F%2Fiotools.cloud%2F","whatsappLink":"https://api.whatsapp.com/send?text=https%3A%2F%2Fiotools.cloud%2F","tumblrLink":"https://www.tumblr.com/widgets/share/tool?canonicalUrl=https%3A%2F%2Fiotools.cloud%2F","telegramLink":"https://t.me/share/url?url=https%3A%2F%2Fiotools.cloud%2F","weiboLink":"https://service.weibo.com/share/share.php?url=https%3A%2F%2Fiotools.cloud%2F","vkontakteLink":"https://vk.com/share.php?url=https%3A%2F%2Fiotools.cloud%2F"},"credits_used":5,"credits_remaining":null}},"x_twitter_post":{"summary":"X (Twitter) post","value":{"tool":"share-links-generator","tool_version":"1.0.2","outputs":{"twitterLink":"https://x.com/intent/tweet?text=800%2B+free+developer+tools%2C+no+signup&url=https%3A%2F%2Fiotools.cloud%2F"},"credits_used":5,"credits_remaining":null}},"linkedin_article":{"summary":"LinkedIn article","value":{"tool":"share-links-generator","tool_version":"1.0.2","outputs":{"linkedinLink":"https://www.linkedin.com/shareArticle?url=https%3A%2F%2Fiotools.cloud%2F&title=IO+Tools&summary=A+fast%2C+private+toolbox+for+developers.&source=iotools.cloud&mini=true"},"credits_used":5,"credits_remaining":null}},"email":{"summary":"Email","value":{"tool":"share-links-generator","tool_version":"1.0.2","outputs":{"emailLink":"mailto:friend@example.com?subject=Check+this+out&body=I+found+this+useful%3A+https%3A%2F%2Fiotools.cloud%2F"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"emailLink":{"type":"string","description":"Email"},"facebookLink":{"type":"string","description":"Facebook"},"twitterLink":{"type":"string","description":"X (Twitter)"},"linkedinLink":{"type":"string","description":"LinkedIn"},"pinterestLink":{"type":"string","description":"Pinterest"},"redditLink":{"type":"string","description":"Reddit"},"whatsappLink":{"type":"string","description":"WhatsApp"},"tumblrLink":{"type":"string","description":"Tumblr"},"telegramLink":{"type":"string","description":"Telegram"},"weiboLink":{"type":"string","description":"Weibo"},"vkontakteLink":{"type":"string","description":"VKontakte"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/slug-generator":{"post":{"operationId":"run_slug_generator","summary":"Slug Generator","tags":["Generators"],"description":"Turn any string into a clean, URL-safe slug — one per line for bulk conversion. Transliterates accents, strips special characters and joins words with a dash or underscore.\n\n[Try Slug Generator in your browser →](https://iotools.cloud/tool/slug-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"String(s)"},"replacement":{"enum":["-","_"],"description":"Replacement"},"lowercase":{"type":"boolean","description":"To Lowercase"},"strict":{"type":"boolean","description":"Strip Special Characters"}},"required":["inputText"]},"examples":{"multiple_strings":{"summary":"Multiple strings","value":{"inputText":"Hello World!\nThis is a test string\nAnother test string","replacement":"-","lowercase":"true","strict":"true"}},"accents_and_symbols_strict":{"summary":"Accents and symbols (strict)","value":{"inputText":"Crème Brûlée & Café — 100% Delicious!","replacement":"-","lowercase":"true","strict":"true"}},"underscore_keep_case_and_special_characters":{"summary":"Underscore, keep case and special characters","value":{"inputText":"My New Blog Post (2026)!","replacement":"_","lowercase":"","strict":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"multiple_strings":{"summary":"Multiple strings","value":{"tool":"slug-generator","tool_version":"1.0.2","outputs":{"output":"hello-world\nthis-is-a-test-string\nanother-test-string"},"credits_used":5,"credits_remaining":null}},"accents_and_symbols_strict":{"summary":"Accents and symbols (strict)","value":{"tool":"slug-generator","tool_version":"1.0.2","outputs":{"output":"creme-brulee-and-cafe-100percent-delicious"},"credits_used":5,"credits_remaining":null}},"underscore_keep_case_and_special_characters":{"summary":"Underscore, keep case and special characters","value":{"tool":"slug-generator","tool_version":"1.0.2","outputs":{"output":"My_New_Blog_Post_(2026)!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Slug(s)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tfn-generator":{"post":{"operationId":"run_tfn_generator","summary":"TFN Generator","tags":["Generators"],"description":"Generate valid, random Australian Tax File Numbers (TFN) that pass the ATO modulus-11 checksum — sample data for testing forms, validators and test suites.\n\n[Try TFN Generator in your browser →](https://iotools.cloud/tool/tfn-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of TFNs","minimum":1,"maximum":50},"format":{"enum":["plain","spaced"],"description":"Format"}},"required":["count"]},"examples":{"five_tfns":{"summary":"Five TFNs","value":{"count":"5","format":"plain"}},"three_spaced":{"summary":"Three, spaced","value":{"count":"3","format":"spaced"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated TFNs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/token-generator":{"post":{"operationId":"run_token_generator","summary":"Token Generator","tags":["Generators"],"description":"Generate a random token — API key, session token, CSRF token or app secret — of 1 to 512 characters, from letters, numbers and symbols, or switch to a hexadecimal string or numeric PIN preset. Created in your browser with a cryptographic RNG and never transmitted.\n\n[Try Token Generator in your browser →](https://iotools.cloud/tool/token-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"enum":["custom","hex","pin"],"description":"Format"},"length":{"type":"number","description":"Token length","minimum":1,"maximum":512},"hexUppercase":{"type":"boolean","description":"Uppercase hex digits (A-F)"},"symbols":{"type":"boolean","description":"Include symbols (e.g. @#$%)"},"numbers":{"type":"boolean","description":"Include numbers (e.g. 123456)"},"lowercase":{"type":"boolean","description":"Include lowercase characters (e.g. abcdefgh)"},"uppercase":{"type":"boolean","description":"Include uppercase characters (e.g. ABCDEFGH)"}},"required":[]},"examples":{"64_character_alphanumeric_token":{"summary":"64-character alphanumeric token","value":{"length":"64","symbols":"","numbers":"true","lowercase":"true","uppercase":"true"}},"32_character_token_with_symbols":{"summary":"32-character token with symbols","value":{"length":"32","symbols":"true","numbers":"true","lowercase":"true","uppercase":"true"}},"128_digits_no_letters":{"summary":"128 digits, no letters","value":{"length":"128","symbols":"","numbers":"true","lowercase":"","uppercase":""}},"32_character_lowercase_hex_string":{"summary":"32-character lowercase hex string","value":{"format":"hex","length":"32","hexUppercase":""}},"6_digit_numeric_pin":{"summary":"6-digit numeric PIN","value":{"format":"pin","length":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"token":{"type":"string","description":"Generated token"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vcard-contact-file-generator":{"post":{"operationId":"run_vcard_contact_file_generator","summary":"vCard Contact File Generator","tags":["Generators"],"description":"Generate an RFC-compliant .vcf vCard contact file (version 3.0 or 4.0) from name, phone, email, address, and organization fields — ready to import into any contacts app.\n\n[Try vCard Contact File Generator in your browser →](https://iotools.cloud/tool/vcard-contact-file-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vcardVersion":{"enum":["3.0","4.0"],"description":"vCard Version"},"firstName":{"type":"string","description":"First Name"},"lastName":{"type":"string","description":"Last Name"},"middleName":{"type":"string","description":"Middle Name"},"prefix":{"type":"string","description":"Prefix"},"suffix":{"type":"string","description":"Suffix"},"nickname":{"type":"string","description":"Nickname"},"organization":{"type":"string","description":"Organization"},"jobTitle":{"type":"string","description":"Job Title"},"department":{"type":"string","description":"Department"},"phone1Type":{"enum":["cell","work","home","fax","other"],"description":"Phone 1 Type"},"phone1":{"type":"string","description":"Phone 1"},"phone2Type":{"enum":["work","cell","home","fax","other"],"description":"Phone 2 Type"},"phone2":{"type":"string","description":"Phone 2"},"email1Type":{"enum":["home","work","other"],"description":"Email 1 Type"},"email1":{"type":"string","description":"Email 1"},"email2Type":{"enum":["work","home","other"],"description":"Email 2 Type"},"email2":{"type":"string","description":"Email 2"},"addressType":{"enum":["home","work","other"],"description":"Address Type"},"street":{"type":"string","description":"Street"},"city":{"type":"string","description":"City"},"region":{"type":"string","description":"State / Region"},"postalCode":{"type":"string","description":"Postal Code"},"country":{"type":"string","description":"Country"},"website":{"type":"string","description":"Website"},"birthday":{"type":"string","description":"Birthday"},"photoUrl":{"type":"string","description":"Photo URL"},"note":{"type":"string","description":"Note"}},"required":["firstName"]},"examples":{"jane_doe_vcard_3_0":{"summary":"Jane Doe, vCard 3.0","value":{"vcardVersion":"3.0","firstName":"Jane","lastName":"Doe","middleName":"","prefix":"","suffix":"","nickname":"","organization":"Acme, Inc.","jobTitle":"Product Designer","department":"","phone1Type":"cell","phone1":"+1 555 123 4567","phone2Type":"work","phone2":"","email1Type":"home","email1":"jane@example.com","email2Type":"work","email2":"","addressType":"home","street":"123 Market St","city":"San Francisco","region":"CA","postalCode":"94105","country":"United States","website":"https://example.com","birthday":"1990-05-14","photoUrl":"","note":""}},"john_smith_vcard_4_0":{"summary":"John Smith, vCard 4.0","value":{"vcardVersion":"4.0","firstName":"John","lastName":"Smith","middleName":"","prefix":"Dr.","suffix":"","nickname":"","organization":"","jobTitle":"","department":"","phone1Type":"cell","phone1":"+1 555 987 6543","phone2Type":"work","phone2":"","email1Type":"home","email1":"john@example.com","email2Type":"work","email2":"","addressType":"home","street":"","city":"","region":"","postalCode":"","country":"","website":"","birthday":"","photoUrl":"","note":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"jane_doe_vcard_3_0":{"summary":"Jane Doe, vCard 3.0","value":{"tool":"vcard-contact-file-generator","tool_version":"1.0.2","outputs":{"vcardOutput":"BEGIN:VCARD\r\nVERSION:3.0\r\nN:Doe;Jane;;;\r\nFN:Jane Doe\r\nORG:Acme\\, Inc.\r\nTITLE:Product Designer\r\nTEL;TYPE=CELL:+1 555 123 4567\r\nEMAIL;TYPE=HOME:jane@example.com\r\nADR;TYPE=HOME:;;123 Market St;San Francisco;CA;94105;United States\r\nURL:https://example.com\r\nBDAY:19900514\r\nEND:VCARD"},"credits_used":5,"credits_remaining":null}},"john_smith_vcard_4_0":{"summary":"John Smith, vCard 4.0","value":{"tool":"vcard-contact-file-generator","tool_version":"1.0.2","outputs":{"vcardOutput":"BEGIN:VCARD\r\nVERSION:4.0\r\nN:Smith;John;;Dr.;\r\nFN:Dr. John Smith\r\nTEL;TYPE=cell:tel:+15559876543\r\nEMAIL;TYPE=home:john@example.com\r\nEND:VCARD"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"vcardOutput":{"type":"string","description":"Generated vCard"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vin-generator":{"post":{"operationId":"run_vin_generator","summary":"VIN Generator","tags":["Generators"],"description":"Generate synthetic, checksum-valid 17-character VINs (Vehicle Identification Numbers) for QA and testing — test databases, VIN-field validation and mock vehicle records. Pick a region and model year, choose how many, and get VINs with a correctly computed ISO 3779 check digit. Not real vehicle identifiers.\n\n[Try VIN Generator in your browser →](https://iotools.cloud/tool/vin-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"region":{"enum":["random","na","eu","asia"],"description":"Region"},"modelYear":{"enum":["random","2026","2025","2024","2023","2022","2021","2020","2019","2018","2017","2016","2015","2014","2013","2012","2011","2010","2009","2008","2007","2006","2005","2004","2003","2002","2001","2000"],"description":"Model year"},"count":{"type":"number","description":"How many to generate","minimum":1,"maximum":50}},"required":[]},"examples":{"5_random_vins":{"summary":"5 random VINs","value":{"region":"random","modelYear":"random","count":"5"}},"3_european_2022_vins":{"summary":"3 European 2022 VINs","value":{"region":"eu","modelYear":"2022","count":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated VINs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vite-config-generator":{"post":{"operationId":"run_vite_config_generator","summary":"Vite Config Generator","tags":["Generators"],"description":"Generate a vite.config.ts/js file from a framework preset (Vanilla, React, React SWC, Vue, Svelte, Solid), optional plugins (SVGR, tsconfig-paths, PWA, compression, bundle visualizer), a path alias builder, a dev-server proxy rule editor, and build options — download or copy, ready to drop in.\n\n[Try Vite Config Generator in your browser →](https://iotools.cloud/tool/vite-config-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"framework":{"enum":["vanilla","react","reactSwc","vue","svelte","solid"],"description":"Framework"},"useTypescript":{"type":"boolean","description":"Use TypeScript (vite.config.ts)"},"pluginSvgr":{"type":"boolean","description":"Import SVGs as React components (vite-plugin-svgr)"},"pluginTsconfigPaths":{"type":"boolean","description":"Resolve aliases from tsconfig.json paths (vite-tsconfig-paths)"},"pluginPwa":{"type":"boolean","description":"Progressive Web App support (vite-plugin-pwa)"},"pluginCompression":{"type":"boolean","description":"Gzip/Brotli-compress build output (vite-plugin-compression)"},"pluginVisualizer":{"type":"boolean","description":"Bundle size visualizer (rollup-plugin-visualizer)"},"aliases":{"type":"string","description":"Path aliases"},"serverPort":{"type":"string","description":"Port"},"serverOpen":{"type":"boolean","description":"Open browser automatically on start"},"serverHost":{"type":"boolean","description":"Expose to network (host: true)"},"proxyRules":{"type":"string","description":"Dev server proxy rules"},"buildTarget":{"enum":["esnext","es2020","es2015","modules"],"description":"Build target"},"outDir":{"type":"string","description":"Output directory"},"sourcemap":{"type":"boolean","description":"Generate sourcemaps for the build"},"includeComments":{"type":"boolean","description":"Include inline comments explaining each section"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"},"includeInstall":{"type":"boolean","description":"Include npm install command at top"}},"required":[]},"examples":{"react_swc_alias_dev_proxy":{"summary":"React + SWC — alias + dev proxy","value":{"framework":"reactSwc","useTypescript":"true","pluginSvgr":"true","pluginTsconfigPaths":"","pluginPwa":"","pluginCompression":"","pluginVisualizer":"","aliases":"@=./src","serverPort":"3000","serverOpen":"true","serverHost":"","proxyRules":"/api=http://localhost:8080","buildTarget":"esnext","outDir":"dist","sourcemap":"","includeComments":"true","includeHeader":"true","includeInstall":"true"}},"vue_3_defaults":{"summary":"Vue 3 (defaults)","value":{"framework":"vue","useTypescript":"true","pluginSvgr":"","pluginTsconfigPaths":"","pluginPwa":"","pluginCompression":"","pluginVisualizer":"","aliases":"@=./src","serverPort":"5173","serverOpen":"","serverHost":"","proxyRules":"","buildTarget":"esnext","outDir":"dist","sourcemap":"","includeComments":"true","includeHeader":"true","includeInstall":"true"}},"vanilla_js_no_aliases_custom_build_target":{"summary":"Vanilla JS — no aliases, custom build target","value":{"framework":"vanilla","useTypescript":"","pluginSvgr":"","pluginTsconfigPaths":"","pluginPwa":"","pluginCompression":"","pluginVisualizer":"","aliases":"","serverPort":"5173","serverOpen":"","serverHost":"","proxyRules":"","buildTarget":"es2020","outDir":"build","sourcemap":"true","includeComments":"","includeHeader":"true","includeInstall":"true"}},"solid_pwa_tsconfig_paths_network_host":{"summary":"Solid — PWA + tsconfig-paths, network host","value":{"framework":"solid","useTypescript":"true","pluginSvgr":"","pluginTsconfigPaths":"true","pluginPwa":"true","pluginCompression":"","pluginVisualizer":"","aliases":"","serverPort":"5173","serverOpen":"","serverHost":"true","proxyRules":"","buildTarget":"esnext","outDir":"dist","sourcemap":"","includeComments":"true","includeHeader":"true","includeInstall":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"react_swc_alias_dev_proxy":{"summary":"React + SWC — alias + dev proxy","value":{"tool":"vite-config-generator","tool_version":"1.0.2","outputs":{"output":"// vite.config.ts — Vite configuration (React (SWC))\n// Generated with iotools.cloud\n// Docs: https://vite.dev/config/\n\n// Install:\n//   npm install -D vite @vitejs/plugin-react-swc vite-plugin-svgr @types/node\n\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react-swc'\nimport svgr from 'vite-plugin-svgr'\nimport { fileURLToPath, URL } from 'node:url'\n\nexport default defineConfig({\n  // Framework + optional feature plugins\n  plugins: [react(), svgr()],\n  // Path aliases for cleaner imports\n  resolve: {\n    alias: {\n      \"@\": fileURLToPath(new URL(\"./src\", import.meta.url))\n    }\n  },\n  // Dev server options\n  server: {\n    port: 3000,\n    open: true,\n    proxy: {\n      \"/api\": {\n        target: \"http://localhost:8080\",\n        changeOrigin: true\n      }\n    }\n  }\n})\n"},"credits_used":5,"credits_remaining":null}},"vue_3_defaults":{"summary":"Vue 3 (defaults)","value":{"tool":"vite-config-generator","tool_version":"1.0.2","outputs":{"output":"// vite.config.ts — Vite configuration (Vue)\n// Generated with iotools.cloud\n// Docs: https://vite.dev/config/\n\n// Install:\n//   npm install -D vite @vitejs/plugin-vue @types/node\n\nimport { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { fileURLToPath, URL } from 'node:url'\n\nexport default defineConfig({\n  // Framework + optional feature plugins\n  plugins: [vue()],\n  // Path aliases for cleaner imports\n  resolve: {\n    alias: {\n      \"@\": fileURLToPath(new URL(\"./src\", import.meta.url))\n    }\n  }\n})\n"},"credits_used":5,"credits_remaining":null}},"vanilla_js_no_aliases_custom_build_target":{"summary":"Vanilla JS — no aliases, custom build target","value":{"tool":"vite-config-generator","tool_version":"1.0.2","outputs":{"output":"// vite.config.js — Vite configuration\n// Generated with iotools.cloud\n// Docs: https://vite.dev/config/\n\n// Install:\n//   npm install -D vite\n\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n  build: {\n    target: \"es2020\",\n    outDir: \"build\",\n    sourcemap: true\n  }\n})\n"},"credits_used":5,"credits_remaining":null}},"solid_pwa_tsconfig_paths_network_host":{"summary":"Solid — PWA + tsconfig-paths, network host","value":{"tool":"vite-config-generator","tool_version":"1.0.2","outputs":{"output":"// vite.config.ts — Vite configuration (Solid)\n// Generated with iotools.cloud\n// Docs: https://vite.dev/config/\n\n// Install:\n//   npm install -D vite vite-plugin-solid vite-tsconfig-paths vite-plugin-pwa\n\nimport { defineConfig } from 'vite'\nimport solid from 'vite-plugin-solid'\nimport tsconfigPaths from 'vite-tsconfig-paths'\nimport { VitePWA } from 'vite-plugin-pwa'\n\nexport default defineConfig({\n  // Framework + optional feature plugins\n  plugins: [solid(), tsconfigPaths(), VitePWA()],\n  // Dev server options\n  server: {\n    host: true\n  }\n})\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Config"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/webauthn-credential-generator":{"post":{"operationId":"run_webauthn_credential_generator","summary":"WebAuthn Credential Generator","tags":["Generators"],"description":"Generate random, realistically-shaped WebAuthn credential IDs for testing and documentation, rendered as Base64url, Base64, hex and a decimal byte array — or decode a pasted Base64url credential ID into all four. Synthetic test data, generated in your browser with a CSPRNG; not a real passkey ceremony.\n\n[Try WebAuthn Credential Generator in your browser →](https://iotools.cloud/tool/webauthn-credential-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate","decode"],"description":"Mode"},"byteLength":{"enum":["16","32","64","128"],"description":"Byte length"},"batchCount":{"type":"number","description":"How many","minimum":1,"maximum":10},"decodeInput":{"type":"string","description":"Base64url credential ID"}},"required":[]},"examples":{"one_32_byte_credential_id":{"summary":"One 32-byte credential ID","value":{"mode":"generate","byteLength":"32","batchCount":"1"}},"5_x_16_byte_credential_ids":{"summary":"5 x 16-byte credential IDs","value":{"mode":"generate","byteLength":"16","batchCount":"5"}},"decode_a_base64url_credential_id":{"summary":"Decode a Base64url credential ID","value":{"mode":"decode","decodeInput":"AQIDBA"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decode_a_base64url_credential_id":{"summary":"Decode a Base64url credential ID","value":{"tool":"webauthn-credential-generator","tool_version":"1.0.2","outputs":{"outputBase64url":"AQIDBA","outputBase64":"AQIDBA==","outputHex":"01020304","outputBytes":"[1, 2, 3, 4]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputBase64url":{"type":"string","description":"Base64url"},"outputBase64":{"type":"string","description":"Base64 (standard)"},"outputHex":{"type":"string","description":"Hex"},"outputBytes":{"type":"string","description":"Raw byte array"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/webhook-test-payload-generator":{"post":{"operationId":"run_webhook_test_payload_generator","summary":"Webhook Test Payload Generator","tags":["Generators"],"description":"Generate realistic sample webhook payloads for GitHub, Stripe, Shopify, Slack, Twilio and SendGrid — complete with provider-correct headers, HMAC signatures and a ready-to-run cURL command.\n\n[Try Webhook Test Payload Generator in your browser →](https://iotools.cloud/tool/webhook-test-payload-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"platform":{"enum":["github","stripe","shopify","slack","twilio","sendgrid"],"description":"Platform"},"githubEvent":{"enum":["push","pull_request","issues","star","release"],"description":"Event Type"},"stripeEvent":{"enum":["payment_intent.succeeded","charge.refunded","invoice.payment_failed","customer.subscription.created","checkout.session.completed"],"description":"Event Type"},"shopifyEvent":{"enum":["orders/create","orders/paid","orders/cancelled","products/create","customers/create"],"description":"Event Type"},"slackEvent":{"enum":["message","app_mention","reaction_added","team_join","url_verification"],"description":"Event Type"},"twilioEvent":{"enum":["sms.inbound","sms.status","voice.inbound","voice.status"],"description":"Event Type"},"sendgridEvent":{"enum":["delivered","bounce","open","click","spamreport"],"description":"Event Type"},"secret":{"type":"string","description":"Webhook Secret"},"targetUrl":{"type":"string","description":"Target URL"}},"required":[]},"examples":{"github_push_event":{"summary":"GitHub push event","value":{"platform":"github","githubEvent":"push","secret":"","targetUrl":"https://example.com/webhook"}},"stripe_payment_intent_succeeded_signed":{"summary":"Stripe payment_intent.succeeded, signed","value":{"platform":"stripe","stripeEvent":"payment_intent.succeeded","secret":"whsec_test_secret","targetUrl":"https://example.com/webhook"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"payloadOutput":{"type":"string","description":"Payload"},"headersOutput":{"type":"string","description":"Headers"},"curlOutput":{"type":"string","description":"cURL Command"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/weighted-random-picker":{"post":{"operationId":"run_weighted_random_picker","summary":"Weighted Random Picker","tags":["Generators"],"description":"Pick a random winner from a list where each item can carry a weight, so heavier items are more likely to be drawn. Enter one item per line as 'name:weight' (weight optional, defaults to 1), draw one or several winners with or without replacement, and see each item's exact probability.\n\n[Try Weighted Random Picker in your browser →](https://iotools.cloud/tool/weighted-random-picker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"string","description":"Items"},"pickCount":{"type":"number","description":"Number to pick","minimum":1,"maximum":1000},"allowDuplicates":{"type":"boolean","description":"Allow duplicates"}},"required":["items"]},"examples":{"pick_1_weighted_item":{"summary":"Pick 1 weighted item","value":{"items":"Apple:3\nBanana:2\nCherry:1\nDate","pickCount":"1","allowDuplicates":""}},"draw_3_winners_without_replacement":{"summary":"Draw 3 winners without replacement","value":{"items":"Alice:5\nBob:3\nCharlie:2\nDiana:1\nEdward:1","pickCount":"3","allowDuplicates":""}},"unweighted_list_draw_with_replacement":{"summary":"Unweighted list, draw with replacement","value":{"items":"Heads\nTails","pickCount":"5","allowDuplicates":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Picked"},"breakdown":{"type":"array","description":"Probability breakdown","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"weight":{"type":"string","description":"Weight"},"probability":{"type":"string","description":"Probability"}}},"x-iotools-columns":["item","weight","probability"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/whatsapp-chat-generator":{"post":{"operationId":"run_whatsapp_chat_generator","summary":"WhatsApp Chat Generator","tags":["Generators"],"description":"Generate a fake WhatsApp conversation screenshot — contact name, online status, avatar, green and white bubbles, timestamps and blue read ticks — from a simple line-by-line script, and download it as SVG.\n\n[Try WhatsApp Chat Generator in your browser →](https://iotools.cloud/tool/whatsapp-chat-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"contact":{"type":"string","description":"Contact name"},"status":{"type":"string","description":"Status line"},"avatar":{"type":"string","contentEncoding":"base64","description":"Contact photo"},"script":{"type":"string","description":"Conversation"},"theme":{"enum":["light","dark"],"description":"Appearance"},"ticks":{"enum":["read","delivered","sent","none"],"description":"Receipt on your messages"},"statusTime":{"type":"string","description":"Status bar time"},"placeholder":{"type":"string","description":"Input bar text"},"scrollPercent":{"type":"number","description":"Scroll position","minimum":0,"maximum":100}},"required":[]},"examples":{"light_mode_blue_read_ticks":{"summary":"Light mode, blue read ticks","value":{"contact":"Sam","status":"online","script":"--- TODAY\nthem: Morning! Did the invoice come through? | 09:12\nme: Just checked - it landed | 09:14\nme: Sending the receipt over now | 09:14\nthem: Perfect, thanks! | 09:15","theme":"light","ticks":"read","statusTime":"9:41","placeholder":""}},"dark_mode_single_tick_hostile_characters":{"summary":"Dark mode, single tick, hostile characters","value":{"contact":"<script>alert(\"x\")</script>","status":"last seen today at 09:12","script":"them: 5 < 6 & \"quoted\" 'single'\nme: <b>bold?</b> | 21:07","theme":"dark","ticks":"sent","statusTime":"21:07","placeholder":"Message"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"light_mode_blue_read_ticks":{"summary":"Light mode, blue read ticks","value":{"tool":"whatsapp-chat-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>WhatsApp conversation with Sam</title><rect width=\"390\" height=\"844\" fill=\"#efe7de\"/><clipPath id=\"waScroll\"><rect x=\"0\" y=\"98\" width=\"390\" height=\"648\"/></clipPath><g clip-path=\"url(#waScroll)\"><rect x=\"167\" y=\"110\" width=\"56\" height=\"22\" rx=\"7\" fill=\"#ffffff\"/><text x=\"195\" y=\"125\" text-anchor=\"middle\" font-size=\"12\" fill=\"#667781\">TODAY</text><path d=\"M18 148 L290.94 148 A8 8 0 0 1 298.94 156 L298.94 188 A8 8 0 0 1 290.94 196 L18 196 A8 8 0 0 1 10 188 L10 156 L2 148 Z\" fill=\"#ffffff\"/><text x=\"19\" y=\"169\" font-size=\"15.5\" fill=\"#111b21\" xml:space=\"preserve\">Morning! Did the invoice come through?</text><text x=\"289.94\" y=\"188\" text-anchor=\"end\" font-size=\"11\" fill=\"#667781\">09:12</text><path d=\"M145.58 204 L372 204 L388 204 L380 212 L380 230 A8 8 0 0 1 372 238 L145.58 238 A8 8 0 0 1 137.58 230 L137.58 212 A8 8 0 0 1 145.58 204 Z\" fill=\"#e7ffdb\"/><text x=\"146.58\" y=\"225\" font-size=\"15.5\" fill=\"#111b21\" xml:space=\"preserve\">Just checked - it landed</text><text x=\"354\" y=\"227\" text-anchor=\"end\" font-size=\"11\" fill=\"#667781\">09:14</text><g fill=\"none\" stroke=\"#53bdeb\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M357 223.8l2.6 2.8 5.4-6\"/><path d=\"M361.6 223.8l2.6 2.8 5.4-6\"/></g><path d=\"M117.06 241 L372 241 A8 8 0 0 1 380 249 L380 267 A8 8 0 0 1 372 275 L117.06 275 A8 8 0 0 1 109.06 267 L109.06 249 A8 8 0 0 1 117.06 241 Z\" fill=\"#e7ffdb\"/><text x=\"118.06\" y=\"262\" font-size=\"15.5\" fill=\"#111b21\" xml:space=\"preserve\">Sending the receipt over now</text><text x=\"354\" y=\"264\" text-anchor=\"end\" font-size=\"11\" fill=\"#667781\">09:14</text><g fill=\"none\" stroke=\"#53bdeb\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M357 260.8l2.6 2.8 5.4-6\"/><path d=\"M361.6 260.8l2.6 2.8 5.4-6\"/></g><path d=\"M18 283 L169.38 283 A8 8 0 0 1 177.38 291 L177.38 309 A8 8 0 0 1 169.38 317 L18 317 A8 8 0 0 1 10 309 L10 291 L2 283 Z\" fill=\"#ffffff\"/><text x=\"19\" y=\"304\" font-size=\"15.5\" fill=\"#111b21\" xml:space=\"preserve\">Perfect, thanks!</text><text x=\"168.38\" y=\"306\" text-anchor=\"end\" font-size=\"11\" fill=\"#667781\">09:15</text></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"98\" fill=\"#f6f6f6\"/><path d=\"M24 63l-8 8 8 8\" fill=\"none\" stroke=\"#00a884\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"57\" cy=\"71\" r=\"17\" fill=\"#c9d1d6\"/><text x=\"57\" y=\"76.78\" text-anchor=\"middle\" font-size=\"14.28\" font-weight=\"600\" fill=\"#ffffff\">S</text><text x=\"84\" y=\"70\" font-size=\"16\" font-weight=\"600\" fill=\"#111b21\">Sam</text><text x=\"84\" y=\"85\" font-size=\"12\" fill=\"#667781\">online</text><g fill=\"none\" stroke=\"#00a884\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"306\" y=\"64\" width=\"15\" height=\"14\" rx=\"3.5\"/><path d=\"M321 69l6-4v12l-6-4z\"/><path d=\"M350 63c-2 0-4 2-4 4 0 7 5 12 12 12 2 0 4-2 4-4l-4-2-2 2c-3-1-5-3-6-6l2-2z\"/></g><line x1=\"0\" y1=\"98\" x2=\"390\" y2=\"98\" stroke=\"#d5d5d5\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#111b21\">9:41</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#111b21\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#111b21\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#111b21\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#111b21\"/><g fill=\"none\" stroke=\"#111b21\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#111b21\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#111b21\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#111b21\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#111b21\" fill-opacity=\"0.35\"/><rect x=\"0\" y=\"762\" width=\"390\" height=\"58\" fill=\"#f6f6f6\"/><line x1=\"0\" y1=\"762\" x2=\"390\" y2=\"762\" stroke=\"#d5d5d5\"/><path d=\"M26 783v16M18 791h16\" stroke=\"#667781\" stroke-width=\"2\" stroke-linecap=\"round\"/><rect x=\"46\" y=\"774\" width=\"292\" height=\"34\" rx=\"17\" fill=\"#ffffff\" stroke=\"#d5d5d5\"/><text x=\"60\" y=\"796\" font-size=\"15\" fill=\"#667781\">Message</text><g fill=\"none\" stroke=\"#667781\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"358\" y=\"780\" width=\"8\" height=\"13\" rx=\"4\"/><path d=\"M355 790a7 7 0 0 0 14 0M362 797v4\"/></g><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#111b21\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}},"dark_mode_single_tick_hostile_characters":{"summary":"Dark mode, single tick, hostile characters","value":{"tool":"whatsapp-chat-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"390\" height=\"844\" viewBox=\"0 0 390 844\" font-family=\"-apple-system,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif\"><title>WhatsApp conversation with &lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</title><rect width=\"390\" height=\"844\" fill=\"#0b141a\"/><clipPath id=\"waScroll\"><rect x=\"0\" y=\"98\" width=\"390\" height=\"648\"/></clipPath><g clip-path=\"url(#waScroll)\"><path d=\"M18 110 L198.25 110 A8 8 0 0 1 206.25 118 L206.25 136 A8 8 0 0 1 198.25 144 L18 144 A8 8 0 0 1 10 136 L10 118 L2 110 Z\" fill=\"#202c33\"/><text x=\"19\" y=\"131\" font-size=\"15.5\" fill=\"#e9edef\" xml:space=\"preserve\">5 &lt; 6 &amp; &quot;quoted&quot; &apos;single&apos;</text><path d=\"M231.14 152 L372 152 L388 152 L380 160 L380 178 A8 8 0 0 1 372 186 L231.14 186 A8 8 0 0 1 223.14 178 L223.14 160 A8 8 0 0 1 231.14 152 Z\" fill=\"#005c4b\"/><text x=\"232.14\" y=\"173\" font-size=\"15.5\" fill=\"#e9edef\" xml:space=\"preserve\">&lt;b&gt;bold?&lt;/b&gt;</text><text x=\"354\" y=\"175\" text-anchor=\"end\" font-size=\"11\" fill=\"#8696a0\">21:07</text><g fill=\"none\" stroke=\"#8696a0\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M359.3 171.8l2.6 2.8 5.4-6\"/></g></g><rect x=\"0\" y=\"0\" width=\"390\" height=\"98\" fill=\"#1f2c34\"/><path d=\"M24 63l-8 8 8 8\" fill=\"none\" stroke=\"#00a884\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"57\" cy=\"71\" r=\"17\" fill=\"#3b4a54\"/><text x=\"57\" y=\"76.78\" text-anchor=\"middle\" font-size=\"14.28\" font-weight=\"600\" fill=\"#ffffff\">&lt;</text><text x=\"84\" y=\"70\" font-size=\"16\" font-weight=\"600\" fill=\"#e9edef\">&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;</text><text x=\"84\" y=\"85\" font-size=\"12\" fill=\"#8696a0\">last seen today at 09:12</text><g fill=\"none\" stroke=\"#00a884\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"306\" y=\"64\" width=\"15\" height=\"14\" rx=\"3.5\"/><path d=\"M321 69l6-4v12l-6-4z\"/><path d=\"M350 63c-2 0-4 2-4 4 0 7 5 12 12 12 2 0 4-2 4-4l-4-2-2 2c-3-1-5-3-6-6l2-2z\"/></g><line x1=\"0\" y1=\"98\" x2=\"390\" y2=\"98\" stroke=\"#222d34\"/><text x=\"30\" y=\"27\" font-size=\"15\" font-weight=\"600\" fill=\"#e9edef\">21:07</text><rect x=\"290.8\" y=\"18\" width=\"3.6\" height=\"4\" rx=\"1.2\" fill=\"#e9edef\"/><rect x=\"296.2\" y=\"15.6\" width=\"3.6\" height=\"6.4\" rx=\"1.2\" fill=\"#e9edef\"/><rect x=\"301.6\" y=\"13.2\" width=\"3.6\" height=\"8.8\" rx=\"1.2\" fill=\"#e9edef\"/><rect x=\"307\" y=\"10.8\" width=\"3.6\" height=\"11.2\" rx=\"1.2\" fill=\"#e9edef\"/><g fill=\"none\" stroke=\"#e9edef\" stroke-width=\"1.7\" stroke-linecap=\"round\"><path d=\"M319.5 14a10.5 10.5 0 0 1 15 0\"/><path d=\"M322.8 17.6a6 6 0 0 1 8.4 0\"/></g><circle cx=\"327\" cy=\"21.4\" r=\"1.5\" fill=\"#e9edef\"/><rect x=\"343\" y=\"12\" width=\"25\" height=\"12\" rx=\"3.6\" fill=\"none\" stroke=\"#e9edef\" stroke-opacity=\"0.35\"/><rect x=\"345\" y=\"14\" width=\"17\" height=\"8\" rx=\"2.2\" fill=\"#e9edef\"/><path d=\"M369.6 16.4v3.2a2.4 2.4 0 0 0 0-3.2z\" fill=\"#e9edef\" fill-opacity=\"0.35\"/><rect x=\"0\" y=\"762\" width=\"390\" height=\"58\" fill=\"#1f2c34\"/><line x1=\"0\" y1=\"762\" x2=\"390\" y2=\"762\" stroke=\"#222d34\"/><path d=\"M26 783v16M18 791h16\" stroke=\"#8696a0\" stroke-width=\"2\" stroke-linecap=\"round\"/><rect x=\"46\" y=\"774\" width=\"292\" height=\"34\" rx=\"17\" fill=\"#2a3942\" stroke=\"#222d34\"/><text x=\"60\" y=\"796\" font-size=\"15\" fill=\"#8696a0\">Message</text><g fill=\"none\" stroke=\"#8696a0\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"358\" y=\"780\" width=\"8\" height=\"13\" rx=\"4\"/><path d=\"M355 790a7 7 0 0 0 14 0M362 797v4\"/></g><rect x=\"128\" y=\"830\" width=\"134\" height=\"5\" rx=\"2.5\" fill=\"#e9edef\" fill-opacity=\"0.85\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/word-cloud-generator":{"post":{"operationId":"run_word_cloud_generator","summary":"Word Cloud Generator","tags":["Generators"],"description":"Turn any text into a word cloud — word frequency drives font size, with shape, palette, rotation and stop-word filtering options. Generates a self-contained SVG entirely in your browser.\n\n[Try Word Cloud Generator in your browser →](https://iotools.cloud/tool/word-cloud-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"shape":{"enum":["rectangle","circle","ellipse"],"description":"Shape"},"canvasSize":{"enum":["600x400","900x600","1200x800","800x800","1600x600"],"description":"Canvas size"},"maxWords":{"type":"number","description":"Max words","minimum":10,"maximum":300},"minFontSize":{"type":"number","description":"Min font size (px)","minimum":8,"maximum":60},"maxFontSize":{"type":"number","description":"Max font size (px)","minimum":30,"maximum":200},"rotation":{"enum":["none","mixed","random"],"description":"Rotation"},"seed":{"type":"number","description":"Layout seed"},"palette":{"enum":["vibrant","pastel","ocean","sunset","forest","monochrome","grayscale"],"description":"Color palette"},"fontFamily":{"enum":["Inter, Arial, sans-serif","Georgia, 'Times New Roman', serif","'Courier New', Courier, monospace","Impact, 'Arial Black', sans-serif","'Comic Sans MS', 'Marker Felt', cursive"],"description":"Font family"},"bgColor":{"type":"string","description":"Background"},"ignoreStopWords":{"type":"boolean","description":"Exclude common stop words"},"caseSensitive":{"type":"boolean","description":"Case sensitive"},"minWordLength":{"type":"number","description":"Min word length","minimum":1,"maximum":30},"customStopWords":{"type":"string","description":"Custom exclusions"}},"required":[]},"examples":{"rectangle_vibrant_palette":{"summary":"Rectangle, vibrant palette","value":{"inputText":"cats dogs cats birds cats dogs fish","shape":"rectangle","canvasSize":"600x400","maxWords":"100","minFontSize":"14","maxFontSize":"80","rotation":"none","seed":"1","palette":"vibrant","fontFamily":"Inter, Arial, sans-serif","bgColor":"#ffffff","ignoreStopWords":"true","caseSensitive":"","minWordLength":"3","customStopWords":""}},"circle_mixed_rotation_custom_exclusions":{"summary":"Circle, mixed rotation, custom exclusions","value":{"inputText":"Python python python code code test cloud rocks","shape":"circle","canvasSize":"800x800","maxWords":"100","minFontSize":"14","maxFontSize":"80","rotation":"mixed","seed":"7","palette":"monochrome","fontFamily":"Inter, Arial, sans-serif","bgColor":"#ffffff","ignoreStopWords":"true","caseSensitive":"","minWordLength":"3","customStopWords":"test"}},"empty_input":{"summary":"Empty input","value":{"inputText":"","shape":"rectangle","canvasSize":"900x600","maxWords":"100","minFontSize":"14","maxFontSize":"80","rotation":"none","seed":"1","palette":"vibrant","fontFamily":"Inter, Arial, sans-serif","bgColor":"#ffffff","ignoreStopWords":"true","caseSensitive":"","minWordLength":"3","customStopWords":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_vibrant_palette":{"summary":"Rectangle, vibrant palette","value":{"tool":"word-cloud-generator","tool_version":"1.0.2","outputs":{"svg":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"600\" height=\"400\" viewBox=\"0 0 600 400\">\n<rect width=\"600\" height=\"400\" fill=\"#ffffff\"/>\n<text x=\"300.00\" y=\"200.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"80\" font-weight=\"700\" fill=\"#8b5cf6\" text-anchor=\"middle\" dominant-baseline=\"central\">cats</text>\n<text x=\"301.68\" y=\"284.05\" font-family=\"Inter, Arial, sans-serif\" font-size=\"61\" font-weight=\"500\" fill=\"#10b981\" text-anchor=\"middle\" dominant-baseline=\"central\">dogs</text>\n<text x=\"288.77\" y=\"142.80\" font-family=\"Inter, Arial, sans-serif\" font-size=\"14\" font-weight=\"500\" fill=\"#06b6d4\" text-anchor=\"middle\" dominant-baseline=\"central\">birds</text>\n<text x=\"325.25\" y=\"140.61\" font-family=\"Inter, Arial, sans-serif\" font-size=\"14\" font-weight=\"500\" fill=\"#8b5cf6\" text-anchor=\"middle\" dominant-baseline=\"central\">fish</text>\n</svg>","summary":[{"metric":"Unique words found","value":"4"},{"metric":"Words rendered","value":"4"},{"metric":"Words skipped (didn't fit)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"circle_mixed_rotation_custom_exclusions":{"summary":"Circle, mixed rotation, custom exclusions","value":{"tool":"word-cloud-generator","tool_version":"1.0.2","outputs":{"svg":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"800\" viewBox=\"0 0 800 800\">\n<rect width=\"800\" height=\"800\" fill=\"#ffffff\"/>\n<text x=\"400.00\" y=\"400.00\" font-family=\"Inter, Arial, sans-serif\" font-size=\"80\" font-weight=\"700\" fill=\"#1e3a8a\" text-anchor=\"middle\" dominant-baseline=\"central\" transform=\"rotate(-90.00 400.00 400.00)\">python</text>\n<text x=\"510.06\" y=\"396.42\" font-family=\"Inter, Arial, sans-serif\" font-size=\"61\" font-weight=\"500\" fill=\"#2563eb\" text-anchor=\"middle\" dominant-baseline=\"central\">code</text>\n<text x=\"335.44\" y=\"405.18\" font-family=\"Inter, Arial, sans-serif\" font-size=\"14\" font-weight=\"500\" fill=\"#1e40af\" text-anchor=\"middle\" dominant-baseline=\"central\">cloud</text>\n<text x=\"331.88\" y=\"425.64\" font-family=\"Inter, Arial, sans-serif\" font-size=\"14\" font-weight=\"500\" fill=\"#1e40af\" text-anchor=\"middle\" dominant-baseline=\"central\">rocks</text>\n</svg>","summary":[{"metric":"Unique words found","value":"4"},{"metric":"Words rendered","value":"4"},{"metric":"Words skipped (didn't fit)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"word-cloud-generator","tool_version":"1.0.2","outputs":{"svg":"","summary":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/word-combiner":{"post":{"operationId":"run_word_combiner","summary":"Word Combiner","tags":["Generators"],"description":"Combine two or more word lists into every possible combination (a Cartesian product). Great for brainstorming domain names, usernames, product names, or keyword lists — paste one word per line, pick a separator, and get every pairing back.\n\n[Try Word Combiner in your browser →](https://iotools.cloud/tool/word-combiner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"wordList1":{"type":"string","description":"Word List 1"},"wordList2":{"type":"string","description":"Word List 2"},"showList3":{"type":"boolean","description":"Add a third list"},"wordList3":{"type":"string","description":"Word List 3"},"showList4":{"type":"boolean","description":"Add a fourth list"},"wordList4":{"type":"string","description":"Word List 4"},"separator":{"enum":[" ","-","_","none","custom"],"description":"Separator"},"customSeparator":{"type":"string","description":"Custom Separator"}},"required":[]},"examples":{"two_lists_hyphen_separator":{"summary":"Two lists, hyphen separator","value":{"wordList1":"cat\ndog","wordList2":"food\ntoy","showList3":"","wordList3":"","showList4":"","wordList4":"","separator":"-","customSeparator":""}},"three_lists_space_separator":{"summary":"Three lists, space separator","value":{"wordList1":"super\nmega","wordList2":"cool\nfast","showList3":"true","wordList3":"app\nsite","showList4":"","wordList4":"","separator":" ","customSeparator":""}},"domain_ideas_custom_dot_separator":{"summary":"Domain ideas, custom dot separator","value":{"wordList1":"get\ntry","wordList2":"app\nhub","showList3":"","wordList3":"","showList4":"","wordList4":"","separator":"custom","customSeparator":"."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_lists_hyphen_separator":{"summary":"Two lists, hyphen separator","value":{"tool":"word-combiner","tool_version":"1.0.2","outputs":{"count":"4","output":"cat-food\ncat-toy\ndog-food\ndog-toy"},"credits_used":5,"credits_remaining":null}},"three_lists_space_separator":{"summary":"Three lists, space separator","value":{"tool":"word-combiner","tool_version":"1.0.2","outputs":{"count":"8","output":"super cool app\nsuper cool site\nsuper fast app\nsuper fast site\nmega cool app\nmega cool site\nmega fast app\nmega fast site"},"credits_used":5,"credits_remaining":null}},"domain_ideas_custom_dot_separator":{"summary":"Domain ideas, custom dot separator","value":{"tool":"word-combiner","tool_version":"1.0.2","outputs":{"count":"4","output":"get.app\nget.hub\ntry.app\ntry.hub"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"Combinations"},"output":{"type":"string","description":"Combined Words"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/uuid-generator":{"post":{"operationId":"run_uuid_generator","summary":"UUID Generator","tags":["Generators"],"description":"Generate RFC 9562 / RFC 4122 UUIDs — v4 (random), v1 (time-based), v5 (namespace + SHA-1), v7 (time-ordered) and the nil UUID — in bulk, upper or lower case. Generated in your browser with a cryptographic RNG.\n\n[Try UUID Generator in your browser →](https://iotools.cloud/tool/uuid-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"version":{"enum":["v4","v7","v1","v5","nil"],"description":"Version"},"namespace":{"type":"string","description":"Namespace"},"name":{"type":"string","description":"Name"},"count":{"type":"number","description":"How many","minimum":1,"maximum":100},"uppercase":{"type":"boolean","description":"Uppercase"}},"required":[]},"examples":{"one_random_uuid_v4":{"summary":"One random UUID (v4)","value":{"version":"v4","count":"1","uppercase":""}},"five_time_ordered_uuids_v7":{"summary":"Five time-ordered UUIDs (v7)","value":{"version":"v7","count":"5","uppercase":""}},"time_based_uuid_v1":{"summary":"Time-based UUID (v1)","value":{"version":"v1","count":"1","uppercase":""}},"namespace_uuid_v5_for_example_com":{"summary":"Namespace UUID (v5) for example.com","value":{"version":"v5","namespace":"6ba7b810-9dad-11d1-80b4-00c04fd430c8","name":"example.com","count":"1","uppercase":""}},"nil_uuid":{"summary":"Nil UUID","value":{"version":"nil","count":"1","uppercase":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"namespace_uuid_v5_for_example_com":{"summary":"Namespace UUID (v5) for example.com","value":{"tool":"uuid-generator","tool_version":"1.0.2","outputs":{"uuids":"cfbff0d1-9375-5685-968c-48ce8b15ae17"},"credits_used":5,"credits_remaining":null}},"nil_uuid":{"summary":"Nil UUID","value":{"tool":"uuid-generator","tool_version":"1.0.2","outputs":{"uuids":"00000000-0000-0000-0000-000000000000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"uuids":{"type":"string","description":"Generated UUIDs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/word-generator":{"post":{"operationId":"run_word_generator","summary":"Word Generator","tags":["Generators"],"description":"Generate random English words filtered by type (noun, verb, adjective, adverb), starting letters, and length.\n\n[Try Word Generator in your browser →](https://iotools.cloud/tool/word-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"Number of Words","minimum":1,"maximum":100},"wordType":{"enum":["any","noun","verb","adjective","adverb"],"description":"Word Type"},"startsWith":{"type":"string","description":"Starts With"},"minLength":{"type":"number","description":"Min Length","minimum":1,"maximum":30},"maxLength":{"type":"number","description":"Max Length","minimum":1,"maximum":30}},"required":[]},"examples":{"10_random_words":{"summary":"10 random words","value":{"count":"10","wordType":"any","startsWith":"","minLength":"","maxLength":""}},"5_adjectives_starting_with_b":{"summary":"5 adjectives starting with 'b'","value":{"count":"5","wordType":"adjective","startsWith":"b","minLength":"","maxLength":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Generated Words"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/zalgo-text-generator":{"post":{"operationId":"run_zalgo_text_generator","summary":"Zalgo Text Generator","tags":["Generators"],"description":"Turn plain text into glitchy, corrupted Zalgo text by stacking Unicode combining marks — control the chaos level and whether it bleeds above, through or below the line.\n\n[Try Zalgo Text Generator in your browser →](https://iotools.cloud/tool/zalgo-text-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Input text"},"chaos":{"type":"number","description":"Chaos level","minimum":1,"maximum":10},"top":{"type":"boolean","description":"Damage top of the text"},"middle":{"type":"boolean","description":"Damage middle of the text"},"bottom":{"type":"boolean","description":"Damage bottom of the text"},"skipSpaces":{"type":"boolean","description":"Skip spaces"}},"required":["chaos"]},"examples":{"default_chaos":{"summary":"Default chaos","value":{"text":"Hello World!","chaos":"4","top":"true","middle":"true","bottom":"true","skipSpaces":""}},"maximum_chaos_below_the_line_only":{"summary":"Maximum chaos, below the line only","value":{"text":"Hello World!","chaos":"10","top":"","middle":"","bottom":"true","skipSpaces":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Zalgo text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ulid-generator":{"post":{"operationId":"run_ulid_generator","summary":"ULID Generator","tags":["Generators"],"description":"Generate ULIDs — 26-character, Crockford Base32, lexicographically-sortable unique identifiers with a millisecond timestamp and 80 bits of cryptographically-random payload. Batch-generate as plain text, JSON, or YAML, entirely in your browser.\n\n[Try ULID Generator in your browser →](https://iotools.cloud/tool/ulid-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many to generate","minimum":1,"maximum":1000},"outputFormat":{"enum":["text","json","yaml"],"description":"Output Format"},"timestamp":{"type":"string","description":"Timestamp"},"randomHex":{"type":"string","description":"Fixed random payload (optional)"}},"required":[]},"examples":{"fixed_timestamp_and_payload":{"summary":"Fixed timestamp and payload","value":{"count":"5","outputFormat":"text","timestamp":"1469918176385","randomHex":"0123456789abcdef0123"}},"minimum_ulid_epoch_zero_payload":{"summary":"Minimum ULID (epoch, zero payload)","value":{"count":"1","outputFormat":"text","timestamp":"0","randomHex":"00000000000000000000"}},"json_array_output":{"summary":"JSON array output","value":{"count":"1","outputFormat":"json","timestamp":"1469918176385","randomHex":"0123456789abcdef0123"}},"batch_of_10_current_time":{"summary":"Batch of 10, current time","value":{"count":"10","outputFormat":"text"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fixed_timestamp_and_payload":{"summary":"Fixed timestamp and payload","value":{"tool":"ulid-generator","tool_version":"1.0.2","outputs":{"results":"01ARYZ6S4104HMASW9NF6YY093"},"credits_used":5,"credits_remaining":null}},"minimum_ulid_epoch_zero_payload":{"summary":"Minimum ULID (epoch, zero payload)","value":{"tool":"ulid-generator","tool_version":"1.0.2","outputs":{"results":"00000000000000000000000000"},"credits_used":5,"credits_remaining":null}},"json_array_output":{"summary":"JSON array output","value":{"tool":"ulid-generator","tool_version":"1.0.2","outputs":{"results":"[\n  \"01ARYZ6S4104HMASW9NF6YY093\"\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"string","description":"Generated ULIDs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/roll-the-dice":{"post":{"operationId":"run_roll_the_dice","summary":"Roll The Dice","tags":["Generators"],"description":"Roll one or many virtual dice, with any number of sides. Get the individual results plus the total and average, generated fresh every time.\n\n[Try Roll The Dice in your browser →](https://iotools.cloud/tool/roll-the-dice/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number","description":"How many dice to roll?","minimum":1,"maximum":100},"sides":{"type":"number","description":"Number of sides","minimum":2,"maximum":100}},"required":[]},"examples":{"single_roll_d6":{"summary":"Single roll (d6)","value":{"count":"1","sides":"6"}},"5_rolls_of_a_d20":{"summary":"5 rolls of a d20","value":{"count":"5","sides":"20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tarot-birth-card":{"post":{"operationId":"run_tarot_birth_card","summary":"Tarot Birth Card Calculator","tags":["Generators"],"description":"Find your Tarot birth card(s) from your date of birth. Uses the classic numerological reduction (month + day + year, digit-summed to a Major Arcana number) to reveal your birth card(s), their keywords and traditional meaning.\n\n[Try Tarot Birth Card Calculator in your browser →](https://iotools.cloud/tool/tarot-birth-card/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"birthDate":{"type":"string","description":"Date of Birth"}},"required":["birthDate"]},"examples":{"single_card_the_emperor":{"summary":"Single card — The Emperor","value":{"birthDate":"1990-06-15"}},"pair_the_tower_the_chariot":{"summary":"Pair — The Tower & The Chariot","value":{"birthDate":"1930-12-18"}},"triple_the_sun_wheel_of_fortune_magician":{"summary":"Triple — The Sun, Wheel of Fortune & Magician","value":{"birthDate":"1963-12-15"}},"fool_pair_the_fool_the_emperor":{"summary":"Fool pair — The Fool & The Emperor","value":{"birthDate":"1966-12-15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_card_the_emperor":{"summary":"Single card — The Emperor","value":{"tool":"tarot-birth-card","tool_version":"1.0.2","outputs":{"summary":"The Emperor (IV)","cards":[{"card":"The Emperor","major-arcana":"Major Arcana 4 (IV) · Fire · Aries","keywords":"Authority · Structure · Stability · Leadership","meaning":"A natural leader who brings order and structure to chaos, building lasting foundations through determination, discipline and strategic thinking."}],"calculation":"Tarot Birth Card calculation\n\nAdd the date:   6 (month) + 15 (day) + 1990 (year) = 2011\nReduce digits:  2 + 0 + 1 + 1 = 4\n\nBirth card:     4 The Emperor"},"credits_used":5,"credits_remaining":null}},"pair_the_tower_the_chariot":{"summary":"Pair — The Tower & The Chariot","value":{"tool":"tarot-birth-card","tool_version":"1.0.2","outputs":{"summary":"The Tower (XVI)  &  The Chariot (VII)","cards":[{"card":"The Tower","major-arcana":"Major Arcana 16 (XVI) · Fire · Mars","keywords":"Upheaval · Revelation · Awakening · Liberation","meaning":"A catalyst for sudden, necessary change, with the courage to tear down false structures and rebuild stronger, moving through dramatic breakthroughs to truth."},{"card":"The Chariot","major-arcana":"Major Arcana 7 (VII) · Water · Cancer","keywords":"Determination · Triumph · Willpower · Control","meaning":"A determined achiever who harnesses opposing forces to move forward with focused willpower, winning victory through discipline and rarely giving up."}],"calculation":"Tarot Birth Card calculation\n\nAdd the date:   12 (month) + 18 (day) + 1930 (year) = 1960\nReduce digits:  1 + 9 + 6 + 0 = 16\n\nBirth cards:    16 The Tower + 7 The Chariot\n\nThe Tower and The Chariot merge breakthrough change with determined willpower — tearing down what no longer serves, then charging forward."},"credits_used":5,"credits_remaining":null}},"triple_the_sun_wheel_of_fortune_magician":{"summary":"Triple — The Sun, Wheel of Fortune & Magician","value":{"tool":"tarot-birth-card","tool_version":"1.0.2","outputs":{"summary":"The Sun (XIX)  &  The Wheel of Fortune (X)  &  The Magician (I)","cards":[{"card":"The Sun","major-arcana":"Major Arcana 19 (XIX) · Fire · Sun","keywords":"Joy · Success · Vitality · Confidence","meaning":"Radiates warmth, joy and confidence, with infectious optimism and a natural ability to bring out the best in people and to be rewarded for authenticity."},{"card":"The Wheel of Fortune","major-arcana":"Major Arcana 10 (X) · Fire · Jupiter","keywords":"Cycles · Destiny · Change · Luck","meaning":"Understands life's cyclical nature and embraces change as a constant, adapting to fate's turning points with a philosophical, optimistic outlook."},{"card":"The Magician","major-arcana":"Major Arcana 1 (I) · Air · Mercury","keywords":"Willpower · Manifestation · Resourcefulness · Skill","meaning":"A natural manifester who turns ideas into reality through focused willpower and resourcefulness, understanding that all the tools needed are already within."}],"calculation":"Tarot Birth Card calculation\n\nAdd the date:   12 (month) + 15 (day) + 1963 (year) = 1990\nReduce digits:  1 + 9 + 9 + 0 = 19\n\nBirth cards:    19 The Sun + 10 The Wheel of Fortune + 1 The Magician\n\nThe Sun, The Wheel of Fortune and The Magician form a powerful triple of radiant success, destiny's cycles and creative willpower."},"credits_used":5,"credits_remaining":null}},"fool_pair_the_fool_the_emperor":{"summary":"Fool pair — The Fool & The Emperor","value":{"tool":"tarot-birth-card","tool_version":"1.0.2","outputs":{"summary":"The Fool (XXII)  &  The Emperor (IV)","cards":[{"card":"The Fool","major-arcana":"Major Arcana 0 / XXII · Air · Uranus","keywords":"New beginnings · Innocence · Spontaneity · Free spirit","meaning":"A free spirit who embraces new beginnings with childlike wonder, taking leaps of faith and trusting the journey even when the destination is unknown."},{"card":"The Emperor","major-arcana":"Major Arcana 4 (IV) · Fire · Aries","keywords":"Authority · Structure · Stability · Leadership","meaning":"A natural leader who brings order and structure to chaos, building lasting foundations through determination, discipline and strategic thinking."}],"calculation":"Tarot Birth Card calculation\n\nAdd the date:   12 (month) + 15 (day) + 1966 (year) = 1993\nReduce digits:  1 + 9 + 9 + 3 = 22\n\nBirth cards:    22 The Fool + 4 The Emperor\n\nThe Fool and The Emperor unite infinite possibility with structured authority — balancing childlike openness with mature leadership."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Your Birth Card(s)"},"cards":{"type":"array","description":"Card Details","items":{"type":"object","properties":{"card":{"type":"string","description":"Card"},"major-arcana":{"type":"string","description":"Major Arcana"},"keywords":{"type":"string","description":"Keywords"},"meaning":{"type":"string","description":"Meaning"}}},"x-iotools-columns":["card","major-arcana","keywords","meaning"]},"calculation":{"type":"string","description":"How It Was Calculated"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-sprite-sheet-generator":{"post":{"operationId":"run_svg_sprite_sheet_generator","summary":"SVG Sprite Sheet Generator","tags":["Generators"],"description":"Combine multiple pasted SVG icons into a single sprite sheet using &lt;symbol id> elements, each keeping its own viewBox. Emits the sprite markup plus ready-to-use &lt;use> reference snippets (external file, inline, or CSS background).\n\n[Try SVG Sprite Sheet Generator in your browser →](https://iotools.cloud/tool/svg-sprite-sheet-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"svgInput":{"type":"string","description":"SVG Documents"},"removeFills":{"type":"boolean","description":"Remove fill & stroke attributes"},"optimize":{"type":"boolean","description":"Optimize & minify"},"snippetType":{"enum":["external","inline","css"],"description":"Usage Snippet Type"}},"required":[]},"examples":{"two_icons_independent_viewboxes":{"summary":"Two icons, independent viewBoxes","value":{"svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><title>arrow-right</title><path d=\"M5 12h14M13 6l6 6-6 6\"/></svg>\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><title>arrow-left</title><path d=\"M27 16H5M13 8l-8 8 8 8\"/></svg>","removeFills":"","optimize":"true","snippetType":"external"}},"untitled_icon_remove_fills_inline_snippet":{"summary":"Untitled icon — remove fills, inline snippet","value":{"svgInput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"><circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"#ff0000\" stroke=\"#000000\"/></svg>","removeFills":"true","optimize":"true","snippetType":"inline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_icons_independent_viewboxes":{"summary":"Two icons, independent viewBoxes","value":{"tool":"svg-sprite-sheet-generator","tool_version":"1.0.2","outputs":{"spriteCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:none\">\n  <symbol id=\"arrow-right\" viewBox=\"0 0 24 24\">\n    <path d=\"M5 12h14M13 6l6 6-6 6\"/>\n  </symbol>\n  <symbol id=\"arrow-left\" viewBox=\"0 0 32 32\">\n    <path d=\"M27 16H5M13 8l-8 8 8 8\"/>\n  </symbol>\n</svg>","usageCode":"<svg width=\"24\" height=\"24\"><use href=\"sprite.svg#arrow-right\"/></svg>\n<svg width=\"24\" height=\"24\"><use href=\"sprite.svg#arrow-left\"/></svg>","stats":[{"property":"Icons Combined","value":"2"},{"property":"Individual SVGs Total","value":"250 B"},{"property":"Combined Sprite","value":"264 B"},{"property":"Size Increase","value":"5.6%"}]},"credits_used":5,"credits_remaining":null}},"untitled_icon_remove_fills_inline_snippet":{"summary":"Untitled icon — remove fills, inline snippet","value":{"tool":"svg-sprite-sheet-generator","tool_version":"1.0.2","outputs":{"spriteCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display:none\">\n  <symbol id=\"icon-1\" viewBox=\"0 0 20 20\">\n    <circle cx=\"10\" cy=\"10\" r=\"8\"/>\n  </symbol>\n</svg>","usageCode":"<svg width=\"24\" height=\"24\"><use href=\"#icon-1\"/></svg>","stats":[{"property":"Icons Combined","value":"1"},{"property":"Individual SVGs Total","value":"132 B"},{"property":"Combined Sprite","value":"159 B"},{"property":"Size Increase","value":"20.5%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"spriteCode":{"type":"string","description":"Sprite Sheet SVG"},"usageCode":{"type":"string","description":"Usage Snippets"},"stats":{"type":"array","description":"Size Comparison","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-wave-generator":{"post":{"operationId":"run_svg_wave_generator","summary":"SVG Wave Generator","tags":["Generators"],"description":"Generate a decorative SVG wave — a section divider or hero background — from a chosen shape, amplitude, frequency, layers and colours. Copy the SVG, a CSS background-image snippet, or ready-to-paste HTML. Runs entirely in your browser.\n\n[Try SVG Wave Generator in your browser →](https://iotools.cloud/tool/svg-wave-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"waveStyle":{"enum":["sine","layered","zigzag","hills","asymmetric","blob"],"description":"Wave style"},"amplitude":{"type":"number","description":"Amplitude","minimum":20,"maximum":200},"frequency":{"type":"number","description":"Frequency","minimum":1,"maximum":10},"width":{"type":"number","description":"Width","minimum":200,"maximum":3000},"height":{"type":"number","description":"Height","minimum":50,"maximum":600},"flipVertical":{"type":"boolean","description":"Flip vertical"},"flipHorizontal":{"type":"boolean","description":"Flip horizontal"},"layers":{"type":"number","description":"Number of layers","minimum":1,"maximum":4},"color1":{"type":"string","description":"Layer 1 colour"},"opacity1":{"type":"number","description":"Layer 1 opacity","minimum":10,"maximum":100},"color2":{"type":"string","description":"Layer 2 colour"},"opacity2":{"type":"number","description":"Layer 2 opacity","minimum":10,"maximum":100},"color3":{"type":"string","description":"Layer 3 colour"},"opacity3":{"type":"number","description":"Layer 3 opacity","minimum":10,"maximum":100},"color4":{"type":"string","description":"Layer 4 colour"},"opacity4":{"type":"number","description":"Layer 4 opacity","minimum":10,"maximum":100},"bgColor":{"type":"string","description":"Background colour"},"animate":{"type":"boolean","description":"Animate waves"},"animSpeed":{"enum":["slow","medium","fast"],"description":"Speed"}},"required":[]},"examples":{"smooth_sine_divider":{"summary":"Smooth sine divider","value":{"waveStyle":"sine","amplitude":"60","frequency":"3","width":"1200","height":"200","layers":"1","color1":"#464aff","opacity1":"100","bgColor":"#f5f5f5"}},"rounded_hills":{"summary":"Rounded hills","value":{"waveStyle":"hills","amplitude":"80","frequency":"4","width":"1000","height":"220","layers":"1","color1":"#0ea5e9","opacity1":"100","bgColor":"#ffffff"}},"three_layered_waves":{"summary":"Three layered waves","value":{"waveStyle":"layered","amplitude":"50","frequency":"2","width":"1200","height":"260","layers":"3","color1":"#464aff","opacity1":"100","color2":"#6c70ff","opacity2":"70","color3":"#9395ff","opacity3":"50","bgColor":"#f5f5f5"}},"zigzag_flipped":{"summary":"Zigzag, flipped","value":{"waveStyle":"zigzag","amplitude":"70","frequency":"5","width":"800","height":"150","flipVertical":"true","layers":"1","color1":"#f97316","opacity1":"100","bgColor":"#fff7ed"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"smooth_sine_divider":{"summary":"Smooth sine divider","value":{"tool":"svg-wave-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 200 L 0 80 C 3.33 83.09, 13.33 92.66, 20 98.54 C 26.67 104.42, 33.33 110.27, 40 115.27 C 46.67 120.27, 53.33 124.91, 60 128.54 C 66.67 132.17, 73.33 135.15, 80 137.06 C 86.67 138.97, 93.33 140, 100 140 C 106.67 140, 113.33 138.97, 120 137.06 C 126.67 135.15, 133.33 132.17, 140 128.54 C 146.67 124.91, 153.33 120.27, 160 115.27 C 166.67 110.27, 173.33 104.42, 180 98.54 C 186.67 92.66, 193.33 86.18, 200 80 C 206.67 73.82, 213.33 67.34, 220 61.46 C 226.67 55.58, 233.33 49.73, 240 44.73 C 246.67 39.73, 253.33 35.09, 260 31.46 C 266.67 27.83, 273.33 24.85, 280 22.94 C 286.67 21.03, 293.33 20, 300 20 C 306.67 20, 313.33 21.03, 320 22.94 C 326.67 24.85, 333.33 27.83, 340 31.46 C 346.67 35.09, 353.33 39.73, 360 44.73 C 366.67 49.73, 373.33 55.58, 380 61.46 C 386.67 67.34, 393.33 73.82, 400 80 C 406.67 86.18, 413.33 92.66, 420 98.54 C 426.67 104.42, 433.33 110.27, 440 115.27 C 446.67 120.27, 453.33 124.91, 460 128.54 C 466.67 132.17, 473.33 135.15, 480 137.06 C 486.67 138.97, 493.33 140, 500 140 C 506.67 140, 513.33 138.97, 520 137.06 C 526.67 135.15, 533.33 132.17, 540 128.54 C 546.67 124.91, 553.33 120.27, 560 115.27 C 566.67 110.27, 573.33 104.42, 580 98.54 C 586.67 92.66, 593.33 86.18, 600 80 C 606.67 73.82, 613.33 67.34, 620 61.46 C 626.67 55.58, 633.33 49.73, 640 44.73 C 646.67 39.73, 653.33 35.09, 660 31.46 C 666.67 27.83, 673.33 24.85, 680 22.94 C 686.67 21.03, 693.33 20, 700 20 C 706.67 20, 713.33 21.03, 720 22.94 C 726.67 24.85, 733.33 27.83, 740 31.46 C 746.67 35.09, 753.33 39.73, 760 44.73 C 766.67 49.73, 773.33 55.58, 780 61.46 C 786.67 67.34, 793.33 73.82, 800 80 C 806.67 86.18, 813.33 92.66, 820 98.54 C 826.67 104.42, 833.33 110.27, 840 115.27 C 846.67 120.27, 853.33 124.91, 860 128.54 C 866.67 132.17, 873.33 135.15, 880 137.06 C 886.67 138.97, 893.33 140, 900 140 C 906.67 140, 913.33 138.97, 920 137.06 C 926.67 135.15, 933.33 132.17, 940 128.54 C 946.67 124.91, 953.33 120.27, 960 115.27 C 966.67 110.27, 973.33 104.42, 980 98.54 C 986.67 92.66, 993.33 86.18, 1000 80 C 1006.67 73.82, 1013.33 67.34, 1020 61.46 C 1026.67 55.58, 1033.33 49.73, 1040 44.73 C 1046.67 39.73, 1053.33 35.09, 1060 31.46 C 1066.67 27.83, 1073.33 24.85, 1080 22.94 C 1086.67 21.03, 1093.33 20, 1100 20 C 1106.67 20, 1113.33 21.03, 1120 22.94 C 1126.67 24.85, 1133.33 27.83, 1140 31.46 C 1146.67 35.09, 1153.33 39.73, 1160 44.73 C 1166.67 49.73, 1173.33 55.58, 1180 61.46 C 1186.67 67.34, 1196.67 76.91, 1200 80 L 1200 200 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>","css":".wave-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20200%22%20width%3D%221200%22%20height%3D%22200%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221200%22%20height%3D%22200%22%20fill%3D%22%23f5f5f5%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%20200%20L%200%2080%20C%203.33%2083.09%2C%2013.33%2092.66%2C%2020%2098.54%20C%2026.67%20104.42%2C%2033.33%20110.27%2C%2040%20115.27%20C%2046.67%20120.27%2C%2053.33%20124.91%2C%2060%20128.54%20C%2066.67%20132.17%2C%2073.33%20135.15%2C%2080%20137.06%20C%2086.67%20138.97%2C%2093.33%20140%2C%20100%20140%20C%20106.67%20140%2C%20113.33%20138.97%2C%20120%20137.06%20C%20126.67%20135.15%2C%20133.33%20132.17%2C%20140%20128.54%20C%20146.67%20124.91%2C%20153.33%20120.27%2C%20160%20115.27%20C%20166.67%20110.27%2C%20173.33%20104.42%2C%20180%2098.54%20C%20186.67%2092.66%2C%20193.33%2086.18%2C%20200%2080%20C%20206.67%2073.82%2C%20213.33%2067.34%2C%20220%2061.46%20C%20226.67%2055.58%2C%20233.33%2049.73%2C%20240%2044.73%20C%20246.67%2039.73%2C%20253.33%2035.09%2C%20260%2031.46%20C%20266.67%2027.83%2C%20273.33%2024.85%2C%20280%2022.94%20C%20286.67%2021.03%2C%20293.33%2020%2C%20300%2020%20C%20306.67%2020%2C%20313.33%2021.03%2C%20320%2022.94%20C%20326.67%2024.85%2C%20333.33%2027.83%2C%20340%2031.46%20C%20346.67%2035.09%2C%20353.33%2039.73%2C%20360%2044.73%20C%20366.67%2049.73%2C%20373.33%2055.58%2C%20380%2061.46%20C%20386.67%2067.34%2C%20393.33%2073.82%2C%20400%2080%20C%20406.67%2086.18%2C%20413.33%2092.66%2C%20420%2098.54%20C%20426.67%20104.42%2C%20433.33%20110.27%2C%20440%20115.27%20C%20446.67%20120.27%2C%20453.33%20124.91%2C%20460%20128.54%20C%20466.67%20132.17%2C%20473.33%20135.15%2C%20480%20137.06%20C%20486.67%20138.97%2C%20493.33%20140%2C%20500%20140%20C%20506.67%20140%2C%20513.33%20138.97%2C%20520%20137.06%20C%20526.67%20135.15%2C%20533.33%20132.17%2C%20540%20128.54%20C%20546.67%20124.91%2C%20553.33%20120.27%2C%20560%20115.27%20C%20566.67%20110.27%2C%20573.33%20104.42%2C%20580%2098.54%20C%20586.67%2092.66%2C%20593.33%2086.18%2C%20600%2080%20C%20606.67%2073.82%2C%20613.33%2067.34%2C%20620%2061.46%20C%20626.67%2055.58%2C%20633.33%2049.73%2C%20640%2044.73%20C%20646.67%2039.73%2C%20653.33%2035.09%2C%20660%2031.46%20C%20666.67%2027.83%2C%20673.33%2024.85%2C%20680%2022.94%20C%20686.67%2021.03%2C%20693.33%2020%2C%20700%2020%20C%20706.67%2020%2C%20713.33%2021.03%2C%20720%2022.94%20C%20726.67%2024.85%2C%20733.33%2027.83%2C%20740%2031.46%20C%20746.67%2035.09%2C%20753.33%2039.73%2C%20760%2044.73%20C%20766.67%2049.73%2C%20773.33%2055.58%2C%20780%2061.46%20C%20786.67%2067.34%2C%20793.33%2073.82%2C%20800%2080%20C%20806.67%2086.18%2C%20813.33%2092.66%2C%20820%2098.54%20C%20826.67%20104.42%2C%20833.33%20110.27%2C%20840%20115.27%20C%20846.67%20120.27%2C%20853.33%20124.91%2C%20860%20128.54%20C%20866.67%20132.17%2C%20873.33%20135.15%2C%20880%20137.06%20C%20886.67%20138.97%2C%20893.33%20140%2C%20900%20140%20C%20906.67%20140%2C%20913.33%20138.97%2C%20920%20137.06%20C%20926.67%20135.15%2C%20933.33%20132.17%2C%20940%20128.54%20C%20946.67%20124.91%2C%20953.33%20120.27%2C%20960%20115.27%20C%20966.67%20110.27%2C%20973.33%20104.42%2C%20980%2098.54%20C%20986.67%2092.66%2C%20993.33%2086.18%2C%201000%2080%20C%201006.67%2073.82%2C%201013.33%2067.34%2C%201020%2061.46%20C%201026.67%2055.58%2C%201033.33%2049.73%2C%201040%2044.73%20C%201046.67%2039.73%2C%201053.33%2035.09%2C%201060%2031.46%20C%201066.67%2027.83%2C%201073.33%2024.85%2C%201080%2022.94%20C%201086.67%2021.03%2C%201093.33%2020%2C%201100%2020%20C%201106.67%2020%2C%201113.33%2021.03%2C%201120%2022.94%20C%201126.67%2024.85%2C%201133.33%2027.83%2C%201140%2031.46%20C%201146.67%2035.09%2C%201153.33%2039.73%2C%201160%2044.73%20C%201166.67%2049.73%2C%201173.33%2055.58%2C%201180%2061.46%20C%201186.67%2067.34%2C%201196.67%2076.91%2C%201200%2080%20L%201200%20200%20Z%22%20fill%3D%22%23464aff%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"wave-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 200\" width=\"1200\" height=\"200\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"200\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 200 L 0 80 C 3.33 83.09, 13.33 92.66, 20 98.54 C 26.67 104.42, 33.33 110.27, 40 115.27 C 46.67 120.27, 53.33 124.91, 60 128.54 C 66.67 132.17, 73.33 135.15, 80 137.06 C 86.67 138.97, 93.33 140, 100 140 C 106.67 140, 113.33 138.97, 120 137.06 C 126.67 135.15, 133.33 132.17, 140 128.54 C 146.67 124.91, 153.33 120.27, 160 115.27 C 166.67 110.27, 173.33 104.42, 180 98.54 C 186.67 92.66, 193.33 86.18, 200 80 C 206.67 73.82, 213.33 67.34, 220 61.46 C 226.67 55.58, 233.33 49.73, 240 44.73 C 246.67 39.73, 253.33 35.09, 260 31.46 C 266.67 27.83, 273.33 24.85, 280 22.94 C 286.67 21.03, 293.33 20, 300 20 C 306.67 20, 313.33 21.03, 320 22.94 C 326.67 24.85, 333.33 27.83, 340 31.46 C 346.67 35.09, 353.33 39.73, 360 44.73 C 366.67 49.73, 373.33 55.58, 380 61.46 C 386.67 67.34, 393.33 73.82, 400 80 C 406.67 86.18, 413.33 92.66, 420 98.54 C 426.67 104.42, 433.33 110.27, 440 115.27 C 446.67 120.27, 453.33 124.91, 460 128.54 C 466.67 132.17, 473.33 135.15, 480 137.06 C 486.67 138.97, 493.33 140, 500 140 C 506.67 140, 513.33 138.97, 520 137.06 C 526.67 135.15, 533.33 132.17, 540 128.54 C 546.67 124.91, 553.33 120.27, 560 115.27 C 566.67 110.27, 573.33 104.42, 580 98.54 C 586.67 92.66, 593.33 86.18, 600 80 C 606.67 73.82, 613.33 67.34, 620 61.46 C 626.67 55.58, 633.33 49.73, 640 44.73 C 646.67 39.73, 653.33 35.09, 660 31.46 C 666.67 27.83, 673.33 24.85, 680 22.94 C 686.67 21.03, 693.33 20, 700 20 C 706.67 20, 713.33 21.03, 720 22.94 C 726.67 24.85, 733.33 27.83, 740 31.46 C 746.67 35.09, 753.33 39.73, 760 44.73 C 766.67 49.73, 773.33 55.58, 780 61.46 C 786.67 67.34, 793.33 73.82, 800 80 C 806.67 86.18, 813.33 92.66, 820 98.54 C 826.67 104.42, 833.33 110.27, 840 115.27 C 846.67 120.27, 853.33 124.91, 860 128.54 C 866.67 132.17, 873.33 135.15, 880 137.06 C 886.67 138.97, 893.33 140, 900 140 C 906.67 140, 913.33 138.97, 920 137.06 C 926.67 135.15, 933.33 132.17, 940 128.54 C 946.67 124.91, 953.33 120.27, 960 115.27 C 966.67 110.27, 973.33 104.42, 980 98.54 C 986.67 92.66, 993.33 86.18, 1000 80 C 1006.67 73.82, 1013.33 67.34, 1020 61.46 C 1026.67 55.58, 1033.33 49.73, 1040 44.73 C 1046.67 39.73, 1053.33 35.09, 1060 31.46 C 1066.67 27.83, 1073.33 24.85, 1080 22.94 C 1086.67 21.03, 1093.33 20, 1100 20 C 1106.67 20, 1113.33 21.03, 1120 22.94 C 1126.67 24.85, 1133.33 27.83, 1140 31.46 C 1146.67 35.09, 1153.33 39.73, 1160 44.73 C 1166.67 49.73, 1173.33 55.58, 1180 61.46 C 1186.67 67.34, 1196.67 76.91, 1200 80 L 1200 200 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"rounded_hills":{"summary":"Rounded hills","value":{"tool":"svg-wave-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 220\" width=\"1000\" height=\"220\" preserveAspectRatio=\"none\">\n  <rect width=\"1000\" height=\"220\" fill=\"#ffffff\"/>\n  <g>\n  <path d=\"M 0 220 L 0 112 Q 125 8, 250 112 Q 375 8, 500 112 Q 625 8, 750 112 Q 875 8, 1000 112 L 1000 220 Z\" fill=\"#0ea5e9\"/>\n  </g>\n</svg>","css":".wave-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201000%20220%22%20width%3D%221000%22%20height%3D%22220%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221000%22%20height%3D%22220%22%20fill%3D%22%23ffffff%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%20220%20L%200%20112%20Q%20125%208%2C%20250%20112%20Q%20375%208%2C%20500%20112%20Q%20625%208%2C%20750%20112%20Q%20875%208%2C%201000%20112%20L%201000%20220%20Z%22%20fill%3D%22%230ea5e9%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"wave-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 220\" width=\"1000\" height=\"220\" preserveAspectRatio=\"none\">\n  <rect width=\"1000\" height=\"220\" fill=\"#ffffff\"/>\n  <g>\n  <path d=\"M 0 220 L 0 112 Q 125 8, 250 112 Q 375 8, 500 112 Q 625 8, 750 112 Q 875 8, 1000 112 L 1000 220 Z\" fill=\"#0ea5e9\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"three_layered_waves":{"summary":"Three layered waves","value":{"tool":"svg-wave-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 260\" width=\"1200\" height=\"260\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"260\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 260 L 0 77.75 C 5 75.77, 20 69.21, 30 65.88 C 40 62.55, 50 59.7, 60 57.75 C 70 55.79, 80 54.53, 90 54.14 C 100 53.75, 110 54.2, 120 55.42 C 130 56.63, 140 58.74, 150 61.45 C 160 64.15, 170 67.72, 180 71.64 C 190 75.57, 200 80.24, 210 85.01 C 220 89.77, 230 95.09, 240 100.23 C 250 105.36, 260 110.81, 270 115.82 C 280 120.82, 290 125.87, 300 130.25 C 310 134.64, 320 138.79, 330 142.12 C 340 145.45, 350 148.3, 360 150.25 C 370 152.21, 380 153.47, 390 153.86 C 400 154.25, 410 153.8, 420 152.58 C 430 151.37, 440 149.26, 450 146.55 C 460 143.85, 470 140.28, 480 136.36 C 490 132.43, 500 127.76, 510 122.99 C 520 118.23, 530 112.91, 540 107.77 C 550 102.64, 560 97.19, 570 92.18 C 580 87.18, 590 82.13, 600 77.75 C 610 73.36, 620 69.21, 630 65.88 C 640 62.55, 650 59.7, 660 57.75 C 670 55.79, 680 54.53, 690 54.14 C 700 53.75, 710 54.2, 720 55.42 C 730 56.63, 740 58.74, 750 61.45 C 760 64.15, 770 67.72, 780 71.64 C 790 75.57, 800 80.24, 810 85.01 C 820 89.77, 830 95.09, 840 100.23 C 850 105.36, 860 110.81, 870 115.82 C 880 120.82, 890 125.87, 900 130.25 C 910 134.64, 920 138.79, 930 142.12 C 940 145.45, 950 148.3, 960 150.25 C 970 152.21, 980 153.47, 990 153.86 C 1000 154.25, 1010 153.8, 1020 152.58 C 1030 151.37, 1040 149.26, 1050 146.55 C 1060 143.85, 1070 140.28, 1080 136.36 C 1090 132.43, 1100 127.76, 1110 122.99 C 1120 118.23, 1130 112.91, 1140 107.77 C 1150 102.64, 1160 97.19, 1170 92.18 C 1180 87.18, 1195 80.15, 1200 77.75 L 1200 260 Z\" fill=\"#9395ff80\"/>\n  <path d=\"M 0 260 L 0 152.1 C 5 151.01, 20 148.4, 30 145.53 C 40 142.66, 50 138.94, 60 134.9 C 70 130.85, 80 126.07, 90 121.23 C 100 116.4, 110 111.03, 120 105.89 C 130 100.74, 140 95.31, 150 90.36 C 160 85.4, 170 80.44, 180 76.16 C 190 71.88, 200 67.87, 210 64.69 C 220 61.51, 230 58.84, 240 57.06 C 250 55.29, 260 54.23, 270 54.04 C 280 53.84, 290 54.49, 300 55.9 C 310 57.3, 320 59.6, 330 62.47 C 340 65.34, 350 69.06, 360 73.1 C 370 77.15, 380 81.93, 390 86.77 C 400 91.6, 410 96.97, 420 102.11 C 430 107.26, 440 112.69, 450 117.64 C 460 122.6, 470 127.56, 480 131.84 C 490 136.12, 500 140.13, 510 143.31 C 520 146.49, 530 149.16, 540 150.94 C 550 152.71, 560 153.77, 570 153.96 C 580 154.16, 590 153.51, 600 152.1 C 610 150.7, 620 148.4, 630 145.53 C 640 142.66, 650 138.94, 660 134.9 C 670 130.85, 680 126.07, 690 121.23 C 700 116.4, 710 111.03, 720 105.89 C 730 100.74, 740 95.31, 750 90.36 C 760 85.4, 770 80.44, 780 76.16 C 790 71.88, 800 67.87, 810 64.69 C 820 61.51, 830 58.84, 840 57.06 C 850 55.29, 860 54.23, 870 54.04 C 880 53.84, 890 54.49, 900 55.9 C 910 57.3, 920 59.6, 930 62.47 C 940 65.34, 950 69.06, 960 73.1 C 970 77.15, 980 81.93, 990 86.77 C 1000 91.6, 1010 96.97, 1020 102.11 C 1030 107.26, 1040 112.69, 1050 117.64 C 1060 122.6, 1070 127.56, 1080 131.84 C 1090 136.12, 1100 140.13, 1110 143.31 C 1120 146.49, 1130 149.16, 1140 150.94 C 1150 152.71, 1160 153.77, 1170 153.96 C 1180 154.16, 1195 152.41, 1200 152.1 L 1200 260 Z\" fill=\"#6c70ffb3\"/>\n  <path d=\"M 0 260 L 0 104 C 5 106.58, 20 114.55, 30 119.45 C 40 124.35, 50 129.22, 60 133.39 C 70 137.56, 80 141.42, 90 144.45 C 100 147.48, 110 149.96, 120 151.55 C 130 153.14, 140 154, 150 154 C 160 154, 170 153.14, 180 151.55 C 190 149.96, 200 147.48, 210 144.45 C 220 141.42, 230 137.56, 240 133.39 C 250 129.22, 260 124.35, 270 119.45 C 280 114.55, 290 109.15, 300 104 C 310 98.85, 320 93.45, 330 88.55 C 340 83.65, 350 78.78, 360 74.61 C 370 70.44, 380 66.58, 390 63.55 C 400 60.52, 410 58.04, 420 56.45 C 430 54.86, 440 54, 450 54 C 460 54, 470 54.86, 480 56.45 C 490 58.04, 500 60.52, 510 63.55 C 520 66.58, 530 70.44, 540 74.61 C 550 78.78, 560 83.65, 570 88.55 C 580 93.45, 590 98.85, 600 104 C 610 109.15, 620 114.55, 630 119.45 C 640 124.35, 650 129.22, 660 133.39 C 670 137.56, 680 141.42, 690 144.45 C 700 147.48, 710 149.96, 720 151.55 C 730 153.14, 740 154, 750 154 C 760 154, 770 153.14, 780 151.55 C 790 149.96, 800 147.48, 810 144.45 C 820 141.42, 830 137.56, 840 133.39 C 850 129.22, 860 124.35, 870 119.45 C 880 114.55, 890 109.15, 900 104 C 910 98.85, 920 93.45, 930 88.55 C 940 83.65, 950 78.78, 960 74.61 C 970 70.44, 980 66.58, 990 63.55 C 1000 60.52, 1010 58.04, 1020 56.45 C 1030 54.86, 1040 54, 1050 54 C 1060 54, 1070 54.86, 1080 56.45 C 1090 58.04, 1100 60.52, 1110 63.55 C 1120 66.58, 1130 70.44, 1140 74.61 C 1150 78.78, 1160 83.65, 1170 88.55 C 1180 93.45, 1195 101.42, 1200 104 L 1200 260 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>","css":".wave-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20260%22%20width%3D%221200%22%20height%3D%22260%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%221200%22%20height%3D%22260%22%20fill%3D%22%23f5f5f5%22%2F%3E%0A%20%20%3Cg%3E%0A%20%20%3Cpath%20d%3D%22M%200%20260%20L%200%2077.75%20C%205%2075.77%2C%2020%2069.21%2C%2030%2065.88%20C%2040%2062.55%2C%2050%2059.7%2C%2060%2057.75%20C%2070%2055.79%2C%2080%2054.53%2C%2090%2054.14%20C%20100%2053.75%2C%20110%2054.2%2C%20120%2055.42%20C%20130%2056.63%2C%20140%2058.74%2C%20150%2061.45%20C%20160%2064.15%2C%20170%2067.72%2C%20180%2071.64%20C%20190%2075.57%2C%20200%2080.24%2C%20210%2085.01%20C%20220%2089.77%2C%20230%2095.09%2C%20240%20100.23%20C%20250%20105.36%2C%20260%20110.81%2C%20270%20115.82%20C%20280%20120.82%2C%20290%20125.87%2C%20300%20130.25%20C%20310%20134.64%2C%20320%20138.79%2C%20330%20142.12%20C%20340%20145.45%2C%20350%20148.3%2C%20360%20150.25%20C%20370%20152.21%2C%20380%20153.47%2C%20390%20153.86%20C%20400%20154.25%2C%20410%20153.8%2C%20420%20152.58%20C%20430%20151.37%2C%20440%20149.26%2C%20450%20146.55%20C%20460%20143.85%2C%20470%20140.28%2C%20480%20136.36%20C%20490%20132.43%2C%20500%20127.76%2C%20510%20122.99%20C%20520%20118.23%2C%20530%20112.91%2C%20540%20107.77%20C%20550%20102.64%2C%20560%2097.19%2C%20570%2092.18%20C%20580%2087.18%2C%20590%2082.13%2C%20600%2077.75%20C%20610%2073.36%2C%20620%2069.21%2C%20630%2065.88%20C%20640%2062.55%2C%20650%2059.7%2C%20660%2057.75%20C%20670%2055.79%2C%20680%2054.53%2C%20690%2054.14%20C%20700%2053.75%2C%20710%2054.2%2C%20720%2055.42%20C%20730%2056.63%2C%20740%2058.74%2C%20750%2061.45%20C%20760%2064.15%2C%20770%2067.72%2C%20780%2071.64%20C%20790%2075.57%2C%20800%2080.24%2C%20810%2085.01%20C%20820%2089.77%2C%20830%2095.09%2C%20840%20100.23%20C%20850%20105.36%2C%20860%20110.81%2C%20870%20115.82%20C%20880%20120.82%2C%20890%20125.87%2C%20900%20130.25%20C%20910%20134.64%2C%20920%20138.79%2C%20930%20142.12%20C%20940%20145.45%2C%20950%20148.3%2C%20960%20150.25%20C%20970%20152.21%2C%20980%20153.47%2C%20990%20153.86%20C%201000%20154.25%2C%201010%20153.8%2C%201020%20152.58%20C%201030%20151.37%2C%201040%20149.26%2C%201050%20146.55%20C%201060%20143.85%2C%201070%20140.28%2C%201080%20136.36%20C%201090%20132.43%2C%201100%20127.76%2C%201110%20122.99%20C%201120%20118.23%2C%201130%20112.91%2C%201140%20107.77%20C%201150%20102.64%2C%201160%2097.19%2C%201170%2092.18%20C%201180%2087.18%2C%201195%2080.15%2C%201200%2077.75%20L%201200%20260%20Z%22%20fill%3D%22%239395ff80%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M%200%20260%20L%200%20152.1%20C%205%20151.01%2C%2020%20148.4%2C%2030%20145.53%20C%2040%20142.66%2C%2050%20138.94%2C%2060%20134.9%20C%2070%20130.85%2C%2080%20126.07%2C%2090%20121.23%20C%20100%20116.4%2C%20110%20111.03%2C%20120%20105.89%20C%20130%20100.74%2C%20140%2095.31%2C%20150%2090.36%20C%20160%2085.4%2C%20170%2080.44%2C%20180%2076.16%20C%20190%2071.88%2C%20200%2067.87%2C%20210%2064.69%20C%20220%2061.51%2C%20230%2058.84%2C%20240%2057.06%20C%20250%2055.29%2C%20260%2054.23%2C%20270%2054.04%20C%20280%2053.84%2C%20290%2054.49%2C%20300%2055.9%20C%20310%2057.3%2C%20320%2059.6%2C%20330%2062.47%20C%20340%2065.34%2C%20350%2069.06%2C%20360%2073.1%20C%20370%2077.15%2C%20380%2081.93%2C%20390%2086.77%20C%20400%2091.6%2C%20410%2096.97%2C%20420%20102.11%20C%20430%20107.26%2C%20440%20112.69%2C%20450%20117.64%20C%20460%20122.6%2C%20470%20127.56%2C%20480%20131.84%20C%20490%20136.12%2C%20500%20140.13%2C%20510%20143.31%20C%20520%20146.49%2C%20530%20149.16%2C%20540%20150.94%20C%20550%20152.71%2C%20560%20153.77%2C%20570%20153.96%20C%20580%20154.16%2C%20590%20153.51%2C%20600%20152.1%20C%20610%20150.7%2C%20620%20148.4%2C%20630%20145.53%20C%20640%20142.66%2C%20650%20138.94%2C%20660%20134.9%20C%20670%20130.85%2C%20680%20126.07%2C%20690%20121.23%20C%20700%20116.4%2C%20710%20111.03%2C%20720%20105.89%20C%20730%20100.74%2C%20740%2095.31%2C%20750%2090.36%20C%20760%2085.4%2C%20770%2080.44%2C%20780%2076.16%20C%20790%2071.88%2C%20800%2067.87%2C%20810%2064.69%20C%20820%2061.51%2C%20830%2058.84%2C%20840%2057.06%20C%20850%2055.29%2C%20860%2054.23%2C%20870%2054.04%20C%20880%2053.84%2C%20890%2054.49%2C%20900%2055.9%20C%20910%2057.3%2C%20920%2059.6%2C%20930%2062.47%20C%20940%2065.34%2C%20950%2069.06%2C%20960%2073.1%20C%20970%2077.15%2C%20980%2081.93%2C%20990%2086.77%20C%201000%2091.6%2C%201010%2096.97%2C%201020%20102.11%20C%201030%20107.26%2C%201040%20112.69%2C%201050%20117.64%20C%201060%20122.6%2C%201070%20127.56%2C%201080%20131.84%20C%201090%20136.12%2C%201100%20140.13%2C%201110%20143.31%20C%201120%20146.49%2C%201130%20149.16%2C%201140%20150.94%20C%201150%20152.71%2C%201160%20153.77%2C%201170%20153.96%20C%201180%20154.16%2C%201195%20152.41%2C%201200%20152.1%20L%201200%20260%20Z%22%20fill%3D%22%236c70ffb3%22%2F%3E%0A%20%20%3Cpath%20d%3D%22M%200%20260%20L%200%20104%20C%205%20106.58%2C%2020%20114.55%2C%2030%20119.45%20C%2040%20124.35%2C%2050%20129.22%2C%2060%20133.39%20C%2070%20137.56%2C%2080%20141.42%2C%2090%20144.45%20C%20100%20147.48%2C%20110%20149.96%2C%20120%20151.55%20C%20130%20153.14%2C%20140%20154%2C%20150%20154%20C%20160%20154%2C%20170%20153.14%2C%20180%20151.55%20C%20190%20149.96%2C%20200%20147.48%2C%20210%20144.45%20C%20220%20141.42%2C%20230%20137.56%2C%20240%20133.39%20C%20250%20129.22%2C%20260%20124.35%2C%20270%20119.45%20C%20280%20114.55%2C%20290%20109.15%2C%20300%20104%20C%20310%2098.85%2C%20320%2093.45%2C%20330%2088.55%20C%20340%2083.65%2C%20350%2078.78%2C%20360%2074.61%20C%20370%2070.44%2C%20380%2066.58%2C%20390%2063.55%20C%20400%2060.52%2C%20410%2058.04%2C%20420%2056.45%20C%20430%2054.86%2C%20440%2054%2C%20450%2054%20C%20460%2054%2C%20470%2054.86%2C%20480%2056.45%20C%20490%2058.04%2C%20500%2060.52%2C%20510%2063.55%20C%20520%2066.58%2C%20530%2070.44%2C%20540%2074.61%20C%20550%2078.78%2C%20560%2083.65%2C%20570%2088.55%20C%20580%2093.45%2C%20590%2098.85%2C%20600%20104%20C%20610%20109.15%2C%20620%20114.55%2C%20630%20119.45%20C%20640%20124.35%2C%20650%20129.22%2C%20660%20133.39%20C%20670%20137.56%2C%20680%20141.42%2C%20690%20144.45%20C%20700%20147.48%2C%20710%20149.96%2C%20720%20151.55%20C%20730%20153.14%2C%20740%20154%2C%20750%20154%20C%20760%20154%2C%20770%20153.14%2C%20780%20151.55%20C%20790%20149.96%2C%20800%20147.48%2C%20810%20144.45%20C%20820%20141.42%2C%20830%20137.56%2C%20840%20133.39%20C%20850%20129.22%2C%20860%20124.35%2C%20870%20119.45%20C%20880%20114.55%2C%20890%20109.15%2C%20900%20104%20C%20910%2098.85%2C%20920%2093.45%2C%20930%2088.55%20C%20940%2083.65%2C%20950%2078.78%2C%20960%2074.61%20C%20970%2070.44%2C%20980%2066.58%2C%20990%2063.55%20C%201000%2060.52%2C%201010%2058.04%2C%201020%2056.45%20C%201030%2054.86%2C%201040%2054%2C%201050%2054%20C%201060%2054%2C%201070%2054.86%2C%201080%2056.45%20C%201090%2058.04%2C%201100%2060.52%2C%201110%2063.55%20C%201120%2066.58%2C%201130%2070.44%2C%201140%2074.61%20C%201150%2078.78%2C%201160%2083.65%2C%201170%2088.55%20C%201180%2093.45%2C%201195%20101.42%2C%201200%20104%20L%201200%20260%20Z%22%20fill%3D%22%23464aff%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"wave-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1200 260\" width=\"1200\" height=\"260\" preserveAspectRatio=\"none\">\n  <rect width=\"1200\" height=\"260\" fill=\"#f5f5f5\"/>\n  <g>\n  <path d=\"M 0 260 L 0 77.75 C 5 75.77, 20 69.21, 30 65.88 C 40 62.55, 50 59.7, 60 57.75 C 70 55.79, 80 54.53, 90 54.14 C 100 53.75, 110 54.2, 120 55.42 C 130 56.63, 140 58.74, 150 61.45 C 160 64.15, 170 67.72, 180 71.64 C 190 75.57, 200 80.24, 210 85.01 C 220 89.77, 230 95.09, 240 100.23 C 250 105.36, 260 110.81, 270 115.82 C 280 120.82, 290 125.87, 300 130.25 C 310 134.64, 320 138.79, 330 142.12 C 340 145.45, 350 148.3, 360 150.25 C 370 152.21, 380 153.47, 390 153.86 C 400 154.25, 410 153.8, 420 152.58 C 430 151.37, 440 149.26, 450 146.55 C 460 143.85, 470 140.28, 480 136.36 C 490 132.43, 500 127.76, 510 122.99 C 520 118.23, 530 112.91, 540 107.77 C 550 102.64, 560 97.19, 570 92.18 C 580 87.18, 590 82.13, 600 77.75 C 610 73.36, 620 69.21, 630 65.88 C 640 62.55, 650 59.7, 660 57.75 C 670 55.79, 680 54.53, 690 54.14 C 700 53.75, 710 54.2, 720 55.42 C 730 56.63, 740 58.74, 750 61.45 C 760 64.15, 770 67.72, 780 71.64 C 790 75.57, 800 80.24, 810 85.01 C 820 89.77, 830 95.09, 840 100.23 C 850 105.36, 860 110.81, 870 115.82 C 880 120.82, 890 125.87, 900 130.25 C 910 134.64, 920 138.79, 930 142.12 C 940 145.45, 950 148.3, 960 150.25 C 970 152.21, 980 153.47, 990 153.86 C 1000 154.25, 1010 153.8, 1020 152.58 C 1030 151.37, 1040 149.26, 1050 146.55 C 1060 143.85, 1070 140.28, 1080 136.36 C 1090 132.43, 1100 127.76, 1110 122.99 C 1120 118.23, 1130 112.91, 1140 107.77 C 1150 102.64, 1160 97.19, 1170 92.18 C 1180 87.18, 1195 80.15, 1200 77.75 L 1200 260 Z\" fill=\"#9395ff80\"/>\n  <path d=\"M 0 260 L 0 152.1 C 5 151.01, 20 148.4, 30 145.53 C 40 142.66, 50 138.94, 60 134.9 C 70 130.85, 80 126.07, 90 121.23 C 100 116.4, 110 111.03, 120 105.89 C 130 100.74, 140 95.31, 150 90.36 C 160 85.4, 170 80.44, 180 76.16 C 190 71.88, 200 67.87, 210 64.69 C 220 61.51, 230 58.84, 240 57.06 C 250 55.29, 260 54.23, 270 54.04 C 280 53.84, 290 54.49, 300 55.9 C 310 57.3, 320 59.6, 330 62.47 C 340 65.34, 350 69.06, 360 73.1 C 370 77.15, 380 81.93, 390 86.77 C 400 91.6, 410 96.97, 420 102.11 C 430 107.26, 440 112.69, 450 117.64 C 460 122.6, 470 127.56, 480 131.84 C 490 136.12, 500 140.13, 510 143.31 C 520 146.49, 530 149.16, 540 150.94 C 550 152.71, 560 153.77, 570 153.96 C 580 154.16, 590 153.51, 600 152.1 C 610 150.7, 620 148.4, 630 145.53 C 640 142.66, 650 138.94, 660 134.9 C 670 130.85, 680 126.07, 690 121.23 C 700 116.4, 710 111.03, 720 105.89 C 730 100.74, 740 95.31, 750 90.36 C 760 85.4, 770 80.44, 780 76.16 C 790 71.88, 800 67.87, 810 64.69 C 820 61.51, 830 58.84, 840 57.06 C 850 55.29, 860 54.23, 870 54.04 C 880 53.84, 890 54.49, 900 55.9 C 910 57.3, 920 59.6, 930 62.47 C 940 65.34, 950 69.06, 960 73.1 C 970 77.15, 980 81.93, 990 86.77 C 1000 91.6, 1010 96.97, 1020 102.11 C 1030 107.26, 1040 112.69, 1050 117.64 C 1060 122.6, 1070 127.56, 1080 131.84 C 1090 136.12, 1100 140.13, 1110 143.31 C 1120 146.49, 1130 149.16, 1140 150.94 C 1150 152.71, 1160 153.77, 1170 153.96 C 1180 154.16, 1195 152.41, 1200 152.1 L 1200 260 Z\" fill=\"#6c70ffb3\"/>\n  <path d=\"M 0 260 L 0 104 C 5 106.58, 20 114.55, 30 119.45 C 40 124.35, 50 129.22, 60 133.39 C 70 137.56, 80 141.42, 90 144.45 C 100 147.48, 110 149.96, 120 151.55 C 130 153.14, 140 154, 150 154 C 160 154, 170 153.14, 180 151.55 C 190 149.96, 200 147.48, 210 144.45 C 220 141.42, 230 137.56, 240 133.39 C 250 129.22, 260 124.35, 270 119.45 C 280 114.55, 290 109.15, 300 104 C 310 98.85, 320 93.45, 330 88.55 C 340 83.65, 350 78.78, 360 74.61 C 370 70.44, 380 66.58, 390 63.55 C 400 60.52, 410 58.04, 420 56.45 C 430 54.86, 440 54, 450 54 C 460 54, 470 54.86, 480 56.45 C 490 58.04, 500 60.52, 510 63.55 C 520 66.58, 530 70.44, 540 74.61 C 550 78.78, 560 83.65, 570 88.55 C 580 93.45, 590 98.85, 600 104 C 610 109.15, 620 114.55, 630 119.45 C 640 124.35, 650 129.22, 660 133.39 C 670 137.56, 680 141.42, 690 144.45 C 700 147.48, 710 149.96, 720 151.55 C 730 153.14, 740 154, 750 154 C 760 154, 770 153.14, 780 151.55 C 790 149.96, 800 147.48, 810 144.45 C 820 141.42, 830 137.56, 840 133.39 C 850 129.22, 860 124.35, 870 119.45 C 880 114.55, 890 109.15, 900 104 C 910 98.85, 920 93.45, 930 88.55 C 940 83.65, 950 78.78, 960 74.61 C 970 70.44, 980 66.58, 990 63.55 C 1000 60.52, 1010 58.04, 1020 56.45 C 1030 54.86, 1040 54, 1050 54 C 1060 54, 1070 54.86, 1080 56.45 C 1090 58.04, 1100 60.52, 1110 63.55 C 1120 66.58, 1130 70.44, 1140 74.61 C 1150 78.78, 1160 83.65, 1170 88.55 C 1180 93.45, 1195 101.42, 1200 104 L 1200 260 Z\" fill=\"#464aff\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}},"zigzag_flipped":{"summary":"Zigzag, flipped","value":{"tool":"svg-wave-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 150\" width=\"800\" height=\"150\" preserveAspectRatio=\"none\">\n  <rect width=\"800\" height=\"150\" fill=\"#fff7ed\"/>\n  <g transform=\"translate(0,150) scale(1,-1)\">\n  <path d=\"M 0 150 L 0 60 L 80 -10 L 160 81 L 240 -10 L 320 81 L 400 -10 L 480 81 L 560 -10 L 640 81 L 720 -10 L 800 60 L 800 150 Z\" fill=\"#f97316\"/>\n  </g>\n</svg>","css":".wave-divider {\n  background-image: url(\"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20800%20150%22%20width%3D%22800%22%20height%3D%22150%22%20preserveAspectRatio%3D%22none%22%3E%0A%20%20%3Crect%20width%3D%22800%22%20height%3D%22150%22%20fill%3D%22%23fff7ed%22%2F%3E%0A%20%20%3Cg%20transform%3D%22translate(0%2C150)%20scale(1%2C-1)%22%3E%0A%20%20%3Cpath%20d%3D%22M%200%20150%20L%200%2060%20L%2080%20-10%20L%20160%2081%20L%20240%20-10%20L%20320%2081%20L%20400%20-10%20L%20480%2081%20L%20560%20-10%20L%20640%2081%20L%20720%20-10%20L%20800%2060%20L%20800%20150%20Z%22%20fill%3D%22%23f97316%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E\");\n  background-repeat: no-repeat;\n  background-position: bottom center;\n  background-size: 100% auto;\n}","html":"<div class=\"wave-divider\" style=\"line-height:0\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 150\" width=\"800\" height=\"150\" preserveAspectRatio=\"none\">\n  <rect width=\"800\" height=\"150\" fill=\"#fff7ed\"/>\n  <g transform=\"translate(0,150) scale(1,-1)\">\n  <path d=\"M 0 150 L 0 60 L 80 -10 L 160 81 L 240 -10 L 320 81 L 400 -10 L 480 81 L 560 -10 L 640 81 L 720 -10 L 800 60 L 800 150 Z\" fill=\"#f97316\"/>\n  </g>\n</svg>\n</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG code"},"css":{"type":"string","description":"CSS background"},"html":{"type":"string","description":"HTML snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-blob-generator":{"post":{"operationId":"run_svg_blob_generator","summary":"SVG Blob Generator","tags":["Generators"],"description":"Generate organic SVG blob shapes for backgrounds, hero sections and logos. Control the edge count, growth and colors, fill with a solid or gradient, then copy the SVG or the CSS clip-path. Seeded, so the same seed always gives the same blob.\n\n[Try SVG Blob Generator in your browser →](https://iotools.cloud/tool/svg-blob-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"seed":{"type":"string","description":"Seed"},"edges":{"type":"number","description":"Edge count","minimum":3,"maximum":20},"growth":{"type":"number","description":"Growth","minimum":1,"maximum":9},"size":{"type":"number","description":"Size (px)","minimum":100,"maximum":2000},"fillType":{"enum":["solid","gradient","outline"],"description":"Fill type"},"color":{"type":"string","description":"Color"},"color2":{"type":"string","description":"Second color"},"gradientAngle":{"type":"number","description":"Gradient angle","minimum":0,"maximum":360},"strokeWidth":{"type":"number","description":"Outline width","minimum":1,"maximum":40},"background":{"enum":["transparent","solid"],"description":"Background"},"bgColor":{"type":"string","description":"Background color"}},"required":[]},"examples":{"solid_blob":{"summary":"Solid blob","value":{"seed":"iotools","edges":"6","growth":"6","size":"500","fillType":"solid","color":"#6366f1","background":"transparent"}},"gradient_blob":{"summary":"Gradient blob","value":{"seed":"sunset","edges":"8","growth":"7","size":"500","fillType":"gradient","color":"#f97316","color2":"#ec4899","gradientAngle":"45","background":"transparent"}},"outline_blob":{"summary":"Outline blob","value":{"seed":"outline","edges":"12","growth":"4","size":"400","fillType":"outline","color":"#0f172a","strokeWidth":"10","background":"transparent"}},"blob_on_a_solid_background":{"summary":"Blob on a solid background","value":{"seed":"card","edges":"5","growth":"8","size":"300","fillType":"solid","color":"#10b981","background":"solid","bgColor":"#ecfdf5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solid_blob":{"summary":"Solid blob","value":{"tool":"svg-blob-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 500 500\" width=\"500\" height=\"500\">\n  <path d=\"M 477.28 235.85 C 482.42 298.02, 444.69 409.82, 387.78 439.82 C 330.86 469.83, 188.8 444.5, 135.76 415.88 C 82.73 387.27, 67.83 324.71, 69.58 268.12 C 71.33 211.52, 98.36 109.88, 146.26 76.32 C 194.16 42.76, 301.79 40.17, 356.96 66.76 C 412.13 93.35, 472.14 173.67, 477.28 235.85 Z\" fill=\"#6366f1\"/>\n</svg>","css":".blob {\n  width: 500px;\n  height: 500px;\n  background: #6366f1;\n  clip-path: path(\"M 477.28 235.85 C 482.42 298.02, 444.69 409.82, 387.78 439.82 C 330.86 469.83, 188.8 444.5, 135.76 415.88 C 82.73 387.27, 67.83 324.71, 69.58 268.12 C 71.33 211.52, 98.36 109.88, 146.26 76.32 C 194.16 42.76, 301.79 40.17, 356.96 66.76 C 412.13 93.35, 472.14 173.67, 477.28 235.85 Z\");\n}","html":"<div class=\"blob\"></div>"},"credits_used":5,"credits_remaining":null}},"gradient_blob":{"summary":"Gradient blob","value":{"tool":"svg-blob-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 500 500\" width=\"500\" height=\"500\">\n  <defs>\n    <linearGradient id=\"blobGradient\" gradientTransform=\"rotate(45 0.5 0.5)\">\n      <stop offset=\"0%\" stop-color=\"#f97316\"/>\n      <stop offset=\"100%\" stop-color=\"#ec4899\"/>\n    </linearGradient>\n  </defs>\n  <path d=\"M 417.01 248.24 C 419.08 293, 431.5 351.93, 402.82 387.71 C 374.14 423.49, 291.78 463.91, 244.95 462.9 C 198.11 461.89, 149.5 416.46, 121.81 381.64 C 94.12 346.83, 83.38 305.1, 78.8 254.04 C 74.22 202.97, 67.63 113.6, 94.32 75.28 C 121.02 36.96, 189.62 16.8, 238.96 24.11 C 288.3 31.43, 360.68 81.81, 390.35 119.17 C 420.03 156.52, 414.93 203.49, 417.01 248.24 Z\" fill=\"url(#blobGradient)\"/>\n</svg>","css":".blob {\n  width: 500px;\n  height: 500px;\n  background: linear-gradient(135deg, #f97316, #ec4899);\n  clip-path: path(\"M 417.01 248.24 C 419.08 293, 431.5 351.93, 402.82 387.71 C 374.14 423.49, 291.78 463.91, 244.95 462.9 C 198.11 461.89, 149.5 416.46, 121.81 381.64 C 94.12 346.83, 83.38 305.1, 78.8 254.04 C 74.22 202.97, 67.63 113.6, 94.32 75.28 C 121.02 36.96, 189.62 16.8, 238.96 24.11 C 288.3 31.43, 360.68 81.81, 390.35 119.17 C 420.03 156.52, 414.93 203.49, 417.01 248.24 Z\");\n}","html":"<div class=\"blob\"></div>"},"credits_used":5,"credits_remaining":null}},"outline_blob":{"summary":"Outline blob","value":{"tool":"svg-blob-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 400\" width=\"400\" height=\"400\">\n  <path d=\"M 311.28 193.41 C 306.14 211.8, 281.34 226.02, 271.07 243.97 C 260.8 261.93, 262.87 284.8, 249.67 301.14 C 236.47 317.48, 210.62 342.4, 191.87 341.99 C 173.12 341.59, 155.19 311.89, 137.17 298.7 C 119.15 285.52, 103.1 281.56, 83.77 262.9 C 64.44 244.23, 24.32 210.22, 21.17 186.72 C 18.02 163.22, 49.27 144.04, 64.87 121.89 C 80.47 99.74, 91.9 55.34, 114.77 53.83 C 137.64 52.33, 181.58 101.13, 202.1 112.84 C 222.62 124.55, 221.26 120.64, 237.91 124.1 C 254.55 127.56, 289.74 122.05, 301.97 133.6 C 314.2 145.15, 316.43 175.01, 311.28 193.41 Z\" fill=\"none\" stroke=\"#0f172a\" stroke-width=\"10\"/>\n</svg>","css":".blob {\n  width: 400px;\n  height: 400px;\n  background: #0f172a;\n  clip-path: path(\"M 311.28 193.41 C 306.14 211.8, 281.34 226.02, 271.07 243.97 C 260.8 261.93, 262.87 284.8, 249.67 301.14 C 236.47 317.48, 210.62 342.4, 191.87 341.99 C 173.12 341.59, 155.19 311.89, 137.17 298.7 C 119.15 285.52, 103.1 281.56, 83.77 262.9 C 64.44 244.23, 24.32 210.22, 21.17 186.72 C 18.02 163.22, 49.27 144.04, 64.87 121.89 C 80.47 99.74, 91.9 55.34, 114.77 53.83 C 137.64 52.33, 181.58 101.13, 202.1 112.84 C 222.62 124.55, 221.26 120.64, 237.91 124.1 C 254.55 127.56, 289.74 122.05, 301.97 133.6 C 314.2 145.15, 316.43 175.01, 311.28 193.41 Z\");\n}","html":"<div class=\"blob\"></div>"},"credits_used":5,"credits_remaining":null}},"blob_on_a_solid_background":{"summary":"Blob on a solid background","value":{"tool":"svg-blob-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 300 300\" width=\"300\" height=\"300\">\n  <rect width=\"300\" height=\"300\" fill=\"#ecfdf5\"/>\n  <path d=\"M 264.94 142.95 C 264.58 183.77, 223.81 258.47, 185.8 272.44 C 147.8 286.4, 60.72 261.86, 36.92 226.74 C 13.11 191.61, 17.78 94.9, 42.96 61.69 C 68.14 28.49, 151 13.97, 188 27.51 C 224.99 41.06, 265.31 102.13, 264.94 142.95 Z\" fill=\"#10b981\"/>\n</svg>","css":".blob {\n  width: 300px;\n  height: 300px;\n  background: #10b981;\n  clip-path: path(\"M 264.94 142.95 C 264.58 183.77, 223.81 258.47, 185.8 272.44 C 147.8 286.4, 60.72 261.86, 36.92 226.74 C 13.11 191.61, 17.78 94.9, 42.96 61.69 C 68.14 28.49, 151 13.97, 188 27.51 C 224.99 41.06, 265.31 102.13, 264.94 142.95 Z\");\n}","html":"<div class=\"blob\"></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG code"},"css":{"type":"string","description":"CSS clip-path"},"html":{"type":"string","description":"HTML snippet"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sha3-hash-generator":{"post":{"operationId":"run_sha3_hash_generator","summary":"SHA-3 Hash Generator","tags":["Generators"],"description":"Generate a FIPS-202 SHA-3 hash (SHA3-224, SHA3-256, SHA3-384, SHA3-512) of any text, in hexadecimal or base64, and optionally verify it against an expected hash.\n\n[Try SHA-3 Hash Generator in your browser →](https://iotools.cloud/tool/sha3-hash-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Message to hash"},"outputSize":{"enum":["224","256","384","512"],"description":"SHA-3 output size"},"outputFormat":{"enum":["hex","hex-upper","base64"],"description":"Output format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"sha3_256_of_abc":{"summary":"SHA3-256 of \"abc\"","value":{"inputText":"abc","outputSize":"256","outputFormat":"hex","expectedHash":""}},"sha3_256_of_the_empty_string":{"summary":"SHA3-256 of the empty string","value":{"inputText":"","outputSize":"256","outputFormat":"hex","expectedHash":""}},"sha3_224_of_abc":{"summary":"SHA3-224 of \"abc\"","value":{"inputText":"abc","outputSize":"224","outputFormat":"hex","expectedHash":""}},"sha3_384_of_abc":{"summary":"SHA3-384 of \"abc\"","value":{"inputText":"abc","outputSize":"384","outputFormat":"hex","expectedHash":""}},"sha3_512_of_abc":{"summary":"SHA3-512 of \"abc\"","value":{"inputText":"abc","outputSize":"512","outputFormat":"hex","expectedHash":""}},"sha3_256_as_base64":{"summary":"SHA3-256 as base64","value":{"inputText":"abc","outputSize":"256","outputFormat":"base64","expectedHash":""}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"inputText":"abc","outputSize":"256","outputFormat":"hex","expectedHash":"3A985DA74FE225B2045C172D6BD390BD855F086E3E9D525B46BFE24511431532"}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"inputText":"abc","outputSize":"256","outputFormat":"hex","expectedHash":"0000000000000000000000000000000000000000000000000000000000000000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha3_256_of_abc":{"summary":"SHA3-256 of \"abc\"","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532","match":""},"credits_used":5,"credits_remaining":null}},"sha3_256_of_the_empty_string":{"summary":"SHA3-256 of the empty string","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a","match":""},"credits_used":5,"credits_remaining":null}},"sha3_224_of_abc":{"summary":"SHA3-224 of \"abc\"","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"e642824c3f8cf24ad09234ee7d3c766fc9a3a5168d0c94ad73b46fdf","match":""},"credits_used":5,"credits_remaining":null}},"sha3_384_of_abc":{"summary":"SHA3-384 of \"abc\"","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"ec01498288516fc926459f58e2c6ad8df9b473cb0fc08c2596da7cf0e49be4b298d88cea927ac7f539f1edf228376d25","match":""},"credits_used":5,"credits_remaining":null}},"sha3_512_of_abc":{"summary":"SHA3-512 of \"abc\"","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"b751850b1a57168a5693cd924b6b096e08f621827444f70d884f5d0240d2712e10e116e9192af3c91a7ec57647e3934057340b4cf408d5a56592f8274eec53f0","match":""},"credits_used":5,"credits_remaining":null}},"sha3_256_as_base64":{"summary":"SHA3-256 as base64","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"Ophdp0/iJbIEXBcta9OQvYVfCG4+nVJbRr/iRRFDFTI=","match":""},"credits_used":5,"credits_remaining":null}},"verify_a_matching_hash_case_insensitive_hex":{"summary":"Verify a matching hash (case-insensitive hex)","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532","match":"Match"},"credits_used":5,"credits_remaining":null}},"detect_a_mismatched_hash":{"summary":"Detect a mismatched hash","value":{"tool":"sha3-hash-generator","tool_version":"1.0.2","outputs":{"output":"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532","match":"No match"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"SHA-3 hash"},"match":{"type":"string","description":"Matches expected hash?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/small-text-generator":{"post":{"operationId":"run_small_text_generator","summary":"Small Text Generator","tags":["Generators"],"description":"Turn plain text into Unicode small text — superscript, subscript, or small-caps lookalike characters you can paste into social-media bios, captions, and usernames.\n\n[Try Small Text Generator in your browser →](https://iotools.cloud/tool/small-text-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"textStyle":{"enum":["superscript","subscript","smallcaps"],"description":"Text Style"}},"required":[]},"examples":{"superscript":{"summary":"Superscript","value":{"inputText":"Hello World 2024","textStyle":"superscript"}},"subscript":{"summary":"Subscript","value":{"inputText":"H2O and CO2","textStyle":"subscript"}},"small_caps":{"summary":"Small Caps","value":{"inputText":"The quick brown fox","textStyle":"smallcaps"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"superscript":{"summary":"Superscript","value":{"tool":"small-text-generator","tool_version":"1.0.2","outputs":{"outputText":"ᴴᵉˡˡᵒ ᵂᵒʳˡᵈ ²⁰²⁴"},"credits_used":5,"credits_remaining":null}},"subscript":{"summary":"Subscript","value":{"tool":"small-text-generator","tool_version":"1.0.2","outputs":{"outputText":"H₂O ₐₙd CO₂"},"credits_used":5,"credits_remaining":null}},"small_caps":{"summary":"Small Caps","value":{"tool":"small-text-generator","tool_version":"1.0.2","outputs":{"outputText":"Tʜᴇ ǫᴜɪᴄᴋ ʙʀᴏᴡɴ ꜰᴏˣ"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Small Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/snowflake-id-generator":{"post":{"operationId":"run_snowflake_id_generator","summary":"Snowflake ID Generator","tags":["Generators"],"description":"Generate unique 64-bit Snowflake IDs (Twitter, Discord, or Unix epoch) in decimal, hex, binary, JSON, or CSV — or decode an existing Snowflake ID back into its timestamp, machine ID, and sequence.\n\n[Try Snowflake ID Generator in your browser →](https://iotools.cloud/tool/snowflake-id-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate","decode"],"description":"Mode"},"epoch":{"enum":["twitter","discord","unix"],"description":"Epoch"},"count":{"type":"number","description":"Count","minimum":1,"maximum":100},"machineId":{"type":"number","description":"Machine ID","minimum":0,"maximum":1023},"outputFormat":{"enum":["decimal","hex","binary","json","csv"],"description":"Output Format"},"decodeInput":{"type":"string","description":"Snowflake ID"}},"required":[]},"examples":{"generate_5_twitter_ids":{"summary":"Generate 5 Twitter IDs","value":{"mode":"generate","epoch":"twitter","count":"5","machineId":"1","outputFormat":"decimal"}},"decode_a_discord_id":{"summary":"Decode a Discord ID","value":{"mode":"decode","epoch":"discord","decodeInput":"175928847299117063"}},"decode_a_twitter_tweet_id":{"summary":"Decode a Twitter tweet ID","value":{"mode":"decode","epoch":"twitter","decodeInput":"1541815603606036480"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"decode_a_discord_id":{"summary":"Decode a Discord ID","value":{"tool":"snowflake-id-generator","tool_version":"1.0.2","outputs":{"decoded":[{"field":"Timestamp","value":"2016-04-30 11:18:25.796 UTC"},{"field":"Unix (ms)","value":"1462015105796"},{"field":"Machine ID","value":"32"},{"field":"Sequence","value":"7"},{"field":"Hex","value":"0x0271065ac1020007"},{"field":"Binary","value":"0000001001110001000001100101101011000001000000100000000000000111"}]},"credits_used":5,"credits_remaining":null}},"decode_a_twitter_tweet_id":{"summary":"Decode a Twitter tweet ID","value":{"tool":"snowflake-id-generator","tool_version":"1.0.2","outputs":{"decoded":[{"field":"Timestamp","value":"2022-06-28 16:07:40.105 UTC"},{"field":"Unix (ms)","value":"1656432460105"},{"field":"Machine ID","value":"378"},{"field":"Sequence","value":"0"},{"field":"Hex","value":"0x1565a11f6217a000"},{"field":"Binary","value":"0001010101100101101000010001111101100010000101111010000000000000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated Snowflake IDs"},"decoded":{"type":"array","description":"Decoded Snowflake","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sql-create-table-generator":{"post":{"operationId":"run_sql_create_table_generator","summary":"SQL CREATE TABLE Generator","tags":["Generators"],"description":"Generate a CREATE TABLE SQL statement from simple column definitions. Supports MySQL, PostgreSQL, SQLite, and SQL Server dialects with per-dialect type mapping, auto-increment, primary/foreign keys, and indexes.\n\n[Try SQL CREATE TABLE Generator in your browser →](https://iotools.cloud/tool/sql-create-table-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dialect":{"enum":["mysql","postgresql","sqlite","mssql"],"description":"SQL Dialect"},"tableName":{"type":"string","description":"Table Name"},"columns":{"type":"string","description":"Columns"},"indexes":{"type":"string","description":"Indexes (optional)"},"ifNotExists":{"type":"boolean","description":"Add IF NOT EXISTS"},"prettyPrint":{"type":"boolean","description":"Pretty-print output"}},"required":[]},"examples":{"mysql_users_table":{"summary":"MySQL users table","value":{"dialect":"mysql","tableName":"users","columns":"id bigint pk ai notnull\nname varchar(255) notnull\nemail varchar(255) notnull unique\ncreated_at timestamp notnull default=CURRENT_TIMESTAMP","indexes":"","ifNotExists":"true","prettyPrint":"true"}},"postgresql_with_index":{"summary":"PostgreSQL with index","value":{"dialect":"postgresql","tableName":"users","columns":"id bigint pk ai notnull\nname varchar(255) notnull\nemail varchar(255) notnull unique\ncreated_at timestamp notnull default=CURRENT_TIMESTAMP","indexes":"unique uq_email: email","ifNotExists":"true","prettyPrint":"true"}},"sqlite_compact":{"summary":"SQLite compact","value":{"dialect":"sqlite","tableName":"notes","columns":"id integer pk ai notnull\nbody text notnull\nauthor_id bigint fk=users(id)","indexes":"","ifNotExists":"false","prettyPrint":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mysql_users_table":{"summary":"MySQL users table","value":{"tool":"sql-create-table-generator","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE IF NOT EXISTS `users` (\n  `id` BIGINT NOT NULL AUTO_INCREMENT,\n  `name` VARCHAR(255) NOT NULL,\n  `email` VARCHAR(255) NOT NULL UNIQUE,\n  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  PRIMARY KEY (`id`)\n);"},"credits_used":5,"credits_remaining":null}},"postgresql_with_index":{"summary":"PostgreSQL with index","value":{"tool":"sql-create-table-generator","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE IF NOT EXISTS \"users\" (\n  \"id\" BIGSERIAL NOT NULL,\n  \"name\" VARCHAR(255) NOT NULL,\n  \"email\" VARCHAR(255) NOT NULL UNIQUE,\n  \"created_at\" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  PRIMARY KEY (\"id\")\n);\n\nCREATE UNIQUE INDEX \"uq_email\" ON \"users\" (\"email\");"},"credits_used":5,"credits_remaining":null}},"sqlite_compact":{"summary":"SQLite compact","value":{"tool":"sql-create-table-generator","tool_version":"1.0.2","outputs":{"sqlOutput":"CREATE TABLE \"notes\" (\"id\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, \"body\" TEXT NOT NULL, \"author_id\" BIGINT, FOREIGN KEY (\"author_id\") REFERENCES \"users\" (\"id\"));"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sqlOutput":{"type":"string","description":"CREATE TABLE Statement"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ssh-config-file-generator":{"post":{"operationId":"run_ssh_config_file_generator","summary":"SSH Config File Generator","tags":["Generators"],"description":"Generate a ready-to-paste ~/.ssh/config Host block from a simple form — set the Host alias, HostName, User, Port, IdentityFile, ProxyJump, ServerAliveInterval, StrictHostKeyChecking and ForwardAgent/IdentitiesOnly options, plus a global Host * block. Runs entirely in your browser.\n\n[Try SSH Config File Generator in your browser →](https://iotools.cloud/tool/ssh-config-file-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","description":"Host alias"},"hostName":{"type":"string","description":"HostName"},"user":{"type":"string","description":"User"},"port":{"type":"number","description":"Port"},"identityFile":{"type":"string","description":"IdentityFile"},"proxyJump":{"type":"string","description":"ProxyJump"},"serverAliveInterval":{"type":"number","description":"ServerAliveInterval"},"strictHostKeyChecking":{"enum":["","yes","accept-new","no","ask"],"description":"StrictHostKeyChecking"},"forwardAgent":{"type":"boolean","description":"ForwardAgent"},"identitiesOnly":{"type":"boolean","description":"IdentitiesOnly"},"addKeysToAgent":{"type":"boolean","description":"Add keys to agent automatically (Host * → AddKeysToAgent yes)"},"useKeychain":{"type":"boolean","description":"Store passphrases in macOS keychain (Host * → UseKeychain yes)"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"}},"required":[]},"examples":{"github_with_deploy_key":{"summary":"GitHub (with deploy key)","value":{"host":"github.com","hostName":"github.com","user":"git","identityFile":"~/.ssh/id_ed25519","identitiesOnly":"true","includeHeader":"true"}},"aws_ec2_global_agent_full_options":{"summary":"AWS EC2 (global agent + full options)","value":{"host":"my-ec2","hostName":"ec2-xx-xx-xx-xx.compute-1.amazonaws.com","user":"ec2-user","port":"22","identityFile":"~/.ssh/aws-keypair.pem","serverAliveInterval":"60","strictHostKeyChecking":"accept-new","forwardAgent":"true","identitiesOnly":"true","addKeysToAgent":"true","includeHeader":"true"}},"local_vm_no_header_comment":{"summary":"Local VM, no header comment","value":{"host":"vagrant-vm","hostName":"127.0.0.1","user":"vagrant","port":"2222","identityFile":"~/.vagrant.d/insecure_private_key","strictHostKeyChecking":"no","identitiesOnly":"true","includeHeader":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"github_with_deploy_key":{"summary":"GitHub (with deploy key)","value":{"tool":"ssh-config-file-generator","tool_version":"1.0.2","outputs":{"output":"# ~/.ssh/config\n# Generated with iotools.cloud\n\nHost github.com\n  HostName github.com\n  User git\n  IdentityFile ~/.ssh/id_ed25519\n  IdentitiesOnly yes"},"credits_used":5,"credits_remaining":null}},"aws_ec2_global_agent_full_options":{"summary":"AWS EC2 (global agent + full options)","value":{"tool":"ssh-config-file-generator","tool_version":"1.0.2","outputs":{"output":"# ~/.ssh/config\n# Generated with iotools.cloud\n\nHost *\n  AddKeysToAgent yes\n\nHost my-ec2\n  HostName ec2-xx-xx-xx-xx.compute-1.amazonaws.com\n  User ec2-user\n  Port 22\n  IdentityFile ~/.ssh/aws-keypair.pem\n  ServerAliveInterval 60\n  StrictHostKeyChecking accept-new\n  ForwardAgent yes\n  IdentitiesOnly yes"},"credits_used":5,"credits_remaining":null}},"local_vm_no_header_comment":{"summary":"Local VM, no header comment","value":{"tool":"ssh-config-file-generator","tool_version":"1.0.2","outputs":{"output":"Host vagrant-vm\n  HostName 127.0.0.1\n  User vagrant\n  Port 2222\n  IdentityFile ~/.vagrant.d/insecure_private_key\n  StrictHostKeyChecking no\n  IdentitiesOnly yes"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated ~/.ssh/config"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-filter-effects-generator":{"post":{"operationId":"run_svg_filter_effects_generator","summary":"SVG Filter Effects Generator","tags":["Generators"],"description":"Visually build an SVG &lt;filter> — blur, hue rotate, saturate, drop shadow, turbulence, emboss and more — with a live preview on text, shapes or your own image, and copy the ready-to-use SVG and CSS. Runs entirely in your browser.\n\n[Try SVG Filter Effects Generator in your browser →](https://iotools.cloud/tool/svg-filter-effects-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"filterType":{"enum":["blur","hueRotate","saturate","luminanceToAlpha","turbulence","dropShadow","emboss"],"description":"Filter"},"filterId":{"type":"string","description":"Filter ID"},"blurStdDev":{"type":"number","description":"Blur amount (stdDeviation, px)","minimum":0,"maximum":30},"hueRotateAngle":{"type":"number","description":"Angle (deg)","minimum":0,"maximum":360},"saturateValue":{"type":"number","description":"Amount (0 = grayscale, 1 = original)","minimum":0,"maximum":3},"turbType":{"enum":["turbulence","fractalNoise"],"description":"Noise type"},"turbBaseFrequency":{"type":"number","description":"Base frequency","minimum":0.005,"maximum":0.5},"turbOctaves":{"type":"number","description":"Octaves","minimum":1,"maximum":10},"turbScale":{"type":"number","description":"Displacement scale","minimum":0,"maximum":200},"shadowDx":{"type":"number","description":"Offset X (px)","minimum":-50,"maximum":50},"shadowDy":{"type":"number","description":"Offset Y (px)","minimum":-50,"maximum":50},"shadowBlur":{"type":"number","description":"Blur radius (px)","minimum":0,"maximum":50},"shadowColor":{"type":"string","description":"Shadow color"},"shadowOpacity":{"type":"number","description":"Shadow opacity","minimum":0,"maximum":1},"embossStyle":{"enum":["emboss","engrave","sharpen","edge"],"description":"Kernel"},"previewTarget":{"enum":["text","shapes","image"],"description":"Preview on"},"image":{"type":"string","contentEncoding":"base64","description":"Image"}},"required":[]},"examples":{"gaussian_blur_on_shapes":{"summary":"Gaussian blur on shapes","value":{"filterType":"blur","blurStdDev":"4","filterId":"myFilter","previewTarget":"shapes"}},"drop_shadow_on_text":{"summary":"Drop shadow on text","value":{"filterType":"dropShadow","shadowDx":"4","shadowDy":"4","shadowBlur":"6","shadowColor":"#000000","shadowOpacity":"0.6","filterId":"dropShadow","previewTarget":"text"}},"hue_rotate_on_shapes":{"summary":"Hue rotate on shapes","value":{"filterType":"hueRotate","hueRotateAngle":"120","filterId":"hue","previewTarget":"shapes"}},"luminance_to_alpha_on_text":{"summary":"Luminance to alpha on text","value":{"filterType":"luminanceToAlpha","filterId":"luma","previewTarget":"text"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"gaussian_blur_on_shapes":{"summary":"Gaussian blur on shapes","value":{"tool":"svg-filter-effects-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 240\" width=\"400\" height=\"240\"><defs><filter id=\"myFilter\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"4\"/></filter></defs><rect width=\"400\" height=\"240\" fill=\"#ffffff\"/><g filter=\"url(#myFilter)\"><circle cx=\"120\" cy=\"120\" r=\"60\" fill=\"#ff6b6b\"/><rect x=\"200\" y=\"60\" width=\"120\" height=\"120\" rx=\"14\" fill=\"#339af0\"/><polygon points=\"200,200 280,200 240,130\" fill=\"#ffd43b\"/></g></svg>","filterCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0\" height=\"0\" style=\"position:absolute\">\n  <filter id=\"myFilter\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\">\n    <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"4\"/>\n  </filter>\n</svg>","cssCode":"/* Option 1 — CSS shorthand (where the primitive has one) */\nfilter: blur(4px);\n\n/* Option 2 — reference the SVG <filter> by id (works for every primitive) */\n.target { filter: url(#myFilter); }"},"credits_used":5,"credits_remaining":null}},"drop_shadow_on_text":{"summary":"Drop shadow on text","value":{"tool":"svg-filter-effects-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 240\" width=\"400\" height=\"240\"><defs><filter id=\"dropShadow\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"6\" flood-color=\"#000000\" flood-opacity=\"0.6\"/></filter></defs><rect width=\"400\" height=\"240\" fill=\"#ffffff\"/><text x=\"200\" y=\"145\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, 'Segoe UI', sans-serif\" font-size=\"80\" font-weight=\"700\" fill=\"#464aff\" filter=\"url(#dropShadow)\">Filter</text></svg>","filterCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0\" height=\"0\" style=\"position:absolute\">\n  <filter id=\"dropShadow\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\">\n    <feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"6\" flood-color=\"#000000\" flood-opacity=\"0.6\"/>\n  </filter>\n</svg>","cssCode":"/* Option 1 — CSS shorthand (where the primitive has one) */\n/* Opacity < 1 needs the SVG filter — use the url() reference below. */\n\n/* Option 2 — reference the SVG <filter> by id (works for every primitive) */\n.target { filter: url(#dropShadow); }"},"credits_used":5,"credits_remaining":null}},"hue_rotate_on_shapes":{"summary":"Hue rotate on shapes","value":{"tool":"svg-filter-effects-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 240\" width=\"400\" height=\"240\"><defs><filter id=\"hue\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feColorMatrix in=\"SourceGraphic\" type=\"hueRotate\" values=\"120\"/></filter></defs><rect width=\"400\" height=\"240\" fill=\"#ffffff\"/><g filter=\"url(#hue)\"><circle cx=\"120\" cy=\"120\" r=\"60\" fill=\"#ff6b6b\"/><rect x=\"200\" y=\"60\" width=\"120\" height=\"120\" rx=\"14\" fill=\"#339af0\"/><polygon points=\"200,200 280,200 240,130\" fill=\"#ffd43b\"/></g></svg>","filterCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0\" height=\"0\" style=\"position:absolute\">\n  <filter id=\"hue\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\">\n    <feColorMatrix in=\"SourceGraphic\" type=\"hueRotate\" values=\"120\"/>\n  </filter>\n</svg>","cssCode":"/* Option 1 — CSS shorthand (where the primitive has one) */\nfilter: hue-rotate(120deg);\n\n/* Option 2 — reference the SVG <filter> by id (works for every primitive) */\n.target { filter: url(#hue); }"},"credits_used":5,"credits_remaining":null}},"luminance_to_alpha_on_text":{"summary":"Luminance to alpha on text","value":{"tool":"svg-filter-effects-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 240\" width=\"400\" height=\"240\"><defs><filter id=\"luma\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\"><feColorMatrix in=\"SourceGraphic\" type=\"luminanceToAlpha\"/></filter></defs><rect width=\"400\" height=\"240\" fill=\"#ffffff\"/><text x=\"200\" y=\"145\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, 'Segoe UI', sans-serif\" font-size=\"80\" font-weight=\"700\" fill=\"#464aff\" filter=\"url(#luma)\">Filter</text></svg>","filterCode":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"0\" height=\"0\" style=\"position:absolute\">\n  <filter id=\"luma\" x=\"-30%\" y=\"-30%\" width=\"160%\" height=\"160%\">\n    <feColorMatrix in=\"SourceGraphic\" type=\"luminanceToAlpha\"/>\n  </filter>\n</svg>","cssCode":"/* Option 1 — CSS shorthand (where the primitive has one) */\n/* No CSS shorthand for this primitive — use the url() reference below. */\n\n/* Option 2 — reference the SVG <filter> by id (works for every primitive) */\n.target { filter: url(#luma); }"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"Preview SVG"},"filterCode":{"type":"string","description":"Filter definition (embed in your own SVG/HTML)"},"cssCode":{"type":"string","description":"CSS usage"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-loading-spinner-generator":{"post":{"operationId":"run_svg_loading_spinner_generator","summary":"SVG Loading Spinner Generator","tags":["Generators"],"description":"Generate a self-contained animated SVG loading spinner — circle stroke, dual ring, dotted ring, pulse/bouncing dots, bar loader or ripple — with your own size, colours and speed. Copy the SVG or download it as a .svg file. Runs entirely in your browser.\n\n[Try SVG Loading Spinner Generator in your browser →](https://iotools.cloud/tool/svg-loading-spinner-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"spinnerType":{"enum":["circle-stroke","dual-ring","dotted-ring","pulse-dots","bouncing-dots","bar-loader","ripple"],"description":"Spinner type"},"size":{"type":"number","description":"Size (px)","minimum":16,"maximum":256},"strokeWidth":{"type":"number","description":"Stroke width (px)","minimum":1,"maximum":30},"primaryColor":{"type":"string","description":"Primary colour"},"secondaryColor":{"type":"string","description":"Track / secondary colour"},"speed":{"type":"number","description":"Speed (sec)","minimum":0.2,"maximum":5},"ariaLabel":{"type":"string","description":"ARIA label"}},"required":[]},"examples":{"circle_stroke":{"summary":"Circle stroke","value":{"spinnerType":"circle-stroke","size":"60","strokeWidth":"6","primaryColor":"#464aff","secondaryColor":"#e6e7ff","speed":"1","ariaLabel":"Loading"}},"pulse_dots":{"summary":"Pulse dots","value":{"spinnerType":"pulse-dots","size":"60","strokeWidth":"6","primaryColor":"#464aff","secondaryColor":"#e6e7ff","speed":"1","ariaLabel":"Loading"}},"bar_loader":{"summary":"Bar loader","value":{"spinnerType":"bar-loader","size":"60","strokeWidth":"6","primaryColor":"#464aff","secondaryColor":"#e6e7ff","speed":"1","ariaLabel":"Loading"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"circle_stroke":{"summary":"Circle stroke","value":{"tool":"svg-loading-spinner-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"60\" viewBox=\"0 0 100 100\" role=\"status\" aria-label=\"Loading\"><style>.iosp-arc { animation: iosp-spin 1s linear infinite; }@keyframes iosp-spin { to { transform: rotate(360deg); } }</style><circle class=\"iosp-track\" cx=\"50\" cy=\"50\" r=\"45\" fill=\"none\" stroke=\"#e6e7ff\" stroke-width=\"10\"/><circle class=\"iosp-arc\" cx=\"50\" cy=\"50\" r=\"45\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"10\" stroke-linecap=\"round\" stroke-dasharray=\"212.06 70.69\" transform-origin=\"50 50\"/></svg>"},"credits_used":5,"credits_remaining":null}},"pulse_dots":{"summary":"Pulse dots","value":{"tool":"svg-loading-spinner-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"60\" viewBox=\"0 0 100 100\" role=\"status\" aria-label=\"Loading\"><style>.iosp-d { animation: iosp-pulse 1s ease-in-out infinite; transform-origin: center; transform-box: fill-box; }.iosp-d2 { animation-delay: 0.167s; }.iosp-d3 { animation-delay: 0.333s; }@keyframes iosp-pulse { 0%, 80%, 100% { transform: scale(0.4); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } }</style><circle class=\"iosp-d iosp-d1\" cx=\"18\" cy=\"50\" r=\"13\" fill=\"#464aff\"/><circle class=\"iosp-d iosp-d2\" cx=\"50\" cy=\"50\" r=\"13\" fill=\"#464aff\"/><circle class=\"iosp-d iosp-d3\" cx=\"82\" cy=\"50\" r=\"13\" fill=\"#464aff\"/></svg>"},"credits_used":5,"credits_remaining":null}},"bar_loader":{"summary":"Bar loader","value":{"tool":"svg-loading-spinner-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"60\" height=\"12\" viewBox=\"0 0 100 20\" role=\"status\" aria-label=\"Loading\"><style>.iosp-bar { animation: iosp-slide 1s ease-in-out infinite; }@keyframes iosp-slide { 0% { transform: translateX(-35px); } 50% { transform: translateX(65px); } 100% { transform: translateX(-35px); } }</style><rect x=\"0\" y=\"0\" width=\"100\" height=\"20\" rx=\"10.00\" ry=\"10.00\" fill=\"#e6e7ff\"/><rect class=\"iosp-bar\" x=\"0\" y=\"0\" width=\"35\" height=\"20\" rx=\"10.00\" ry=\"10.00\" fill=\"#464aff\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-noise-texture-generator":{"post":{"operationId":"run_svg_noise_texture_generator","summary":"SVG Noise Texture Generator","tags":["Generators"],"description":"Generate a scalable SVG noise or grain texture using the native feTurbulence filter — pick fractal noise or turbulence, tune frequency, octaves, seed, contrast and opacity, in monochrome or a colour tint. Copy the SVG or download it.\n\n[Try SVG Noise Texture Generator in your browser →](https://iotools.cloud/tool/svg-noise-texture-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"noiseType":{"enum":["fractalNoise","turbulence"],"description":"Type"},"baseFrequency":{"type":"number","description":"Base Frequency","minimum":1,"maximum":200},"numOctaves":{"type":"number","description":"Octaves","minimum":1,"maximum":8},"seed":{"type":"number","description":"Seed","minimum":0,"maximum":100},"stitchTiles":{"type":"boolean","description":"Stitch Tiles (seamless)"},"colorMode":{"enum":["mono","color"],"description":"Color"},"bgColor":{"type":"string","description":"Background"},"fgColor":{"type":"string","description":"Noise Tint"},"noiseOpacity":{"type":"number","description":"Noise Opacity %","minimum":1,"maximum":100},"contrast":{"type":"number","description":"Contrast","minimum":50,"maximum":300},"width":{"type":"number","description":"Width","minimum":50,"maximum":2000},"height":{"type":"number","description":"Height","minimum":50,"maximum":2000}},"required":[]},"examples":{"monochrome_grain":{"summary":"Monochrome grain","value":{"noiseType":"fractalNoise","baseFrequency":"65","numOctaves":"3","seed":"7","colorMode":"mono","bgColor":"#ffffff","noiseOpacity":"35","contrast":"120","width":"400","height":"400"}},"colored_tint":{"summary":"Colored tint","value":{"noiseType":"fractalNoise","baseFrequency":"90","numOctaves":"4","seed":"12","colorMode":"color","bgColor":"#0d1b2a","fgColor":"#e0aaff","noiseOpacity":"50","contrast":"150","width":"300","height":"300"}},"seamless_turbulence":{"summary":"Seamless turbulence","value":{"noiseType":"turbulence","baseFrequency":"20","numOctaves":"5","seed":"3","stitchTiles":"true","colorMode":"mono","bgColor":"#ffffff","noiseOpacity":"60","contrast":"100","width":"512","height":"512"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"monochrome_grain":{"summary":"Monochrome grain","value":{"tool":"svg-noise-texture-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 400\" width=\"400\" height=\"400\">\n  <defs>\n  <filter id=\"noiseFilter\" x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\">\n      <feTurbulence type=\"fractalNoise\" baseFrequency=\"0.650\" numOctaves=\"3\" seed=\"7\" result=\"turb\"/>\n      <feComponentTransfer in=\"turb\" result=\"contrast\">\n        <feFuncR type=\"linear\" slope=\"1.200\" intercept=\"-0.100\"/>\n        <feFuncG type=\"linear\" slope=\"1.200\" intercept=\"-0.100\"/>\n        <feFuncB type=\"linear\" slope=\"1.200\" intercept=\"-0.100\"/>\n      </feComponentTransfer>\n    <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0.2126 0.7152 0.0722 0 0\"/>\n      <feComponentTransfer>\n        <feFuncA type=\"linear\" slope=\"0.350\"/>\n      </feComponentTransfer>\n    </filter>\n  </defs>\n  <rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/>\n  <rect width=\"100%\" height=\"100%\" filter=\"url(#noiseFilter)\"/>\n</svg>"},"credits_used":5,"credits_remaining":null}},"colored_tint":{"summary":"Colored tint","value":{"tool":"svg-noise-texture-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 300 300\" width=\"300\" height=\"300\">\n  <defs>\n  <filter id=\"noiseFilter\" x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\">\n      <feTurbulence type=\"fractalNoise\" baseFrequency=\"0.900\" numOctaves=\"4\" seed=\"12\" result=\"turb\"/>\n      <feComponentTransfer in=\"turb\" result=\"contrast\">\n        <feFuncR type=\"linear\" slope=\"1.500\" intercept=\"-0.250\"/>\n        <feFuncG type=\"linear\" slope=\"1.500\" intercept=\"-0.250\"/>\n        <feFuncB type=\"linear\" slope=\"1.500\" intercept=\"-0.250\"/>\n      </feComponentTransfer>\n    <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0.8784  0 0 0 0 0.6667  0 0 0 0 1.0000  0.2126 0.7152 0.0722 0 0\"/>\n      <feComponentTransfer>\n        <feFuncA type=\"linear\" slope=\"0.500\"/>\n      </feComponentTransfer>\n    </filter>\n  </defs>\n  <rect width=\"100%\" height=\"100%\" fill=\"#0d1b2a\"/>\n  <rect width=\"100%\" height=\"100%\" filter=\"url(#noiseFilter)\"/>\n</svg>"},"credits_used":5,"credits_remaining":null}},"seamless_turbulence":{"summary":"Seamless turbulence","value":{"tool":"svg-noise-texture-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" width=\"512\" height=\"512\">\n  <defs>\n  <filter id=\"noiseFilter\" x=\"0%\" y=\"0%\" width=\"100%\" height=\"100%\">\n      <feTurbulence type=\"turbulence\" baseFrequency=\"0.200\" numOctaves=\"5\" seed=\"3\" stitchTiles=\"stitch\" result=\"turb\"/>\n      <feComponentTransfer in=\"turb\" result=\"contrast\">\n        <feFuncR type=\"linear\" slope=\"1.000\" intercept=\"0.000\"/>\n        <feFuncG type=\"linear\" slope=\"1.000\" intercept=\"0.000\"/>\n        <feFuncB type=\"linear\" slope=\"1.000\" intercept=\"0.000\"/>\n      </feComponentTransfer>\n    <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0.2126 0.7152 0.0722 0 0\"/>\n      <feComponentTransfer>\n        <feFuncA type=\"linear\" slope=\"0.600\"/>\n      </feComponentTransfer>\n    </filter>\n  </defs>\n  <rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"/>\n  <rect width=\"100%\" height=\"100%\" filter=\"url(#noiseFilter)\"/>\n</svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-pattern-generator":{"post":{"operationId":"run_svg_pattern_generator","summary":"SVG Pattern Generator","tags":["Generators"],"description":"Generate a seamless, tileable SVG background pattern — dots, stripes, grid, chevrons, hexagons, triangles, diamonds, crosses, waves, or checkerboard — with custom colours, spacing, stroke, opacity, and rotation. Copy or download the standalone SVG.\n\n[Try SVG Pattern Generator in your browser →](https://iotools.cloud/tool/svg-pattern-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"patternType":{"enum":["dots","lines-h","lines-v","diagonal","grid","chevron","hexagons","triangles","diamonds","crosses","waves","checkerboard"],"description":"Pattern type"},"fgColor":{"type":"string","description":"Foreground"},"bgColor":{"type":"string","description":"Background"},"strokeWidth":{"type":"number","description":"Stroke / element size","minimum":1,"maximum":20},"spacing":{"type":"number","description":"Spacing (px)","minimum":5,"maximum":100},"opacity":{"type":"number","description":"Opacity","minimum":1,"maximum":10},"rotation":{"type":"number","description":"Rotation (deg)","minimum":0,"maximum":360}},"required":[]},"examples":{"dots_default":{"summary":"Dots (default)","value":{"patternType":"dots","fgColor":"#333333","bgColor":"#ffffff","strokeWidth":"2","spacing":"20","opacity":"10","rotation":"0"}},"horizontal_stripes_rotated_45_80_opacity":{"summary":"Horizontal stripes, rotated 45°, 80% opacity","value":{"patternType":"lines-h","fgColor":"#464aff","bgColor":"#ffffff","strokeWidth":"4","spacing":"30","opacity":"8","rotation":"45"}},"checkerboard":{"summary":"Checkerboard","value":{"patternType":"checkerboard","fgColor":"#000000","bgColor":"#ffffff","strokeWidth":"2","spacing":"40","opacity":"10","rotation":"0"}},"hexagons_3_2_tile_height":{"summary":"Hexagons (√3⁄2 tile height)","value":{"patternType":"hexagons","fgColor":"#333333","bgColor":"#ffffff","strokeWidth":"2","spacing":"24","opacity":"10","rotation":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"dots_default":{"summary":"Dots (default)","value":{"tool":"svg-pattern-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\"><defs><pattern id=\"svgPattern\" patternUnits=\"userSpaceOnUse\" width=\"20\" height=\"20\"><circle cx=\"10\" cy=\"10\" r=\"1\" fill=\"#333333\" /></pattern></defs><rect width=\"800\" height=\"600\" fill=\"#ffffff\" /><rect width=\"800\" height=\"600\" fill=\"url(#svgPattern)\" opacity=\"1\" /></svg>"},"credits_used":5,"credits_remaining":null}},"horizontal_stripes_rotated_45_80_opacity":{"summary":"Horizontal stripes, rotated 45°, 80% opacity","value":{"tool":"svg-pattern-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\"><defs><pattern id=\"svgPattern\" patternUnits=\"userSpaceOnUse\" width=\"30\" height=\"30\" patternTransform=\"rotate(45)\"><line x1=\"0\" y1=\"15\" x2=\"30\" y2=\"15\" stroke=\"#464aff\" stroke-width=\"4\" /></pattern></defs><rect width=\"800\" height=\"600\" fill=\"#ffffff\" /><rect width=\"800\" height=\"600\" fill=\"url(#svgPattern)\" opacity=\"0.8\" /></svg>"},"credits_used":5,"credits_remaining":null}},"checkerboard":{"summary":"Checkerboard","value":{"tool":"svg-pattern-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\"><defs><pattern id=\"svgPattern\" patternUnits=\"userSpaceOnUse\" width=\"40\" height=\"40\"><rect x=\"0\" y=\"0\" width=\"20\" height=\"20\" fill=\"#000000\" /><rect x=\"20\" y=\"20\" width=\"20\" height=\"20\" fill=\"#000000\" /></pattern></defs><rect width=\"800\" height=\"600\" fill=\"#ffffff\" /><rect width=\"800\" height=\"600\" fill=\"url(#svgPattern)\" opacity=\"1\" /></svg>"},"credits_used":5,"credits_remaining":null}},"hexagons_3_2_tile_height":{"summary":"Hexagons (√3⁄2 tile height)","value":{"tool":"svg-pattern-generator","tool_version":"1.0.2","outputs":{"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"600\"><defs><pattern id=\"svgPattern\" patternUnits=\"userSpaceOnUse\" width=\"24\" height=\"21\"><polyline points=\"6,0 18,0 24,10.392304845413264 18,20.784609690826528 6,20.784609690826528 0,10.392304845413264\" fill=\"none\" stroke=\"#333333\" stroke-width=\"2\" /><line x1=\"18\" y1=\"0\" x2=\"24\" y2=\"-10.392304845413264\" stroke=\"#333333\" stroke-width=\"2\" /><line x1=\"6\" y1=\"0\" x2=\"0\" y2=\"-10.392304845413264\" stroke=\"#333333\" stroke-width=\"2\" /></pattern></defs><rect width=\"800\" height=\"600\" fill=\"#ffffff\" /><rect width=\"800\" height=\"600\" fill=\"url(#svgPattern)\" opacity=\"1\" /></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tailwind-css-color-scale-generator":{"post":{"operationId":"run_tailwind_css_color_scale_generator","summary":"Tailwind CSS Color Scale Generator","tags":["Generators"],"description":"Generate a Tailwind-style 50-950 color scale from any base hex color, interpolated in perceptually-even OKLCH space. Export as a Tailwind config, CSS custom properties, SCSS variables or JSON, in modern oklch() or classic hex.\n\n[Try Tailwind CSS Color Scale Generator in your browser →](https://iotools.cloud/tool/tailwind-css-color-scale-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseColor":{"type":"string","description":"Base Color"},"colorName":{"type":"string","description":"Name"},"scaleStyle":{"enum":["v4","v3"],"description":"Style"},"include950":{"type":"boolean","description":"Include 950 stop"},"chromaBoost":{"type":"number","description":"Chroma","minimum":0,"maximum":150},"exportFormat":{"enum":["tailwind","css","scss","json"],"description":"Export Format"}},"required":[]},"examples":{"tailwind_config_v4_oklch_with_950":{"summary":"Tailwind config, v4 OKLCH, with 950","value":{"baseColor":"#464aff","colorName":"primary","scaleStyle":"v4","include950":"true","chromaBoost":"100","exportFormat":"tailwind"}},"css_custom_properties_v3_hex_no_950":{"summary":"CSS custom properties, v3 hex, no 950","value":{"baseColor":"#22c55e","colorName":"success","scaleStyle":"v3","include950":"","chromaBoost":"100","exportFormat":"css"}},"scss_variables_reduced_chroma":{"summary":"SCSS variables, reduced chroma","value":{"baseColor":"#e11d48","colorName":"danger","scaleStyle":"v4","include950":"true","chromaBoost":"60","exportFormat":"scss"}},"json_export_v3_hex_boosted_chroma":{"summary":"JSON export, v3 hex, boosted chroma","value":{"baseColor":"#e11d48","colorName":"danger","scaleStyle":"v3","include950":"true","chromaBoost":"60","exportFormat":"json"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"tailwind_config_v4_oklch_with_950":{"summary":"Tailwind config, v4 OKLCH, with 950","value":{"tool":"tailwind-css-color-scale-generator","tool_version":"1.0.2","outputs":{"exportCode":"// tailwind.config.js\nmodule.exports = {\n  theme: {\n    extend: {\n      colors: {\n        'primary': {\n      '50': 'oklch(98.50% 0.007 272.51)',\n      '100': 'oklch(96.70% 0.016 272.51)',\n      '200': 'oklch(92.20% 0.037 272.51)',\n      '300': 'oklch(85.50% 0.071 272.51)',\n      '400': 'oklch(72.70% 0.141 272.51)',\n      '500': 'oklch(60.00% 0.218 272.51)',\n      '600': 'oklch(51.20% 0.259 272.51)',\n      '700': 'oklch(43.00% 0.238 272.51)',\n      '800': 'oklch(35.00% 0.202 272.51)',\n      '900': 'oklch(27.00% 0.155 272.51)',\n      '950': 'oklch(18.00% 0.109 272.51)',\n        },\n      },\n    },\n  },\n};"},"credits_used":5,"credits_remaining":null}},"css_custom_properties_v3_hex_no_950":{"summary":"CSS custom properties, v3 hex, no 950","value":{"tool":"tailwind-css-color-scale-generator","tool_version":"1.0.2","outputs":{"exportCode":":root {\n  --color-success-50: #f0fff2;\n  --color-success-100: #e1fde5;\n  --color-success-200: #c2f4ca;\n  --color-success-300: #95e5a5;\n  --color-success-400: #4bc26c;\n  --color-success-500: #009a44;\n  --color-success-600: #007c35;\n  --color-success-700: #006128;\n  --color-success-800: #00481b;\n  --color-success-900: #00300f;\n}"},"credits_used":5,"credits_remaining":null}},"scss_variables_reduced_chroma":{"summary":"SCSS variables, reduced chroma","value":{"tool":"tailwind-css-color-scale-generator","tool_version":"1.0.2","outputs":{"exportCode":"$color-danger-50: oklch(98.50% 0.007 17.58);\n$color-danger-100: oklch(96.70% 0.016 17.58);\n$color-danger-200: oklch(92.20% 0.040 17.58);\n$color-danger-300: oklch(85.50% 0.079 17.58);\n$color-danger-400: oklch(72.70% 0.113 17.58);\n$color-danger-500: oklch(60.00% 0.133 17.58);\n$color-danger-600: oklch(51.20% 0.133 17.58);\n$color-danger-700: oklch(43.00% 0.123 17.58);\n$color-danger-800: oklch(35.00% 0.104 17.58);\n$color-danger-900: oklch(27.00% 0.080 17.58);\n$color-danger-950: oklch(18.00% 0.056 17.58);"},"credits_used":5,"credits_remaining":null}},"json_export_v3_hex_boosted_chroma":{"summary":"JSON export, v3 hex, boosted chroma","value":{"tool":"tailwind-css-color-scale-generator","tool_version":"1.0.2","outputs":{"exportCode":"{\n  \"danger\": {\n    \"50\": \"#fff8f8\",\n    \"100\": \"#fff0f0\",\n    \"200\": \"#ffdbdb\",\n    \"300\": \"#ffbbbc\",\n    \"400\": \"#e5888c\",\n    \"500\": \"#c35b62\",\n    \"600\": \"#a5404a\",\n    \"700\": \"#862c36\",\n    \"800\": \"#661d26\",\n    \"900\": \"#461117\",\n    \"950\": \"#250508\"\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"exportCode":{"type":"string","description":"Export Code"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tsconfig-json-generator":{"post":{"operationId":"run_tsconfig_json_generator","summary":"tsconfig.json Generator","tags":["Generators"],"description":"Generate a TypeScript tsconfig.json from form fields: target, module, moduleResolution, JSX, lib, project layout (rootDir, outDir, baseUrl, path aliases, include/exclude), and every strictness, linting, and emit/interop compiler option. Start from a preset (Node.js, React, Next.js, Library, Strictest) or build a custom config; output is commented, ready-to-drop JSONC.\n\n[Try tsconfig.json Generator in your browser →](https://iotools.cloud/tool/tsconfig-json-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"preset":{"enum":["custom","node","node-cjs","react","nextjs","library","strictest"],"description":"Preset Profile"},"target":{"enum":["ES5","ES2015","ES2016","ES2017","ES2018","ES2019","ES2020","ES2021","ES2022","ES2023","ESNext"],"description":"target"},"module":{"enum":["ESNext","ES2022","ES2020","ES2015","NodeNext","Node16","CommonJS","AMD","UMD","Preserve"],"description":"module"},"moduleResolution":{"enum":["Bundler","NodeNext","Node16","Node","Classic"],"description":"moduleResolution"},"jsx":{"enum":["","react-jsx","react-jsxdev","react","preserve","react-native"],"description":"jsx"},"lib":{"type":"string","description":"lib"},"rootDir":{"type":"string","description":"rootDir"},"outDir":{"type":"string","description":"outDir"},"baseUrl":{"type":"string","description":"baseUrl"},"paths":{"type":"string","description":"paths"},"include":{"type":"string","description":"include"},"exclude":{"type":"string","description":"exclude"},"strict":{"type":"boolean","description":"strict — enable all strict type-checking options"},"noImplicitAny":{"type":"boolean","description":"noImplicitAny"},"strictNullChecks":{"type":"boolean","description":"strictNullChecks"},"strictFunctionTypes":{"type":"boolean","description":"strictFunctionTypes"},"strictBindCallApply":{"type":"boolean","description":"strictBindCallApply"},"strictPropertyInitialization":{"type":"boolean","description":"strictPropertyInitialization"},"noImplicitThis":{"type":"boolean","description":"noImplicitThis"},"alwaysStrict":{"type":"boolean","description":"alwaysStrict — emit \"use strict\""},"noUncheckedIndexedAccess":{"type":"boolean","description":"noUncheckedIndexedAccess"},"noImplicitOverride":{"type":"boolean","description":"noImplicitOverride"},"exactOptionalPropertyTypes":{"type":"boolean","description":"exactOptionalPropertyTypes"},"noUnusedLocals":{"type":"boolean","description":"noUnusedLocals"},"noUnusedParameters":{"type":"boolean","description":"noUnusedParameters"},"noFallthroughCasesInSwitch":{"type":"boolean","description":"noFallthroughCasesInSwitch"},"noImplicitReturns":{"type":"boolean","description":"noImplicitReturns"},"esModuleInterop":{"type":"boolean","description":"esModuleInterop"},"allowSyntheticDefaultImports":{"type":"boolean","description":"allowSyntheticDefaultImports"},"forceConsistentCasing":{"type":"boolean","description":"forceConsistentCasingInFileNames"},"skipLibCheck":{"type":"boolean","description":"skipLibCheck"},"resolveJsonModule":{"type":"boolean","description":"resolveJsonModule"},"isolatedModules":{"type":"boolean","description":"isolatedModules"},"verbatimModuleSyntax":{"type":"boolean","description":"verbatimModuleSyntax"},"allowJs":{"type":"boolean","description":"allowJs"},"checkJs":{"type":"boolean","description":"checkJs"},"declaration":{"type":"boolean","description":"declaration — emit .d.ts files"},"declarationMap":{"type":"boolean","description":"declarationMap"},"sourceMap":{"type":"boolean","description":"sourceMap"},"noEmit":{"type":"boolean","description":"noEmit — let bundler emit files"},"includeComments":{"type":"boolean","description":"Include inline comments explaining each option"},"includeHeader":{"type":"boolean","description":"Include descriptive header comment"}},"required":[]},"examples":{"node_js_preset_esm_commented":{"summary":"Node.js preset (ESM, commented)","value":{"preset":"node","includeComments":"true","includeHeader":"true"}},"custom_react_style_config_with_path_aliases":{"summary":"Custom React-style config with path aliases","value":{"preset":"custom","target":"ES2022","module":"ESNext","moduleResolution":"Bundler","jsx":"react-jsx","lib":"ES2022,DOM,DOM.Iterable","rootDir":"","outDir":"","baseUrl":"","paths":"@/*=src/*\n@components/*=src/components/*","include":"src","exclude":"node_modules\ndist\nbuild","strict":"true","esModuleInterop":"true","allowSyntheticDefaultImports":"true","forceConsistentCasing":"true","skipLibCheck":"true","resolveJsonModule":"true","isolatedModules":"true","noEmit":"true","includeComments":"true","includeHeader":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"node_js_preset_esm_commented":{"summary":"Node.js preset (ESM, commented)","value":{"tool":"tsconfig-json-generator","tool_version":"1.0.2","outputs":{"output":"// tsconfig.json — TypeScript compiler configuration\n// Generated with iotools.cloud\n// Docs: https://www.typescriptlang.org/tsconfig\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\", // JS version to compile down to\n    \"module\": \"NodeNext\", // Module system for emitted code\n    \"moduleResolution\": \"NodeNext\", // How imports are resolved\n    \"lib\": [\"ES2022\"], // Standard libraries available to the code\n    \"rootDir\": \"./src\", // Root folder of input source files\n    \"outDir\": \"./dist\", // Folder for emitted output\n    \"strict\": true, // Turn on all strict type-checking options\n    \"noUnusedLocals\": true, // Report unused local variables\n    \"noUnusedParameters\": true, // Report unused function parameters\n    \"noFallthroughCasesInSwitch\": true, // Report fallthrough cases in switch\n    \"noImplicitReturns\": true, // Report code paths that do not return\n    \"esModuleInterop\": true, // Enable default imports for CommonJS modules\n    \"allowSyntheticDefaultImports\": true, // Allow default imports from modules without default export\n    \"forceConsistentCasingInFileNames\": true, // Treat file names as case-sensitive\n    \"skipLibCheck\": true, // Skip type checking of .d.ts files\n    \"resolveJsonModule\": true, // Allow importing .json files\n    \"declaration\": true, // Emit .d.ts declaration files\n    \"sourceMap\": true // Generate .map files for JS output\n  },\n  \"include\": [\"src/**/*\"], // Files/globs to include in the program\n  \"exclude\": [\"node_modules\", \"dist\"] // Files/globs to exclude from the program\n}\n"},"credits_used":5,"credits_remaining":null}},"custom_react_style_config_with_path_aliases":{"summary":"Custom React-style config with path aliases","value":{"tool":"tsconfig-json-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2022\", // JS version to compile down to\n    \"module\": \"ESNext\", // Module system for emitted code\n    \"moduleResolution\": \"Bundler\", // How imports are resolved\n    \"jsx\": \"react-jsx\", // JSX emit mode\n    \"lib\": [\"ES2022\", \"DOM\", \"DOM.Iterable\"], // Standard libraries available to the code\n    \"baseUrl\": \".\", // Base directory for non-relative imports\n    // Path aliases for non-relative imports\n    \"paths\": {\n      \"@/*\": [\"src/*\"],\n      \"@components/*\": [\"src/components/*\"]\n    },\n    \"strict\": true, // Turn on all strict type-checking options\n    \"esModuleInterop\": true, // Enable default imports for CommonJS modules\n    \"allowSyntheticDefaultImports\": true, // Allow default imports from modules without default export\n    \"forceConsistentCasingInFileNames\": true, // Treat file names as case-sensitive\n    \"skipLibCheck\": true, // Skip type checking of .d.ts files\n    \"resolveJsonModule\": true, // Allow importing .json files\n    \"isolatedModules\": true, // Each file must be a standalone module (Babel/SWC compat)\n    \"noEmit\": true // Do not emit output (bundler handles it)\n  },\n  \"include\": [\"src\"], // Files/globs to include in the program\n  \"exclude\": [\"node_modules\", \"dist\", \"build\"] // Files/globs to exclude from the program\n}\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Generated tsconfig.json"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/username-generator":{"post":{"operationId":"run_username_generator","summary":"Username Generator","tags":["Generators"],"description":"Generate unique, available-looking usernames from a base word or interest — adjective + noun combos, leetspeak, portmanteaus, prefixes and more, filtered by platform character limits (Twitter, Instagram, TikTok, Reddit, Discord, GitHub, Twitch, YouTube).\n\n[Try Username Generator in your browser →](https://iotools.cloud/tool/username-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseWord":{"type":"string","description":"Base Word / Keyword"},"platform":{"enum":["any","twitter","instagram","tiktok","reddit","discord","gaming","twitch","github","youtube"],"description":"Platform"},"style":{"enum":["all","cool","funny","professional","aesthetic","leet","dark","cute","retro","minimal","random"],"description":"Style"},"includeNumbers":{"type":"boolean","description":"Include numbers"},"includeSeparators":{"type":"boolean","description":"Include underscores / dots"},"maxLength":{"type":"number","description":"Max length","minimum":3,"maximum":39}},"required":["baseWord"]},"examples":{"gamer_handle_from_wolf":{"summary":"Gamer handle from 'wolf'","value":{"baseWord":"wolf","platform":"any","style":"leet","includeNumbers":"true","includeSeparators":"true","maxLength":"20"}},"twitter_handle_from_sarah":{"summary":"Twitter handle from 'sarah'","value":{"baseWord":"sarah","platform":"twitter","style":"all","includeNumbers":"true","includeSeparators":"false","maxLength":"15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"usernames":{"type":"array","description":"Generated usernames","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"description":{"type":"string"},"image":{"type":"string"}}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/article-rewriter":{"post":{"operationId":"run_article_rewriter","summary":"Article Rewriter","tags":["Generators"],"description":"Reword an article or paragraph with AI while keeping its meaning — pick a rewrite style and optionally lock in exact keywords that must stay unchanged.\n\n[Try Article Rewriter in your browser →](https://iotools.cloud/tool/article-rewriter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to rewrite"},"mode":{"enum":["standard","formal","casual","fluency","creative"],"description":"Rewrite style"},"preserveKeywords":{"type":"string","description":"Keywords to keep unchanged (optional)"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"The advancement of artificial intelligence has fundamentally transformed the landscape of modern technology. Machine learning algorithms, particularly deep neural networks, have demonstrated remarkable capabilities in pattern recognition, natural language processing, and decision-making tasks. These systems now power everything from recommendation engines to autonomous vehicles, reshaping industries that were previously untouched by automation."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"rewrittenText":{"type":"string","description":"Rewritten text"},"stats":{"type":"string","description":"Word count"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/paraphrasing-tool":{"post":{"operationId":"run_paraphrasing_tool","summary":"Paraphrasing Tool","tags":["Generators"],"description":"Rephrase a sentence or paragraph with AI while keeping its meaning — pick from 9 styles (including Shorten/Expand) and see exactly what changed.\n\n[Try Paraphrasing Tool in your browser →](https://iotools.cloud/tool/paraphrasing-tool/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to paraphrase"},"mode":{"enum":["standard","fluency","formal","academic","simple","casual","creative","shorten","expand"],"description":"Paraphrase style"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"Regular exercise improves both physical and mental health, helping to reduce stress and boost overall energy levels throughout the day."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"paraphrasedText":{"type":"string","description":"Paraphrased text"},"diffHtml":{"type":"string","description":"Diff HTML"},"stats":{"type":"string","description":"Word count"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/aztec-code-generator":{"post":{"operationId":"run_aztec_code_generator","summary":"Aztec Code Generator","tags":["Generators"],"description":"Generate an Aztec Code 2D barcode from text, a URL, or any short string — configurable error correction and module size, output as a scalable SVG. Runs entirely in your browser.\n\n[Try Aztec Code Generator in your browser →](https://iotools.cloud/tool/aztec-code-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to encode"},"errorCorrection":{"enum":["23","36","50"],"description":"Error correction"},"moduleSize":{"type":"number","description":"Module size","minimum":1,"maximum":10}},"required":[]},"examples":{"url_low_error_correction":{"summary":"URL, low error correction","value":{"inputText":"https://iotools.cloud","errorCorrection":"23","moduleSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"url_low_error_correction":{"summary":"URL, low error correction","value":{"tool":"aztec-code-generator","tool_version":"1.0.2","outputs":{"svg":"<svg viewBox=\"0 0 184 184\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0 184L8 184L8 176L0 176ZM24 184L40 184L40 176L24 176ZM64 184L80 184L80 176L64 176ZM96 184L120 184L120 176L96 176ZM152 184L160 184L160 176L152 176ZM168 184L176 184L176 176L168 176ZM88 176L96 176L96 168L88 168ZM128 176L152 176L152 168L144 168L144 152L136 152L136 168L128 168ZM0 168L8 168L8 152L0 152ZM40 168L48 168L48 160L40 160ZM64 168L72 168L72 144L80 144L80 152L88 152L88 144L104 144L104 160L112 160L112 144L120 144L120 160L128 160L128 144L176 144L176 152L184 152L184 136L176 136L176 128L152 128L152 136L144 136L144 120L152 120L152 112L144 112L144 104L152 104L152 96L144 96L144 80L160 80L160 64L152 64L152 72L144 72L144 64L152 64L152 56L144 56L144 48L176 48L176 40L160 40L160 32L176 32L176 40L184 40L184 24L152 24L152 32L144 32L144 40L88 40L88 32L112 32L112 24L104 24L104 16L112 16L112 8L104 8L104 0L96 0L96 8L88 8L88 16L96 16L96 24L80 24L80 8L72 8L72 16L64 16L64 32L80 32L80 40L48 40L48 32L56 32L56 24L24 24L24 32L8 32L8 40L24 40L24 72L16 72L16 56L8 56L8 40L0 40L0 64L8 64L8 80L16 80L16 88L24 88L24 96L32 96L32 72L40 72L40 96L32 96L32 104L40 104L40 144L48 144L48 160L64 160ZM96 168L104 168L104 160L96 160ZM160 168L168 168L168 160L160 160ZM88 160L96 160L96 152L88 152ZM168 160L176 160L176 152L168 152ZM8 152L16 152L16 144L8 144ZM24 152L32 152L32 144L24 144ZM16 144L24 144L24 136L16 136ZM48 136L48 48L136 48L136 136ZM56 128L128 128L128 56L56 56ZM8 120L24 120L24 112L32 112L32 104L24 104L24 96L16 96L16 104L0 104L0 112L8 112ZM64 120L64 64L120 64L120 120ZM72 112L112 112L112 72L72 72ZM152 112L160 112L160 104L152 104ZM80 104L80 80L104 80L104 104ZM160 104L176 104L176 88L168 88L168 96L160 96ZM8 96L16 96L16 88L8 88ZM88 96L96 96L96 88L88 88ZM152 96L160 96L160 88L152 88ZM0 88L8 88L8 80L0 80ZM176 88L184 88L184 80L176 80ZM168 80L176 80L176 72L168 72ZM176 72L184 72L184 64L176 64ZM160 64L176 64L176 56L160 56ZM0 32L8 32L8 24L0 24ZM120 32L128 32L128 24L144 24L144 16L152 16L152 8L136 8L136 0L128 0L128 8L120 8L120 16L112 16L112 24L120 24ZM0 16L8 16L8 8L16 8L16 0L0 0ZM16 16L24 16L24 8L16 8ZM32 16L48 16L48 8L56 8L56 0L40 0L40 8L32 8ZM160 16L168 16L168 8L176 8L176 0L160 0ZM24 8L32 8L32 0L24 0ZM112 8L120 8L120 0L112 0Z\" fill=\"#000000\" fill-rule=\"evenodd\" />\n</svg>\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/data-matrix-generator":{"post":{"operationId":"run_data_matrix_generator","summary":"Data Matrix Generator","tags":["Generators"],"description":"Generate a Data Matrix 2D barcode from text, a serial number, or any short string — square or rectangular symbol shape, configurable module size, output as a scalable SVG. Runs entirely in your browser.\n\n[Try Data Matrix Generator in your browser →](https://iotools.cloud/tool/data-matrix-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Data"},"shape":{"enum":["square","rectangular"],"description":"Shape"},"moduleSize":{"type":"number","description":"Module size","minimum":1,"maximum":10}},"required":[]},"examples":{"serial_number_square_shape":{"summary":"Serial number, square shape","value":{"inputText":"SN-2026-0311-48291","shape":"square","moduleSize":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"serial_number_square_shape":{"summary":"Serial number, square shape","value":{"tool":"data-matrix-generator","tool_version":"1.0.2","outputs":{"svg":"<svg viewBox=\"0 0 160 160\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M16 144L144 144L144 136L136 136L136 128L128 128L128 136L120 136L120 128L112 128L112 136L88 136L88 128L112 128L112 120L120 120L120 128L128 128L128 104L120 104L120 112L104 112L104 96L88 96L88 88L104 88L104 80L96 80L96 72L88 72L88 48L72 48L72 56L80 56L80 64L64 64L64 72L56 72L56 80L72 80L72 88L80 88L80 104L72 104L72 112L80 112L80 128L72 128L72 136L64 136L64 128L56 128L56 136L48 136L48 128L40 128L40 136L24 136L24 120L32 120L32 112L40 112L40 104L32 104L32 96L24 96L24 48L48 48L48 40L56 40L56 16L48 16L48 24L40 24L40 16L32 16L32 32L40 32L40 40L24 40L24 16L16 16ZM136 128L144 128L144 120L136 120ZM48 120L64 120L64 112L48 112ZM88 120L88 112L96 112L96 120ZM136 112L144 112L144 104L136 104ZM40 104L64 104L64 96L56 96L56 80L48 80L48 64L40 64L40 56L32 56L32 72L40 72L40 80L32 80L32 88L48 88L48 96L40 96ZM128 104L136 104L136 96L128 96ZM64 96L72 96L72 88L64 88ZM112 96L120 96L120 88L112 88ZM136 96L144 96L144 88L136 88ZM128 88L136 88L136 80L128 80ZM104 80L128 80L128 72L112 72L112 64L96 64L96 72L104 72ZM136 80L144 80L144 72L136 72ZM128 72L136 72L136 64L144 64L144 56L128 56ZM48 64L64 64L64 56L56 56L56 48L48 48ZM112 64L120 64L120 56L112 56ZM96 56L104 56L104 48L96 48ZM120 56L128 56L128 48L120 48ZM56 48L72 48L72 40L80 40L80 24L72 24L72 32L64 32L64 40L56 40ZM104 48L112 48L112 40L120 40L120 32L128 32L128 24L120 24L120 16L112 16L112 32L96 32L96 40L104 40ZM128 48L144 48L144 40L136 40L136 32L128 32ZM136 32L144 32L144 24L136 24ZM64 24L72 24L72 16L64 16ZM80 24L88 24L88 16L80 16ZM96 24L104 24L104 16L96 16ZM128 24L136 24L136 16L128 16Z\" fill=\"#000000\" fill-rule=\"evenodd\" />\n</svg>\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf417-barcode-generator":{"post":{"operationId":"run_pdf417_barcode_generator","summary":"PDF417 Barcode Generator","tags":["Generators"],"description":"Encode text, IDs, or shipping data into a PDF417 2D barcode — configurable error correction, columns, row height, and module scale, output as a scalable SVG. Runs entirely in your browser.\n\n[Try PDF417 Barcode Generator in your browser →](https://iotools.cloud/tool/pdf417-barcode-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputData":{"type":"string","description":"Data"},"errorCorrection":{"enum":["0","1","2","3","4","5","6","7","8"],"description":"Error correction level"},"columns":{"type":"number","description":"Columns (0 = auto)","minimum":0,"maximum":30},"rowHeight":{"type":"number","description":"Row height multiplier","minimum":1,"maximum":10},"scale":{"type":"number","description":"Module width / scale","minimum":1,"maximum":5}},"required":[]},"examples":{"url_default_settings":{"summary":"URL, default settings","value":{"inputData":"https://iotools.cloud","errorCorrection":"2","columns":"0","rowHeight":"3","scale":"2"}},"order_code_custom_settings":{"summary":"Order code, custom settings","value":{"inputData":"ORDER-48291","errorCorrection":"5","columns":"10","rowHeight":"4","scale":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"url_default_settings":{"summary":"URL, default settings","value":{"tool":"pdf417-barcode-generator","tool_version":"1.0.2","outputs":{"svg":"<svg viewBox=\"0 0 240 48\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0 48L16 48L16 0L0 0ZM18 48L20 48L20 0L18 0ZM22 48L24 48L24 0L22 0ZM26 48L28 48L28 0L26 0ZM34 48L44 48L44 24L42 24L42 30L40 30L40 24L38 24L38 18L36 18L36 12L38 12L38 18L40 18L40 12L42 12L42 18L44 18L44 12L46 12L46 6L44 6L44 0L34 0ZM46 48L48 48L48 42L46 42ZM52 48L54 48L54 36L56 36L56 48L60 48L60 42L66 42L66 36L64 36L64 24L66 24L66 18L56 18L56 24L60 24L60 36L58 36L58 30L52 30L52 18L56 18L56 12L54 12L54 6L52 6L52 12L50 12L50 6L48 6L48 18L44 18L44 24L46 24L46 36L48 36L48 30L50 30L50 36L48 36L48 42L52 42ZM68 48L76 48L76 36L72 36L72 42L70 42L70 36L72 36L72 24L74 24L74 18L70 18L70 12L74 12L74 0L68 0ZM80 48L82 48L82 42L80 42ZM88 48L90 48L90 42L88 42ZM98 48L100 48L100 42L98 42ZM102 48L110 48L110 42L108 42L108 24L106 24L106 30L104 30L104 24L106 24L106 18L104 18L104 12L106 12L106 0L102 0ZM114 48L116 48L116 42L120 42L120 36L122 36L122 30L124 30L124 24L126 24L126 18L124 18L124 12L122 12L122 0L120 0L120 12L118 12L118 18L122 18L122 24L118 24L118 18L112 18L112 30L110 30L110 36L114 36ZM122 48L124 48L124 42L122 42ZM126 48L128 48L128 42L126 42ZM136 48L144 48L144 36L140 36L140 42L138 42L138 24L140 24L140 18L138 18L138 12L140 12L140 18L142 18L142 24L140 24L140 30L144 30L144 36L146 36L146 30L148 30L148 36L146 36L146 48L148 48L148 42L150 42L150 36L152 36L152 18L150 18L150 24L144 24L144 18L146 18L146 12L142 12L142 6L146 6L146 0L140 0L140 6L138 6L138 0L136 0ZM154 48L156 48L156 42L154 42ZM164 48L166 48L166 42L164 42ZM170 48L172 48L172 42L174 42L174 48L176 48L176 30L178 30L178 18L176 18L176 24L174 24L174 18L176 18L176 12L178 12L178 6L180 6L180 0L170 0ZM178 48L190 48L190 36L192 36L192 30L190 30L190 24L188 24L188 18L184 18L184 12L182 12L182 18L180 18L180 30L182 30L182 24L184 24L184 30L182 30L182 36L184 36L184 42L180 42L180 30L178 30ZM192 48L198 48L198 42L202 42L202 36L196 36L196 30L200 30L200 24L202 24L202 12L192 12L192 6L200 6L200 0L190 0L190 18L192 18L192 24L194 24L194 36L192 36ZM204 48L218 48L218 0L204 0ZM220 48L222 48L222 0L220 0ZM228 48L230 48L230 0L228 0ZM232 48L234 48L234 0L232 0ZM238 48L240 48L240 0L238 0ZM40 42L40 36L42 36L42 42ZM82 42L88 42L88 30L92 30L92 42L96 42L96 36L94 36L94 24L92 24L92 12L88 12L88 6L84 6L84 12L86 12L86 18L90 18L90 24L86 24L86 30L78 30L78 36L82 36ZM124 42L126 42L126 36L124 36ZM128 42L130 42L130 30L132 30L132 24L130 24L130 18L134 18L134 6L126 6L126 0L124 0L124 12L126 12L126 18L128 18L128 24L126 24L126 30L128 30ZM156 42L158 42L158 36L166 36L166 30L162 30L162 24L158 24L158 30L156 30ZM98 36L100 36L100 30L98 30ZM132 36L134 36L134 30L132 30ZM74 30L78 30L78 24L80 24L80 18L84 18L84 12L82 12L82 6L84 6L84 0L80 0L80 12L74 12L74 18L76 18L76 24L74 24ZM96 30L98 30L98 12L96 12L96 0L88 0L88 6L94 6L94 24L96 24ZM154 30L156 30L156 24L158 24L158 18L156 18L156 12L152 12L152 18L154 18ZM40 24L42 24L42 18L40 18ZM106 18L112 18L112 12L118 12L118 0L114 0L114 6L110 6L110 12L106 12ZM160 18L166 18L166 12L168 12L168 6L164 6L164 12L162 12L162 6L160 6L160 0L154 0L154 6L156 6L156 12L160 12ZM178 18L180 18L180 12L178 12ZM60 12L66 12L66 6L64 6L64 0L54 0L54 6L60 6ZM148 12L150 12L150 6L148 6ZM180 12L182 12L182 6L180 6ZM184 12L186 12L186 6L184 6ZM46 6L48 6L48 0L46 0ZM50 6L52 6L52 0L50 0ZM76 6L78 6L78 0L76 0ZM162 6L164 6L164 0L162 0ZM182 6L184 6L184 0L182 0ZM186 6L188 6L188 0L186 0Z\" fill=\"#000000\" fill-rule=\"evenodd\" />\n</svg>\n"},"credits_used":5,"credits_remaining":null}},"order_code_custom_settings":{"summary":"Order code, custom settings","value":{"tool":"pdf417-barcode-generator","tool_version":"1.0.2","outputs":{"svg":"<svg viewBox=\"0 0 717 72\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M0 72L24 72L24 0L0 0ZM27 72L30 72L30 0L27 0ZM33 72L36 72L36 0L33 0ZM39 72L42 72L42 0L39 0ZM51 72L63 72L63 63L60 63L60 36L57 36L57 18L60 18L60 9L63 9L63 18L66 18L66 0L51 0ZM66 72L69 72L69 63L66 63ZM75 72L78 72L78 63L81 63L81 54L84 54L84 45L81 45L81 36L78 36L78 27L69 27L69 18L66 18L66 36L69 36L69 54L72 54L72 63L75 63ZM93 72L96 72L96 63L99 63L99 54L93 54L93 45L96 45L96 36L99 36L99 27L96 27L96 18L84 18L84 9L96 9L96 0L81 0L81 27L84 27L84 36L87 36L87 45L90 45L90 54L84 54L84 63L93 63ZM102 72L117 72L117 54L120 54L120 45L114 45L114 27L117 27L117 18L126 18L126 0L120 0L120 9L117 9L117 0L114 0L114 9L111 9L111 0L102 0ZM120 72L126 72L126 63L120 63ZM129 72L132 72L132 63L129 63ZM141 72L144 72L144 54L141 54ZM153 72L165 72L165 63L171 63L171 54L165 54L165 36L168 36L168 27L156 27L156 9L159 9L159 18L174 18L174 27L171 27L171 45L174 45L174 54L183 54L183 45L186 45L186 18L183 18L183 36L177 36L177 9L174 9L174 0L165 0L165 9L162 9L162 0L153 0ZM174 72L177 72L177 63L174 63ZM180 72L183 72L183 63L180 63ZM192 72L195 72L195 63L192 63ZM204 72L207 72L207 63L210 63L210 54L207 54L207 45L210 45L210 54L213 54L213 27L207 27L207 0L204 0ZM210 72L213 72L213 63L210 63ZM216 72L231 72L231 63L234 63L234 54L240 54L240 63L237 63L237 72L243 72L243 54L246 54L246 36L243 36L243 45L237 45L237 36L231 36L231 45L228 45L228 63L222 63L222 54L225 54L225 45L216 45L216 54L213 54L213 63L216 63ZM255 72L267 72L267 63L258 63L258 54L264 54L264 45L267 45L267 36L261 36L261 45L258 45L258 36L261 36L261 27L258 27L258 0L255 0ZM270 72L273 72L273 63L270 63ZM279 72L285 72L285 54L288 54L288 45L291 45L291 27L300 27L300 18L294 18L294 9L297 9L297 0L291 0L291 9L288 9L288 36L285 36L285 27L282 27L282 36L276 36L276 27L270 27L270 36L273 36L273 45L270 45L270 54L282 54L282 63L279 63ZM297 72L303 72L303 36L297 36L297 45L300 45L300 63L297 63ZM306 72L321 72L321 54L318 54L318 63L315 63L315 54L309 54L309 45L321 45L321 54L327 54L327 45L324 45L324 36L321 36L321 27L324 27L324 18L327 18L327 36L330 36L330 9L321 9L321 0L318 0L318 9L312 9L312 18L315 18L315 36L312 36L312 27L309 27L309 0L306 0ZM324 72L327 72L327 63L324 63ZM330 72L333 72L333 54L330 54ZM336 72L342 72L342 63L345 63L345 54L339 54L339 45L336 45ZM357 72L363 72L363 63L366 63L366 72L369 72L369 54L372 54L372 72L384 72L384 54L381 54L381 63L378 63L378 54L381 54L381 45L378 45L378 36L375 36L375 18L378 18L378 27L381 27L381 9L375 9L375 0L369 0L369 9L366 9L366 0L357 0ZM390 72L396 72L396 63L402 63L402 54L405 54L405 36L402 36L402 45L399 45L399 54L396 54L396 36L393 36L393 18L396 18L396 9L390 9L390 18L387 18L387 36L390 36L390 45L387 45L387 54L393 54L393 63L390 63ZM408 72L414 72L414 63L411 63L411 54L420 54L420 36L414 36L414 27L411 27L411 0L408 0ZM417 72L426 72L426 36L423 36L423 63L417 63ZM429 72L432 72L432 63L429 63ZM435 72L453 72L453 63L450 63L450 54L453 54L453 45L456 45L456 36L450 36L450 45L447 45L447 54L444 54L444 63L441 63L441 54L444 54L444 45L438 45L438 36L444 36L444 27L435 27L435 36L432 36L432 45L429 45L429 54L435 54ZM459 72L465 72L465 63L462 63L462 54L465 54L465 45L471 45L471 36L468 36L468 27L462 27L462 18L468 18L468 27L474 27L474 45L471 45L471 63L474 63L474 72L486 72L486 45L489 45L489 63L492 63L492 36L489 36L489 27L486 27L486 36L483 36L483 45L480 45L480 36L477 36L477 27L480 27L480 18L471 18L471 9L462 9L462 0L459 0ZM468 72L471 72L471 63L468 63ZM498 72L504 72L504 63L498 63ZM510 72L516 72L516 54L519 54L519 63L522 63L522 54L525 54L525 45L516 45L516 36L519 36L519 27L513 27L513 18L525 18L525 9L513 9L513 0L510 0ZM531 72L534 72L534 54L528 54L528 63L531 63ZM537 72L546 72L546 54L552 54L552 45L549 45L549 27L543 27L543 36L546 36L546 45L543 45L543 54L540 54L540 45L543 45L543 36L534 36L534 45L537 45ZM552 72L555 72L555 63L552 63ZM561 72L564 72L564 63L567 63L567 45L570 45L570 36L564 36L564 18L567 18L567 27L576 27L576 9L573 9L573 18L570 18L570 9L564 9L564 0L561 0ZM567 72L570 72L570 63L567 63ZM582 72L594 72L594 63L597 63L597 54L600 54L600 45L594 45L594 54L591 54L591 45L594 45L594 36L588 36L588 45L576 45L576 36L573 36L573 63L582 63ZM597 72L600 72L600 63L597 63ZM612 72L615 72L615 54L618 54L618 72L621 72L621 45L624 45L624 36L621 36L621 27L618 27L618 18L621 18L621 27L624 27L624 9L621 9L621 0L618 0L618 9L615 9L615 0L612 0ZM624 72L642 72L642 63L639 63L639 54L645 54L645 72L654 72L654 63L657 63L657 54L660 54L660 45L657 45L657 36L651 36L651 27L657 27L657 18L645 18L645 0L642 0L642 18L639 18L639 27L642 27L642 36L648 36L648 45L654 45L654 54L648 54L648 45L642 45L642 36L636 36L636 27L633 27L633 45L630 45L630 54L627 54L627 63L624 63ZM663 72L684 72L684 0L663 0ZM687 72L690 72L690 0L687 0ZM699 72L702 72L702 0L699 0ZM705 72L708 72L708 0L705 0ZM714 72L717 72L717 0L714 0ZM63 63L66 63L66 36L63 36ZM105 63L105 45L108 45L108 54L111 54L111 63ZM132 63L138 63L138 45L132 45ZM156 63L156 36L159 36L159 54L162 54L162 63ZM183 63L192 63L192 54L195 54L195 63L198 63L198 54L201 54L201 45L198 45L198 36L201 36L201 18L192 18L192 9L189 9L189 0L186 0L186 18L189 18L189 36L195 36L195 45L186 45L186 54L183 54ZM267 63L270 63L270 54L267 54ZM477 63L477 54L480 54L480 63ZM585 63L585 54L588 54L588 63ZM603 63L606 63L606 45L603 45ZM144 54L150 54L150 36L147 36L147 45L144 45ZM291 54L294 54L294 45L291 45ZM345 54L354 54L354 36L345 36ZM360 54L360 45L366 45L366 54ZM501 54L504 54L504 36L507 36L507 27L501 27L501 18L498 18L498 45L501 45ZM555 54L558 54L558 45L555 45ZM624 54L627 54L627 45L624 45ZM120 45L123 45L123 36L120 36ZM141 45L144 45L144 27L150 27L150 18L141 18L141 9L144 9L144 0L132 0L132 9L135 9L135 18L138 18L138 36L141 36ZM225 45L228 45L228 36L231 36L231 18L228 18L228 9L231 9L231 0L222 0L222 9L213 9L213 0L210 0L210 18L216 18L216 27L219 27L219 36L225 36ZM330 45L333 45L333 36L330 36ZM339 45L342 45L342 18L345 18L345 9L348 9L348 0L342 0L342 9L339 9L339 18L336 18L336 27L339 27ZM369 45L369 36L372 36L372 45ZM528 45L531 45L531 36L534 36L534 27L537 27L537 9L531 9L531 18L525 18L525 27L522 27L522 36L528 36ZM600 45L603 45L603 36L600 36ZM627 45L630 45L630 36L627 36ZM60 36L63 36L63 18L60 18ZM108 36L108 27L105 27L105 9L108 9L108 18L111 18L111 36ZM129 36L132 36L132 9L129 9L129 18L126 18L126 27L129 27ZM237 36L243 36L243 27L240 27L240 18L243 18L243 0L234 0L234 9L237 9L237 18L234 18L234 27L237 27ZM249 36L252 36L252 27L249 27ZM360 36L360 27L363 27L363 36ZM366 36L366 27L369 27L369 36ZM420 36L423 36L423 27L420 27ZM426 36L432 36L432 27L429 27L429 18L426 18ZM555 36L558 36L558 27L555 27ZM576 36L579 36L579 27L576 27ZM582 36L588 36L588 27L582 27ZM594 36L600 36L600 27L594 27ZM624 36L627 36L627 27L624 27ZM243 27L246 27L246 18L243 18ZM261 27L264 27L264 18L276 18L276 27L279 27L279 9L270 9L270 0L267 0L267 9L261 9ZM396 27L399 27L399 18L396 18ZM432 27L435 27L435 18L441 18L441 9L435 9L435 0L426 0L426 9L429 9L429 18L432 18ZM444 27L456 27L456 18L453 18L453 9L450 9L450 18L444 18ZM492 27L495 27L495 0L489 0L489 9L492 9ZM540 27L543 27L543 18L546 18L546 0L540 0ZM549 27L552 27L552 18L549 18ZM588 27L594 27L594 18L591 18L591 9L582 9L582 18L588 18ZM600 27L609 27L609 18L603 18L603 9L597 9L597 18L600 18ZM627 27L633 27L633 18L630 18L630 9L627 9ZM69 18L75 18L75 9L72 9L72 0L69 0ZM180 18L183 18L183 9L180 9ZM231 18L234 18L234 9L231 9ZM282 18L285 18L285 9L288 9L288 0L282 0ZM333 18L336 18L336 0L330 0L330 9L333 9ZM360 18L360 9L363 9L363 18ZM384 18L387 18L387 9L384 9ZM423 18L426 18L426 9L423 9ZM486 18L489 18L489 9L486 9ZM501 18L504 18L504 0L501 0ZM552 18L558 18L558 9L555 9L555 0L552 0ZM633 18L636 18L636 9L633 9ZM75 9L78 9L78 0L75 0ZM177 9L180 9L180 0L177 0ZM381 9L384 9L384 0L381 0ZM396 9L402 9L402 0L396 0ZM414 9L420 9L420 0L414 0ZM444 9L450 9L450 0L444 0ZM474 9L480 9L480 0L474 0ZM525 9L531 9L531 0L525 0ZM576 9L582 9L582 0L576 0ZM591 9L597 9L597 0L591 0ZM603 9L606 9L606 0L603 0ZM624 9L627 9L627 0L624 0Z\" fill=\"#000000\" fill-rule=\"evenodd\" />\n</svg>\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svg":{"type":"string","description":"SVG source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-color-palette-generator":{"post":{"operationId":"run_ai_color_palette_generator","summary":"AI Color Palette Generator","tags":["Generators"],"description":"Generate a color palette from a text prompt with AI — describe a theme or mood, pick a style, and get back named, copyable hex swatches.\n\n[Try AI Color Palette Generator in your browser →](https://iotools.cloud/tool/ai-color-palette-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"prompt":{"type":"string","description":"Describe a theme or mood"},"style":{"enum":["balanced","vibrant","pastel","monochrome","earthy"],"description":"Style"},"count":{"type":"number","description":"How many colors","minimum":3,"maximum":10}},"required":["prompt"]},"examples":{"five_balanced_colors":{"summary":"Five balanced colors","value":{"prompt":"sunset over the ocean","style":"balanced","count":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"palette":{"type":"array","description":"Palette","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"hex":{"type":"string","description":"Hex"}}},"x-iotools-columns":["name","hex"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/resume-builder":{"post":{"operationId":"run_resume_builder","summary":"Resume Builder","tags":["Generators"],"description":"Build a clean, ATS-friendly resume from your name, contact details, summary, work history, education and skills, and download it as a print-ready PDF. Runs entirely in your browser — nothing about your resume is uploaded or stored.\n\n[Try Resume Builder in your browser →](https://iotools.cloud/tool/resume-builder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fullName":{"type":"string","description":"Full Name"},"jobTitle":{"type":"string","description":"Headline / Target Role"},"contactInfo":{"type":"string","description":"Contact Info"},"summary":{"type":"string","description":"Summary"},"experience":{"type":"string","description":"Experience"},"education":{"type":"string","description":"Education"},"skills":{"type":"string","description":"Skills"},"accentColor":{"enum":["#1e3a5f","#1f2937","#0f766e","#7f1d1d","#334155"],"description":"Accent Color"}},"required":["fullName","contactInfo","experience"]},"examples":{"product_designer_resume":{"summary":"Product designer resume","value":{"fullName":"Jane Doe","jobTitle":"Senior Product Designer","contactInfo":"jane@example.com\n(555) 123-4567\nSan Francisco, CA\nlinkedin.com/in/janedoe","summary":"Product designer with 8 years of experience leading 0-to-1 design for consumer apps.","experience":"Acme Corp | Senior Designer | 2022 – Present | Led redesign of the checkout flow, lifting conversion 18%; Mentored 2 junior designers\nBeta Inc | Product Designer | 2019 – 2022 | Shipped the mobile app's first design system","education":"State University | B.A. Graphic Design | 2019","skills":"Figma, Design Systems, User Research, Prototyping, HTML/CSS","accentColor":"#1e3a5f"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resumePdf":{"type":"string","contentEncoding":"base64","description":"Resume PDF"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/codeowners-generator":{"post":{"operationId":"run_codeowners_generator","summary":"CODEOWNERS Generator","tags":["Generators"],"description":"Turn pasted ownership rules into a clean, aligned GitHub CODEOWNERS file. Flags patterns with no owner, dead duplicate rules, unsupported ! negation, and malformed owner tokens — and resolves which rule governs a given file under GitHub's real last-match-wins order.\n\n[Try CODEOWNERS Generator in your browser →](https://iotools.cloud/tool/codeowners-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rules":{"type":"string","description":"Ownership Rules"},"testPath":{"type":"string","description":"Test a file path (optional)"}},"required":["rules"]},"examples":{"basic_rules":{"summary":"Basic rules","value":{"rules":"# Default owners for everything\n*                @global-owner\n*.js             @web-team\n/docs/           @doc-team @jane-doe","testPath":"docs/setup.md"}},"duplicate_pattern_no_owner_and_bad_token":{"summary":"Duplicate pattern, no owner, and bad token","value":{"rules":"*.ts @web-team\n*.ts @ts-team\n/legacy/\nbroken !thing @@bad owner","testPath":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_rules":{"summary":"Basic rules","value":{"tool":"codeowners-generator","tool_version":"1.0.2","outputs":{"codeownersFile":"# Default owners for everything\n*      @global-owner\n*.js   @web-team\n/docs/ @doc-team @jane-doe\n","warnings":[],"matchResult":"Line 4: /docs/ → @doc-team, @jane-doe"},"credits_used":5,"credits_remaining":null}},"duplicate_pattern_no_owner_and_bad_token":{"summary":"Duplicate pattern, no owner, and bad token","value":{"tool":"codeowners-generator","tool_version":"1.0.2","outputs":{"codeownersFile":"*.ts     @web-team\n*.ts     @ts-team\n/legacy/\nbroken   !thing @@bad owner\n","warnings":[{"line":"1","pattern":"*.ts","issue":"Duplicate pattern — overridden by the identical pattern on line 2 (last match wins), so this rule has no effect."},{"line":"3","pattern":"/legacy/","issue":"No owner assigned — matching paths become unowned (only useful to carve an exception out of a broader rule above)."},{"line":"4","pattern":"broken","issue":"\"!thing\" doesn't look like a @username, @org/team, or email address."},{"line":"4","pattern":"broken","issue":"\"@@bad\" doesn't look like a @username, @org/team, or email address."},{"line":"4","pattern":"broken","issue":"\"owner\" doesn't look like a @username, @org/team, or email address."}],"matchResult":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"codeownersFile":{"type":"string","description":"Generated CODEOWNERS"},"warnings":{"type":"array","description":"Warnings","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"pattern":{"type":"string","description":"Pattern"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["line","pattern","issue"]},"matchResult":{"type":"string","description":"Matching Rule for Test Path"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/web-resource-hints-generator":{"post":{"operationId":"run_web_resource_hints_generator","summary":"Web Resource Hints Generator","tags":["Generators"],"description":"Generate correct &lt;link rel> resource hint tags (preload, prefetch, preconnect, dns-prefetch, modulepreload) and the equivalent HTTP Link header from a plain list of resources, with automatic as= and crossorigin guidance.\n\n[Try Web Resource Hints Generator in your browser →](https://iotools.cloud/tool/web-resource-hints-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"string","description":"Resources"}},"required":["resources"]},"examples":{"google_fonts_critical_css_preload_font":{"summary":"Google Fonts + critical CSS + preload font","value":{"resources":"https://fonts.gstatic.com | preconnect | | anonymous\nhttps://fonts.googleapis.com | preconnect\n/styles/critical.css | preload | style\n/fonts/inter.woff2 | preload | font"}},"warnings_missing_as_unknown_hint_type_bad_crossorigin":{"summary":"Warnings: missing as=, unknown hint type, bad crossorigin","value":{"resources":"https://cdn.example.com/app.js | preload\nhttps://cdn.example.com/widget.js | lazyload | script\n/logo.png | preload | image | bad-value"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"google_fonts_critical_css_preload_font":{"summary":"Google Fonts + critical CSS + preload font","value":{"tool":"web-resource-hints-generator","tool_version":"1.0.2","outputs":{"htmlTags":"<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preload\" as=\"style\" href=\"/styles/critical.css\">\n<link rel=\"preload\" as=\"font\" href=\"/fonts/inter.woff2\" crossorigin>","httpHeader":"Link: <https://fonts.gstatic.com>; rel=preconnect; crossorigin\nLink: <https://fonts.googleapis.com>; rel=preconnect\nLink: </styles/critical.css>; rel=preload; as=style\nLink: </fonts/inter.woff2>; rel=preload; as=font; crossorigin","notes":"Line 4: fonts must be fetched with CORS — added crossorigin=\"anonymous\" automatically."},"credits_used":5,"credits_remaining":null}},"warnings_missing_as_unknown_hint_type_bad_crossorigin":{"summary":"Warnings: missing as=, unknown hint type, bad crossorigin","value":{"tool":"web-resource-hints-generator","tool_version":"1.0.2","outputs":{"htmlTags":"<link rel=\"preload\" href=\"https://cdn.example.com/app.js\">\n<link rel=\"preload\" as=\"image\" href=\"/logo.png\">","httpHeader":"Link: <https://cdn.example.com/app.js>; rel=preload\nLink: </logo.png>; rel=preload; as=image","notes":"Line 1: preload for \"https://cdn.example.com/app.js\" has no as= type — browsers may ignore this hint. Add a resource type such as script, style, image or font.\nLine 2: hint type \"lazyload\" is not recognized (use preload, prefetch, preconnect, dns-prefetch, or modulepreload) — skipped.\nLine 3: crossorigin=\"bad-value\" is not valid — use anonymous or use-credentials. Ignored."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"htmlTags":{"type":"string","description":"HTML &lt;link> Tags"},"httpHeader":{"type":"string","description":"HTTP Link Header"},"notes":{"type":"string","description":"Guidance & Warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/1099-vs-w2-income-comparison-calculator":{"post":{"operationId":"run_1099_vs_w2_income_comparison_calculator","summary":"1099 vs W2 Income Comparison Calculator","tags":["Calculators"],"description":"Compare annual take-home pay as a W2 employee vs a 1099 independent contractor for the same gross income — federal tax, self-employment tax, FICA, state tax, retirement, health insurance and business expenses, side by side.\n\n[Try 1099 vs W2 Income Comparison Calculator in your browser →](https://iotools.cloud/tool/1099-vs-w2-income-comparison-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filingStatus":{"enum":["single","mfj","mfs","hoh"],"description":"Filing Status"},"annualGrossIncome":{"type":"number","description":"Annual Gross Income ($)","minimum":0,"maximum":99999999},"stateTaxRate":{"type":"number","description":"State Tax Rate (%)","minimum":0,"maximum":15},"employerHealthInsurance":{"type":"number","description":"Employer Health Insurance ($/month)","minimum":0,"maximum":99999},"employer401kMatch":{"type":"number","description":"Employer 401k Match (%)","minimum":0,"maximum":100},"otherW2Benefits":{"type":"number","description":"Other W2 Benefits ($/year)","minimum":0,"maximum":999999},"healthInsuranceCost":{"type":"number","description":"Health Insurance Cost ($/month)","minimum":0,"maximum":99999},"retirementContributions":{"type":"number","description":"Retirement Contributions ($/year)","minimum":0,"maximum":999999},"businessExpenses":{"type":"number","description":"Business Expenses ($/year)","minimum":0,"maximum":999999},"homeOfficeDeduction":{"type":"number","description":"Home Office Deduction ($/year)","minimum":0,"maximum":999999}},"required":["annualGrossIncome"]},"examples":{"default_75_000_gross_income_single_filer":{"summary":"Default: $75,000 gross income, single filer","value":{"filingStatus":"single","annualGrossIncome":"75000","stateTaxRate":"0","employerHealthInsurance":"500","employer401kMatch":"3","otherW2Benefits":"2000","healthInsuranceCost":"600","retirementContributions":"6000","businessExpenses":"5000","homeOfficeDeduction":"1500"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_75_000_gross_income_single_filer":{"summary":"Default: $75,000 gross income, single filer","value":{"tool":"1099-vs-w2-income-comparison-calculator","tool_version":"1.0.2","outputs":{"comparisonTable":[{"item":"Gross Income","w2-employee":"$75,000","1099-contractor":"$75,000"},{"item":"Federal Income Tax","w2-employee":"-$8,114","1099-contractor":"-$4,017"},{"item":"State Income Tax","w2-employee":"-$0","1099-contractor":"-$0"},{"item":"Social Security Tax","w2-employee":"-$4,650","1099-contractor":"-$7,844"},{"item":"Medicare Tax","w2-employee":"-$1,088","1099-contractor":"-$1,835"},{"item":"SE Tax Deduction (Above-the-Line)","w2-employee":"N/A","1099-contractor":"$4,839"},{"item":"Health Insurance","w2-employee":"+$6,000/yr (employer)","1099-contractor":"-$7,200/yr"},{"item":"Retirement","w2-employee":"+$2,250 (match)","1099-contractor":"-$6,000"},{"item":"Other Benefits","w2-employee":"+$2,000","1099-contractor":"N/A"},{"item":"Business Expenses","w2-employee":"N/A","1099-contractor":"-$6,500"},{"item":"Total Take-Home Pay","w2-employee":"$61,149","1099-contractor":"$41,604"},{"item":"Effective Tax Rate","w2-employee":"18.5%","1099-contractor":"18.3%"},{"item":"True Hourly Rate (2,080 hrs/yr)","w2-employee":"$29.40/hr","1099-contractor":"$20.00/hr"},{"item":"Total Value (incl. Benefits)","w2-employee":"$71,399","1099-contractor":"$41,604"}],"summary":"W2 employment yields $19,544 more in annual take-home pay. When including employer benefits (health insurance, 401k match, and other benefits worth $10,250), the W2 total compensation advantage is significant."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"comparisonTable":{"type":"array","description":"Comparison","items":{"type":"object","properties":{"item":{"type":"string","description":""},"w2-employee":{"type":"string","description":"W2 Employee"},"1099-contractor":{"type":"string","description":"1099 Contractor"}}},"x-iotools-columns":["item","w2-employee","1099-contractor"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/3d-printing-filament-time-estimator":{"post":{"operationId":"run_3d_printing_filament_time_estimator","summary":"3D Printing Filament & Time Estimator","tags":["Calculators"],"description":"Estimate filament length, weight, cost and print time for a 3D print from its bounding-box dimensions, material and slicer settings — plus a cost comparison across 8 common filaments.\n\n[Try 3D Printing Filament & Time Estimator in your browser →](https://iotools.cloud/tool/3d-printing-filament-time-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"lengthMm":{"type":"number","description":"Length (mm)","minimum":0.1},"widthMm":{"type":"number","description":"Width (mm)","minimum":0.1},"heightMm":{"type":"number","description":"Height (mm)","minimum":0.1},"material":{"enum":["pla","abs","petg","tpu","nylon","pc","asa","hips"],"description":"Material"},"diameterMm":{"enum":["1.75","2.85","3.00"],"description":"Filament Diameter"},"costPerKg":{"type":"number","description":"Filament Cost ($/kg)","minimum":0},"infillPercent":{"type":"number","description":"Infill (%)","minimum":0,"maximum":100},"wallCount":{"type":"number","description":"Wall Count","minimum":1,"maximum":10},"layerHeightMm":{"type":"number","description":"Layer Height (mm)","minimum":0.05,"maximum":0.6},"nozzleWidthMm":{"type":"number","description":"Nozzle / Line Width (mm)","minimum":0.1,"maximum":1.2},"printSpeedMmS":{"type":"number","description":"Print Speed (mm/s)","minimum":5,"maximum":500},"topBottomLayers":{"type":"number","description":"Top/Bottom Solid Layers","minimum":0,"maximum":20}},"required":[]},"examples":{"20mm_cube_100_infill_pla":{"summary":"20mm cube, 100% infill, PLA","value":{"lengthMm":"20","widthMm":"20","heightMm":"20","material":"pla","diameterMm":"1.75","costPerKg":"25","infillPercent":"100","wallCount":"3","layerHeightMm":"0.2","nozzleWidthMm":"0.4","printSpeedMmS":"60","topBottomLayers":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"20mm_cube_100_infill_pla":{"summary":"20mm cube, 100% infill, PLA","value":{"tool":"3d-printing-filament-time-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Bounding Box Volume","value":"8.00 cm³"},{"metric":"Printed Volume","value":"8.00 cm³"},{"metric":"Filament Length","value":"3.33 m (332.6 cm)"},{"metric":"Filament Weight","value":"9.9 g"},{"metric":"Estimated Cost","value":"$0.25"},{"metric":"Estimated Print Time","value":"30m 33s"}],"materialComparison":[{"material":"PLA (Selected)","length":"3.33 m","weight":"9.9 g","cost":"$0.25"},{"material":"ABS","length":"3.33 m","weight":"8.3 g","cost":"$0.21"},{"material":"PETG","length":"3.33 m","weight":"10.2 g","cost":"$0.25"},{"material":"TPU","length":"3.33 m","weight":"9.7 g","cost":"$0.24"},{"material":"Nylon","length":"3.33 m","weight":"9.0 g","cost":"$0.23"},{"material":"Polycarbonate","length":"3.33 m","weight":"9.6 g","cost":"$0.24"},{"material":"ASA","length":"3.33 m","weight":"8.6 g","cost":"$0.21"},{"material":"HIPS","length":"3.33 m","weight":"8.3 g","cost":"$0.21"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"materialComparison":{"type":"array","items":{"type":"object","properties":{"material":{"type":"string","description":"Material"},"length":{"type":"string","description":"Length"},"weight":{"type":"string","description":"Weight"},"cost":{"type":"string","description":"Cost"}}},"x-iotools-columns":["material","length","weight","cost"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ab-test-sample-size-calculator":{"post":{"operationId":"run_ab_test_sample_size_calculator","summary":"A/B Test Sample Size Calculator","tags":["Calculators"],"description":"Calculate the sample size and estimated test duration needed for a valid A/B test, from your baseline conversion rate, minimum detectable effect, statistical power and significance level — before you start collecting data.\n\n[Try A/B Test Sample Size Calculator in your browser →](https://iotools.cloud/tool/ab-test-sample-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baselineRate":{"type":"number","description":"Baseline conversion rate (%)","minimum":0.01,"maximum":99.99},"mdeType":{"enum":["relative","absolute"],"description":"Minimum detectable effect type"},"minimumDetectableEffect":{"type":"number","description":"Minimum detectable effect","minimum":0.01},"testSides":{"enum":["two","one"],"description":"Hypothesis"},"power":{"enum":["80","90","95"],"description":"Statistical power"},"significanceLevel":{"enum":["0.05","0.01"],"description":"Significance level (α)"},"variants":{"type":"number","description":"Number of variants (including control)","minimum":2,"maximum":10},"dailyVisitors":{"type":"number","description":"Daily visitors (optional)","minimum":1}},"required":["baselineRate","minimumDetectableEffect"]},"examples":{"classic_a_b_test_relative_mde":{"summary":"Classic A/B test, relative MDE","value":{"baselineRate":"5","mdeType":"relative","minimumDetectableEffect":"20","testSides":"two","power":"80","significanceLevel":"0.05","variants":"2","dailyVisitors":""}},"3_variants_absolute_mde_with_duration_estimate":{"summary":"3 variants, absolute MDE, with duration estimate","value":{"baselineRate":"10","mdeType":"absolute","minimumDetectableEffect":"2","testSides":"one","power":"90","significanceLevel":"0.05","variants":"3","dailyVisitors":"500"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"classic_a_b_test_relative_mde":{"summary":"Classic A/B test, relative MDE","value":{"tool":"ab-test-sample-size-calculator","tool_version":"1.0.2","outputs":{"sampleSizePerVariant":"8,155","totalSampleSize":"16,310","estimatedDuration":"Enter daily visitors below to estimate test duration.","details":[{"metric":"Baseline conversion rate","value":"5.00%"},{"metric":"Target conversion rate (MDE)","value":"6.00%"},{"metric":"Absolute effect","value":"+1.00%"},{"metric":"Relative effect","value":"+20.0%"},{"metric":"Statistical power","value":"80%"},{"metric":"Significance level (α)","value":"0.05"},{"metric":"Test type","value":"Two-sided"},{"metric":"Number of variants (incl. control)","value":"2"},{"metric":"z (significance)","value":"1.960"},{"metric":"z (power)","value":"0.842"}],"formula":"n = ((z_α + z_β)² × (p1(1-p1) + p2(1-p2))) / (p2 - p1)²\n\nWhere:\n  p1 (baseline)              = 5.00%\n  p2 (target)                = 6.00%\n  z_α (two-sided, α=0.0500) = 1.960\n  z_β (power=80%)             = 0.842\n\nn = ((1.960 + 0.842)² × (0.0500×0.9500 + 0.0600×0.9400)) / (0.0600 - 0.0500)²\n  = 8,155 per variant"},"credits_used":5,"credits_remaining":null}},"3_variants_absolute_mde_with_duration_estimate":{"summary":"3 variants, absolute MDE, with duration estimate","value":{"tool":"ab-test-sample-size-calculator","tool_version":"1.0.2","outputs":{"sampleSizePerVariant":"5,139","totalSampleSize":"15,417","estimatedDuration":"31 days (~4.4 weeks) at 500 visitors/day across all variants","details":[{"metric":"Baseline conversion rate","value":"10.00%"},{"metric":"Target conversion rate (MDE)","value":"12.00%"},{"metric":"Absolute effect","value":"+2.00%"},{"metric":"Relative effect","value":"+20.0%"},{"metric":"Statistical power","value":"90%"},{"metric":"Significance level (α), Bonferroni-adjusted for 2 comparisons","value":"0.05 → 0.0250"},{"metric":"Test type","value":"One-sided"},{"metric":"Number of variants (incl. control)","value":"3"},{"metric":"z (significance)","value":"1.960"},{"metric":"z (power)","value":"1.282"}],"formula":"n = ((z_α + z_β)² × (p1(1-p1) + p2(1-p2))) / (p2 - p1)²\n\nWhere:\n  p1 (baseline)              = 10.00%\n  p2 (target)                = 12.00%\n  z_α (one-sided, α=0.0250) = 1.960\n  z_β (power=90%)             = 1.282\n\nn = ((1.960 + 1.282)² × (0.1000×0.9000 + 0.1200×0.8800)) / (0.1200 - 0.1000)²\n  = 5,139 per variant"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sampleSizePerVariant":{"type":"string","description":"Sample size per variant"},"totalSampleSize":{"type":"string","description":"Total sample size (all variants)"},"estimatedDuration":{"type":"string","description":"Estimated test duration"},"details":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"formula":{"type":"string","description":"Formula used"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ab-test-significance-calculator":{"post":{"operationId":"run_ab_test_significance_calculator","summary":"A/B Test Significance Calculator","tags":["Calculators"],"description":"Run a two-proportion z-test on your A/B test results. Enter visitors and conversions for a control and a variant to get the conversion rates, z-score, p-value, statistical significance, relative uplift and confidence interval.\n\n[Try A/B Test Significance Calculator in your browser →](https://iotools.cloud/tool/ab-test-significance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"controlVisitors":{"type":"number","description":"Visitors","minimum":0},"controlConversions":{"type":"number","description":"Conversions","minimum":0},"variantVisitors":{"type":"number","description":"Visitors","minimum":0},"variantConversions":{"type":"number","description":"Conversions","minimum":0},"confidenceLevel":{"enum":["90","95","99"],"description":"Confidence"},"tailType":{"enum":["two","one"],"description":"Hypothesis"}},"required":["controlVisitors","controlConversions","variantVisitors","variantConversions"]},"examples":{"clear_winner_two_tailed":{"summary":"Clear winner (two-tailed)","value":{"controlVisitors":"5000","controlConversions":"250","variantVisitors":"5000","variantConversions":"320","confidenceLevel":"95","tailType":"two"}},"no_real_difference":{"summary":"No real difference","value":{"controlVisitors":"5000","controlConversions":"250","variantVisitors":"5000","variantConversions":"252","confidenceLevel":"95","tailType":"two"}},"same_data_one_tailed_test":{"summary":"Same data, one-tailed test","value":{"controlVisitors":"5000","controlConversions":"250","variantVisitors":"5000","variantConversions":"320","confidenceLevel":"95","tailType":"one"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"clear_winner_two_tailed":{"summary":"Clear winner (two-tailed)","value":{"tool":"ab-test-significance-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Verdict","value":"Variant (B) wins"},{"metric":"Control (A) conversion rate","value":"5.00% (250 / 5,000)"},{"metric":"Variant (B) conversion rate","value":"6.40% (320 / 5,000)"},{"metric":"Absolute difference (B − A)","value":"+1.40% pp"},{"metric":"95% CI for difference","value":"[+0.49%, +2.31%] pp"},{"metric":"Relative uplift","value":"+28.0%"},{"metric":"95% CI for relative uplift","value":"[+9.8%, +46.2%]"},{"metric":"z-score","value":"3.019"},{"metric":"p-value","value":"0.0025 (two-tailed)"},{"metric":"Statistically significant?","value":"Yes, at 95% confidence"}]},"credits_used":5,"credits_remaining":null}},"no_real_difference":{"summary":"No real difference","value":{"tool":"ab-test-significance-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Verdict","value":"Not significant — no meaningful difference detected"},{"metric":"Control (A) conversion rate","value":"5.00% (250 / 5,000)"},{"metric":"Variant (B) conversion rate","value":"5.04% (252 / 5,000)"},{"metric":"Absolute difference (B − A)","value":"+0.04% pp"},{"metric":"95% CI for difference","value":"[-0.82%, +0.90%] pp"},{"metric":"Relative uplift","value":"+0.8%"},{"metric":"95% CI for relative uplift","value":"[-16.3%, +17.9%]"},{"metric":"z-score","value":"0.092"},{"metric":"p-value","value":"0.9270 (two-tailed)"},{"metric":"Statistically significant?","value":"No, at 95% confidence"}]},"credits_used":5,"credits_remaining":null}},"same_data_one_tailed_test":{"summary":"Same data, one-tailed test","value":{"tool":"ab-test-significance-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Verdict","value":"Variant (B) wins"},{"metric":"Control (A) conversion rate","value":"5.00% (250 / 5,000)"},{"metric":"Variant (B) conversion rate","value":"6.40% (320 / 5,000)"},{"metric":"Absolute difference (B − A)","value":"+1.40% pp"},{"metric":"95% CI for difference","value":"[+0.49%, +2.31%] pp"},{"metric":"Relative uplift","value":"+28.0%"},{"metric":"95% CI for relative uplift","value":"[+9.8%, +46.2%]"},{"metric":"z-score","value":"3.019"},{"metric":"p-value","value":"0.0013 (one-tailed)"},{"metric":"Statistically significant?","value":"Yes, at 95% confidence"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/absolute-value-calculator":{"post":{"operationId":"run_absolute_value_calculator","summary":"Absolute Value Calculator","tags":["Calculators"],"description":"Find the absolute value (distance from zero) of a number — or a whole list of numbers at once. Enter one or more real numbers, separated by commas, spaces, or new lines, and see each one's sign and absolute value in a table.\n\n[Try Absolute Value Calculator in your browser →](https://iotools.cloud/tool/absolute-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"numbers":{"type":"string","description":"Numbers"}},"required":[]},"examples":{"a_single_negative_number":{"summary":"A single negative number","value":{"numbers":"-12.5"}},"a_mixed_list_of_numbers":{"summary":"A mixed list of numbers","value":{"numbers":"-12.5, 7, -3.2, 0, 100"}},"newline_separated_numbers":{"summary":"Newline-separated numbers","value":{"numbers":"-5\n5\n0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_single_negative_number":{"summary":"A single negative number","value":{"tool":"absolute-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"number":"-12.5","sign":"Negative","absolute-value":"12.5"}]},"credits_used":5,"credits_remaining":null}},"a_mixed_list_of_numbers":{"summary":"A mixed list of numbers","value":{"tool":"absolute-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"number":"-12.5","sign":"Negative","absolute-value":"12.5"},{"number":"7","sign":"Positive","absolute-value":"7"},{"number":"-3.2","sign":"Negative","absolute-value":"3.2"},{"number":"0","sign":"Zero","absolute-value":"0"},{"number":"100","sign":"Positive","absolute-value":"100"}]},"credits_used":5,"credits_remaining":null}},"newline_separated_numbers":{"summary":"Newline-separated numbers","value":{"tool":"absolute-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"number":"-5","sign":"Negative","absolute-value":"5"},{"number":"5","sign":"Positive","absolute-value":"5"},{"number":"0","sign":"Zero","absolute-value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"number":{"type":"string","description":"Number"},"sign":{"type":"string","description":"Sign"},"absolute-value":{"type":"string","description":"Absolute Value"}}},"x-iotools-columns":["number","sign","absolute-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/absolute-value-equation-solver":{"post":{"operationId":"run_absolute_value_equation_solver","summary":"Absolute Value Equation Solver","tags":["Calculators"],"description":"Solve an absolute value equation of the form |ax + b| = c for x. Splits into the two linear cases, handles the no-solution and infinite-solutions edge cases, and shows a step-by-step derivation.\n\n[Try Absolute Value Equation Solver in your browser →](https://iotools.cloud/tool/absolute-value-equation-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"a"},"b":{"type":"number","description":"b"},"c":{"type":"number","description":"c"}},"required":["a","b","c"]},"examples":{"2x_3_7_two_solutions":{"summary":"|2x + 3| = 7 (two solutions)","value":{"a":"2","b":"3","c":"7"}},"x_1_no_solution":{"summary":"|x| = -1 (no solution)","value":{"a":"1","b":"0","c":"-1"}},"0x_5_5_infinite_solutions":{"summary":"|0x + 5| = 5 (infinite solutions)","value":{"a":"0","b":"5","c":"5"}},"0x_5_3_no_solution_a_0":{"summary":"|0x + 5| = 3 (no solution, a = 0)","value":{"a":"0","b":"5","c":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3_7_two_solutions":{"summary":"|2x + 3| = 7 (two solutions)","value":{"tool":"absolute-value-equation-solver","tool_version":"1.0.2","outputs":{"status":"two_solutions","solution":"x = 2 or x = -5","steps":"Equation: |2x + 3| = 7\nc ≥ 0, so split into two cases: 2x + 3 = 7, or 2x + 3 = -7\nCase 1: 2x + 3 = 7 → x = (7 - 3) / 2 = 2\nCase 2: 2x + 3 = -7 → x = (-7 - 3) / 2 = -5"},"credits_used":5,"credits_remaining":null}},"x_1_no_solution":{"summary":"|x| = -1 (no solution)","value":{"tool":"absolute-value-equation-solver","tool_version":"1.0.2","outputs":{"status":"no_solution","solution":"No solution — an absolute value can never equal a negative number.","steps":"Equation: |1x + 0| = -1\nc < 0 (-1 < 0) → an absolute value can never be negative, so this equation is a contradiction."},"credits_used":5,"credits_remaining":null}},"0x_5_5_infinite_solutions":{"summary":"|0x + 5| = 5 (infinite solutions)","value":{"tool":"absolute-value-equation-solver","tool_version":"1.0.2","outputs":{"status":"infinite_solutions","solution":"Infinitely many solutions — every real number satisfies this equation.","steps":"Equation: |0x + 5| = 5\na = 0, and |b| = c (|5| = 5) → the equation holds for every x."},"credits_used":5,"credits_remaining":null}},"0x_5_3_no_solution_a_0":{"summary":"|0x + 5| = 3 (no solution, a = 0)","value":{"tool":"absolute-value-equation-solver","tool_version":"1.0.2","outputs":{"status":"no_solution","solution":"No solution — this equation is a contradiction (5 = 3 is false).","steps":"Equation: |0x + 5| = 3\na = 0, and |b| ≠ c (|5| = 5 ≠ 3) → the equation reduces to a false statement."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"solution":{"type":"string","description":"Solution"},"status":{"type":"string","description":"Status"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/absolute-value-inequality-solver":{"post":{"operationId":"run_absolute_value_inequality_solver","summary":"Absolute Value Inequality Solver","tags":["Calculators"],"description":"Solve an absolute value inequality of the form |ax + b| &lt;, ≤, >, or ≥ c for x. Returns the solution in interval notation, handles the no-solution and all-reals edge cases, and shows a step-by-step derivation.\n\n[Try Absolute Value Inequality Solver in your browser →](https://iotools.cloud/tool/absolute-value-inequality-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"a"},"b":{"type":"number","description":"b"},"operator":{"enum":["lt","le","gt","ge"],"description":"Comparison"},"c":{"type":"number","description":"c"}},"required":["a","b","c"]},"examples":{"2x_3_5_bounded_interval":{"summary":"|2x - 3| ≤ 5 (bounded interval)","value":{"a":"2","b":"-3","operator":"le","c":"5"}},"x_1_3_two_rays":{"summary":"|x + 1| > 3 (two rays)","value":{"a":"1","b":"1","operator":"gt","c":"3"}},"x_1_no_solution_c_0":{"summary":"|x| < -1 (no solution, c < 0)","value":{"a":"1","b":"0","operator":"lt","c":"-1"}},"x_2_all_reals_c_0":{"summary":"|x| ≥ -2 (all reals, c < 0)","value":{"a":"1","b":"0","operator":"ge","c":"-2"}},"0x_5_5_a_0_no_solution":{"summary":"|0x + 5| < 5 (a = 0, no solution)","value":{"a":"0","b":"5","operator":"lt","c":"5"}},"2x_4_0_single_point_c_0":{"summary":"|2x + 4| ≤ 0 (single point, c = 0)","value":{"a":"2","b":"4","operator":"le","c":"0"}},"2x_4_0_all_reals_except_a_point_c_0":{"summary":"|2x + 4| > 0 (all reals except a point, c = 0)","value":{"a":"2","b":"4","operator":"gt","c":"0"}},"2x_4_0_all_reals_non_strict_c_0":{"summary":"|2x + 4| ≥ 0 (all reals, non-strict, c = 0)","value":{"a":"2","b":"4","operator":"ge","c":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3_5_bounded_interval":{"summary":"|2x - 3| ≤ 5 (bounded interval)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"bounded_interval","solution":"[-1, 4]","steps":"Inequality: |2x + -3| ≤ 5\na ≠ 0 and c ≥ 0, so solve the two boundary equations: 2x + -3 = 5 → x = 4, and 2x + -3 = -5 → x = -1\nBoundaries sorted: lower = -1, upper = 4\n|expr| ≤ 5 means the solution is the interval between the boundaries: [-1, 4]"},"credits_used":5,"credits_remaining":null}},"x_1_3_two_rays":{"summary":"|x + 1| > 3 (two rays)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"two_rays","solution":"(-∞, -4) ∪ (2, ∞)","steps":"Inequality: |1x + 1| > 3\na ≠ 0 and c ≥ 0, so solve the two boundary equations: 1x + 1 = 3 → x = 2, and 1x + 1 = -3 → x = -4\nBoundaries sorted: lower = -4, upper = 2\n|expr| > 3 means the solution is everything outside the boundaries: (-∞, -4) ∪ (2, ∞)"},"credits_used":5,"credits_remaining":null}},"x_1_no_solution_c_0":{"summary":"|x| < -1 (no solution, c < 0)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"no_solution","solution":"No solution (∅) — an absolute value can never be less than a negative number.","steps":"Inequality: |1x + 0| < -1\nc < 0 (-1 < 0). An absolute value is always ≥ 0, so it can never be < a negative number."},"credits_used":5,"credits_remaining":null}},"x_2_all_reals_c_0":{"summary":"|x| ≥ -2 (all reals, c < 0)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"all_reals","solution":"All real numbers (-∞, ∞) — an absolute value is always greater than a negative number.","steps":"Inequality: |1x + 0| ≥ -2\nc < 0 (-2 < 0). An absolute value is always ≥ 0, so it can never be ≥ a negative number — the inequality holds for every x."},"credits_used":5,"credits_remaining":null}},"0x_5_5_a_0_no_solution":{"summary":"|0x + 5| < 5 (a = 0, no solution)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"no_solution","solution":"No solution (∅)","steps":"Inequality: |0x + 5| < 5\na = 0, so the expression is constant: |5| = 5. Check 5 < 5: false."},"credits_used":5,"credits_remaining":null}},"2x_4_0_single_point_c_0":{"summary":"|2x + 4| ≤ 0 (single point, c = 0)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"single_point","solution":"{-2}","steps":"Inequality: |2x + 4| ≤ 0\na ≠ 0 and c ≥ 0, so solve the two boundary equations: 2x + 4 = 0 → x = -2, and 2x + 4 = -0 → x = -2\nBoundaries sorted: lower = -2, upper = -2\nc = 0, so the \"between the boundaries\" interval collapses to the single point x = -2."},"credits_used":5,"credits_remaining":null}},"2x_4_0_all_reals_except_a_point_c_0":{"summary":"|2x + 4| > 0 (all reals except a point, c = 0)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"all_reals_except_point","solution":"(-∞, -2) ∪ (-2, ∞)","steps":"Inequality: |2x + 4| > 0\na ≠ 0 and c ≥ 0, so solve the two boundary equations: 2x + 4 = 0 → x = -2, and 2x + 4 = -0 → x = -2\nBoundaries sorted: lower = -2, upper = -2\nc = 0, so |expr| > 0 means the expression must be nonzero — every real number except x = -2."},"credits_used":5,"credits_remaining":null}},"2x_4_0_all_reals_non_strict_c_0":{"summary":"|2x + 4| ≥ 0 (all reals, non-strict, c = 0)","value":{"tool":"absolute-value-inequality-solver","tool_version":"1.0.2","outputs":{"status":"all_reals","solution":"All real numbers (-∞, ∞)","steps":"Inequality: |2x + 4| ≥ 0\na ≠ 0 and c ≥ 0, so solve the two boundary equations: 2x + 4 = 0 → x = -2, and 2x + 4 = -0 → x = -2\nBoundaries sorted: lower = -2, upper = -2\nc = 0, so |expr| ≥ 0 holds everywhere, including exactly at x = -2 where the expression is 0 — every real number."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"solution":{"type":"string","description":"Solution (interval notation)"},"status":{"type":"string","description":"Status"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/acreage-calculator":{"post":{"operationId":"run_acreage_calculator","summary":"Acreage Calculator","tags":["Calculators"],"description":"Calculate land acreage from rectangle, triangle or circle dimensions — get the area in acres, hectares, square feet and square meters.\n\n[Try Acreage Calculator in your browser →](https://iotools.cloud/tool/acreage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["rectangle","triangle","circle"],"description":"Shape"},"unit":{"enum":["feet","meters"],"description":"Input unit"},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"base":{"type":"number","description":"Base","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"radius":{"type":"number","description":"Radius","minimum":0}},"required":[]},"examples":{"rectangle_200ft_x_100ft":{"summary":"Rectangle — 200ft x 100ft","value":{"shape":"rectangle","unit":"feet","length":"200","width":"100"}},"triangle_300ft_base_150ft_height":{"summary":"Triangle — 300ft base, 150ft height","value":{"shape":"triangle","unit":"feet","base":"300","height":"150"}},"circle_100m_radius":{"summary":"Circle — 100m radius","value":{"shape":"circle","unit":"meters","radius":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_200ft_x_100ft":{"summary":"Rectangle — 200ft x 100ft","value":{"tool":"acreage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Acres","value":"0.459137"},{"metric":"Hectares","value":"0.185806"},{"metric":"Square feet","value":"20000.00"},{"metric":"Square meters","value":"1858.06"}],"summary":"0.459137 acres (1858.06 m²)"},"credits_used":5,"credits_remaining":null}},"triangle_300ft_base_150ft_height":{"summary":"Triangle — 300ft base, 150ft height","value":{"tool":"acreage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Acres","value":"0.516529"},{"metric":"Hectares","value":"0.209032"},{"metric":"Square feet","value":"22500.00"},{"metric":"Square meters","value":"2090.32"}],"summary":"0.516529 acres (2090.32 m²)"},"credits_used":5,"credits_remaining":null}},"circle_100m_radius":{"summary":"Circle — 100m radius","value":{"tool":"acreage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Acres","value":"7.7630"},{"metric":"Hectares","value":"3.1416"},{"metric":"Square feet","value":"338158.22"},{"metric":"Square meters","value":"31415.93"}],"summary":"7.7630 acres (31415.93 m²)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/actual-cash-value-calculator":{"post":{"operationId":"run_actual_cash_value_calculator","summary":"Actual Cash Value Calculator","tags":["Calculators"],"description":"Calculate an item's actual cash value (ACV) for an insurance claim — replacement cost minus depreciation for its age and useful life — with straight-line, declining balance, or double-declining balance depreciation and a full year-by-year value schedule.\n\n[Try Actual Cash Value Calculator in your browser →](https://iotools.cloud/tool/actual-cash-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"enum":["laptop","smartphone","appliance","furniture","vehicle","jewelry","tools","other"],"description":"Item Category"},"replacementCost":{"type":"number","description":"Replacement Cost ($)","minimum":0},"currentAge":{"type":"number","description":"Current Age (Years)","minimum":0},"expectedLife":{"type":"number","description":"Expected Useful Life (Years)","minimum":0.1},"salvagePercent":{"type":"number","description":"Salvage Value (%)","minimum":0,"maximum":100},"method":{"enum":["straight-line","declining-balance","double-declining-balance"],"description":"Depreciation Method"},"decliningRate":{"type":"number","description":"Declining Rate (%)","minimum":0,"maximum":100}},"required":["replacementCost","currentAge","expectedLife"]},"examples":{"3_year_old_1_000_laptop_5_year_life_straight_line":{"summary":"3-year-old $1,000 laptop, 5-year life, straight-line","value":{"category":"laptop","replacementCost":"1000","currentAge":"3","expectedLife":"5","salvagePercent":"0","method":"straight-line","decliningRate":"40"}},"3_year_old_2_000_appliance_8_year_life_double_declining_balance":{"summary":"3-year-old $2,000 appliance, 8-year life, double-declining balance","value":{"category":"appliance","replacementCost":"2000","currentAge":"3","expectedLife":"8","salvagePercent":"10","method":"double-declining-balance","decliningRate":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3_year_old_1_000_laptop_5_year_life_straight_line":{"summary":"3-year-old $1,000 laptop, 5-year life, straight-line","value":{"tool":"actual-cash-value-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Item Category","value":"Laptop / Computer"},{"metric":"Depreciation Method","value":"Straight-Line"},{"metric":"Actual Cash Value","value":"$400.00"},{"metric":"Total Depreciation","value":"$600.00"},{"metric":"Depreciation","value":"60.0%"},{"metric":"Remaining Value","value":"40.0%"},{"metric":"Remaining Useful Life","value":"2 years"}],"schedule":[{"year":"1","beginning-value":"$1,000.00","depreciation":"$200.00","accumulated-depreciation":"$200.00","ending-value":"$800.00"},{"year":"2","beginning-value":"$800.00","depreciation":"$200.00","accumulated-depreciation":"$400.00","ending-value":"$600.00"},{"year":"3","beginning-value":"$600.00","depreciation":"$200.00","accumulated-depreciation":"$600.00","ending-value":"$400.00"},{"year":"4","beginning-value":"$400.00","depreciation":"$200.00","accumulated-depreciation":"$800.00","ending-value":"$200.00"},{"year":"5","beginning-value":"$200.00","depreciation":"$200.00","accumulated-depreciation":"$1,000.00","ending-value":"$0.00"}]},"credits_used":5,"credits_remaining":null}},"3_year_old_2_000_appliance_8_year_life_double_declining_balance":{"summary":"3-year-old $2,000 appliance, 8-year life, double-declining balance","value":{"tool":"actual-cash-value-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Item Category","value":"Appliance"},{"metric":"Depreciation Method","value":"Double-Declining Balance"},{"metric":"Actual Cash Value","value":"$843.75"},{"metric":"Total Depreciation","value":"$1,156.25"},{"metric":"Depreciation","value":"57.8%"},{"metric":"Remaining Value","value":"42.2%"},{"metric":"Remaining Useful Life","value":"5 years"}],"schedule":[{"year":"1","beginning-value":"$2,000.00","depreciation":"$500.00","accumulated-depreciation":"$500.00","ending-value":"$1,500.00"},{"year":"2","beginning-value":"$1,500.00","depreciation":"$375.00","accumulated-depreciation":"$875.00","ending-value":"$1,125.00"},{"year":"3","beginning-value":"$1,125.00","depreciation":"$281.25","accumulated-depreciation":"$1,156.25","ending-value":"$843.75"},{"year":"4","beginning-value":"$843.75","depreciation":"$210.94","accumulated-depreciation":"$1,367.19","ending-value":"$632.81"},{"year":"5","beginning-value":"$632.81","depreciation":"$158.20","accumulated-depreciation":"$1,525.39","ending-value":"$474.61"},{"year":"6","beginning-value":"$474.61","depreciation":"$118.65","accumulated-depreciation":"$1,644.04","ending-value":"$355.96"},{"year":"7","beginning-value":"$355.96","depreciation":"$88.99","accumulated-depreciation":"$1,733.03","ending-value":"$266.97"},{"year":"8","beginning-value":"$266.97","depreciation":"$66.74","accumulated-depreciation":"$1,799.77","ending-value":"$200.23"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Value Schedule","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"beginning-value":{"type":"string","description":"Beginning Value"},"depreciation":{"type":"string","description":"Depreciation"},"accumulated-depreciation":{"type":"string","description":"Accumulated Depreciation"},"ending-value":{"type":"string","description":"Ending Value"}}},"x-iotools-columns":["year","beginning-value","depreciation","accumulated-depreciation","ending-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/adc-dac-converter-calculator":{"post":{"operationId":"run_adc_dac_converter_calculator","summary":"ADC / DAC Converter Calculator","tags":["Calculators"],"description":"Calculate LSB step size, quantized ADC code and reconstructed DAC output voltage for any bit depth and reference voltage. Shows the code in decimal, binary and hex, plus quantization error and ideal SNR.\n\n[Try ADC / DAC Converter Calculator in your browser →](https://iotools.cloud/tool/adc-dac-converter-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bits":{"type":"number","description":"Resolution (bits)","minimum":4,"maximum":32},"vref":{"type":"number","description":"Reference Voltage — Vref (V)","minimum":0},"vin":{"type":"number","description":"Analog Input — Vin (V)","minimum":0},"code":{"type":"number","description":"Digital Code (for DAC)","minimum":0},"scale":{"enum":["pow","max"],"description":"Full-Scale Convention"},"rounding":{"enum":["floor","round"],"description":"ADC Quantization"}},"required":["bits","vref","vin","code"]},"examples":{"12_bit_3_3_v_reference_half_scale":{"summary":"12-bit, 3.3 V reference — half scale","value":{"bits":"12","vref":"3.3","vin":"1.65","code":"2048","scale":"pow","rounding":"floor"}},"10_bit_5_v_reference_round_to_nearest":{"summary":"10-bit, 5 V reference — round to nearest","value":{"bits":"10","vref":"5","vin":"2.7","code":"512","scale":"pow","rounding":"round"}},"16_bit_2_5_v_reference_full_scale_at_max_code":{"summary":"16-bit, 2.5 V reference — full scale at max code","value":{"bits":"16","vref":"2.5","vin":"2.5","code":"65535","scale":"max","rounding":"floor"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12_bit_3_3_v_reference_half_scale":{"summary":"12-bit, 3.3 V reference — half scale","value":{"tool":"adc-dac-converter-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Resolution","value":"12 bits (4,096 codes)"},{"metric":"LSB (step size)","value":"805.664 µV"},{"metric":"Full-scale output (max code)","value":"3.299194 V"},{"metric":"Max code","value":"4095 (0xFFF)"},{"metric":"ADC code (decimal)","value":"2048"},{"metric":"ADC code (binary)","value":"1000 0000 0000"},{"metric":"ADC code (hex)","value":"0x800"},{"metric":"ADC reconstructed voltage","value":"1.65 V"},{"metric":"Quantization error","value":"0 V (0.0000% of FSR)"},{"metric":"Max quantization error (±½ LSB)","value":"402.832 µV"},{"metric":"Input range check","value":"Vin within range"},{"metric":"DAC output voltage","value":"1.65 V"},{"metric":"DAC code (binary)","value":"1000 0000 0000"},{"metric":"DAC code (hex)","value":"0x800"},{"metric":"Ideal SNR (SQNR)","value":"74.00 dB"},{"metric":"Dynamic range","value":"72.25 dB"}]},"credits_used":5,"credits_remaining":null}},"10_bit_5_v_reference_round_to_nearest":{"summary":"10-bit, 5 V reference — round to nearest","value":{"tool":"adc-dac-converter-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Resolution","value":"10 bits (1,024 codes)"},{"metric":"LSB (step size)","value":"4.88281 mV"},{"metric":"Full-scale output (max code)","value":"4.995117 V"},{"metric":"Max code","value":"1023 (0x3FF)"},{"metric":"ADC code (decimal)","value":"553"},{"metric":"ADC code (binary)","value":"10 0010 1001"},{"metric":"ADC code (hex)","value":"0x229"},{"metric":"ADC reconstructed voltage","value":"2.700195 V"},{"metric":"Quantization error","value":"-195.312 µV (-0.0039% of FSR)"},{"metric":"Max quantization error (±½ LSB)","value":"2.44141 mV"},{"metric":"Input range check","value":"Vin within range"},{"metric":"DAC output voltage","value":"2.5 V"},{"metric":"DAC code (binary)","value":"10 0000 0000"},{"metric":"DAC code (hex)","value":"0x200"},{"metric":"Ideal SNR (SQNR)","value":"61.96 dB"},{"metric":"Dynamic range","value":"60.21 dB"}]},"credits_used":5,"credits_remaining":null}},"16_bit_2_5_v_reference_full_scale_at_max_code":{"summary":"16-bit, 2.5 V reference — full scale at max code","value":{"tool":"adc-dac-converter-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Resolution","value":"16 bits (65,536 codes)"},{"metric":"LSB (step size)","value":"38.1476 µV"},{"metric":"Full-scale output (max code)","value":"2.5 V"},{"metric":"Max code","value":"65535 (0xFFFF)"},{"metric":"ADC code (decimal)","value":"65535"},{"metric":"ADC code (binary)","value":"1111 1111 1111 1111"},{"metric":"ADC code (hex)","value":"0xFFFF"},{"metric":"ADC reconstructed voltage","value":"2.5 V"},{"metric":"Quantization error","value":"0 V (0.0000% of FSR)"},{"metric":"Max quantization error (±½ LSB)","value":"19.0738 µV"},{"metric":"Input range check","value":"Vin within range"},{"metric":"DAC output voltage","value":"2.5 V"},{"metric":"DAC code (binary)","value":"1111 1111 1111 1111"},{"metric":"DAC code (hex)","value":"0xFFFF"},{"metric":"Ideal SNR (SQNR)","value":"98.08 dB"},{"metric":"Dynamic range","value":"96.33 dB"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/age-calculator":{"post":{"operationId":"run_age_calculator","summary":"Age Calculator","tags":["Calculators"],"description":"Calculate exact age in years, months and days between a date of birth and any date — plus total days, weeks, months, day of the week born, and a countdown to the next birthday.\n\n[Try Age Calculator in your browser →](https://iotools.cloud/tool/age-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"birthDate":{"type":"string","description":"Date of Birth"},"asOfDate":{"type":"string","description":"As of Date"}},"required":["birthDate"]},"examples":{"born_june_1990_as_of_march_2024":{"summary":"Born June 1990, as of March 2024","value":{"birthDate":"1990-06-15","asOfDate":"2024-03-01"}},"leap_year_birthday_feb_29_as_of_a_non_leap_year":{"summary":"Leap-year birthday (Feb 29), as of a non-leap year","value":{"birthDate":"2000-02-29","asOfDate":"2023-03-01"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"born_june_1990_as_of_march_2024":{"summary":"Born June 1990, as of March 2024","value":{"tool":"age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Date of Birth","value":"June 15, 1990"},{"metric":"As of Date","value":"March 1, 2024"},{"metric":"Born on a","value":"Friday"},{"metric":"Exact Age","value":"33 years, 8 months, 15 days"},{"metric":"Total Months","value":"404"},{"metric":"Total Weeks","value":"1,759"},{"metric":"Total Days","value":"12,313"},{"metric":"Next Birthday","value":"June 15, 2024"},{"metric":"Days Until Next Birthday","value":"106"},{"metric":"Turning","value":"34"}]},"credits_used":5,"credits_remaining":null}},"leap_year_birthday_feb_29_as_of_a_non_leap_year":{"summary":"Leap-year birthday (Feb 29), as of a non-leap year","value":{"tool":"age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Date of Birth","value":"February 29, 2000"},{"metric":"As of Date","value":"March 1, 2023"},{"metric":"Born on a","value":"Tuesday"},{"metric":"Exact Age","value":"23 years, 0 months, 0 days"},{"metric":"Total Months","value":"276"},{"metric":"Total Weeks","value":"1,200"},{"metric":"Total Days","value":"8,401"},{"metric":"Next Birthday","value":"Today!"},{"metric":"Days Until Next Birthday","value":"0 (today)"},{"metric":"Turning","value":"23"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Age Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/angel-number-calculator":{"post":{"operationId":"run_angel_number_calculator","summary":"Angel Number Calculator","tags":["Calculators"],"description":"Look up the meaning of an angel number, or derive one from your birth date using the numerology digit-root method — scans any number for a recognized repeating pattern, with keywords and interpretation for each match. Free, no signup, runs entirely in your browser.\n\n[Try Angel Number Calculator in your browser →](https://iotools.cloud/tool/angel-number-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"calculationType":{"enum":["number","birthdate"],"description":"Calculation Type"},"number":{"type":"string","description":"Number or Sequence"},"birthdate":{"type":"string","description":"Birth Date"}},"required":[]},"examples":{"direct_lookup_1111":{"summary":"Direct lookup: 1111","value":{"calculationType":"number","number":"1111"}},"pattern_found_inside_a_longer_number_phone_number_containing_777":{"summary":"Pattern found inside a longer number: phone number containing 777","value":{"calculationType":"number","number":"(555) 777-2020"}},"derived_from_birth_date_1990_12_25":{"summary":"Derived from birth date 1990-12-25","value":{"calculationType":"birthdate","birthdate":"1990-12-25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"direct_lookup_1111":{"summary":"Direct lookup: 1111","value":{"tool":"angel-number-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Mode","value":"Direct Number Lookup"},{"metric":"Input","value":"1111"},{"metric":"Normalized Number","value":"1111"},{"metric":"Patterns Found","value":"1"}],"matches":[{"pattern":"1111","meaning":"An intensified 111 — a powerful wake-up call to stay conscious of your thoughts as a manifestation gateway opens.","keywords":"Manifestation, Awakening, Synchronicity"}]},"credits_used":5,"credits_remaining":null}},"pattern_found_inside_a_longer_number_phone_number_containing_777":{"summary":"Pattern found inside a longer number: phone number containing 777","value":{"tool":"angel-number-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Mode","value":"Direct Number Lookup"},{"metric":"Input","value":"(555) 777-2020"},{"metric":"Normalized Number","value":"5557772020"},{"metric":"Patterns Found","value":"2"}],"matches":[{"pattern":"555","meaning":"Signals major change on the horizon — an invitation to embrace transformation rather than resist it.","keywords":"Change, Transformation, Freedom"},{"pattern":"777","meaning":"Widely seen as a lucky sequence tied to spiritual awakening and being in flow with your path.","keywords":"Luck, Awakening, Flow"}]},"credits_used":5,"credits_remaining":null}},"derived_from_birth_date_1990_12_25":{"summary":"Derived from birth date 1990-12-25","value":{"tool":"angel-number-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Mode","value":"Birth Date Derivation"},{"metric":"Birth Date","value":"1990-12-25"},{"metric":"Digit Sum","value":"29"},{"metric":"Reduced Digit (1-9)","value":"2"},{"metric":"Derived Angel Number","value":"222"}],"matches":[{"pattern":"222","meaning":"A sign of balance and partnership — trust that things are aligning even if progress feels slow.","keywords":"Balance, Harmony, Trust"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"matches":{"type":"array","description":"Angel Number Meanings","items":{"type":"object","properties":{"pattern":{"type":"string","description":"Pattern"},"meaning":{"type":"string","description":"Meaning"},"keywords":{"type":"string","description":"Keywords"}}},"x-iotools-columns":["pattern","meaning","keywords"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/antilog-calculator":{"post":{"operationId":"run_antilog_calculator","summary":"Antilog Calculator","tags":["Calculators"],"description":"Compute an antilogarithm as base raised to an exponent — the inverse of a logarithm — with the result in standard and scientific notation plus a logarithm check that verifies the answer.\n\n[Try Antilog Calculator in your browser →](https://iotools.cloud/tool/antilog-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"number","description":"Base"},"exponent":{"type":"number","description":"Exponent"}},"required":["base","exponent"]},"examples":{"10_100":{"summary":"10² = 100","value":{"base":"10","exponent":"2"}},"base_e_exponent_1_euler_s_number":{"summary":"Base e, exponent 1 (Euler's number)","value":{"base":"2.718281828459045","exponent":"1"}},"negative_exponent_2_0_125":{"summary":"Negative exponent (2⁻³ = 0.125)","value":{"base":"2","exponent":"-3"}},"fractional_exponent_16_0_5_4":{"summary":"Fractional exponent (16^0.5 = 4)","value":{"base":"16","exponent":"0.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_100":{"summary":"10² = 100","value":{"tool":"antilog-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Formula","value":"10^2 = 100"},{"metric":"Result","value":"100"},{"metric":"Scientific Notation","value":"1.000000e+2"},{"metric":"Verification (Logarithm Check)","value":"log₍10₎(100) = 2"}]},"credits_used":5,"credits_remaining":null}},"base_e_exponent_1_euler_s_number":{"summary":"Base e, exponent 1 (Euler's number)","value":{"tool":"antilog-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Formula","value":"2.71828^1 = 2.71828"},{"metric":"Result","value":"2.71828"},{"metric":"Scientific Notation","value":"2.718282e+0"},{"metric":"Verification (Logarithm Check)","value":"log₍2.71828₎(2.71828) = 1"}]},"credits_used":5,"credits_remaining":null}},"negative_exponent_2_0_125":{"summary":"Negative exponent (2⁻³ = 0.125)","value":{"tool":"antilog-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Formula","value":"2^-3 = 0.125"},{"metric":"Result","value":"0.125"},{"metric":"Scientific Notation","value":"1.250000e-1"},{"metric":"Verification (Logarithm Check)","value":"log₍2₎(0.125) = -3"}]},"credits_used":5,"credits_remaining":null}},"fractional_exponent_16_0_5_4":{"summary":"Fractional exponent (16^0.5 = 4)","value":{"tool":"antilog-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Formula","value":"16^0.5 = 4"},{"metric":"Result","value":"4"},{"metric":"Scientific Notation","value":"4.000000e+0"},{"metric":"Verification (Logarithm Check)","value":"log₍16₎(4) = 0.5"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/apy-calculator":{"post":{"operationId":"run_apy_calculator","summary":"APY Calculator","tags":["Calculators"],"description":"Convert a nominal annual interest rate (APR) and compounding frequency into the effective annual percentage yield (APY) — with a side-by-side comparison across every standard compounding frequency and an optional deposit growth projection.\n\n[Try APY Calculator in your browser →](https://iotools.cloud/tool/apy-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nominalRate":{"type":"number","description":"Nominal Annual Rate / APR (%)","minimum":0,"maximum":100},"frequency":{"enum":["1","2","4","12","52","365","continuous"],"description":"Compounding Frequency"},"initialDeposit":{"type":"number","description":"Initial Deposit ($)","minimum":0,"maximum":1000000000},"years":{"type":"number","description":"Investment Period (Years)","minimum":0,"maximum":100},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["nominalRate"]},"examples":{"5_apr_monthly_compounding_10_000_over_5_years":{"summary":"5% APR, monthly compounding, $10,000 over 5 years","value":{"nominalRate":"5","frequency":"12","initialDeposit":"10000","years":"5","currency":"USD"}},"3_75_apr_daily_compounding_no_projection":{"summary":"3.75% APR, daily compounding, no projection","value":{"nominalRate":"3.75","frequency":"365","initialDeposit":"0","years":"0","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_apr_monthly_compounding_10_000_over_5_years":{"summary":"5% APR, monthly compounding, $10,000 over 5 years","value":{"tool":"apy-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Annual Rate (APR)","value":"5.0000%"},{"metric":"Compounding Frequency","value":"Monthly (12x/year)"},{"metric":"Effective Annual Yield (APY)","value":"5.1162%"},{"metric":"APY − APR","value":"0.1162%"}],"comparison":[{"frequency":"Annually (1x/year)","apy":"5.0000%"},{"frequency":"Semi-Annually (2x/year)","apy":"5.0625%"},{"frequency":"Quarterly (4x/year)","apy":"5.0945%"},{"frequency":"Monthly (12x/year) (selected)","apy":"5.1162%"},{"frequency":"Weekly (52x/year)","apy":"5.1246%"},{"frequency":"Daily (365x/year)","apy":"5.1267%"},{"frequency":"Continuous","apy":"5.1271%"}],"projection":[{"metric":"Initial Deposit","value":"$10,000.00"},{"metric":"Investment Period","value":"5 yr"},{"metric":"Future Value","value":"$12,833.59"},{"metric":"Total Interest Earned","value":"$2,833.59"}]},"credits_used":5,"credits_remaining":null}},"3_75_apr_daily_compounding_no_projection":{"summary":"3.75% APR, daily compounding, no projection","value":{"tool":"apy-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Annual Rate (APR)","value":"3.7500%"},{"metric":"Compounding Frequency","value":"Daily (365x/year)"},{"metric":"Effective Annual Yield (APY)","value":"3.8210%"},{"metric":"APY − APR","value":"0.0710%"}],"comparison":[{"frequency":"Annually (1x/year)","apy":"3.7500%"},{"frequency":"Semi-Annually (2x/year)","apy":"3.7852%"},{"frequency":"Quarterly (4x/year)","apy":"3.8031%"},{"frequency":"Monthly (12x/year)","apy":"3.8151%"},{"frequency":"Weekly (52x/year)","apy":"3.8198%"},{"frequency":"Daily (365x/year) (selected)","apy":"3.8210%"},{"frequency":"Continuous","apy":"3.8212%"}],"projection":[{"metric":"Initial Deposit","value":"$0.00"},{"metric":"Investment Period","value":"0 yr"},{"metric":"Future Value","value":"$0.00"},{"metric":"Total Interest Earned","value":"$0.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"comparison":{"type":"array","description":"APY by Compounding Frequency","items":{"type":"object","properties":{"frequency":{"type":"string","description":"Frequency"},"apy":{"type":"string","description":"APY"}}},"x-iotools-columns":["frequency","apy"]},"projection":{"type":"array","description":"Deposit Projection","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/aquarium-heater-wattage-calculator":{"post":{"operationId":"run_aquarium_heater_wattage_calculator","summary":"Aquarium Heater Wattage Calculator","tags":["Calculators"],"description":"Calculate the aquarium heater wattage you need from tank volume and the gap between your target water temperature and coldest room temperature, with a recommended purchasable heater size (or two heaters for large tanks).\n\n[Try Aquarium Heater Wattage Calculator in your browser →](https://iotools.cloud/tool/aquarium-heater-wattage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tankVolume":{"type":"number","description":"Tank volume","minimum":0.1},"volumeUnit":{"enum":["gal","l"],"description":"Volume unit"},"targetTemp":{"type":"number","description":"Target water temperature"},"roomTemp":{"type":"number","description":"Coldest room temperature"},"tempUnit":{"enum":["f","c"],"description":"Temperature unit"}},"required":["tankVolume","targetTemp","roomTemp"]},"examples":{"20_gal_tank_78_f_target_68_f_room":{"summary":"20 gal tank, 78°F target, 68°F room","value":{"tankVolume":"20","volumeUnit":"gal","targetTemp":"78","roomTemp":"68","tempUnit":"f"}},"150_gal_tank_26_c_target_18_c_room_metric":{"summary":"150 gal tank, 26°C target, 18°C room (metric)","value":{"tankVolume":"150","volumeUnit":"gal","targetTemp":"26","roomTemp":"18","tempUnit":"c"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"20_gal_tank_78_f_target_68_f_room":{"summary":"20 gal tank, 78°F target, 68°F room","value":{"tool":"aquarium-heater-wattage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Tank Volume","value":"75.7 L (20.0 gal)"},{"metric":"Temperature Difference","value":"10.0°F (5.6°C)"},{"metric":"Base Wattage Needed","value":"48 W"},{"metric":"Recommended Wattage (with 20% safety margin)","value":"58 W"},{"metric":"Recommended Heater Size","value":"75 W (single heater)"}],"options":[{"option":"50 W","assessment":"Undersized — won't reliably reach your target temperature"},{"option":"75 W","assessment":"Recommended — covers the needed wattage with a safety margin"},{"option":"100 W","assessment":"Oversized — works, but costs more and risks overshooting temperature"}]},"credits_used":5,"credits_remaining":null}},"150_gal_tank_26_c_target_18_c_room_metric":{"summary":"150 gal tank, 26°C target, 18°C room (metric)","value":{"tool":"aquarium-heater-wattage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Tank Volume","value":"567.8 L (150.0 gal)"},{"metric":"Temperature Difference","value":"8.0°C (8.0°C)"},{"metric":"Base Wattage Needed","value":"522 W"},{"metric":"Recommended Wattage (with 20% safety margin)","value":"627 W"},{"metric":"Recommended Heater Size","value":"3 × 250 W heaters (very large tank — consider professional setup guidance)"}],"options":[{"option":"1 × 300 W","assessment":"Undersized — a single heater can't cover this tank"},{"option":"3 × 250 W","assessment":"Recommended — splits the load evenly across 3 heaters, placed at intervals along the tank"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Heater Sizing Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"options":{"type":"array","description":"Heater Size Comparison","items":{"type":"object","properties":{"option":{"type":"string","description":"Option"},"assessment":{"type":"string","description":"Assessment"}}},"x-iotools-columns":["option","assessment"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/area-of-a-parallelogram-calculator":{"post":{"operationId":"run_area_of_a_parallelogram_calculator","summary":"Area of a Parallelogram Calculator","tags":["Calculators"],"description":"Calculate the area of a parallelogram from base and height, from two sides and the included angle, or from two diagonals and the angle between them — plus the perimeter and a step-by-step formula wherever the given values allow it.\n\n[Try Area of a Parallelogram Calculator in your browser →](https://iotools.cloud/tool/area-of-a-parallelogram-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"enum":["base-height","sides-angle","diagonals-angle"],"description":"Known values"},"unit":{"enum":["mm","cm","m","km","in","ft","yd"],"description":"Unit"},"base":{"type":"number","description":"Base","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"slantSide":{"type":"number","description":"Slant side (optional, for perimeter)","minimum":0},"sideA":{"type":"number","description":"Side A","minimum":0},"sideB":{"type":"number","description":"Side B","minimum":0},"includedAngle":{"type":"number","description":"Included angle (degrees)","minimum":0,"maximum":180},"diagonal1":{"type":"number","description":"Diagonal 1","minimum":0},"diagonal2":{"type":"number","description":"Diagonal 2","minimum":0},"diagonalAngle":{"type":"number","description":"Angle between diagonals (degrees)","minimum":0,"maximum":180}},"required":[]},"examples":{"base_height_12_5_cm":{"summary":"Base & height: 12 × 5 cm","value":{"method":"base-height","unit":"cm","base":"12","height":"5"}},"base_height_with_slant_side_12_5_slant_6_cm":{"summary":"Base & height with slant side: 12 × 5, slant 6 cm","value":{"method":"base-height","unit":"cm","base":"12","height":"5","slantSide":"6"}},"sides_angle_8_5_60":{"summary":"Sides & angle: 8, 5, 60°","value":{"method":"sides-angle","unit":"cm","sideA":"8","sideB":"5","includedAngle":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"base_height_12_5_cm":{"summary":"Base & height: 12 × 5 cm","value":{"tool":"area-of-a-parallelogram-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"60 cm²"}],"steps":"Area = base × height = 12 × 5 = 60 cm²"},"credits_used":5,"credits_remaining":null}},"base_height_with_slant_side_12_5_slant_6_cm":{"summary":"Base & height with slant side: 12 × 5, slant 6 cm","value":{"tool":"area-of-a-parallelogram-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"60 cm²"},{"property":"Perimeter","value":"36 cm"}],"steps":"Area = base × height = 12 × 5 = 60 cm²\nPerimeter = 2 × (base + slant side) = 2 × (12 + 6) = 36 cm"},"credits_used":5,"credits_remaining":null}},"sides_angle_8_5_60":{"summary":"Sides & angle: 8, 5, 60°","value":{"tool":"area-of-a-parallelogram-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"34.64 cm²"},{"property":"Perimeter","value":"26 cm"}],"steps":"Area = a × b × sin(θ) = 8 × 5 × sin(60°) = 34.64 cm²\nPerimeter = 2 × (a + b) = 2 × (8 + 5) = 26 cm"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/area-of-square-calculator":{"post":{"operationId":"run_area_of_square_calculator","summary":"Area of Square Calculator","tags":["Calculators"],"description":"Calculate a square's area, perimeter and diagonal from its side length — area = side², perimeter = 4 × side, diagonal = side × √2. Pick any unit; it's carried through as a label, no conversion needed.\n\n[Try Area of Square Calculator in your browser →](https://iotools.cloud/tool/area-of-square-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sideLength":{"type":"number","description":"Side length","minimum":0},"unit":{"enum":["mm","cm","m","km","in","ft","yd"],"description":"Unit"}},"required":["sideLength"]},"examples":{"5_cm_square":{"summary":"5 cm square","value":{"sideLength":"5","unit":"cm"}},"10_inch_square":{"summary":"10 inch square","value":{"sideLength":"10","unit":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_cm_square":{"summary":"5 cm square","value":{"tool":"area-of-square-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Area","value":"25 cm²"},{"metric":"Perimeter","value":"20 cm"},{"metric":"Diagonal","value":"7.07 cm"}]},"credits_used":5,"credits_remaining":null}},"10_inch_square":{"summary":"10 inch square","value":{"tool":"area-of-square-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Area","value":"100 in²"},{"metric":"Perimeter","value":"40 in"},{"metric":"Diagonal","value":"14.14 in"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/area-perimeter-calculator":{"post":{"operationId":"run_area_perimeter_calculator","summary":"Area & Perimeter Calculator","tags":["Calculators"],"description":"Calculate the area and perimeter of 9 common 2D shapes — square, rectangle, triangle, circle, trapezoid, parallelogram, rhombus, regular pentagon and regular hexagon — from a single shape picker.\n\n[Try Area & Perimeter Calculator in your browser →](https://iotools.cloud/tool/area-perimeter-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["square","rectangle","triangle","circle","trapezoid","parallelogram","rhombus","pentagon","hexagon"],"description":"Shape"},"unit":{"enum":["mm","cm","m","km","in","ft","yd"],"description":"Unit"},"side":{"type":"number","description":"Side length","minimum":0},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"sideA":{"type":"number","description":"Side A","minimum":0},"sideB":{"type":"number","description":"Side B","minimum":0},"sideC":{"type":"number","description":"Side C","minimum":0},"radius":{"type":"number","description":"Radius","minimum":0},"base1":{"type":"number","description":"Base 1 (shorter)","minimum":0},"base2":{"type":"number","description":"Base 2 (longer)","minimum":0},"leg1":{"type":"number","description":"Leg 1","minimum":0},"leg2":{"type":"number","description":"Leg 2","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"base":{"type":"number","description":"Base","minimum":0},"side1":{"type":"number","description":"Slanted side","minimum":0},"diagonal1":{"type":"number","description":"Diagonal 1","minimum":0},"diagonal2":{"type":"number","description":"Diagonal 2","minimum":0}},"required":[]},"examples":{"square_5_cm_side":{"summary":"Square, 5 cm side","value":{"shape":"square","unit":"cm","side":"5"}},"rectangle_8_5_cm":{"summary":"Rectangle, 8×5 cm","value":{"shape":"rectangle","unit":"cm","length":"8","width":"5"}},"triangle_sides_3_4_5":{"summary":"Triangle, sides 3-4-5","value":{"shape":"triangle","unit":"cm","sideA":"3","sideB":"4","sideC":"5"}},"circle_radius_5":{"summary":"Circle, radius 5","value":{"shape":"circle","unit":"cm","radius":"5"}},"regular_hexagon_side_4":{"summary":"Regular hexagon, side 4","value":{"shape":"hexagon","unit":"cm","side":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"square_5_cm_side":{"summary":"Square, 5 cm side","value":{"tool":"area-perimeter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"25 cm²"},{"property":"Perimeter","value":"20 cm"},{"property":"Diagonal","value":"7.07 cm"}]},"credits_used":5,"credits_remaining":null}},"rectangle_8_5_cm":{"summary":"Rectangle, 8×5 cm","value":{"tool":"area-perimeter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"40 cm²"},{"property":"Perimeter","value":"26 cm"},{"property":"Diagonal","value":"9.43 cm"}]},"credits_used":5,"credits_remaining":null}},"triangle_sides_3_4_5":{"summary":"Triangle, sides 3-4-5","value":{"tool":"area-perimeter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"6 cm²"},{"property":"Perimeter","value":"12 cm"}]},"credits_used":5,"credits_remaining":null}},"circle_radius_5":{"summary":"Circle, radius 5","value":{"tool":"area-perimeter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"78.54 cm²"},{"property":"Perimeter (circumference)","value":"31.42 cm"}]},"credits_used":5,"credits_remaining":null}},"regular_hexagon_side_4":{"summary":"Regular hexagon, side 4","value":{"tool":"area-perimeter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"41.57 cm²"},{"property":"Perimeter","value":"24 cm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/aspect-ratio-calculator":{"post":{"operationId":"run_aspect_ratio_calculator","summary":"Aspect Ratio Calculator","tags":["Calculators"],"description":"Simplify a width x height pair into its smallest whole-number aspect ratio (e.g. 1920x1080 -> 16:9), or solve a missing width/height from a known ratio like 16:9. Exact GCD math, no rounding drift.\n\n[Try Aspect Ratio Calculator in your browser →](https://iotools.cloud/tool/aspect-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"width":{"type":"number","description":"Width","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"ratioWidth":{"type":"number","description":"Ratio width","minimum":0},"ratioHeight":{"type":"number","description":"Ratio height","minimum":0}},"required":[]},"examples":{"simplify_1920x1080":{"summary":"Simplify 1920x1080","value":{"width":"1920","height":"1080","ratioWidth":"","ratioHeight":""}},"solve_height_for_16_9_at_1280_wide":{"summary":"Solve height for 16:9 at 1280 wide","value":{"width":"1280","height":"","ratioWidth":"16","ratioHeight":"9"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simplify_1920x1080":{"summary":"Simplify 1920x1080","value":{"tool":"aspect-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Simplified Ratio","value":"16:9"},{"property":"Decimal Ratio","value":"1.7778"},{"property":"Orientation","value":"Landscape"},{"property":"Solved Width","value":"1920"},{"property":"Solved Height","value":"1080"},{"property":"Common Preset Match","value":"16:9 (Widescreen)"}]},"credits_used":5,"credits_remaining":null}},"solve_height_for_16_9_at_1280_wide":{"summary":"Solve height for 16:9 at 1280 wide","value":{"tool":"aspect-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Simplified Ratio","value":"16:9"},{"property":"Decimal Ratio","value":"1.7778"},{"property":"Orientation","value":"Landscape"},{"property":"Solved Width","value":"1280"},{"property":"Solved Height","value":"720"},{"property":"Common Preset Match","value":"16:9 (Widescreen)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/asphalt-calculator":{"post":{"operationId":"run_asphalt_calculator","summary":"Asphalt Calculator","tags":["Calculators"],"description":"Estimate asphalt volume, tonnage, waste buffer, truckloads and material cost for a paving job — rectangle or circular area, imperial or metric, with a full cost breakdown and every result shown in both unit systems.\n\n[Try Asphalt Calculator in your browser →](https://iotools.cloud/tool/asphalt-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["rectangle","circle"],"description":"Area shape"},"unitSystem":{"enum":["imperial","metric"],"description":"Unit system"},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"diameter":{"type":"number","description":"Diameter","minimum":0},"thickness":{"type":"number","description":"Thickness / depth","minimum":0},"densityPreset":{"enum":["hma","porous","millings","custom"],"description":"Asphalt mix / density"},"customDensity":{"type":"number","description":"Custom density","minimum":0},"wastePct":{"type":"number","description":"Waste buffer %","minimum":0,"maximum":30},"pricePerTon":{"type":"number","description":"Price per ton (optional)","minimum":0},"truckCapacity":{"type":"number","description":"Truck capacity (optional)","minimum":0}},"required":[]},"examples":{"rectangular_driveway_30_x_12_ft_3_in_thick_hot_mix_asphalt_imperial":{"summary":"Rectangular driveway, 30 x 12 ft, 3 in thick, hot mix asphalt (imperial)","value":{"shape":"rectangle","unitSystem":"imperial","length":"30","width":"12","diameter":"","thickness":"3","densityPreset":"hma","customDensity":"","wastePct":"5","pricePerTon":"120","truckCapacity":"10"}},"circular_pad_6m_diameter_10cm_thick_custom_density_no_price_metric":{"summary":"Circular pad, 6m diameter, 10cm thick, custom density, no price (metric)","value":{"shape":"circle","unitSystem":"metric","length":"","width":"","diameter":"6","thickness":"10","densityPreset":"custom","customDensity":"2300","wastePct":"10","pricePerTon":"","truckCapacity":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangular_driveway_30_x_12_ft_3_in_thick_hot_mix_asphalt_imperial":{"summary":"Rectangular driveway, 30 x 12 ft, 3 in thick, hot mix asphalt (imperial)","value":{"tool":"asphalt-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Shape","value":"Rectangle"},{"metric":"Area","value":"360.0 sq ft (33.4 m²)"},{"metric":"Thickness","value":"3.00 in (7.6 cm)"},{"metric":"Volume","value":"3.33 yd³ (2.55 m³)"},{"metric":"Density","value":"145 lb/ft³ (2323 kg/m³) — Hot mix asphalt, dense-graded"},{"metric":"Tonnage (no waste)","value":"6.53 tons (5.92 tonnes)"},{"metric":"Waste buffer (+5%)","value":"0.33 tons (0.30 tonnes)"},{"metric":"Total tonnage to order","value":"6.85 tons (6.22 tonnes)"},{"metric":"Truckloads","value":"1 trip(s) (~0.69 loads at 10.00 tons ≈ 9.07 tonnes per load)"},{"metric":"Material cost (no waste)","value":"$783.00"},{"metric":"Waste buffer cost","value":"$39.15"},{"metric":"Total cost to order","value":"$822.15"}],"summary":"360.0 sq ft (33.4 m²) at 3.0 in (7.6 cm) · 6.85 tons (6.22 tonnes) to order · 1 truckload(s) · $822.15 total"},"credits_used":5,"credits_remaining":null}},"circular_pad_6m_diameter_10cm_thick_custom_density_no_price_metric":{"summary":"Circular pad, 6m diameter, 10cm thick, custom density, no price (metric)","value":{"tool":"asphalt-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Shape","value":"Circle"},{"metric":"Area","value":"304.3 sq ft (28.3 m²)"},{"metric":"Thickness","value":"3.94 in (10.0 cm)"},{"metric":"Volume","value":"3.70 yd³ (2.83 m³)"},{"metric":"Density","value":"144 lb/ft³ (2300 kg/m³) — Custom"},{"metric":"Tonnage (no waste)","value":"7.17 tons (6.50 tonnes)"},{"metric":"Waste buffer (+10%)","value":"0.72 tons (0.65 tonnes)"},{"metric":"Total tonnage to order","value":"7.89 tons (7.15 tonnes)"},{"metric":"Truckloads","value":"1 trip(s) (~0.79 loads at 9.92 tons ≈ 9.00 tonnes per load)"},{"metric":"Material cost (no waste)","value":"-"},{"metric":"Waste buffer cost","value":"-"},{"metric":"Total cost to order","value":"-"}],"summary":"304.3 sq ft (28.3 m²) at 3.9 in (10.0 cm) · 7.89 tons (7.15 tonnes) to order · 1 truckload(s)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/audio-file-size-calculator":{"post":{"operationId":"run_audio_file_size_calculator","summary":"Audio File Size Calculator","tags":["Calculators"],"description":"Estimate an audio file's size from its duration and format — uncompressed WAV/PCM (sample rate, bit depth, channels) or compressed MP3/AAC/OGG/FLAC at a given bitrate — with a byte/KB/MB/GB breakdown.\n\n[Try Audio File Size Calculator in your browser →](https://iotools.cloud/tool/audio-file-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hours":{"type":"number","description":"Hours","minimum":0,"maximum":99},"minutes":{"type":"number","description":"Minutes","minimum":0,"maximum":59},"seconds":{"type":"number","description":"Seconds","minimum":0,"maximum":59},"audioFormat":{"enum":["mp3","aac","ogg","wav","flac"],"description":"Audio format"},"bitrateKbps":{"enum":["64","96","128","160","192","256","320"],"description":"Bitrate"},"sampleRate":{"enum":["22050","44100","48000","96000"],"description":"Sample rate"},"bitDepth":{"enum":["16","24","32"],"description":"Bit depth"},"channels":{"enum":["1","2"],"description":"Channels"},"flacCompression":{"type":"number","description":"FLAC compression (% of WAV size)","minimum":30,"maximum":70}},"required":[]},"examples":{"wav_1_minute_cd_quality_stereo":{"summary":"WAV — 1 minute, CD quality stereo","value":{"hours":"0","minutes":"1","seconds":"0","audioFormat":"wav","bitrateKbps":"128","sampleRate":"44100","bitDepth":"16","channels":"2","flacCompression":"60"}},"mp3_30_minute_podcast_at_128_kbps":{"summary":"MP3 — 30-minute podcast at 128 kbps","value":{"hours":"0","minutes":"30","seconds":"0","audioFormat":"mp3","bitrateKbps":"128","sampleRate":"44100","bitDepth":"16","channels":"2","flacCompression":"60"}},"blank_duration":{"summary":"Blank duration","value":{"hours":"","minutes":"","seconds":"","audioFormat":"mp3","bitrateKbps":"128","sampleRate":"44100","bitDepth":"16","channels":"2","flacCompression":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"wav_1_minute_cd_quality_stereo":{"summary":"WAV — 1 minute, CD quality stereo","value":{"tool":"audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"10.09 MB","sizeDetails":[{"metric":"Duration","value":"1m 0s"},{"metric":"Format","value":"WAV — 44,100 Hz / 16-bit / Stereo"},{"metric":"Estimated size","value":"10.09 MB"},{"metric":"Bytes","value":"10,584,000"},{"metric":"KB (1024 B)","value":"10335.94"},{"metric":"MB (1024 KB)","value":"10.09"},{"metric":"GB (1024 MB)","value":"0.0099"}]},"credits_used":5,"credits_remaining":null}},"mp3_30_minute_podcast_at_128_kbps":{"summary":"MP3 — 30-minute podcast at 128 kbps","value":{"tool":"audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"27.47 MB","sizeDetails":[{"metric":"Duration","value":"30m 0s"},{"metric":"Format","value":"MP3 @ 128 kbps"},{"metric":"Estimated size","value":"27.47 MB"},{"metric":"Bytes","value":"28,800,000"},{"metric":"KB (1024 B)","value":"28125.00"},{"metric":"MB (1024 KB)","value":"27.47"},{"metric":"GB (1024 MB)","value":"0.0268"}]},"credits_used":5,"credits_remaining":null}},"blank_duration":{"summary":"Blank duration","value":{"tool":"audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"0 B","sizeDetails":[{"metric":"Duration","value":"0s"},{"metric":"Format","value":"MP3 @ 128 kbps"},{"metric":"Estimated size","value":"0 B"},{"metric":"Bytes","value":"0"},{"metric":"KB (1024 B)","value":"0.00"},{"metric":"MB (1024 KB)","value":"0.00"},{"metric":"GB (1024 MB)","value":"0.0000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"fileSize":{"type":"string","description":"Estimated file size"},"sizeDetails":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/average-rate-of-change-calculator":{"post":{"operationId":"run_average_rate_of_change_calculator","summary":"Average Rate of Change Calculator","tags":["Calculators"],"description":"Calculate the average rate of change of a function f(x) over an interval [a, b] — the slope of the secant line through (a, f(a)) and (b, f(b)) — with the secant line's equation and a step-by-step derivation.\n\n[Try Average Rate of Change Calculator in your browser →](https://iotools.cloud/tool/average-rate-of-change-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"functionExpr":{"type":"string","description":"f(x)"},"a":{"type":"number","description":"a (interval start)"},"b":{"type":"number","description":"b (interval end)"}},"required":["functionExpr","a","b"]},"examples":{"f_x_x_1_4":{"summary":"f(x) = x², [1, 4]","value":{"functionExpr":"x^2","a":"1","b":"4"}},"f_x_sin_x_0_pi_2":{"summary":"f(x) = sin(x), [0, pi/2]","value":{"functionExpr":"sin(x)","a":"0","b":"1.5707963267948966"}},"quadratic_with_negative_slope_2_1":{"summary":"Quadratic with negative slope, [-2, 1]","value":{"functionExpr":"-x^2 + 3","a":"-2","b":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_x_1_4":{"summary":"f(x) = x², [1, 4]","value":{"tool":"average-rate-of-change-calculator","tool_version":"1.0.2","outputs":{"averageRateOfChange":"5","secantLineEquation":"y = 5x - 4","steps":"f(x) = x^2 on [1, 4]\nf(a) = f(1) = 1\nf(b) = f(4) = 16\nAverage rate of change: m = (f(b) − f(a)) / (b − a) = (16 − 1) / (4 − 1) = 5\nSecant line through (a, f(a)) and (b, f(b)): y − 1 = 5(x − 1)\n  y = 5x - 4"},"credits_used":5,"credits_remaining":null}},"f_x_sin_x_0_pi_2":{"summary":"f(x) = sin(x), [0, pi/2]","value":{"tool":"average-rate-of-change-calculator","tool_version":"1.0.2","outputs":{"averageRateOfChange":"0.63662","secantLineEquation":"y = 0.63662x","steps":"f(x) = sin(x) on [0, 1.5708]\nf(a) = f(0) = 0\nf(b) = f(1.5708) = 1\nAverage rate of change: m = (f(b) − f(a)) / (b − a) = (1 − 0) / (1.5708 − 0) = 0.63662\nSecant line through (a, f(a)) and (b, f(b)): y − 0 = 0.63662(x − 0)\n  y = 0.63662x"},"credits_used":5,"credits_remaining":null}},"quadratic_with_negative_slope_2_1":{"summary":"Quadratic with negative slope, [-2, 1]","value":{"tool":"average-rate-of-change-calculator","tool_version":"1.0.2","outputs":{"averageRateOfChange":"1","secantLineEquation":"y = x + 1","steps":"f(x) = -x^2 + 3 on [-2, 1]\nf(a) = f(-2) = -1\nf(b) = f(1) = 2\nAverage rate of change: m = (f(b) − f(a)) / (b − a) = (2 − -1) / (1 − -2) = 1\nSecant line through (a, f(a)) and (b, f(b)): y − -1 = 1(x − -2)\n  y = x + 1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"averageRateOfChange":{"type":"string","description":"Average Rate of Change"},"secantLineEquation":{"type":"string","description":"Secant Line Equation"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bandwidth-download-calculator":{"post":{"operationId":"run_bandwidth_download_calculator","summary":"Bandwidth & Download Time Calculator","tags":["Calculators"],"description":"Calculate download or transfer time from a file size and connection speed — correctly converts bits (Mbps/Gbps) to bytes (MB/GB) and shows a human-readable time breakdown plus the effective transfer rate.\n\n[Try Bandwidth & Download Time Calculator in your browser →](https://iotools.cloud/tool/bandwidth-download-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fileSize":{"type":"number","description":"File size","minimum":0},"fileSizeUnit":{"enum":["KB","MB","GB","TB"],"description":"File size unit"},"speed":{"type":"number","description":"Connection speed","minimum":0},"speedUnit":{"enum":["Kbps","Mbps","Gbps"],"description":"Speed unit"}},"required":["fileSize","speed"]},"examples":{"1_gb_over_100_mbps":{"summary":"1 GB over 100 Mbps","value":{"fileSize":"1","fileSizeUnit":"GB","speed":"100","speedUnit":"Mbps"}},"4_7_gb_dvd_over_25_mbps":{"summary":"4.7 GB DVD over 25 Mbps","value":{"fileSize":"4.7","fileSizeUnit":"GB","speed":"25","speedUnit":"Mbps"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_gb_over_100_mbps":{"summary":"1 GB over 100 Mbps","value":{"tool":"bandwidth-download-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Download time","value":"1 minute 20 seconds"},{"metric":"Total seconds","value":"80"},{"metric":"Effective transfer rate","value":"12.5 MB/s"}]},"credits_used":5,"credits_remaining":null}},"4_7_gb_dvd_over_25_mbps":{"summary":"4.7 GB DVD over 25 Mbps","value":{"tool":"bandwidth-download-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Download time","value":"25 minutes 4 seconds"},{"metric":"Total seconds","value":"1504"},{"metric":"Effective transfer rate","value":"3.13 MB/s"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/battery-life-runtime-calculator":{"post":{"operationId":"run_battery_life_runtime_calculator","summary":"Battery Life / Runtime Calculator","tags":["Calculators"],"description":"Estimate how long a battery will power a device from its capacity (Wh or mAh + voltage) and the device's power draw, with a real-world usable-capacity derating factor.\n\n[Try Battery Life / Runtime Calculator in your browser →](https://iotools.cloud/tool/battery-life-runtime-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"batteryCapacity":{"type":"number","description":"Battery Capacity","minimum":0.01},"capacityUnit":{"enum":["mAh","Wh"],"description":"Capacity Unit"},"voltage":{"type":"number","description":"Battery Voltage (V)","minimum":0.01},"powerDraw":{"type":"number","description":"Device Power Draw (W)","minimum":0.001},"efficiency":{"type":"number","description":"Usable Capacity (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"5000_mah_phone_battery_at_3_7v_2_5w_draw":{"summary":"5000 mAh phone battery at 3.7V, 2.5W draw","value":{"batteryCapacity":"5000","capacityUnit":"mAh","voltage":"3.7","powerDraw":"2.5","efficiency":"85"}},"100_wh_power_bank_10w_draw":{"summary":"100 Wh power bank, 10W draw","value":{"batteryCapacity":"100","capacityUnit":"Wh","voltage":"3.7","powerDraw":"10","efficiency":"80"}},"zero_power_draw_guarded":{"summary":"Zero power draw (guarded)","value":{"batteryCapacity":"5000","capacityUnit":"mAh","voltage":"3.7","powerDraw":"0","efficiency":"85"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5000_mah_phone_battery_at_3_7v_2_5w_draw":{"summary":"5000 mAh phone battery at 3.7V, 2.5W draw","value":{"tool":"battery-life-runtime-calculator","tool_version":"1.0.2","outputs":{"runtime":"6 hours 17 minutes","runtimeDetails":[{"metric":"Estimated Runtime","value":"6 hours 17 minutes"},{"metric":"Total Hours","value":"6.29"},{"metric":"Total Minutes","value":"377"},{"metric":"Usable Capacity","value":"15.72 Wh"},{"metric":"Battery Capacity","value":"18.50 Wh"}]},"credits_used":5,"credits_remaining":null}},"100_wh_power_bank_10w_draw":{"summary":"100 Wh power bank, 10W draw","value":{"tool":"battery-life-runtime-calculator","tool_version":"1.0.2","outputs":{"runtime":"8 hours","runtimeDetails":[{"metric":"Estimated Runtime","value":"8 hours"},{"metric":"Total Hours","value":"8.00"},{"metric":"Total Minutes","value":"480"},{"metric":"Usable Capacity","value":"80.00 Wh"},{"metric":"Battery Capacity","value":"100.00 Wh"}]},"credits_used":5,"credits_remaining":null}},"zero_power_draw_guarded":{"summary":"Zero power draw (guarded)","value":{"tool":"battery-life-runtime-calculator","tool_version":"1.0.2","outputs":{"runtime":"Enter a device power draw greater than 0.","runtimeDetails":[{"metric":"Estimated Runtime","value":"-"},{"metric":"Total Hours","value":"-"},{"metric":"Total Minutes","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"runtime":{"type":"string","description":"Estimated Runtime"},"runtimeDetails":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/batting-average-calculator":{"post":{"operationId":"run_batting_average_calculator","summary":"Batting Average Calculator","tags":["Calculators"],"description":"Calculate a baseball or softball batting average from hits and at bats — AVG = hits ÷ at bats, rounded to the standard three decimal places.\n\n[Try Batting Average Calculator in your browser →](https://iotools.cloud/tool/batting-average-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hits":{"type":"number","description":"Hits","minimum":0},"atBats":{"type":"number","description":"At bats","minimum":1}},"required":["hits","atBats"]},"examples":{"45_hits_in_150_at_bats":{"summary":"45 hits in 150 at bats","value":{"hits":"45","atBats":"150"}},"a_perfect_day_4_for_4":{"summary":"A perfect day (4 for 4)","value":{"hits":"4","atBats":"4"}},"hitless_0_for_12":{"summary":"Hitless (0 for 12)","value":{"hits":"0","atBats":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"45_hits_in_150_at_bats":{"summary":"45 hits in 150 at bats","value":{"tool":"batting-average-calculator","tool_version":"1.0.2","outputs":{"battingAverage":"0.300"},"credits_used":5,"credits_remaining":null}},"a_perfect_day_4_for_4":{"summary":"A perfect day (4 for 4)","value":{"tool":"batting-average-calculator","tool_version":"1.0.2","outputs":{"battingAverage":"1.000"},"credits_used":5,"credits_remaining":null}},"hitless_0_for_12":{"summary":"Hitless (0 for 12)","value":{"tool":"batting-average-calculator","tool_version":"1.0.2","outputs":{"battingAverage":"0.000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"battingAverage":{"type":"string","description":"Batting average (AVG)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/beading-pattern-calculator":{"post":{"operationId":"run_beading_pattern_calculator","summary":"Beading Pattern Calculator","tags":["Calculators"],"description":"Calculate how many beads you need from a strand length and a repeating bead pattern, with a per-bead-type shopping list, editable waste/overage allowance, and results for multiple strands at once — free, no signup, runs entirely in your browser.\n\n[Try Beading Pattern Calculator in your browser →](https://iotools.cloud/tool/beading-pattern-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"strandLength":{"type":"number","description":"Finished Strand Length","minimum":0.01},"lengthUnit":{"enum":["in","cm"],"description":"Unit"},"claspLength":{"type":"number","description":"Clasp Length","minimum":0},"pieces":{"type":"number","description":"Number of Strands (Pieces)","minimum":1},"wastePercent":{"type":"number","description":"Waste / Overage (%)","minimum":0,"maximum":100},"pattern":{"type":"string","description":"Bead Pattern (repeat unit)"}},"required":["strandLength","claspLength","pattern"]},"examples":{"18in_strand_0_75in_clasp_3_red_1_blue_repeat_1_strand":{"summary":"18in strand, 0.75in clasp, 3 red + 1 blue repeat, 1 strand","value":{"strandLength":"18","lengthUnit":"in","claspLength":"0.75","pieces":"1","wastePercent":"5","pattern":"Red seed bead | 4 | 3\nBlue accent bead | 6 | 1"}},"45cm_strand_2cm_clasp_single_6mm_bead_pattern_3_strands":{"summary":"45cm strand, 2cm clasp, single 6mm bead pattern, 3 strands","value":{"strandLength":"45","lengthUnit":"cm","claspLength":"2","pieces":"3","wastePercent":"10","pattern":"6 | 1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"18in_strand_0_75in_clasp_3_red_1_blue_repeat_1_strand":{"summary":"18in strand, 0.75in clasp, 3 red + 1 blue repeat, 1 strand","value":{"tool":"beading-pattern-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Strand Length","value":"18 in (457.2 mm)"},{"metric":"Clasp Length","value":"0.75 in (19.0 mm)"},{"metric":"Usable Length for Beads","value":"438.1 mm"},{"metric":"Repeat Pattern Length","value":"18.0 mm (4 beads)"},{"metric":"Full Repeats","value":"24"},{"metric":"Extra Beads at End of Pattern","value":"1 (2.1 mm left over, too small for another bead)"},{"metric":"Beads per Strand","value":"97"},{"metric":"Number of Strands","value":"1"},{"metric":"Total Beads Needed","value":"97"},{"metric":"Total Beads to Buy (with 5% waste)","value":"102"},{"metric":"Finished Strung Length (incl. clasp)","value":"455.1 mm"}],"beadBreakdown":[{"bead":"Red seed bead","size":"4.0 mm","per-repeat":"3","per-strand":"73","total-to-buy":"77"},{"bead":"Blue accent bead","size":"6.0 mm","per-repeat":"1","per-strand":"24","total-to-buy":"26"}]},"credits_used":5,"credits_remaining":null}},"45cm_strand_2cm_clasp_single_6mm_bead_pattern_3_strands":{"summary":"45cm strand, 2cm clasp, single 6mm bead pattern, 3 strands","value":{"tool":"beading-pattern-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Strand Length","value":"45 cm (450.0 mm)"},{"metric":"Clasp Length","value":"2 cm (20.0 mm)"},{"metric":"Usable Length for Beads","value":"430.0 mm"},{"metric":"Repeat Pattern Length","value":"6.0 mm (1 beads)"},{"metric":"Full Repeats","value":"71"},{"metric":"Extra Beads at End of Pattern","value":"0 (4.0 mm left over, too small for another bead)"},{"metric":"Beads per Strand","value":"71"},{"metric":"Number of Strands","value":"3"},{"metric":"Total Beads Needed","value":"213"},{"metric":"Total Beads to Buy (with 10% waste)","value":"235"},{"metric":"Finished Strung Length (incl. clasp)","value":"446.0 mm"}],"beadBreakdown":[{"bead":"Bead 1","size":"6.0 mm","per-repeat":"1","per-strand":"71","total-to-buy":"235"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Strand Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"beadBreakdown":{"type":"array","description":"Beads to Buy","items":{"type":"object","properties":{"bead":{"type":"string","description":"Bead"},"size":{"type":"string","description":"Size"},"per-repeat":{"type":"string","description":"Per Repeat"},"per-strand":{"type":"string","description":"Per Strand"},"total-to-buy":{"type":"string","description":"Total To Buy"}}},"x-iotools-columns":["bead","size","per-repeat","per-strand","total-to-buy"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/beam-deflection-calculator":{"post":{"operationId":"run_beam_deflection_calculator","summary":"Beam Deflection Calculator","tags":["Calculators"],"description":"Calculate the maximum elastic deflection of a simply supported or cantilever beam under a uniform distributed load, a center/end point load, or both — with the span-to-deflection ratio checked against common L/360 and L/240 serviceability limits.\n\n[Try Beam Deflection Calculator in your browser →](https://iotools.cloud/tool/beam-deflection-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"beamType":{"enum":["simply-supported","cantilever"],"description":"Beam type"},"material":{"enum":["structural-steel","stainless-steel","aluminum-6061","cast-iron","reinforced-concrete","douglas-fir","southern-pine","titanium","custom"],"description":"Material"},"elasticModulus":{"type":"number","description":"Elastic modulus E","minimum":0},"momentOfInertia":{"type":"number","description":"Moment of inertia (I)","minimum":0},"span":{"type":"number","description":"Span (L)","minimum":0},"udl":{"type":"number","description":"Uniform distributed load (w)","minimum":0},"pointLoad":{"type":"number","description":"Point load (P)","minimum":0}},"required":[]},"examples":{"steel_beam_udl_center_point_load":{"summary":"Steel beam, UDL + center point load","value":{"beamType":"simply-supported","material":"structural-steel","elasticModulus":"","momentOfInertia":"8360000","span":"3","udl":"5","pointLoad":"10"}},"aluminum_cantilever_end_point_load_only":{"summary":"Aluminum cantilever, end point load only","value":{"beamType":"cantilever","material":"aluminum-6061","elasticModulus":"","momentOfInertia":"2000000","span":"1.5","udl":"","pointLoad":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"steel_beam_udl_center_point_load":{"summary":"Steel beam, UDL + center point load","value":{"tool":"beam-deflection-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Deflection From Distributed Load","value":"3.154 mm (0.1242 in)"},{"metric":"Deflection From Point Load (at mid-span)","value":"3.364 mm (0.1325 in)"},{"metric":"Total Maximum Deflection","value":"6.518 mm (0.2566 in)"},{"metric":"Span-to-Deflection Ratio (L/δ)","value":"L/460.2 — meets the common L/360 live-load serviceability limit"},{"metric":"Elastic Modulus Used","value":"200.0 GPa"},{"metric":"Note","value":"Preliminary stiffness check only — verify against your governing design code's serviceability limits."}]},"credits_used":5,"credits_remaining":null}},"aluminum_cantilever_end_point_load_only":{"summary":"Aluminum cantilever, end point load only","value":{"tool":"beam-deflection-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Deflection From Point Load (at free end)","value":"16.33 mm (0.6428 in)"},{"metric":"Total Maximum Deflection","value":"16.33 mm (0.6428 in)"},{"metric":"Span-to-Deflection Ratio (L/δ)","value":"L/91.87 — well below common serviceability limits — this beam is likely too flexible for this span"},{"metric":"Elastic Modulus Used","value":"68.90 GPa"},{"metric":"Note","value":"Preliminary stiffness check only — verify against your governing design code's serviceability limits."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/beam-load-calculator":{"post":{"operationId":"run_beam_load_calculator","summary":"Beam Load Calculator","tags":["Calculators"],"description":"Calculate the maximum bending moment, shear force, bending stress, shear stress, and deflection of a simply supported or cantilever beam under a uniform distributed load, a point load, or both — with strength checks against allowable stresses and a serviceability check against common L/360, L/240, and L/180 deflection limits.\n\n[Try Beam Load Calculator in your browser →](https://iotools.cloud/tool/beam-load-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"beamType":{"enum":["simply-supported","cantilever"],"description":"Beam type"},"span":{"type":"number","description":"Span (L)","minimum":0},"udl":{"type":"number","description":"Uniform distributed load (w)","minimum":0},"pointLoad":{"type":"number","description":"Point load (P)","minimum":0},"momentOfInertia":{"type":"number","description":"Moment of inertia (I)","minimum":0},"extremeFiberDistance":{"type":"number","description":"Distance to extreme fiber (c)","minimum":0},"crossSectionArea":{"type":"number","description":"Cross-sectional area (A)","minimum":0},"shearShape":{"enum":["average","rectangular","circular","wide-flange-web"],"description":"Section shape (for shear stress)"},"material":{"enum":["structural-steel","stainless-steel","aluminum-6061","cast-iron","reinforced-concrete","douglas-fir","southern-pine","titanium","custom"],"description":"Material"},"elasticModulus":{"type":"number","description":"Elastic modulus E","minimum":0},"allowableBendingStress":{"type":"number","description":"Allowable bending stress","minimum":0},"allowableShearStress":{"type":"number","description":"Allowable shear stress","minimum":0},"deflectionLimit":{"enum":["360","240","180"],"description":"Deflection limit"}},"required":[]},"examples":{"steel_beam_udl_point_load_both_checks_pass":{"summary":"Steel beam, UDL + point load, both checks pass","value":{"beamType":"simply-supported","span":"3","udl":"5","pointLoad":"10","momentOfInertia":"8360000","extremeFiberDistance":"150","crossSectionArea":"5000","shearShape":"average","material":"structural-steel","elasticModulus":"","allowableBendingStress":"150","allowableShearStress":"100","deflectionLimit":"360"}},"aluminum_cantilever_end_point_load_only":{"summary":"Aluminum cantilever, end point load only","value":{"beamType":"cantilever","span":"1.5","udl":"","pointLoad":"2","momentOfInertia":"2000000","extremeFiberDistance":"50","crossSectionArea":"2000","shearShape":"rectangular","material":"aluminum-6061","elasticModulus":"","allowableBendingStress":"","allowableShearStress":"","deflectionLimit":"240"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"steel_beam_udl_point_load_both_checks_pass":{"summary":"Steel beam, UDL + point load, both checks pass","value":{"tool":"beam-load-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Maximum Bending Moment","value":"13.13 kN·m"},{"metric":"Maximum Shear Force","value":"12.50 kN"},{"metric":"Bending Stress (σ = M·c/I)","value":"235.5 MPa"},{"metric":"Shear Stress (τ)","value":"2.500 MPa"},{"metric":"Maximum Deflection","value":"6.518 mm (0.2566 in)"},{"metric":"Serviceability Check (Deflection)","value":"L/460.2 — meets the L/360 serviceability limit"},{"metric":"Strength Check (Bending)","value":"FAIL — 235.5 MPa exceeds 150.0 MPa allowable"},{"metric":"Strength Check (Shear)","value":"PASS — 2.500 MPa ≤ 100.0 MPa allowable"},{"metric":"Elastic Modulus Used","value":"200.0 GPa"},{"metric":"Note","value":"Preliminary design check only — verify against your governing design code's strength and serviceability provisions."}]},"credits_used":5,"credits_remaining":null}},"aluminum_cantilever_end_point_load_only":{"summary":"Aluminum cantilever, end point load only","value":{"tool":"beam-load-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Maximum Bending Moment","value":"3.000 kN·m"},{"metric":"Maximum Shear Force","value":"2.000 kN"},{"metric":"Bending Stress (σ = M·c/I)","value":"75.00 MPa"},{"metric":"Shear Stress (τ)","value":"1.500 MPa"},{"metric":"Maximum Deflection","value":"16.33 mm (0.6428 in)"},{"metric":"Serviceability Check (Deflection)","value":"L/91.87 — below the L/240 serviceability limit — check your governing code"},{"metric":"Elastic Modulus Used","value":"68.90 GPa"},{"metric":"Note","value":"Preliminary design check only — verify against your governing design code's strength and serviceability provisions."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bearing-calculator":{"post":{"operationId":"run_bearing_calculator","summary":"Bearing Calculator","tags":["Calculators"],"description":"Calculate the compass bearing (heading) between two latitude/longitude points — both the initial bearing to set off on and the final bearing on arrival, since a great-circle path curves. Coordinates accept decimal degrees or DMS.\n\n[Try Bearing Calculator in your browser →](https://iotools.cloud/tool/bearing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latA":{"type":"string","description":"Start — Latitude"},"lonA":{"type":"string","description":"Start — Longitude"},"latB":{"type":"string","description":"End — Latitude"},"lonB":{"type":"string","description":"End — Longitude"}},"required":["latA","lonA","latB","lonB"]},"examples":{"new_york_london":{"summary":"New York → London","value":{"latA":"40.7128","lonA":"-74.0060","latB":"51.5074","lonB":"-0.1278"}},"dms_input_new_york_los_angeles":{"summary":"DMS input: New York → Los Angeles","value":{"latA":"40°42'46\"N","lonA":"74°0'21.6\"W","latB":"34.0522","lonB":"-118.2437"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"new_york_london":{"summary":"New York → London","value":{"tool":"bearing-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Initial bearing","value":"51.21° (NE)"},{"metric":"Final bearing","value":"108.33° (ESE)"}]},"credits_used":5,"credits_remaining":null}},"dms_input_new_york_los_angeles":{"summary":"DMS input: New York → Los Angeles","value":{"tool":"bearing-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Initial bearing","value":"273.69° (W)"},{"metric":"Final bearing","value":"245.92° (WSW)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Bearing","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bearing-distance-resection-calculator":{"post":{"operationId":"run_bearing_distance_resection_calculator","summary":"Bearing Distance Resection Calculator","tags":["Calculators"],"description":"Find your position from bearing and/or distance observations to two known points — the surveying technique of resection. Supports bearing+bearing, distance+distance (trilateration) and mixed bearing+distance observations, and reports a verification bearing/distance back to both points.\n\n[Try Bearing Distance Resection Calculator in your browser →](https://iotools.cloud/tool/bearing-distance-resection-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latA":{"type":"string","description":"Point A — Latitude"},"lonA":{"type":"string","description":"Point A — Longitude"},"bearingA":{"type":"number","description":"Bearing to A (°)"},"distanceA":{"type":"number","description":"Distance to A (m)"},"latB":{"type":"string","description":"Point B — Latitude"},"lonB":{"type":"string","description":"Point B — Longitude"},"bearingB":{"type":"number","description":"Bearing to B (°)"},"distanceB":{"type":"number","description":"Distance to B (m)"},"side":{"enum":["left","right"],"description":"Side of line A→B"}},"required":["latA","lonA","latB","lonB"]},"examples":{"bearing_bearing_two_point_resection_by_angle":{"summary":"Bearing + Bearing (two-point resection by angle)","value":{"latA":"40.7484","lonA":"-73.9857","bearingA":"249.71","distanceA":"","latB":"40.7527","lonB":"-73.9772","bearingB":"38.22","distanceB":"","side":"right"}},"distance_distance_trilateration":{"summary":"Distance + Distance (trilateration)","value":{"latA":"40.7484","lonA":"-73.9857","bearingA":"","distanceA":"512.48","latB":"40.7527","lonB":"-73.9772","bearingB":"","distanceB":"381.65","side":"right"}},"bearing_a_distance_b_mixed":{"summary":"Bearing (A) + Distance (B), mixed","value":{"latA":"40.7484","lonA":"-73.9857","bearingA":"249.71","distanceA":"","latB":"40.7527","lonB":"-73.9772","bearingB":"","distanceB":"381.65","side":"right"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bearing_bearing_two_point_resection_by_angle":{"summary":"Bearing + Bearing (two-point resection by angle)","value":{"tool":"bearing-distance-resection-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Method","value":"Bearing + Bearing"},{"metric":"Resected Latitude","value":"40.750001"},{"metric":"Resected Longitude","value":"-73.979999"},{"metric":"Distance to A (m)","value":"512.56"},{"metric":"Bearing to A","value":"249.71°"},{"metric":"Distance to B (m)","value":"381.56"},{"metric":"Bearing to B","value":"38.22°"}]},"credits_used":5,"credits_remaining":null}},"distance_distance_trilateration":{"summary":"Distance + Distance (trilateration)","value":{"tool":"bearing-distance-resection-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Method","value":"Distance + Distance (trilateration)"},{"metric":"Resected Latitude","value":"40.750000"},{"metric":"Resected Longitude","value":"-73.980000"},{"metric":"Distance to A (m)","value":"512.48"},{"metric":"Bearing to A","value":"249.71°"},{"metric":"Distance to B (m)","value":"381.65"},{"metric":"Bearing to B","value":"38.22°"}]},"credits_used":5,"credits_remaining":null}},"bearing_a_distance_b_mixed":{"summary":"Bearing (A) + Distance (B), mixed","value":{"tool":"bearing-distance-resection-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Method","value":"Bearing (A) + Distance (B)"},{"metric":"Resected Latitude","value":"40.750000"},{"metric":"Resected Longitude","value":"-73.980000"},{"metric":"Distance to A (m)","value":"512.45"},{"metric":"Bearing to A","value":"249.71°"},{"metric":"Distance to B (m)","value":"381.65"},{"metric":"Bearing to B","value":"38.23°"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bearing-life-calculator":{"post":{"operationId":"run_bearing_life_calculator","summary":"Bearing Life Calculator","tags":["Calculators"],"description":"Calculate a rolling-element bearing's L10 basic rating life (ISO 281) from its dynamic load rating, equivalent load, and rotational speed — in million revolutions, hours, and calendar service life at your actual duty cycle.\n\n[Try Bearing Life Calculator in your browser →](https://iotools.cloud/tool/bearing-life-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bearingType":{"enum":["ball","roller"],"description":"Bearing Type"},"dynamicLoadRating":{"type":"number","description":"Dynamic Load Rating (C)","minimum":0},"equivalentLoad":{"type":"number","description":"Equivalent Dynamic Load (P)","minimum":0},"speed":{"type":"number","description":"Rotational Speed (rpm)","minimum":0},"hoursPerDay":{"type":"number","description":"Operating Hours per Day","minimum":0.1,"maximum":24}},"required":[]},"examples":{"ball_bearing_1500_rpm_24_7_duty":{"summary":"Ball bearing, 1500 rpm, 24/7 duty","value":{"bearingType":"ball","dynamicLoadRating":"25","equivalentLoad":"5","speed":"1500","hoursPerDay":"24"}},"roller_bearing_single_16_hour_shift":{"summary":"Roller bearing, single 16-hour shift","value":{"bearingType":"roller","dynamicLoadRating":"40","equivalentLoad":"8","speed":"600","hoursPerDay":"16"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ball_bearing_1500_rpm_24_7_duty":{"summary":"Ball bearing, 1500 rpm, 24/7 duty","value":{"tool":"bearing-life-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Bearing type","value":"Ball bearing"},{"quantity":"Life exponent (p)","value":"3"},{"quantity":"Load ratio (C ÷ P)","value":"5"},{"quantity":"L10 life","value":"125 million revolutions"},{"quantity":"L10h life","value":"1388.89 hours"},{"quantity":"Service life at duty cycle (days)","value":"57.8704"},{"quantity":"Service life at duty cycle (years)","value":"0.158549"}],"breakdown":"L10 = (C ÷ P)^p = (25 ÷ 5)^3 = 5^3 = 125 million rev\nL10h = L10 × 10⁶ ÷ (60 × n) = 125 × 10⁶ ÷ (60 × 1500) = 1388.89 hours\nAt 24 h/day: 57.8704 days ≈ 0.158549 years\nL10 is the basic rating life — 90% of an identical bearing population reaches or exceeds it. Actual life varies with lubrication, contamination, alignment and load variation."},"credits_used":5,"credits_remaining":null}},"roller_bearing_single_16_hour_shift":{"summary":"Roller bearing, single 16-hour shift","value":{"tool":"bearing-life-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Bearing type","value":"Roller bearing"},{"quantity":"Life exponent (p)","value":"10/3"},{"quantity":"Load ratio (C ÷ P)","value":"5"},{"quantity":"L10 life","value":"213.747 million revolutions"},{"quantity":"L10h life","value":"5937.42 hours"},{"quantity":"Service life at duty cycle (days)","value":"371.089"},{"quantity":"Service life at duty cycle (years)","value":"1.01668"}],"breakdown":"L10 = (C ÷ P)^p = (40 ÷ 8)^10/3 = 5^3.33333 = 213.747 million rev\nL10h = L10 × 10⁶ ÷ (60 × n) = 213.747 × 10⁶ ÷ (60 × 600) = 5937.42 hours\nAt 16 h/day: 371.089 days ≈ 1.01668 years\nL10 is the basic rating life — 90% of an identical bearing population reaches or exceeds it. Actual life varies with lubrication, contamination, alignment and load variation."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"L10 Rating Life","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/belt-length-calculator":{"post":{"operationId":"run_belt_length_calculator","summary":"Belt Length Calculator","tags":["Calculators"],"description":"Calculate the belt length for a two-pulley drive from the pulley diameters and centre distance, for open or crossed belts. Also reports the wrap (contact) angle on each pulley, the speed ratio, and — from a driver speed — the driven pulley speed and belt linear speed. Works in mm, cm or inches.\n\n[Try Belt Length Calculator in your browser →](https://iotools.cloud/tool/belt-length-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["mm","cm","in"],"description":"Units"},"smallDiameter":{"type":"number","description":"Small Pulley Diameter (D₁)","minimum":0},"largeDiameter":{"type":"number","description":"Large Pulley Diameter (D₂)","minimum":0},"centerDistance":{"type":"number","description":"Centre Distance (C)","minimum":0},"beltType":{"enum":["open","crossed"],"description":"Belt Arrangement"},"driverRpm":{"type":"number","description":"Small Pulley Speed (rpm, optional)","minimum":0}},"required":[]},"examples":{"open_belt_100_mm_and_250_mm_pulleys_500_mm_centres":{"summary":"Open belt — 100 mm and 250 mm pulleys, 500 mm centres","value":{"unit":"mm","smallDiameter":"100","largeDiameter":"250","centerDistance":"500","beltType":"open","driverRpm":""}},"open_belt_with_a_1450_rpm_driver_belt_and_driven_speeds":{"summary":"Open belt with a 1450 rpm driver — belt and driven speeds","value":{"unit":"mm","smallDiameter":"100","largeDiameter":"250","centerDistance":"500","beltType":"open","driverRpm":"1450"}},"crossed_belt_4_in_and_10_in_pulleys_20_in_centres":{"summary":"Crossed belt — 4 in and 10 in pulleys, 20 in centres","value":{"unit":"in","smallDiameter":"4","largeDiameter":"10","centerDistance":"20","beltType":"crossed","driverRpm":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"open_belt_100_mm_and_250_mm_pulleys_500_mm_centres":{"summary":"Open belt — 100 mm and 250 mm pulleys, 500 mm centres","value":{"tool":"belt-length-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Belt length (L)","value":"1561.03 mm","other-units":"156.103 cm · 61.4578 in"},{"quantity":"Wrap angle — small pulley","value":"162.746°","other-units":"2.84046 rad"},{"quantity":"Wrap angle — large pulley","value":"197.254°","other-units":"3.44273 rad"},{"quantity":"Speed ratio (D₂ : D₁)","value":"2.5 : 1","other-units":"driven speed = 0.4 × driver speed"},{"quantity":"Belt span between pulleys","value":"494.343 mm","other-units":"49.4343 cm · 19.4623 in"}],"breakdown":"Open belt drive\nL = 2C + (π/2)(D₁ + D₂) + (D₂ − D₁)² ÷ 4C\nD₁ = 100 mm   D₂ = 250 mm   C = 500 mm\nL = 1561.03 mm (156.103 cm · 61.4578 in)\nWrap angles: 162.746° on the small pulley, 197.254° on the large one.\nThis is a theoretical length — round up to the nearest stock belt size and check the manufacturer's pitch-length table before ordering."},"credits_used":5,"credits_remaining":null}},"open_belt_with_a_1450_rpm_driver_belt_and_driven_speeds":{"summary":"Open belt with a 1450 rpm driver — belt and driven speeds","value":{"tool":"belt-length-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Belt length (L)","value":"1561.03 mm","other-units":"156.103 cm · 61.4578 in"},{"quantity":"Wrap angle — small pulley","value":"162.746°","other-units":"2.84046 rad"},{"quantity":"Wrap angle — large pulley","value":"197.254°","other-units":"3.44273 rad"},{"quantity":"Speed ratio (D₂ : D₁)","value":"2.5 : 1","other-units":"driven speed = 0.4 × driver speed"},{"quantity":"Belt span between pulleys","value":"494.343 mm","other-units":"49.4343 cm · 19.4623 in"},{"quantity":"Driven (large) pulley speed","value":"580 rpm","other-units":"9.66667 rev/s"},{"quantity":"Belt linear speed","value":"7.59218 m/s","other-units":"1494.52 ft/min"}],"breakdown":"Open belt drive\nL = 2C + (π/2)(D₁ + D₂) + (D₂ − D₁)² ÷ 4C\nD₁ = 100 mm   D₂ = 250 mm   C = 500 mm\nL = 1561.03 mm (156.103 cm · 61.4578 in)\nWrap angles: 162.746° on the small pulley, 197.254° on the large one.\nThis is a theoretical length — round up to the nearest stock belt size and check the manufacturer's pitch-length table before ordering."},"credits_used":5,"credits_remaining":null}},"crossed_belt_4_in_and_10_in_pulleys_20_in_centres":{"summary":"Crossed belt — 4 in and 10 in pulleys, 20 in centres","value":{"tool":"belt-length-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Belt length (L)","value":"64.4411 in","other-units":"1636.81 mm · 163.681 cm"},{"quantity":"Wrap angle — small pulley","value":"220.975°","other-units":"3.85673 rad"},{"quantity":"Wrap angle — large pulley","value":"220.975°","other-units":"3.85673 rad"},{"quantity":"Speed ratio (D₂ : D₁)","value":"2.5 : 1","other-units":"driven speed = 0.4 × driver speed"},{"quantity":"Belt span between pulleys","value":"18.735 in","other-units":"475.869 mm · 47.5869 cm"}],"breakdown":"Crossed belt drive\nL = 2C + (π/2)(D₁ + D₂) + (D₁ + D₂)² ÷ 4C\nD₁ = 4 in   D₂ = 10 in   C = 20 in\nL = 64.4411 in (1636.81 mm · 163.681 cm)\nWrap angles: 220.975° on the small pulley, 220.975° on the large one.\nThis is a theoretical length — round up to the nearest stock belt size and check the manufacturer's pitch-length table before ordering."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Belt & Drive Geometry","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"},"other-units":{"type":"string","description":"Other units"}}},"x-iotools-columns":["quantity","value","other-units"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bicycle-gear-ratio-calculator":{"post":{"operationId":"run_bicycle_gear_ratio_calculator","summary":"Bicycle Gear Ratio Calculator","tags":["Calculators"],"description":"Calculate bicycle gear ratio, gear inches, and development (distance traveled per pedal revolution) from chainring teeth, cog teeth, and wheel size — 700c, 650b, 26\", 29er, or a custom diameter.\n\n[Try Bicycle Gear Ratio Calculator in your browser →](https://iotools.cloud/tool/bicycle-gear-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"chainringTeeth":{"type":"number","description":"Chainring teeth","minimum":1},"cogTeeth":{"type":"number","description":"Cog teeth","minimum":1},"wheelSize":{"enum":["700c","650b","26in","29er","custom"],"description":"Wheel size"},"customWheelDiameter":{"type":"number","description":"Custom wheel diameter (inches)","minimum":1}},"required":[]},"examples":{"50t_x_17t_on_a_700c_wheel":{"summary":"50t x 17t on a 700c wheel","value":{"chainringTeeth":"50","cogTeeth":"17","wheelSize":"700c","customWheelDiameter":""}},"34t_x_28t_on_a_29er_climbing_gear":{"summary":"34t x 28t on a 29er (climbing gear)","value":{"chainringTeeth":"34","cogTeeth":"28","wheelSize":"29er","customWheelDiameter":""}},"missing_input":{"summary":"Missing input","value":{"chainringTeeth":"","cogTeeth":"","wheelSize":"700c","customWheelDiameter":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"50t_x_17t_on_a_700c_wheel":{"summary":"50t x 17t on a 700c wheel","value":{"tool":"bicycle-gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gear Ratio","value":"2.94"},{"metric":"Gear Inches","value":"79.41″"},{"metric":"Wheel Circumference","value":"7.07 ft (2.15 m)"},{"metric":"Development (per pedal revolution)","value":"20.79 ft (6.34 m)"}]},"credits_used":5,"credits_remaining":null}},"34t_x_28t_on_a_29er_climbing_gear":{"summary":"34t x 28t on a 29er (climbing gear)","value":{"tool":"bicycle-gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gear Ratio","value":"1.21"},{"metric":"Gear Inches","value":"35.21″"},{"metric":"Wheel Circumference","value":"7.59 ft (2.31 m)"},{"metric":"Development (per pedal revolution)","value":"9.22 ft (2.81 m)"}]},"credits_used":5,"credits_remaining":null}},"missing_input":{"summary":"Missing input","value":{"tool":"bicycle-gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Message","value":"Enter a chainring and cog tooth count greater than zero."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/big-integer-calculator":{"post":{"operationId":"run_big_integer_calculator","summary":"Big Integer Calculator","tags":["Calculators"],"description":"Add, subtract, multiply, divide, exponentiate, or find the modulo of integers of any size — beyond JavaScript's safe-integer limit — using exact arbitrary-precision arithmetic.\n\n[Try Big Integer Calculator in your browser →](https://iotools.cloud/tool/big-integer-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numberA":{"type":"string","description":"Number A"},"operation":{"enum":["add","subtract","multiply","divide","power","modulo"],"description":"Operation"},"numberB":{"type":"string","description":"Number B"}},"required":["numberA","numberB"]},"examples":{"add_two_30_digit_numbers":{"summary":"Add two 30-digit numbers","value":{"numberA":"123456789012345678901234567890","operation":"add","numberB":"987654321098765432109876543210"}},"subtract_two_30_digit_numbers":{"summary":"Subtract two 30-digit numbers","value":{"numberA":"123456789012345678901234567890","operation":"subtract","numberB":"987654321098765432109876543210"}},"multiply_two_30_digit_numbers":{"summary":"Multiply two 30-digit numbers","value":{"numberA":"123456789012345678901234567890","operation":"multiply","numberB":"987654321098765432109876543210"}},"divide_with_remainder":{"summary":"Divide with remainder","value":{"numberA":"100000000000000000000","operation":"divide","numberB":"3"}},"2_to_the_power_of_128":{"summary":"2 to the power of 128","value":{"numberA":"2","operation":"power","numberB":"128"}},"modulo_with_a_negative_dividend":{"summary":"Modulo with a negative dividend","value":{"numberA":"-17","operation":"modulo","numberB":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"add_two_30_digit_numbers":{"summary":"Add two 30-digit numbers","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"1111111110111111111011111111100"},"credits_used":5,"credits_remaining":null}},"subtract_two_30_digit_numbers":{"summary":"Subtract two 30-digit numbers","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"-864197532086419753208641975320"},"credits_used":5,"credits_remaining":null}},"multiply_two_30_digit_numbers":{"summary":"Multiply two 30-digit numbers","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"121932631137021795226185032733622923332237463801111263526900"},"credits_used":5,"credits_remaining":null}},"divide_with_remainder":{"summary":"Divide with remainder","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"33333333333333333333 remainder 1"},"credits_used":5,"credits_remaining":null}},"2_to_the_power_of_128":{"summary":"2 to the power of 128","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"340282366920938463463374607431768211456"},"credits_used":5,"credits_remaining":null}},"modulo_with_a_negative_dividend":{"summary":"Modulo with a negative dividend","value":{"tool":"big-integer-calculator","tool_version":"1.0.2","outputs":{"result":"-2"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/binomial-theorem-expansion-calculator":{"post":{"operationId":"run_binomial_theorem_expansion_calculator","summary":"Binomial Theorem Expansion Calculator","tags":["Calculators"],"description":"Expand (a + b)^n for any integer exponent up to 50 using the binomial theorem — every term, its binomial coefficient, and the running coefficient sums, computed with exact big-integer arithmetic.\n\n[Try Binomial Theorem Expansion Calculator in your browser →](https://iotools.cloud/tool/binomial-theorem-expansion-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"termA":{"type":"string","description":"Term a"},"termB":{"type":"string","description":"Term b"},"exponent":{"type":"number","description":"Exponent (n)","minimum":0,"maximum":50}},"required":["termA","termB"]},"examples":{"2x_3_4":{"summary":"(2x + 3)^4","value":{"termA":"2x","termB":"3","exponent":"4"}},"x_1_3_negative_term_sums_to_zero":{"summary":"(x - 1)^3 — negative term, sums to zero","value":{"termA":"x","termB":"-1","exponent":"3"}},"5_2_0_zero_exponent":{"summary":"(5 + 2)^0 — zero exponent","value":{"termA":"5","termB":"2","exponent":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3_4":{"summary":"(2x + 3)^4","value":{"tool":"binomial-theorem-expansion-calculator","tool_version":"1.0.2","outputs":{"expression":"(2x + 3)^4","expansion":"(2x + 3)^4 = 16x^4 + 96x^3 + 216x^2 + 216x + 81","terms":[{"k":"0","c-n-k":"1","coefficient":"16","term":"16x^4"},{"k":"1","c-n-k":"4","coefficient":"96","term":"96x^3"},{"k":"2","c-n-k":"6","coefficient":"216","term":"216x^2"},{"k":"3","c-n-k":"4","coefficient":"216","term":"216x"},{"k":"4","c-n-k":"1","coefficient":"81","term":"81"}],"termCount":"5","sumBinomialCoefficients":"16","sumCoefficients":"625"},"credits_used":5,"credits_remaining":null}},"x_1_3_negative_term_sums_to_zero":{"summary":"(x - 1)^3 — negative term, sums to zero","value":{"tool":"binomial-theorem-expansion-calculator","tool_version":"1.0.2","outputs":{"expression":"(x - 1)^3","expansion":"(x - 1)^3 = x^3 - 3x^2 + 3x - 1","terms":[{"k":"0","c-n-k":"1","coefficient":"1","term":"x^3"},{"k":"1","c-n-k":"3","coefficient":"-3","term":"-3x^2"},{"k":"2","c-n-k":"3","coefficient":"3","term":"3x"},{"k":"3","c-n-k":"1","coefficient":"-1","term":"-1"}],"termCount":"4","sumBinomialCoefficients":"8","sumCoefficients":"0"},"credits_used":5,"credits_remaining":null}},"5_2_0_zero_exponent":{"summary":"(5 + 2)^0 — zero exponent","value":{"tool":"binomial-theorem-expansion-calculator","tool_version":"1.0.2","outputs":{"expression":"(5 + 2)^0","expansion":"(5 + 2)^0 = 1","terms":[{"k":"0","c-n-k":"1","coefficient":"1","term":"1"}],"termCount":"1","sumBinomialCoefficients":"1","sumCoefficients":"1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"expression":{"type":"string","description":"Expression"},"expansion":{"type":"string","description":"Full Expansion"},"terms":{"type":"array","description":"Terms","items":{"type":"object","properties":{"k":{"type":"string","description":"k"},"c-n-k":{"type":"string","description":"C(n,k)"},"coefficient":{"type":"string","description":"Coefficient"},"term":{"type":"string","description":"Term"}}},"x-iotools-columns":["k","c-n-k","coefficient","term"]},"termCount":{"type":"string","description":"Number of Terms"},"sumBinomialCoefficients":{"type":"string","description":"Sum of Binomial Coefficients"},"sumCoefficients":{"type":"string","description":"Sum of All Coefficients"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/biological-age-calculator":{"post":{"operationId":"run_biological_age_calculator","summary":"Biological Age Calculator","tags":["Calculators"],"description":"Estimate your biological (functional) age from 12 lifestyle and health factors — heart rate, exercise, blood pressure, diet, sleep, smoking, stress and more — grouped into four dimensions with a breakdown of what's aging you faster or slower than your years.\n\n[Try Biological Age Calculator in your browser →](https://iotools.cloud/tool/biological-age-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"age":{"type":"number","description":"Chronological age","minimum":1,"maximum":120},"restingHeartRate":{"enum":["under-50","50-60","61-70","71-80","81-90","over-90"],"description":"Resting heart rate"},"exerciseFrequency":{"enum":["sedentary","light","moderate","active","athlete"],"description":"Exercise frequency"},"bloodPressure":{"enum":["optimal","normal","elevated","high"],"description":"Blood pressure"},"bmiCategory":{"enum":["underweight","normal","overweight","obese-1","obese-2"],"description":"BMI category"},"dietQuality":{"enum":["poor","fair","good","excellent"],"description":"Diet quality"},"waterIntake":{"enum":["low","moderate","good","excellent"],"description":"Daily water intake"},"sleep":{"enum":["under-5","5-6","7-8","9-plus"],"description":"Average sleep"},"smokingStatus":{"enum":["never","former","light","moderate","heavy"],"description":"Smoking status"},"alcoholConsumption":{"enum":["none","light","moderate","heavy"],"description":"Alcohol consumption"},"stressLevel":{"enum":["low","moderate","high","chronic"],"description":"Stress level"},"socialConnections":{"enum":["isolated","limited","moderate","strong"],"description":"Social connections"},"mentalStimulation":{"enum":["low","moderate","high","very-high"],"description":"Mental stimulation"}},"required":["age"]},"examples":{"35_year_old_healthy_across_the_board":{"summary":"35-year-old, healthy across the board","value":{"age":"35","restingHeartRate":"50-60","exerciseFrequency":"active","bloodPressure":"optimal","bmiCategory":"normal","dietQuality":"excellent","waterIntake":"excellent","sleep":"7-8","smokingStatus":"never","alcoholConsumption":"none","stressLevel":"low","socialConnections":"strong","mentalStimulation":"high"}},"45_year_old_sedentary_and_high_stress":{"summary":"45-year-old, sedentary and high-stress","value":{"age":"45","restingHeartRate":"over-90","exerciseFrequency":"sedentary","bloodPressure":"high","bmiCategory":"obese-1","dietQuality":"poor","waterIntake":"low","sleep":"under-5","smokingStatus":"moderate","alcoholConsumption":"heavy","stressLevel":"chronic","socialConnections":"isolated","mentalStimulation":"low"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"35_year_old_healthy_across_the_board":{"summary":"35-year-old, healthy across the board","value":{"tool":"biological-age-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Chronological Age","value":"35 years"},{"metric":"Estimated Biological Age","value":"15 years"},{"metric":"Difference","value":"20 years younger than your age"},{"metric":"Cardiovascular & Fitness","value":"6 yr younger"},{"metric":"Metabolic & Body","value":"5 yr younger"},{"metric":"Lifestyle & Recovery","value":"3 yr younger"},{"metric":"Mental & Social","value":"6 yr younger"}],"focus":"All four dimensions are net-neutral or better — keep up your current habits."},"credits_used":5,"credits_remaining":null}},"45_year_old_sedentary_and_high_stress":{"summary":"45-year-old, sedentary and high-stress","value":{"tool":"biological-age-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Chronological Age","value":"45 years"},{"metric":"Estimated Biological Age","value":"87 years"},{"metric":"Difference","value":"42 years older than your age"},{"metric":"Cardiovascular & Fitness","value":"11 yr older"},{"metric":"Metabolic & Body","value":"8 yr older"},{"metric":"Lifestyle & Recovery","value":"13 yr older"},{"metric":"Mental & Social","value":"10 yr older"}],"focus":"Lifestyle & Recovery is adding the most years — improving it has the biggest potential impact."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Biological Age Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"focus":{"type":"string","description":"Biggest opportunity"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bird-cage-size-calculator":{"post":{"operationId":"run_bird_cage_size_calculator","summary":"Bird Cage Size Calculator","tags":["Calculators"],"description":"Calculate the minimum bird cage dimensions, bar spacing, and volume for your species — finch through macaw — scaled up automatically for multiple birds.\n\n[Try Bird Cage Size Calculator in your browser →](https://iotools.cloud/tool/bird-cage-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"species":{"enum":["finch","canary","budgie","lovebird","parrotlet","cockatiel","conure","african_grey","amazon","cockatoo","macaw"],"description":"Species"},"birdCount":{"type":"number","description":"Number of birds","minimum":1},"unit":{"enum":["in","cm"],"description":"Unit"}},"required":[]},"examples":{"single_budgie_inches":{"summary":"Single budgie, inches","value":{"species":"budgie","birdCount":"1","unit":"in"}},"pair_of_cockatiels_centimeters":{"summary":"Pair of cockatiels, centimeters","value":{"species":"cockatiel","birdCount":"2","unit":"cm"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_budgie_inches":{"summary":"Single budgie, inches","value":{"tool":"bird-cage-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Species","value":"Budgerigar (Budgie)"},{"metric":"Number of Birds","value":"1"},{"metric":"Minimum Width","value":"20.0 in"},{"metric":"Minimum Depth","value":"18.0 in"},{"metric":"Minimum Height","value":"24.0 in"},{"metric":"Minimum Volume","value":"5.0 ft³ (142 L)"},{"metric":"Bar Spacing","value":"0.375 in to 0.500 in"},{"metric":"Typical Wingspan","value":"12.0 in"}]},"credits_used":5,"credits_remaining":null}},"pair_of_cockatiels_centimeters":{"summary":"Pair of cockatiels, centimeters","value":{"tool":"bird-cage-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Species","value":"Cockatiel"},{"metric":"Number of Birds","value":"2"},{"metric":"Minimum Width","value":"68.2 cm"},{"metric":"Minimum Depth","value":"68.2 cm"},{"metric":"Minimum Height","value":"61.0 cm"},{"metric":"Minimum Volume","value":"10.0 ft³ (283 L)"},{"metric":"Bar Spacing","value":"1.270 cm to 1.587 cm"},{"metric":"Typical Wingspan","value":"30.5 cm"},{"metric":"Floor Area Scale","value":"1.25× (vs. a single bird)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Recommended Cage Size","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bitcoin-investment-calculator":{"post":{"operationId":"run_bitcoin_investment_calculator","summary":"Bitcoin Investment Calculator","tags":["Calculators"],"description":"Project Bitcoin holdings, future value, profit, ROI, and CAGR from an investment amount, purchase price, and target price — with bear/base/bull scenarios, S&P 500 and gold benchmarks, and a return-multiple milestone table.\n\n[Try Bitcoin Investment Calculator in your browser →](https://iotools.cloud/tool/bitcoin-investment-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"investmentAmount":{"type":"number","description":"Investment Amount ($)","minimum":0.01,"maximum":1000000000},"purchasePrice":{"type":"number","description":"BTC Purchase Price ($)","minimum":0.01,"maximum":100000000},"targetPrice":{"type":"number","description":"Target BTC Price ($)","minimum":0.01,"maximum":100000000},"holdingPeriodYears":{"type":"number","description":"Holding Period (years)","minimum":0.1,"maximum":100},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["investmentAmount","purchasePrice","targetPrice"]},"examples":{"1_000_at_45_000_btc_targeting_120_000_btc_over_4_years":{"summary":"$1,000 at $45,000/BTC targeting $120,000/BTC over 4 years","value":{"investmentAmount":"1000","purchasePrice":"45000","targetPrice":"120000","holdingPeriodYears":"4","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_000_at_45_000_btc_targeting_120_000_btc_over_4_years":{"summary":"$1,000 at $45,000/BTC targeting $120,000/BTC over 4 years","value":{"tool":"bitcoin-investment-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Investment Amount","value":"$1,000.00"},{"metric":"BTC Purchase Price","value":"$45,000.00"},{"metric":"Target BTC Price","value":"$120,000.00"},{"metric":"BTC Amount Owned","value":"0.02222222 BTC"},{"metric":"Satoshi Equivalent","value":"2,222,222 sats"},{"metric":"Future Value","value":"$2,666.67"},{"metric":"Profit/Loss","value":"$1,666.67"},{"metric":"Result","value":"Profit"},{"metric":"ROI","value":"+166.67%"},{"metric":"CAGR (over 4 yr)","value":"+27.79%"}],"scenarios":[{"scenario":"Bear (0.5×)","btc-price":"$60,000.00","future-value":"$1,333.33","profit-loss":"$333.33","roi":"+33.33%"},{"scenario":"Base (target)","btc-price":"$120,000.00","future-value":"$2,666.67","profit-loss":"$1,666.67","roi":"+166.67%"},{"scenario":"Bull (2×)","btc-price":"$240,000.00","future-value":"$5,333.33","profit-loss":"$4,333.33","roi":"+433.33%"}],"benchmarks":[{"asset":"Bitcoin (this projection)","avg-annual-return":"+27.79%","projected-value":"$2,666.67"},{"asset":"S&P 500 (historical avg.)","avg-annual-return":"+10.00%","projected-value":"$1,464.10"},{"asset":"Gold (historical avg.)","avg-annual-return":"+7.00%","projected-value":"$1,310.80"}],"milestones":[{"return-multiple":"1.5×","btc-price-needed":"$67,500.00"},{"return-multiple":"2×","btc-price-needed":"$90,000.00"},{"return-multiple":"3×","btc-price-needed":"$135,000.00"},{"return-multiple":"5×","btc-price-needed":"$225,000.00"},{"return-multiple":"10×","btc-price-needed":"$450,000.00"},{"return-multiple":"20×","btc-price-needed":"$900,000.00"},{"return-multiple":"100×","btc-price-needed":"$4,500,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"scenarios":{"type":"array","description":"Bear / Base / Bull Scenarios","items":{"type":"object","properties":{"scenario":{"type":"string","description":"Scenario"},"btc-price":{"type":"string","description":"BTC Price"},"future-value":{"type":"string","description":"Future Value"},"profit-loss":{"type":"string","description":"Profit/Loss"},"roi":{"type":"string","description":"ROI"}}},"x-iotools-columns":["scenario","btc-price","future-value","profit-loss","roi"]},"benchmarks":{"type":"array","description":"Benchmark Comparison","items":{"type":"object","properties":{"asset":{"type":"string","description":"Asset"},"avg-annual-return":{"type":"string","description":"Avg. Annual Return"},"projected-value":{"type":"string","description":"Projected Value"}}},"x-iotools-columns":["asset","avg-annual-return","projected-value"]},"milestones":{"type":"array","description":"Return Milestones","items":{"type":"object","properties":{"return-multiple":{"type":"string","description":"Return Multiple"},"btc-price-needed":{"type":"string","description":"BTC Price Needed"}}},"x-iotools-columns":["return-multiple","btc-price-needed"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bitwise-calculator":{"post":{"operationId":"run_bitwise_calculator","summary":"Bitwise Calculator","tags":["Calculators"],"description":"Run AND, OR, XOR, NOT, left shift or right shift on two integers and see the exact decimal, hexadecimal and binary result — using arbitrary-precision BigInt math, with no 32-bit truncation.\n\n[Try Bitwise Calculator in your browser →](https://iotools.cloud/tool/bitwise-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numberA":{"type":"string","description":"Number A"},"operation":{"enum":["and","or","xor","not","lshift","rshift"],"description":"Operation"},"numberB":{"type":"string","description":"Number B"}},"required":["numberA"]},"examples":{"12_and_10":{"summary":"12 AND 10","value":{"numberA":"12","operation":"and","numberB":"10"}},"12_or_10":{"summary":"12 OR 10","value":{"numberA":"12","operation":"or","numberB":"10"}},"12_xor_10":{"summary":"12 XOR 10","value":{"numberA":"12","operation":"xor","numberB":"10"}},"not_5":{"summary":"NOT 5","value":{"numberA":"5","operation":"not","numberB":"10"}},"5_left_shift_2":{"summary":"5 Left Shift 2","value":{"numberA":"5","operation":"lshift","numberB":"2"}},"20_right_shift_2":{"summary":"20 Right Shift 2","value":{"numberA":"20","operation":"rshift","numberB":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12_and_10":{"summary":"12 AND 10","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"8"},{"property":"Hexadecimal","value":"0x8"},{"property":"Binary","value":"0b1000"}]},"credits_used":5,"credits_remaining":null}},"12_or_10":{"summary":"12 OR 10","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"14"},{"property":"Hexadecimal","value":"0xE"},{"property":"Binary","value":"0b1110"}]},"credits_used":5,"credits_remaining":null}},"12_xor_10":{"summary":"12 XOR 10","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"6"},{"property":"Hexadecimal","value":"0x6"},{"property":"Binary","value":"0b110"}]},"credits_used":5,"credits_remaining":null}},"not_5":{"summary":"NOT 5","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"-6"},{"property":"Hexadecimal","value":"-0x6"},{"property":"Binary","value":"-0b110"}]},"credits_used":5,"credits_remaining":null}},"5_left_shift_2":{"summary":"5 Left Shift 2","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"20"},{"property":"Hexadecimal","value":"0x14"},{"property":"Binary","value":"0b10100"}]},"credits_used":5,"credits_remaining":null}},"20_right_shift_2":{"summary":"20 Right Shift 2","value":{"tool":"bitwise-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Decimal","value":"5"},{"property":"Hexadecimal","value":"0x5"},{"property":"Binary","value":"0b101"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bitwise-shift-calculator":{"post":{"operationId":"run_bitwise_shift_calculator","summary":"Bitwise Shift Calculator","tags":["Calculators"],"description":"Left-shift or right-shift an integer — arithmetic/signed >> or logical/unsigned >>> — at a chosen bit width (8/16/32/64), showing the before/after binary pattern plus the decimal and hex result.\n\n[Try Bitwise Shift Calculator in your browser →](https://iotools.cloud/tool/bitwise-shift-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Value"},"shiftAmount":{"type":"number","description":"Shift Amount","minimum":0,"maximum":64},"shiftDirection":{"enum":["left","right-arithmetic","right-logical"],"description":"Shift Direction"},"bitWidth":{"enum":["8","16","32","64"],"description":"Bit Width"}},"required":["value"]},"examples":{"left_shift_5_by_2_bits_8_bit":{"summary":"Left shift 5 by 2 bits (8-bit)","value":{"value":"5","shiftAmount":"2","shiftDirection":"left","bitWidth":"8"}},"arithmetic_right_shift_8_by_1_bit_8_bit":{"summary":"Arithmetic right shift -8 by 1 bit (8-bit)","value":{"value":"-8","shiftAmount":"1","shiftDirection":"right-arithmetic","bitWidth":"8"}},"logical_right_shift_0xf0_by_4_bits_8_bit":{"summary":"Logical right shift 0xF0 by 4 bits (8-bit)","value":{"value":"0xF0","shiftAmount":"4","shiftDirection":"right-logical","bitWidth":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"left_shift_5_by_2_bits_8_bit":{"summary":"Left shift 5 by 2 bits (8-bit)","value":{"tool":"bitwise-shift-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Original Binary","value":"00000101"},{"property":"Shifted Binary","value":"00010100"},{"property":"Decimal Result","value":"20"},{"property":"Hex Result","value":"0x14"}]},"credits_used":5,"credits_remaining":null}},"arithmetic_right_shift_8_by_1_bit_8_bit":{"summary":"Arithmetic right shift -8 by 1 bit (8-bit)","value":{"tool":"bitwise-shift-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Original Binary","value":"11111000"},{"property":"Shifted Binary","value":"11111100"},{"property":"Decimal Result","value":"-4"},{"property":"Hex Result","value":"0xFC"}]},"credits_used":5,"credits_remaining":null}},"logical_right_shift_0xf0_by_4_bits_8_bit":{"summary":"Logical right shift 0xF0 by 4 bits (8-bit)","value":{"tool":"bitwise-shift-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Original Binary","value":"11110000"},{"property":"Shifted Binary","value":"00001111"},{"property":"Decimal Result","value":"15"},{"property":"Hex Result","value":"0x0F"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Shift Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/black-scholes-option-pricing-calculator":{"post":{"operationId":"run_black_scholes_option_pricing_calculator","summary":"Black-Scholes Option Pricing Calculator","tags":["Calculators"],"description":"Price European call and put options with the Black-Scholes-Merton model. Enter spot price, strike price, days to expiry, volatility, risk-free rate and dividend yield to get option prices, delta, gamma, theta, vega, rho, breakeven, intrinsic value and time value.\n\n[Try Black-Scholes Option Pricing Calculator in your browser →](https://iotools.cloud/tool/black-scholes-option-pricing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spotPrice":{"type":"number","description":"Spot Price ($)","minimum":0.0001},"strikePrice":{"type":"number","description":"Strike Price ($)","minimum":0.0001},"daysToExpiry":{"type":"number","description":"Days to Expiry","minimum":0},"volatility":{"type":"number","description":"Volatility (%)","minimum":0.01,"maximum":1000},"riskFreeRate":{"type":"number","description":"Risk-Free Rate (%)","minimum":-100,"maximum":100},"dividendYield":{"type":"number","description":"Dividend Yield (%)","minimum":0,"maximum":100}},"required":["spotPrice","strikePrice","daysToExpiry","volatility","riskFreeRate"]},"examples":{"at_the_money_1_year_to_expiry":{"summary":"At-the-money, 1 year to expiry","value":{"spotPrice":"100","strikePrice":"100","daysToExpiry":"365","volatility":"20","riskFreeRate":"5","dividendYield":"0"}},"at_expiry_0_days_in_the_money_call":{"summary":"At expiry (0 days), in-the-money call","value":{"spotPrice":"110","strikePrice":"100","daysToExpiry":"0","volatility":"20","riskFreeRate":"5","dividendYield":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"at_the_money_1_year_to_expiry":{"summary":"At-the-money, 1 year to expiry","value":{"tool":"black-scholes-option-pricing-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"d1","value":"0.3500"},{"metric":"d2","value":"0.1500"},{"metric":"Call Price","value":"$10.4506"},{"metric":"Call Delta","value":"0.6368"},{"metric":"Call Theta (per day)","value":"-$0.0176"},{"metric":"Call Rho (per 1%)","value":"$0.5323"},{"metric":"Call Breakeven","value":"$110.4506"},{"metric":"Call Intrinsic Value","value":"$0.0000"},{"metric":"Call Time Value","value":"$10.4506"},{"metric":"Put Price","value":"$5.5735"},{"metric":"Put Delta","value":"-0.3632"},{"metric":"Put Theta (per day)","value":"-$0.0045"},{"metric":"Put Rho (per 1%)","value":"-$0.4189"},{"metric":"Put Breakeven","value":"$94.4265"},{"metric":"Put Intrinsic Value","value":"$0.0000"},{"metric":"Put Time Value","value":"$5.5735"},{"metric":"Gamma","value":"0.018762"},{"metric":"Vega (per 1%)","value":"$0.3752"}]},"credits_used":5,"credits_remaining":null}},"at_expiry_0_days_in_the_money_call":{"summary":"At expiry (0 days), in-the-money call","value":{"tool":"black-scholes-option-pricing-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"d1","value":"N/A"},{"metric":"d2","value":"N/A"},{"metric":"Call Price","value":"$10.0000"},{"metric":"Call Delta","value":"1.0000"},{"metric":"Call Theta (per day)","value":"$0.0000"},{"metric":"Call Rho (per 1%)","value":"$0.0000"},{"metric":"Call Breakeven","value":"$110.0000"},{"metric":"Call Intrinsic Value","value":"$10.0000"},{"metric":"Call Time Value","value":"$0.0000"},{"metric":"Put Price","value":"$0.0000"},{"metric":"Put Delta","value":"0.0000"},{"metric":"Put Theta (per day)","value":"$0.0000"},{"metric":"Put Rho (per 1%)","value":"$0.0000"},{"metric":"Put Breakeven","value":"$100.0000"},{"metric":"Put Intrinsic Value","value":"$0.0000"},{"metric":"Put Time Value","value":"$0.0000"},{"metric":"Gamma","value":"0.000000"},{"metric":"Vega (per 1%)","value":"$0.0000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/blood-alcohol-content-estimator":{"post":{"operationId":"run_blood_alcohol_content_estimator","summary":"Blood Alcohol Content (BAC) Estimator","tags":["Calculators"],"description":"Estimate blood alcohol content from body weight, sex, standard drinks consumed and hours elapsed, using the Widmark formula. A rough educational estimate only — never a substitute for a breathalyzer, and never a basis for deciding whether to drive.\n\n[Try Blood Alcohol Content (BAC) Estimator in your browser →](https://iotools.cloud/tool/blood-alcohol-content-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sex":{"enum":["male","female"],"description":"Biological Sex"},"weight":{"type":"number","description":"Body Weight","minimum":20,"maximum":400},"weightUnit":{"enum":["kg","lb"],"description":"Weight Unit"},"drinks":{"type":"number","description":"Standard Drinks Consumed","minimum":0,"maximum":30},"hoursSinceFirstDrink":{"type":"number","description":"Hours Since First Drink","minimum":0,"maximum":24}},"required":["weight"]},"examples":{"80_kg_male_4_standard_drinks_2_hours":{"summary":"80 kg male, 4 standard drinks, 2 hours","value":{"sex":"male","weight":"80","weightUnit":"kg","drinks":"4","hoursSinceFirstDrink":"2"}},"150_lb_female_2_standard_drinks_1_hour":{"summary":"150 lb female, 2 standard drinks, 1 hour","value":{"sex":"female","weight":"150","weightUnit":"lb","drinks":"2","hoursSinceFirstDrink":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"80_kg_male_4_standard_drinks_2_hours":{"summary":"80 kg male, 4 standard drinks, 2 hours","value":{"tool":"blood-alcohol-content-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Estimated BAC","value":"0.073%"},{"metric":"Status","value":"Caution"},{"metric":"US Legal Driving Limit (0.08%)","value":"Below limit"},{"metric":"Pure Alcohol Consumed","value":"56.0 g (4.0 standard drinks)"},{"metric":"Time Until Under 0.08%","value":"0 min"},{"metric":"Time Until Sober (0.00%)","value":"4 hr 52 min"}]},"credits_used":5,"credits_remaining":null}},"150_lb_female_2_standard_drinks_1_hour":{"summary":"150 lb female, 2 standard drinks, 1 hour","value":{"tool":"blood-alcohol-content-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Estimated BAC","value":"0.060%"},{"metric":"Status","value":"Buzzed"},{"metric":"US Legal Driving Limit (0.08%)","value":"Below limit"},{"metric":"Pure Alcohol Consumed","value":"28.0 g (2.0 standard drinks)"},{"metric":"Time Until Under 0.08%","value":"0 min"},{"metric":"Time Until Sober (0.00%)","value":"3 hr 59 min"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Estimated BAC","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/blood-sugar-converter":{"post":{"operationId":"run_blood_sugar_converter","summary":"Blood Sugar Converter","tags":["Calculators"],"description":"Convert a blood glucose reading between mg/dL and mmol/L, and see where it falls on the standard fasting and 2-hour post-meal (OGTT) reference ranges.\n\n[Try Blood Sugar Converter in your browser →](https://iotools.cloud/tool/blood-sugar-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"Glucose value","minimum":0.1},"unit":{"enum":["mgdl","mmol"],"description":"Unit"},"readingType":{"enum":["fasting","postMeal"],"description":"Reading type"}},"required":["value"]},"examples":{"100_mg_dl_fasting":{"summary":"100 mg/dL, fasting","value":{"value":"100","unit":"mgdl","readingType":"fasting"}},"5_5_mmol_l_2_hour_post_meal":{"summary":"5.5 mmol/L, 2-hour post-meal","value":{"value":"5.5","unit":"mmol","readingType":"postMeal"}},"45_mg_dl_severe_hypoglycemia_note":{"summary":"45 mg/dL — severe hypoglycemia note","value":{"value":"45","unit":"mgdl","readingType":"fasting"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_mg_dl_fasting":{"summary":"100 mg/dL, fasting","value":{"tool":"blood-sugar-converter","tool_version":"1.0.2","outputs":{"mgdl":"100 mg/dL","mmol":"5.5 mmol/L","category":"Prediabetes (Fasting)","referenceTable":[{"test":"Fasting","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"Fasting","category":"Normal (Fasting)","range":"70 mg/dL (3.9 mmol/L) – 100 mg/dL (5.5 mmol/L)"},{"test":"Fasting","category":"Prediabetes (Fasting)","range":"100 mg/dL (5.5 mmol/L) – 126 mg/dL (7.0 mmol/L)"},{"test":"Fasting","category":"Diabetes Range (Fasting)","range":"126 mg/dL (7.0 mmol/L) and above"},{"test":"2-Hour Post-Meal","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Normal (2-Hour Post-Meal)","range":"70 mg/dL (3.9 mmol/L) – 140 mg/dL (7.8 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Prediabetes (2-Hour Post-Meal)","range":"140 mg/dL (7.8 mmol/L) – 200 mg/dL (11.1 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Diabetes Range (2-Hour Post-Meal)","range":"200 mg/dL (11.1 mmol/L) and above"}],"notes":""},"credits_used":5,"credits_remaining":null}},"5_5_mmol_l_2_hour_post_meal":{"summary":"5.5 mmol/L, 2-hour post-meal","value":{"tool":"blood-sugar-converter","tool_version":"1.0.2","outputs":{"mgdl":"99 mg/dL","mmol":"5.5 mmol/L","category":"Normal (2-Hour Post-Meal)","referenceTable":[{"test":"Fasting","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"Fasting","category":"Normal (Fasting)","range":"70 mg/dL (3.9 mmol/L) – 100 mg/dL (5.5 mmol/L)"},{"test":"Fasting","category":"Prediabetes (Fasting)","range":"100 mg/dL (5.5 mmol/L) – 126 mg/dL (7.0 mmol/L)"},{"test":"Fasting","category":"Diabetes Range (Fasting)","range":"126 mg/dL (7.0 mmol/L) and above"},{"test":"2-Hour Post-Meal","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Normal (2-Hour Post-Meal)","range":"70 mg/dL (3.9 mmol/L) – 140 mg/dL (7.8 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Prediabetes (2-Hour Post-Meal)","range":"140 mg/dL (7.8 mmol/L) – 200 mg/dL (11.1 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Diabetes Range (2-Hour Post-Meal)","range":"200 mg/dL (11.1 mmol/L) and above"}],"notes":""},"credits_used":5,"credits_remaining":null}},"45_mg_dl_severe_hypoglycemia_note":{"summary":"45 mg/dL — severe hypoglycemia note","value":{"tool":"blood-sugar-converter","tool_version":"1.0.2","outputs":{"mgdl":"45 mg/dL","mmol":"2.5 mmol/L","category":"Hypoglycemia (Low)","referenceTable":[{"test":"Fasting","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"Fasting","category":"Normal (Fasting)","range":"70 mg/dL (3.9 mmol/L) – 100 mg/dL (5.5 mmol/L)"},{"test":"Fasting","category":"Prediabetes (Fasting)","range":"100 mg/dL (5.5 mmol/L) – 126 mg/dL (7.0 mmol/L)"},{"test":"Fasting","category":"Diabetes Range (Fasting)","range":"126 mg/dL (7.0 mmol/L) and above"},{"test":"2-Hour Post-Meal","category":"Hypoglycemia (Low)","range":"Below 70 mg/dL (3.9 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Normal (2-Hour Post-Meal)","range":"70 mg/dL (3.9 mmol/L) – 140 mg/dL (7.8 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Prediabetes (2-Hour Post-Meal)","range":"140 mg/dL (7.8 mmol/L) – 200 mg/dL (11.1 mmol/L)"},{"test":"2-Hour Post-Meal","category":"Diabetes Range (2-Hour Post-Meal)","range":"200 mg/dL (11.1 mmol/L) and above"}],"notes":"Below 54 mg/dL (3.0 mmol/L) is considered severe hypoglycemia — a medical emergency if symptomatic."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mgdl":{"type":"string","description":"mg/dL"},"mmol":{"type":"string","description":"mmol/L"},"category":{"type":"string","description":"Category"},"referenceTable":{"type":"array","description":"Reference ranges","items":{"type":"object","properties":{"test":{"type":"string","description":"Test"},"category":{"type":"string","description":"Category"},"range":{"type":"string","description":"Range"}}},"x-iotools-columns":["test","category","range"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bmi-calculator":{"post":{"operationId":"run_bmi_calculator","summary":"BMI Calculator","tags":["Calculators"],"description":"Calculate Body Mass Index (BMI) from your weight and height in metric or imperial units, with instant WHO category classification (Underweight, Normal, Overweight, Obese).\n\n[Try BMI Calculator in your browser →](https://iotools.cloud/tool/bmi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"weight":{"type":"number","description":"Weight","minimum":0.1},"weightUnit":{"enum":["kg","lb"],"description":"Weight Unit"},"height":{"type":"number","description":"Height","minimum":0.1},"heightUnit":{"enum":["cm","in"],"description":"Height Unit"}},"required":["weight","height"]},"examples":{"metric_70_kg_175_cm":{"summary":"Metric (70 kg, 175 cm)","value":{"weight":"70","weightUnit":"kg","height":"175","heightUnit":"cm"}},"imperial_200_lb_70_in":{"summary":"Imperial (200 lb, 70 in)","value":{"weight":"200","weightUnit":"lb","height":"70","heightUnit":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_70_kg_175_cm":{"summary":"Metric (70 kg, 175 cm)","value":{"tool":"bmi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"BMI","value":"22.86"},{"metric":"Category","value":"Normal weight"}]},"credits_used":5,"credits_remaining":null}},"imperial_200_lb_70_in":{"summary":"Imperial (200 lb, 70 in)","value":{"tool":"bmi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"BMI","value":"28.70"},{"metric":"Category","value":"Overweight"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bolt-torque-calculator":{"post":{"operationId":"run_bolt_torque_calculator","summary":"Bolt Torque Calculator","tags":["Calculators"],"description":"Work out the tightening torque for a bolted joint using T = K·F·d. Pick a thread size (ISO metric coarse/fine or UNC) and a property class (8.8, 10.9, 12.9, A2-70, SAE 5/8) and the preload is derived from proof load automatically, or enter a target clamp load directly. Results in N·m, lbf·ft, lbf·in and kgf·m, with the resulting bolt stress. Runs entirely in your browser.\n\n[Try Bolt Torque Calculator in your browser →](https://iotools.cloud/tool/bolt-torque-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["grade","preload"],"description":"Preload source"},"thread":{"enum":["M3","M4","M5","M6","M8","M8x1","M10","M10x1.25","M12","M12x1.25","M14","M16","M16x1.5","M18","M20","M20x1.5","M22","M24","M27","M30","M33","M36","1/4-20","5/16-18","3/8-16","1/2-13","5/8-11","3/4-10","custom"],"description":"Thread size"},"diameter":{"type":"number","description":"Nominal diameter (mm)","minimum":0.5,"maximum":200},"stressArea":{"type":"number","description":"Tensile stress area Aₛ (mm²)","minimum":0.1,"maximum":40000},"grade":{"enum":["4.6","4.8","5.8","8.8","9.8","10.9","12.9","A2-70","A2-80","SAE5","SAE8"],"description":"Bolt grade / property class"},"preloadPercent":{"type":"number","description":"Preload target (% of proof load)","minimum":25,"maximum":100},"preload":{"type":"number","description":"Target preload F (N)","minimum":1,"maximum":10000000},"condition":{"enum":["0.30","0.25","0.22","0.20","0.18","0.16","0.12","0.10","custom"],"description":"Joint condition (nut factor K)"},"nutFactor":{"type":"number","description":"Nut factor K","minimum":0.01,"maximum":1}},"required":[]},"examples":{"m10_grade_8_8_lightly_oiled_65_of_proof_load":{"summary":"M10 grade 8.8, lightly oiled, 65% of proof load","value":{"mode":"grade","thread":"M10","grade":"8.8","preloadPercent":"65","condition":"0.20"}},"m16_grade_10_9_zinc_plated_75_of_proof_load":{"summary":"M16 grade 10.9, zinc plated, 75% of proof load","value":{"mode":"grade","thread":"M16","grade":"10.9","preloadPercent":"75","condition":"0.22"}},"known_preload_20_kn_on_a_12_mm_bolt_k_0_20":{"summary":"Known preload: 20 kN on a 12 mm bolt, K = 0.20","value":{"mode":"preload","thread":"M12","preload":"20000","condition":"0.20"}},"1_2_13_unc_sae_grade_8_anti_seize_70_of_proof_load":{"summary":"1/2\"-13 UNC SAE Grade 8, anti-seize, 70% of proof load","value":{"mode":"grade","thread":"1/2-13","grade":"SAE8","preloadPercent":"70","condition":"0.10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"m10_grade_8_8_lightly_oiled_65_of_proof_load":{"summary":"M10 grade 8.8, lightly oiled, 65% of proof load","value":{"tool":"bolt-torque-calculator","tool_version":"1.0.2","outputs":{"torque":"43.73 N·m  (32.26 lbf·ft)","torqueTable":[{"unit":"N·m","value":"43.73"},{"unit":"N·cm","value":"4,373.2"},{"unit":"kgf·m","value":"4.459"},{"unit":"lbf·ft","value":"32.26"},{"unit":"lbf·in","value":"387.1"}],"preloadUsed":"21,866 N (21.87 kN) — 65% of proof load","boltStress":"377.0 MPa (65% of 580 MPa proof)","notes":"T = K · F · d = 0.20 × 21,866 N × 10 mm.\nK is an empirical constant that swallows thread and under-head friction — it varies with lubrication, coating, washer surface and reuse, so torque control alone typically scatters preload by ±25–30%. Do not substitute this estimate for torque-tension testing on a critical joint."},"credits_used":5,"credits_remaining":null}},"m16_grade_10_9_zinc_plated_75_of_proof_load":{"summary":"M16 grade 10.9, zinc plated, 75% of proof load","value":{"tool":"bolt-torque-calculator","tool_version":"1.0.2","outputs":{"torque":"344.02 N·m  (253.73 lbf·ft)","torqueTable":[{"unit":"N·m","value":"344.02"},{"unit":"N·cm","value":"34,401.8"},{"unit":"kgf·m","value":"35.080"},{"unit":"lbf·ft","value":"253.73"},{"unit":"lbf·in","value":"3,044.8"}],"preloadUsed":"97,733 N (97.73 kN) — 75% of proof load","boltStress":"622.5 MPa (75% of 830 MPa proof)","notes":"T = K · F · d = 0.22 × 97,733 N × 16 mm.\nK is an empirical constant that swallows thread and under-head friction — it varies with lubrication, coating, washer surface and reuse, so torque control alone typically scatters preload by ±25–30%. Do not substitute this estimate for torque-tension testing on a critical joint."},"credits_used":5,"credits_remaining":null}},"known_preload_20_kn_on_a_12_mm_bolt_k_0_20":{"summary":"Known preload: 20 kN on a 12 mm bolt, K = 0.20","value":{"tool":"bolt-torque-calculator","tool_version":"1.0.2","outputs":{"torque":"48.00 N·m  (35.40 lbf·ft)","torqueTable":[{"unit":"N·m","value":"48.00"},{"unit":"N·cm","value":"4,800.0"},{"unit":"kgf·m","value":"4.895"},{"unit":"lbf·ft","value":"35.40"},{"unit":"lbf·in","value":"424.8"}],"preloadUsed":"20,000 N (20.00 kN)","boltStress":"237.2 MPa","notes":"Bolt stress at this preload is 237.2 MPa — check it against your bolt's proof strength (ISO 8.8 ≈ 580–600 MPa, 10.9 ≈ 830 MPa, 12.9 ≈ 970 MPa).\nT = K · F · d = 0.20 × 20,000 N × 12 mm.\nK is an empirical constant that swallows thread and under-head friction — it varies with lubrication, coating, washer surface and reuse, so torque control alone typically scatters preload by ±25–30%. Do not substitute this estimate for torque-tension testing on a critical joint."},"credits_used":5,"credits_remaining":null}},"1_2_13_unc_sae_grade_8_anti_seize_70_of_proof_load":{"summary":"1/2\"-13 UNC SAE Grade 8, anti-seize, 70% of proof load","value":{"tool":"bolt-torque-calculator","tool_version":"1.0.2","outputs":{"torque":"67.27 N·m  (49.62 lbf·ft)","torqueTable":[{"unit":"N·m","value":"67.27"},{"unit":"N·cm","value":"6,727.1"},{"unit":"kgf·m","value":"6.860"},{"unit":"lbf·ft","value":"49.62"},{"unit":"lbf·in","value":"595.4"}],"preloadUsed":"52,969 N (52.97 kN) — 70% of proof load","boltStress":"578.9 MPa (70% of 827 MPa proof)","notes":"Nut factors at or below 0.12 assume a genuinely effective coating or lubricant; verify with torque-tension testing before relying on them.\nT = K · F · d = 0.10 × 52,969 N × 12.7 mm.\nK is an empirical constant that swallows thread and under-head friction — it varies with lubrication, coating, washer surface and reuse, so torque control alone typically scatters preload by ±25–30%. Do not substitute this estimate for torque-tension testing on a critical joint."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"torque":{"type":"string","description":"Tightening torque"},"torqueTable":{"type":"array","description":"Torque in other units","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]},"preloadUsed":{"type":"string","description":"Preload (clamp load)"},"boltStress":{"type":"string","description":"Resulting bolt stress"},"notes":{"type":"string","description":"Notes & warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cable-tray-fill-calculator":{"post":{"operationId":"run_cable_tray_fill_calculator","summary":"Cable Tray Fill Calculator","tags":["Calculators"],"description":"Calculate cable tray fill percentage and remaining capacity from tray dimensions and a list of cable diameters, checked against a configurable fill limit.\n\n[Try Cable Tray Fill Calculator in your browser →](https://iotools.cloud/tool/cable-tray-fill-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"trayWidth":{"type":"number","description":"Tray Width (mm)","minimum":1},"trayDepth":{"type":"number","description":"Tray Depth (mm)","minimum":1},"fillLimit":{"type":"number","description":"Fill Limit (%)","minimum":20,"maximum":60},"cables":{"type":"string","description":"Cables (one per line: diameter[,quantity] in mm)"}},"required":[]},"examples":{"300_100mm_tray_mixed_cable_sizes_40_limit":{"summary":"300×100mm tray, mixed cable sizes, 40% limit","value":{"trayWidth":"300","trayDepth":"100","fillLimit":"40","cables":"25,4\n40,2\n18,6"}},"overfilled_150_75mm_tray":{"summary":"Overfilled 150×75mm tray","value":{"trayWidth":"150","trayDepth":"75","fillLimit":"40","cables":"40,8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"300_100mm_tray_mixed_cable_sizes_40_limit":{"summary":"300×100mm tray, mixed cable sizes, 40% limit","value":{"tool":"cable-tray-fill-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Total cables","value":"12"},{"quantity":"Total cable cross-sectional area","value":"6003.58 mm²"},{"quantity":"Tray usable cross-sectional area","value":"30000 mm²"},{"quantity":"Fill percentage","value":"20.0119 %"},{"quantity":"Fill limit","value":"40 %"},{"quantity":"Status","value":"Within limit"},{"quantity":"Remaining capacity area","value":"5996.42 mm²"}],"breakdown":"Cable area = Σ (quantity × π × (diameter ÷ 2)²) = 6003.58 mm² across 12 cable(s)\nTray area = width × depth = 300 × 100 = 30000 mm²\nFill % = cable area ÷ tray area × 100 = 20.0119 %\nAllowed area at 40% limit = 12000 mm²\nThis is the general cross-sectional-area fill method — code-specific rules (e.g. NEC 392.22's separate diameter-sum method for single-conductor cables) may apply instead; verify against your applicable electrical code."},"credits_used":5,"credits_remaining":null}},"overfilled_150_75mm_tray":{"summary":"Overfilled 150×75mm tray","value":{"tool":"cable-tray-fill-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Total cables","value":"8"},{"quantity":"Total cable cross-sectional area","value":"10053.1 mm²"},{"quantity":"Tray usable cross-sectional area","value":"11250 mm²"},{"quantity":"Fill percentage","value":"89.3609 %"},{"quantity":"Fill limit","value":"40 %"},{"quantity":"Status","value":"Exceeds limit"},{"quantity":"Overfill amount","value":"5553.1 mm²"}],"breakdown":"Cable area = Σ (quantity × π × (diameter ÷ 2)²) = 10053.1 mm² across 8 cable(s)\nTray area = width × depth = 150 × 75 = 11250 mm²\nFill % = cable area ÷ tray area × 100 = 89.3609 %\nAllowed area at 40% limit = 4500 mm²\nThis is the general cross-sectional-area fill method — code-specific rules (e.g. NEC 392.22's separate diameter-sum method for single-conductor cables) may apply instead; verify against your applicable electrical code."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Fill Result","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bmr-tdee-calculator":{"post":{"operationId":"run_bmr_tdee_calculator","summary":"BMR & TDEE Calculator","tags":["Calculators"],"description":"Calculate your Basal Metabolic Rate (BMR) and Total Daily Energy Expenditure (TDEE) using the Mifflin-St Jeor equation, plus calorie targets for weight loss and gain based on your activity level.\n\n[Try BMR & TDEE Calculator in your browser →](https://iotools.cloud/tool/bmr-tdee-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"weight":{"type":"number","description":"Weight","minimum":1},"weightUnit":{"enum":["kg","lb"],"description":"Weight unit"},"height":{"type":"number","description":"Height","minimum":1},"heightUnit":{"enum":["cm","in"],"description":"Height unit"},"age":{"type":"number","description":"Age","minimum":1,"maximum":120},"sex":{"enum":["male","female"],"description":"Sex"},"activityLevel":{"enum":["1.2","1.375","1.55","1.725","1.9"],"description":"Activity level"}},"required":["weight","height","age"]},"examples":{"30_year_old_male_80kg_180cm_moderately_active":{"summary":"30-year-old male, 80kg, 180cm, moderately active","value":{"weight":"80","weightUnit":"kg","height":"180","heightUnit":"cm","age":"30","sex":"male","activityLevel":"1.55"}},"25_year_old_female_140lb_65in_lightly_active":{"summary":"25-year-old female, 140lb, 65in, lightly active","value":{"weight":"140","weightUnit":"lb","height":"65","heightUnit":"in","age":"25","sex":"female","activityLevel":"1.375"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"30_year_old_male_80kg_180cm_moderately_active":{"summary":"30-year-old male, 80kg, 180cm, moderately active","value":{"tool":"bmr-tdee-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"BMR (Basal Metabolic Rate)","value":"1780 calories/day"},{"metric":"TDEE (Total Daily Energy Expenditure)","value":"2759 calories/day"},{"metric":"Weight Loss (-500 cal/day)","value":"2259 calories/day"},{"metric":"Weight Gain (+500 cal/day)","value":"3259 calories/day"}]},"credits_used":5,"credits_remaining":null}},"25_year_old_female_140lb_65in_lightly_active":{"summary":"25-year-old female, 140lb, 65in, lightly active","value":{"tool":"bmr-tdee-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"BMR (Basal Metabolic Rate)","value":"1381 calories/day"},{"metric":"TDEE (Total Daily Energy Expenditure)","value":"1899 calories/day"},{"metric":"Weight Loss (-500 cal/day)","value":"1399 calories/day"},{"metric":"Weight Gain (+500 cal/day)","value":"2399 calories/day"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"BMR & TDEE Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/board-foot-calculator":{"post":{"operationId":"run_board_foot_calculator","summary":"Board Foot Calculator","tags":["Calculators"],"description":"Calculate lumber volume in board feet from thickness, width and length, plus cubic feet, estimated weight by wood species, and total cost from a price per board foot.\n\n[Try Board Foot Calculator in your browser →](https://iotools.cloud/tool/board-foot-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"thickness":{"type":"number","description":"Thickness (in)","minimum":0},"width":{"type":"number","description":"Width (in)","minimum":0},"length":{"type":"number","description":"Length (ft)","minimum":0},"quantity":{"type":"number","description":"Number of Boards","minimum":1},"species":{"enum":["pine-swp","pine-white","douglas-fir","cedar","redwood","spruce","oak-red","oak-white","maple-hard","maple-soft","walnut","cherry","mahogany","poplar","ash","birch","custom"],"description":"Wood Species"},"customDensity":{"type":"number","description":"Custom Density (lb/ft³)","minimum":0},"pricePerBoardFoot":{"type":"number","description":"Price per Board Foot ($)","minimum":0}},"required":["thickness","width","length"]},"examples":{"1_6_8ft_single_board_southern_yellow_pine":{"summary":"1×6, 8ft, single board, Southern Yellow Pine","value":{"thickness":"1","width":"6","length":"8","quantity":"1","species":"pine-swp","customDensity":"","pricePerBoardFoot":""}},"2_8_10ft_20_boards_red_oak_4_50_bf":{"summary":"2×8, 10ft, 20 boards, Red Oak, $4.50/bf","value":{"thickness":"2","width":"8","length":"10","quantity":"20","species":"oak-red","customDensity":"","pricePerBoardFoot":"4.50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_6_8ft_single_board_southern_yellow_pine":{"summary":"1×6, 8ft, single board, Southern Yellow Pine","value":{"tool":"board-foot-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Board Feet per Board","value":"4.000"},{"metric":"Total Board Feet","value":"4.00 (1 board)"},{"metric":"Total Cubic Feet","value":"0.333"},{"metric":"Estimated Total Weight","value":"12.00 lb"},{"metric":"Total Cost","value":"-"}]},"credits_used":5,"credits_remaining":null}},"2_8_10ft_20_boards_red_oak_4_50_bf":{"summary":"2×8, 10ft, 20 boards, Red Oak, $4.50/bf","value":{"tool":"board-foot-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Board Feet per Board","value":"13.333"},{"metric":"Total Board Feet","value":"266.67 (20 boards)"},{"metric":"Total Cubic Feet","value":"22.222"},{"metric":"Estimated Total Weight","value":"977.78 lb"},{"metric":"Total Cost","value":"$1,200.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/body-fat-calculator":{"post":{"operationId":"run_body_fat_calculator","summary":"Body Fat Calculator","tags":["Calculators"],"description":"Estimate body fat percentage from tape-measure circumferences using the US Navy method — no calipers needed. Get your body fat %, ACE category, and category range instantly.\n\n[Try Body Fat Calculator in your browser →](https://iotools.cloud/tool/body-fat-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sex":{"enum":["male","female"],"description":"Sex"},"units":{"enum":["metric","imperial"],"description":"Units"},"height":{"type":"number","description":"Height","minimum":0.1},"waist":{"type":"number","description":"Waist","minimum":0.1},"neck":{"type":"number","description":"Neck","minimum":0.1},"hip":{"type":"number","description":"Hip","minimum":0.1}},"required":["height","waist","neck"]},"examples":{"male_metric_180cm_85cm_waist_38cm_neck":{"summary":"Male, metric (180cm, 85cm waist, 38cm neck)","value":{"sex":"male","units":"metric","height":"180","waist":"85","neck":"38","hip":""}},"female_metric_170cm_70cm_waist_95cm_hip_32cm_neck":{"summary":"Female, metric (170cm, 70cm waist, 95cm hip, 32cm neck)","value":{"sex":"female","units":"metric","height":"170","waist":"70","neck":"32","hip":"95"}},"male_imperial_70in_34in_waist_15in_neck":{"summary":"Male, imperial (70in, 34in waist, 15in neck)","value":{"sex":"male","units":"imperial","height":"70","waist":"34","neck":"15","hip":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"male_metric_180cm_85cm_waist_38cm_neck":{"summary":"Male, metric (180cm, 85cm waist, 38cm neck)","value":{"tool":"body-fat-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Body Fat %","value":"16.1%"},{"metric":"Category","value":"Fitness"},{"metric":"Category Range","value":"14–17%"}]},"credits_used":5,"credits_remaining":null}},"female_metric_170cm_70cm_waist_95cm_hip_32cm_neck":{"summary":"Female, metric (170cm, 70cm waist, 95cm hip, 32cm neck)","value":{"tool":"body-fat-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Body Fat %","value":"23.6%"},{"metric":"Category","value":"Fitness"},{"metric":"Category Range","value":"21–24%"}]},"credits_used":5,"credits_remaining":null}},"male_imperial_70in_34in_waist_15in_neck":{"summary":"Male, imperial (70in, 34in waist, 15in neck)","value":{"tool":"body-fat-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Body Fat %","value":"17.4%"},{"metric":"Category","value":"Average"},{"metric":"Category Range","value":"18–24%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/boiling-point-calculator":{"post":{"operationId":"run_boiling_point_calculator","summary":"Boiling Point Calculator","tags":["Calculators"],"description":"Calculate water's boiling point from altitude or atmospheric pressure using the US Standard Atmosphere and Antoine equation. Reports °C/°F/K, the shift from sea level, and a practical note on adjusting cook times at altitude. Runs entirely in your browser.\n\n[Try Boiling Point Calculator in your browser →](https://iotools.cloud/tool/boiling-point-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["altitude","pressure"],"description":"Calculate from"},"altitude":{"type":"number","description":"Altitude","minimum":-500,"maximum":11000},"altitudeUnit":{"enum":["m","ft"],"description":"Unit"},"pressure":{"type":"number","description":"Atmospheric pressure","minimum":0.001},"pressureUnit":{"enum":["kpa","atm","psi","mmhg","bar"],"description":"Unit"},"precision":{"enum":["0","1","2","3","4","5","6"],"description":"Decimal precision"}},"required":[]},"examples":{"sea_level_0_m":{"summary":"Sea level (0 m)","value":{"mode":"altitude","altitude":"0","altitudeUnit":"m","precision":"2"}},"denver_1600_m":{"summary":"Denver, ~1600 m","value":{"mode":"altitude","altitude":"1600","altitudeUnit":"m","precision":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sea_level_0_m":{"summary":"Sea level (0 m)","value":{"tool":"boiling-point-calculator","tool_version":"1.0.2","outputs":{"boilingPointC":"100.00 °C","boilingPointF":"211.99 °F","boilingPointK":"373.15 K","pressureTable":[{"metric":"Altitude","value":"0 m"},{"metric":"Atmospheric pressure (kPa)","value":"101.3250 kPa"},{"metric":"Atmospheric pressure (atm)","value":"1.0000 atm"},{"metric":"Atmospheric pressure (psi)","value":"14.6959 psi"},{"metric":"Atmospheric pressure (mmHg)","value":"760.00 mmHg"},{"metric":"Atmospheric pressure (bar)","value":"1.0133 bar"},{"metric":"Shift from sea level","value":"0.00 °C (0.01 °F) lower"}],"notes":"Using the US Standard Atmosphere barometric formula for pressure, then the Antoine equation to solve for boiling point.\nThe Antoine equation is accurate for 1–100 °C (about 4.6–760 mmHg); results well outside that range are extrapolated and less precise."},"credits_used":5,"credits_remaining":null}},"denver_1600_m":{"summary":"Denver, ~1600 m","value":{"tool":"boiling-point-calculator","tool_version":"1.0.2","outputs":{"boilingPointC":"94.69 °C","boilingPointF":"202.45 °F","boilingPointK":"367.84 K","pressureTable":[{"metric":"Altitude","value":"1,600 m"},{"metric":"Atmospheric pressure (kPa)","value":"83.5235 kPa"},{"metric":"Atmospheric pressure (atm)","value":"0.8243 atm"},{"metric":"Atmospheric pressure (psi)","value":"12.1141 psi"},{"metric":"Atmospheric pressure (mmHg)","value":"626.48 mmHg"},{"metric":"Atmospheric pressure (bar)","value":"0.8352 bar"},{"metric":"Shift from sea level","value":"5.31 °C (9.55 °F) lower"}],"notes":"Using the US Standard Atmosphere barometric formula for pressure, then the Antoine equation to solve for boiling point.\nWater boils about 5.3 °C below the sea-level standard here. Anything cooked by boiling (pasta, eggs, rice, vegetables) will need more time — a common rule of thumb is +5% cook time for every 500 m (1,600 ft) of elevation above sea level, and home canning needs pressure canning above roughly 1,000 m (3,280 ft) for food safety.\nThe Antoine equation is accurate for 1–100 °C (about 4.6–760 mmHg); results well outside that range are extrapolated and less precise."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"boilingPointC":{"type":"string","description":"Boiling point (°C)"},"boilingPointF":{"type":"string","description":"Boiling point (°F)"},"boilingPointK":{"type":"string","description":"Boiling point (K)"},"pressureTable":{"type":"array","description":"Pressure breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bond-convexity-calculator":{"post":{"operationId":"run_bond_convexity_calculator","summary":"Bond Convexity Calculator","tags":["Calculators"],"description":"Calculate a bond's price, Macaulay and modified duration, convexity, and DV01 from its face value, coupon rate, yield to maturity, term, and payment frequency — plus a second-order (duration + convexity) price-shock estimate and a period-by-period discounted cash-flow schedule.\n\n[Try Bond Convexity Calculator in your browser →](https://iotools.cloud/tool/bond-convexity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faceValue":{"type":"number","description":"Face Value ($)","minimum":0.01,"maximum":100000000},"couponRate":{"type":"number","description":"Annual Coupon Rate (%)","minimum":0,"maximum":100},"yieldToMaturity":{"type":"number","description":"Yield to Maturity (%)","minimum":0.01,"maximum":100},"years":{"type":"number","description":"Years to Maturity","minimum":1,"maximum":100},"frequency":{"enum":["1","2","4","12"],"description":"Coupon Payments Per Year"},"yieldShockBps":{"type":"number","description":"Yield Shock (basis points)","minimum":1,"maximum":1000},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["faceValue","couponRate","yieldToMaturity","years"]},"examples":{"1_000_face_5_coupon_6_ytm_5_years_semi_annual_100bps_shock":{"summary":"$1,000 face, 5% coupon, 6% YTM, 5 years, semi-annual, 100bps shock","value":{"faceValue":"1000","couponRate":"5","yieldToMaturity":"6","years":"5","frequency":"2","yieldShockBps":"100","currency":"USD"}},"1_000_face_0_coupon_zero_coupon_5_ytm_5_years_annual_50bps_shock":{"summary":"$1,000 face, 0% coupon (zero-coupon), 5% YTM, 5 years, annual, 50bps shock","value":{"faceValue":"1000","couponRate":"0","yieldToMaturity":"5","years":"5","frequency":"1","yieldShockBps":"50","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_000_face_5_coupon_6_ytm_5_years_semi_annual_100bps_shock":{"summary":"$1,000 face, 5% coupon, 6% YTM, 5 years, semi-annual, 100bps shock","value":{"tool":"bond-convexity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"5.00%"},{"metric":"Yield to Maturity","value":"6.00%"},{"metric":"Years to Maturity","value":"5"},{"metric":"Payment Frequency","value":"Semi-Annually"},{"metric":"Bond Price","value":"$957.35"},{"metric":"Macaulay Duration","value":"4.4717 years"},{"metric":"Modified Duration","value":"4.3414 years"},{"metric":"Convexity","value":"22.3047 years²"},{"metric":"DV01 (Price per 1bp)","value":"$0.42"},{"metric":"Yield Shock","value":"+100 bps (+1.00%)"},{"metric":"Duration-Only Price Impact","value":"-4.3414%"},{"metric":"Convexity Adjustment","value":"+0.1115%"},{"metric":"Duration + Convexity Price Impact","value":"-4.2299%"},{"metric":"Shocked Price (Duration Only)","value":"$915.79"},{"metric":"Shocked Price (Duration + Convexity)","value":"$916.85"}],"schedule":[{"period":"1","time-years":"0.5","cash-flow":"$25.00","present-value":"$24.27","weight-of-price":"2.535%"},{"period":"2","time-years":"1.0","cash-flow":"$25.00","present-value":"$23.56","weight-of-price":"2.461%"},{"period":"3","time-years":"1.5","cash-flow":"$25.00","present-value":"$22.88","weight-of-price":"2.390%"},{"period":"4","time-years":"2.0","cash-flow":"$25.00","present-value":"$22.21","weight-of-price":"2.320%"},{"period":"5","time-years":"2.5","cash-flow":"$25.00","present-value":"$21.57","weight-of-price":"2.253%"},{"period":"6","time-years":"3.0","cash-flow":"$25.00","present-value":"$20.94","weight-of-price":"2.187%"},{"period":"7","time-years":"3.5","cash-flow":"$25.00","present-value":"$20.33","weight-of-price":"2.123%"},{"period":"8","time-years":"4.0","cash-flow":"$25.00","present-value":"$19.74","weight-of-price":"2.061%"},{"period":"9","time-years":"4.5","cash-flow":"$25.00","present-value":"$19.16","weight-of-price":"2.001%"},{"period":"10","time-years":"5.0","cash-flow":"$1,025.00","present-value":"$762.70","weight-of-price":"79.668%"}]},"credits_used":5,"credits_remaining":null}},"1_000_face_0_coupon_zero_coupon_5_ytm_5_years_annual_50bps_shock":{"summary":"$1,000 face, 0% coupon (zero-coupon), 5% YTM, 5 years, annual, 50bps shock","value":{"tool":"bond-convexity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"0.00%"},{"metric":"Yield to Maturity","value":"5.00%"},{"metric":"Years to Maturity","value":"5"},{"metric":"Payment Frequency","value":"Annually"},{"metric":"Bond Price","value":"$783.53"},{"metric":"Macaulay Duration","value":"5.0000 years"},{"metric":"Modified Duration","value":"4.7619 years"},{"metric":"Convexity","value":"27.2109 years²"},{"metric":"DV01 (Price per 1bp)","value":"$0.37"},{"metric":"Yield Shock","value":"+50 bps (+0.50%)"},{"metric":"Duration-Only Price Impact","value":"-2.3810%"},{"metric":"Convexity Adjustment","value":"+0.0340%"},{"metric":"Duration + Convexity Price Impact","value":"-2.3469%"},{"metric":"Shocked Price (Duration Only)","value":"$764.87"},{"metric":"Shocked Price (Duration + Convexity)","value":"$765.14"}],"schedule":[{"period":"1","time-years":"1.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"2","time-years":"2.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"3","time-years":"3.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"4","time-years":"4.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"5","time-years":"5.0","cash-flow":"$1,000.00","present-value":"$783.53","weight-of-price":"100.000%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Period-by-Period Discounted Cash Flow","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"time-years":{"type":"string","description":"Time (Years)"},"cash-flow":{"type":"string","description":"Cash Flow"},"present-value":{"type":"string","description":"Present Value"},"weight-of-price":{"type":"string","description":"Weight of Price"}}},"x-iotools-columns":["period","time-years","cash-flow","present-value","weight-of-price"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bond-duration-calculator":{"post":{"operationId":"run_bond_duration_calculator","summary":"Bond Duration Calculator","tags":["Calculators"],"description":"Calculate a bond's price, Macaulay and modified duration, and DV01 from its face value, coupon rate, yield to maturity, term, and payment frequency — then compare a duration-based price estimate for a yield shock against the exact repriced value, plus a period-by-period discounted cash-flow schedule.\n\n[Try Bond Duration Calculator in your browser →](https://iotools.cloud/tool/bond-duration-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faceValue":{"type":"number","description":"Face Value ($)","minimum":0.01,"maximum":100000000},"couponRate":{"type":"number","description":"Annual Coupon Rate (%)","minimum":0,"maximum":100},"yieldToMaturity":{"type":"number","description":"Yield to Maturity (%)","minimum":0.01,"maximum":100},"years":{"type":"number","description":"Years to Maturity","minimum":1,"maximum":100},"frequency":{"enum":["1","2","4","12"],"description":"Coupon Payments Per Year"},"yieldShockBps":{"type":"number","description":"Yield Shock (basis points)","minimum":1,"maximum":1000},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["faceValue","couponRate","yieldToMaturity","years"]},"examples":{"1_000_face_5_coupon_6_ytm_5_years_semi_annual_100bps_shock":{"summary":"$1,000 face, 5% coupon, 6% YTM, 5 years, semi-annual, 100bps shock","value":{"faceValue":"1000","couponRate":"5","yieldToMaturity":"6","years":"5","frequency":"2","yieldShockBps":"100","currency":"USD"}},"1_000_face_0_coupon_zero_coupon_5_ytm_5_years_annual_50bps_shock":{"summary":"$1,000 face, 0% coupon (zero-coupon), 5% YTM, 5 years, annual, 50bps shock","value":{"faceValue":"1000","couponRate":"0","yieldToMaturity":"5","years":"5","frequency":"1","yieldShockBps":"50","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_000_face_5_coupon_6_ytm_5_years_semi_annual_100bps_shock":{"summary":"$1,000 face, 5% coupon, 6% YTM, 5 years, semi-annual, 100bps shock","value":{"tool":"bond-duration-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"5.00%"},{"metric":"Yield to Maturity","value":"6.00%"},{"metric":"Years to Maturity","value":"5"},{"metric":"Payment Frequency","value":"Semi-Annually"},{"metric":"Bond Price","value":"$957.35"},{"metric":"Macaulay Duration","value":"4.4717 years"},{"metric":"Modified Duration","value":"4.3414 years"},{"metric":"DV01 (Price per 1bp)","value":"$0.42"},{"metric":"Yield Shock","value":"+100 bps (+1.00%)"},{"metric":"Shocked Yield to Maturity","value":"7.00%"},{"metric":"Duration-Estimated Price Change","value":"-4.3414%"},{"metric":"Duration-Estimated Price","value":"$915.79"},{"metric":"Exact Repriced Value","value":"$916.83"},{"metric":"Exact Price Change","value":"-4.2320%"},{"metric":"Duration Estimation Error","value":"+0.1094%"}],"schedule":[{"period":"1","time-years":"0.5","cash-flow":"$25.00","present-value":"$24.27","weight-of-price":"2.535%"},{"period":"2","time-years":"1.0","cash-flow":"$25.00","present-value":"$23.56","weight-of-price":"2.461%"},{"period":"3","time-years":"1.5","cash-flow":"$25.00","present-value":"$22.88","weight-of-price":"2.390%"},{"period":"4","time-years":"2.0","cash-flow":"$25.00","present-value":"$22.21","weight-of-price":"2.320%"},{"period":"5","time-years":"2.5","cash-flow":"$25.00","present-value":"$21.57","weight-of-price":"2.253%"},{"period":"6","time-years":"3.0","cash-flow":"$25.00","present-value":"$20.94","weight-of-price":"2.187%"},{"period":"7","time-years":"3.5","cash-flow":"$25.00","present-value":"$20.33","weight-of-price":"2.123%"},{"period":"8","time-years":"4.0","cash-flow":"$25.00","present-value":"$19.74","weight-of-price":"2.061%"},{"period":"9","time-years":"4.5","cash-flow":"$25.00","present-value":"$19.16","weight-of-price":"2.001%"},{"period":"10","time-years":"5.0","cash-flow":"$1,025.00","present-value":"$762.70","weight-of-price":"79.668%"}]},"credits_used":5,"credits_remaining":null}},"1_000_face_0_coupon_zero_coupon_5_ytm_5_years_annual_50bps_shock":{"summary":"$1,000 face, 0% coupon (zero-coupon), 5% YTM, 5 years, annual, 50bps shock","value":{"tool":"bond-duration-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"0.00%"},{"metric":"Yield to Maturity","value":"5.00%"},{"metric":"Years to Maturity","value":"5"},{"metric":"Payment Frequency","value":"Annually"},{"metric":"Bond Price","value":"$783.53"},{"metric":"Macaulay Duration","value":"5.0000 years"},{"metric":"Modified Duration","value":"4.7619 years"},{"metric":"DV01 (Price per 1bp)","value":"$0.37"},{"metric":"Yield Shock","value":"+50 bps (+0.50%)"},{"metric":"Shocked Yield to Maturity","value":"5.50%"},{"metric":"Duration-Estimated Price Change","value":"-2.3810%"},{"metric":"Duration-Estimated Price","value":"$764.87"},{"metric":"Exact Repriced Value","value":"$765.13"},{"metric":"Exact Price Change","value":"-2.3473%"},{"metric":"Duration Estimation Error","value":"+0.0336%"}],"schedule":[{"period":"1","time-years":"1.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"2","time-years":"2.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"3","time-years":"3.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"4","time-years":"4.0","cash-flow":"$0.00","present-value":"$0.00","weight-of-price":"0.000%"},{"period":"5","time-years":"5.0","cash-flow":"$1,000.00","present-value":"$783.53","weight-of-price":"100.000%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Period-by-Period Discounted Cash Flow","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"time-years":{"type":"string","description":"Time (Years)"},"cash-flow":{"type":"string","description":"Cash Flow"},"present-value":{"type":"string","description":"Present Value"},"weight-of-price":{"type":"string","description":"Weight of Price"}}},"x-iotools-columns":["period","time-years","cash-flow","present-value","weight-of-price"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bond-equivalent-yield-calculator":{"post":{"operationId":"run_bond_equivalent_yield_calculator","summary":"Bond Equivalent Yield Calculator","tags":["Calculators"],"description":"Calculate the bond equivalent yield (BEY) for a discount security like a T-bill or commercial paper from its face value, purchase price, and days to maturity — plus discount rate, holding period return, effective annual yield, and a day-count-convention (360/365/366) comparison.\n\n[Try Bond Equivalent Yield Calculator in your browser →](https://iotools.cloud/tool/bond-equivalent-yield-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faceValue":{"type":"number","description":"Face Value ($)","minimum":0.01,"maximum":100000000},"purchasePrice":{"type":"number","description":"Purchase Price ($)","minimum":0.01,"maximum":100000000},"daysToMaturity":{"type":"number","description":"Days to Maturity","minimum":1,"maximum":3650},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["faceValue","purchasePrice","daysToMaturity"]},"examples":{"10_000_face_9_800_purchase_182_days":{"summary":"$10,000 face, $9,800 purchase, 182 days","value":{"faceValue":"10000","purchasePrice":"9800","daysToMaturity":"182","currency":"USD"}},"1_000_face_970_purchase_91_days":{"summary":"$1,000 face, $970 purchase, 91 days","value":{"faceValue":"1000","purchasePrice":"970","daysToMaturity":"91","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_face_9_800_purchase_182_days":{"summary":"$10,000 face, $9,800 purchase, 182 days","value":{"tool":"bond-equivalent-yield-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$10,000.00"},{"metric":"Purchase Price","value":"$9,800.00"},{"metric":"Discount","value":"$200.00"},{"metric":"Days to Maturity","value":"182"},{"metric":"Bond Equivalent Yield (365-day)","value":"+4.093%"},{"metric":"Bank Discount Rate (360-day)","value":"+3.956%"},{"metric":"Holding Period Return","value":"+2.041%"},{"metric":"Effective Annual Yield","value":"+4.135%"},{"metric":"Investment Quality","value":"Moderate Yield"}],"dayCountComparison":[{"day-count-basis":"360-day","bank-discount-rate":"+3.956%","bond-equivalent-yield":"+4.037%"},{"day-count-basis":"365-day","bank-discount-rate":"+4.011%","bond-equivalent-yield":"+4.093%"},{"day-count-basis":"366-day","bank-discount-rate":"+4.022%","bond-equivalent-yield":"+4.104%"}]},"credits_used":5,"credits_remaining":null}},"1_000_face_970_purchase_91_days":{"summary":"$1,000 face, $970 purchase, 91 days","value":{"tool":"bond-equivalent-yield-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Face Value","value":"$1,000.00"},{"metric":"Purchase Price","value":"$970.00"},{"metric":"Discount","value":"$30.00"},{"metric":"Days to Maturity","value":"91"},{"metric":"Bond Equivalent Yield (365-day)","value":"+12.405%"},{"metric":"Bank Discount Rate (360-day)","value":"+11.868%"},{"metric":"Holding Period Return","value":"+3.093%"},{"metric":"Effective Annual Yield","value":"+12.995%"},{"metric":"Investment Quality","value":"Very High Yield"}],"dayCountComparison":[{"day-count-basis":"360-day","bank-discount-rate":"+11.868%","bond-equivalent-yield":"+12.235%"},{"day-count-basis":"365-day","bank-discount-rate":"+12.033%","bond-equivalent-yield":"+12.405%"},{"day-count-basis":"366-day","bank-discount-rate":"+12.066%","bond-equivalent-yield":"+12.439%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"dayCountComparison":{"type":"array","description":"Yield by Day-Count Convention","items":{"type":"object","properties":{"day-count-basis":{"type":"string","description":"Day-Count Basis"},"bank-discount-rate":{"type":"string","description":"Bank Discount Rate"},"bond-equivalent-yield":{"type":"string","description":"Bond Equivalent Yield"}}},"x-iotools-columns":["day-count-basis","bank-discount-rate","bond-equivalent-yield"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bond-yield-to-maturity-calculator":{"post":{"operationId":"run_bond_yield_to_maturity_calculator","summary":"Bond Yield to Maturity Calculator","tags":["Calculators"],"description":"Calculate a bond's yield to maturity (precise, iteratively solved, and the standard approximate formula), current yield, capital gain or loss, and total return from its price, face value, coupon rate, term, and payment frequency — plus a year-by-year discounted cash-flow schedule.\n\n[Try Bond Yield to Maturity Calculator in your browser →](https://iotools.cloud/tool/bond-yield-to-maturity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bondPrice":{"type":"number","description":"Current Bond Price ($)","minimum":0.01,"maximum":100000000},"faceValue":{"type":"number","description":"Face Value ($)","minimum":0.01,"maximum":100000000},"couponRate":{"type":"number","description":"Annual Coupon Rate (%)","minimum":0,"maximum":100},"years":{"type":"number","description":"Years to Maturity","minimum":1,"maximum":100},"frequency":{"enum":["1","2","4","12"],"description":"Coupon Payments Per Year"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["bondPrice","faceValue","couponRate","years"]},"examples":{"950_bond_1_000_face_5_coupon_10_years_semi_annual":{"summary":"$950 bond, $1,000 face, 5% coupon, 10 years, semi-annual","value":{"bondPrice":"950","faceValue":"1000","couponRate":"5","years":"10","frequency":"2","currency":"USD"}},"1_050_premium_bond_4_coupon_5_years_annual":{"summary":"$1,050 premium bond, 4% coupon, 5 years, annual","value":{"bondPrice":"1050","faceValue":"1000","couponRate":"4","years":"5","frequency":"1","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"950_bond_1_000_face_5_coupon_10_years_semi_annual":{"summary":"$950 bond, $1,000 face, 5% coupon, 10 years, semi-annual","value":{"tool":"bond-yield-to-maturity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Bond Price","value":"$950.00"},{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"5.00%"},{"metric":"Annual Coupon Payment","value":"$50.00"},{"metric":"Payment Frequency","value":"Semi-Annually"},{"metric":"Years to Maturity","value":"10"},{"metric":"Price Status","value":"Discount to Face Value"},{"metric":"Current Yield","value":"+5.263%"},{"metric":"Approximate Yield to Maturity","value":"+5.641%"},{"metric":"Yield to Maturity (Precise, Annual)","value":"+5.662%"},{"metric":"Periodic Yield to Maturity","value":"+2.831%"},{"metric":"Capital Gain/Loss at Maturity","value":"$50.00"},{"metric":"Capital Gain/Loss %","value":"+5.26%"},{"metric":"Total Coupon Interest Over Term","value":"$500.00"},{"metric":"Total Return at Maturity","value":"$550.00"},{"metric":"Total Return %","value":"+57.89%"}],"schedule":[{"year":"1","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$47.95","cumulative-pv":"$47.95"},{"year":"2","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$45.35","cumulative-pv":"$93.30"},{"year":"3","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$42.89","cumulative-pv":"$136.19"},{"year":"4","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$40.56","cumulative-pv":"$176.75"},{"year":"5","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$38.36","cumulative-pv":"$215.11"},{"year":"6","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$36.27","cumulative-pv":"$251.38"},{"year":"7","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$34.30","cumulative-pv":"$285.69"},{"year":"8","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$32.44","cumulative-pv":"$318.13"},{"year":"9","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$30.68","cumulative-pv":"$348.81"},{"year":"10","coupon-received":"$50.00","pv-of-year-s-cash-flows":"$601.19","cumulative-pv":"$950.00"}]},"credits_used":5,"credits_remaining":null}},"1_050_premium_bond_4_coupon_5_years_annual":{"summary":"$1,050 premium bond, 4% coupon, 5 years, annual","value":{"tool":"bond-yield-to-maturity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Bond Price","value":"$1,050.00"},{"metric":"Face Value","value":"$1,000.00"},{"metric":"Annual Coupon Rate","value":"4.00%"},{"metric":"Annual Coupon Payment","value":"$40.00"},{"metric":"Payment Frequency","value":"Annually"},{"metric":"Years to Maturity","value":"5"},{"metric":"Price Status","value":"Premium to Face Value"},{"metric":"Current Yield","value":"+3.810%"},{"metric":"Approximate Yield to Maturity","value":"+2.927%"},{"metric":"Yield to Maturity (Precise, Annual)","value":"+2.911%"},{"metric":"Periodic Yield to Maturity","value":"+2.911%"},{"metric":"Capital Gain/Loss at Maturity","value":"-$50.00"},{"metric":"Capital Gain/Loss %","value":"-4.76%"},{"metric":"Total Coupon Interest Over Term","value":"$200.00"},{"metric":"Total Return at Maturity","value":"$150.00"},{"metric":"Total Return %","value":"+14.29%"}],"schedule":[{"year":"1","coupon-received":"$40.00","pv-of-year-s-cash-flows":"$38.87","cumulative-pv":"$38.87"},{"year":"2","coupon-received":"$40.00","pv-of-year-s-cash-flows":"$37.77","cumulative-pv":"$76.64"},{"year":"3","coupon-received":"$40.00","pv-of-year-s-cash-flows":"$36.70","cumulative-pv":"$113.34"},{"year":"4","coupon-received":"$40.00","pv-of-year-s-cash-flows":"$35.66","cumulative-pv":"$149.00"},{"year":"5","coupon-received":"$40.00","pv-of-year-s-cash-flows":"$901.00","cumulative-pv":"$1,050.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Discounted Cash Flow","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"coupon-received":{"type":"string","description":"Coupon Received"},"pv-of-year-s-cash-flows":{"type":"string","description":"PV of Year's Cash Flows"},"cumulative-pv":{"type":"string","description":"Cumulative PV"}}},"x-iotools-columns":["year","coupon-received","pv-of-year-s-cash-flows","cumulative-pv"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bpm-to-ms-delay-calculator":{"post":{"operationId":"run_bpm_to_ms_delay_calculator","summary":"BPM to Millisecond Delay Calculator","tags":["Calculators"],"description":"Convert a tempo in BPM into tempo-synced delay times. Get straight, dotted and triplet millisecond and Hz values for whole, half, quarter, eighth, sixteenth and thirty-second notes — ready to dial into a delay, reverb pre-delay or LFO plugin.\n\n[Try BPM to Millisecond Delay Calculator in your browser →](https://iotools.cloud/tool/bpm-to-ms-delay-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bpm":{"type":"number","description":"Tempo (BPM)","minimum":1,"maximum":999}},"required":[]},"examples":{"120_bpm_standard_tempo":{"summary":"120 BPM — standard tempo","value":{"bpm":"120"}},"128_bpm_house_techno_tempo":{"summary":"128 BPM — house/techno tempo","value":{"bpm":"128"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"120_bpm_standard_tempo":{"summary":"120 BPM — standard tempo","value":{"tool":"bpm-to-ms-delay-calculator","tool_version":"1.0.2","outputs":{"summary":[{"note-value":"Whole Note","beats":"4","straight-ms":"2000 ms","dotted-ms":"3000 ms","triplet-ms":"1333.33 ms","straight-hz":"0.5 Hz","dotted-hz":"0.33 Hz","triplet-hz":"0.75 Hz"},{"note-value":"Half Note","beats":"2","straight-ms":"1000 ms","dotted-ms":"1500 ms","triplet-ms":"666.67 ms","straight-hz":"1 Hz","dotted-hz":"0.67 Hz","triplet-hz":"1.5 Hz"},{"note-value":"Quarter Note","beats":"1","straight-ms":"500 ms","dotted-ms":"750 ms","triplet-ms":"333.33 ms","straight-hz":"2 Hz","dotted-hz":"1.33 Hz","triplet-hz":"3 Hz"},{"note-value":"Eighth Note","beats":"0.5","straight-ms":"250 ms","dotted-ms":"375 ms","triplet-ms":"166.67 ms","straight-hz":"4 Hz","dotted-hz":"2.67 Hz","triplet-hz":"6 Hz"},{"note-value":"Sixteenth Note","beats":"0.25","straight-ms":"125 ms","dotted-ms":"187.5 ms","triplet-ms":"83.33 ms","straight-hz":"8 Hz","dotted-hz":"5.33 Hz","triplet-hz":"12 Hz"},{"note-value":"Thirty-Second Note","beats":"0.125","straight-ms":"62.5 ms","dotted-ms":"93.75 ms","triplet-ms":"41.67 ms","straight-hz":"16 Hz","dotted-hz":"10.67 Hz","triplet-hz":"24 Hz"}]},"credits_used":5,"credits_remaining":null}},"128_bpm_house_techno_tempo":{"summary":"128 BPM — house/techno tempo","value":{"tool":"bpm-to-ms-delay-calculator","tool_version":"1.0.2","outputs":{"summary":[{"note-value":"Whole Note","beats":"4","straight-ms":"1875 ms","dotted-ms":"2812.5 ms","triplet-ms":"1250 ms","straight-hz":"0.53 Hz","dotted-hz":"0.36 Hz","triplet-hz":"0.8 Hz"},{"note-value":"Half Note","beats":"2","straight-ms":"937.5 ms","dotted-ms":"1406.25 ms","triplet-ms":"625 ms","straight-hz":"1.07 Hz","dotted-hz":"0.71 Hz","triplet-hz":"1.6 Hz"},{"note-value":"Quarter Note","beats":"1","straight-ms":"468.75 ms","dotted-ms":"703.13 ms","triplet-ms":"312.5 ms","straight-hz":"2.13 Hz","dotted-hz":"1.42 Hz","triplet-hz":"3.2 Hz"},{"note-value":"Eighth Note","beats":"0.5","straight-ms":"234.38 ms","dotted-ms":"351.56 ms","triplet-ms":"156.25 ms","straight-hz":"4.27 Hz","dotted-hz":"2.84 Hz","triplet-hz":"6.4 Hz"},{"note-value":"Sixteenth Note","beats":"0.25","straight-ms":"117.19 ms","dotted-ms":"175.78 ms","triplet-ms":"78.13 ms","straight-hz":"8.53 Hz","dotted-hz":"5.69 Hz","triplet-hz":"12.8 Hz"},{"note-value":"Thirty-Second Note","beats":"0.125","straight-ms":"58.59 ms","dotted-ms":"87.89 ms","triplet-ms":"39.06 ms","straight-hz":"17.07 Hz","dotted-hz":"11.38 Hz","triplet-hz":"25.6 Hz"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"note-value":{"type":"string","description":"Note Value"},"beats":{"type":"string","description":"Beats"},"straight-ms":{"type":"string","description":"Straight (ms)"},"dotted-ms":{"type":"string","description":"Dotted (ms)"},"triplet-ms":{"type":"string","description":"Triplet (ms)"},"straight-hz":{"type":"string","description":"Straight (Hz)"},"dotted-hz":{"type":"string","description":"Dotted (Hz)"},"triplet-hz":{"type":"string","description":"Triplet (Hz)"}}},"x-iotools-columns":["note-value","beats","straight-ms","dotted-ms","triplet-ms","straight-hz","dotted-hz","triplet-hz"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/break-even-point-calculator":{"post":{"operationId":"run_break_even_point_calculator","summary":"Break-Even Point Calculator","tags":["Calculators"],"description":"Calculate the break-even point for your business — units and revenue needed to cover fixed costs — from fixed costs, price per unit and variable cost per unit. Also shows contribution margin and contribution margin ratio.\n\n[Try Break-Even Point Calculator in your browser →](https://iotools.cloud/tool/break-even-point-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"fixedCosts":{"type":"number","description":"Fixed Costs ($)","minimum":0},"pricePerUnit":{"type":"number","description":"Price per Unit ($)","minimum":0},"variableCostPerUnit":{"type":"number","description":"Variable Cost per Unit ($)","minimum":0}},"required":[]},"examples":{"small_product_business":{"summary":"Small product business","value":{"fixedCosts":"50000","pricePerUnit":"25","variableCostPerUnit":"15"}},"price_below_variable_cost_impossible":{"summary":"Price below variable cost (impossible)","value":{"fixedCosts":"10000","pricePerUnit":"8","variableCostPerUnit":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"small_product_business":{"summary":"Small product business","value":{"tool":"break-even-point-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Break-Even Units","value":"5,000 units"},{"metric":"Break-Even Revenue","value":"$125,000.00"},{"metric":"Contribution Margin","value":"$10.00"},{"metric":"Contribution Margin Ratio","value":"40.00%"}]},"credits_used":5,"credits_remaining":null}},"price_below_variable_cost_impossible":{"summary":"Price below variable cost (impossible)","value":{"tool":"break-even-point-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Status","value":"Cannot break even — price per unit must exceed variable cost per unit to cover fixed costs."},{"metric":"Contribution Margin","value":"-$2.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Break-Even Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cable-conduit-fill-calculator":{"post":{"operationId":"run_cable_conduit_fill_calculator","summary":"Cable Conduit Fill Calculator","tags":["Calculators"],"description":"Calculate conduit fill percentage for a set of cables against the NEC's 1/2/3+ conductor fill limits (53%/31%/40%), or a custom allowed fill. Supports mixed cable sizes in one conduit, not just a single diameter.\n\n[Try Cable Conduit Fill Calculator in your browser →](https://iotools.cloud/tool/cable-conduit-fill-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["mm","in"],"description":"Unit"},"conduitDiameter":{"type":"number","description":"Conduit Inner Diameter","minimum":0.01},"cables":{"type":"string","description":"Cables (diameter:qty, one group per line)"},"fillStandard":{"enum":["nec","custom"],"description":"Allowed Fill"},"customFillPercent":{"type":"number","description":"Custom Allowed Fill (%)","minimum":1,"maximum":100}},"required":["conduitDiameter","cables"]},"examples":{"mixed_cables_nec_3_limit":{"summary":"Mixed cables, NEC 3+ limit","value":{"unit":"mm","conduitDiameter":"21","cables":"6.5:3\n9.2:2","fillStandard":"nec","customFillPercent":"40"}},"single_cable_nec_1_cable_limit":{"summary":"Single cable, NEC 1-cable limit","value":{"unit":"mm","conduitDiameter":"21","cables":"12:1","fillStandard":"nec","customFillPercent":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_cables_nec_3_limit":{"summary":"Mixed cables, NEC 3+ limit","value":{"tool":"cable-conduit-fill-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Conduit Area","value":"346.4 mm²"},{"metric":"Total Cable Count","value":"5"},{"metric":"Total Cable Area","value":"232.5 mm²"},{"metric":"Fill Percentage","value":"67.13 %"},{"metric":"Allowed Fill Percentage","value":"40 % (NEC (5 cables))"},{"metric":"Allowed Fill Area","value":"138.5 mm²"},{"metric":"Status","value":"Exceeds allowed fill by 94 mm²"},{"metric":"Room for More 9.2 mm Cables","value":"0"}],"breakdown":[{"diameter":"6.5 mm","qty":"3","group-area":"99.5 mm²","of-conduit-area":"28.74 %"},{"diameter":"9.2 mm","qty":"2","group-area":"133 mm²","of-conduit-area":"38.39 %"}]},"credits_used":5,"credits_remaining":null}},"single_cable_nec_1_cable_limit":{"summary":"Single cable, NEC 1-cable limit","value":{"tool":"cable-conduit-fill-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Conduit Area","value":"346.4 mm²"},{"metric":"Total Cable Count","value":"1"},{"metric":"Total Cable Area","value":"113.1 mm²"},{"metric":"Fill Percentage","value":"32.65 %"},{"metric":"Allowed Fill Percentage","value":"53 % (NEC (1 cable))"},{"metric":"Allowed Fill Area","value":"183.6 mm²"},{"metric":"Status","value":"OK — within allowed fill (70.5 mm² spare)"},{"metric":"Room for More 12 mm Cables","value":"0"}],"breakdown":[{"diameter":"12 mm","qty":"1","group-area":"113.1 mm²","of-conduit-area":"32.65 %"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Conduit Fill Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Cable Group Breakdown","items":{"type":"object","properties":{"diameter":{"type":"string","description":"Diameter"},"qty":{"type":"string","description":"Qty"},"group-area":{"type":"string","description":"Group Area"},"of-conduit-area":{"type":"string","description":"% of Conduit Area"}}},"x-iotools-columns":["diameter","qty","group-area","of-conduit-area"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cache-ttl-calculator":{"post":{"operationId":"run_cache_ttl_calculator","summary":"Cache TTL Calculator","tags":["Calculators"],"description":"Convert a cache TTL between seconds, minutes, hours, days and weeks, and generate the matching Cache-Control: max-age header with a human-readable duration breakdown.\n\n[Try Cache TTL Calculator in your browser →](https://iotools.cloud/tool/cache-ttl-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"number","description":"TTL Value","minimum":0},"unit":{"enum":["seconds","minutes","hours","days","weeks"],"description":"Unit"}},"required":[]},"examples":{"2_hours":{"summary":"2 hours","value":{"value":"2","unit":"hours"}},"1_week":{"summary":"1 week","value":{"value":"1","unit":"weeks"}},"negative_ttl_invalid":{"summary":"Negative TTL (invalid)","value":{"value":"-5","unit":"minutes"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_hours":{"summary":"2 hours","value":{"tool":"cache-ttl-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Total Seconds","value":"7200"},{"metric":"Human-Readable Duration","value":"2 hours"},{"metric":"Cache-Control Header","value":"Cache-Control: max-age=7200"},{"metric":"Expires Header (relative)","value":"current time + 7200 seconds"}]},"credits_used":5,"credits_remaining":null}},"1_week":{"summary":"1 week","value":{"tool":"cache-ttl-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Total Seconds","value":"604800"},{"metric":"Human-Readable Duration","value":"1 week"},{"metric":"Cache-Control Header","value":"Cache-Control: max-age=604800"},{"metric":"Expires Header (relative)","value":"current time + 604800 seconds"}]},"credits_used":5,"credits_remaining":null}},"negative_ttl_invalid":{"summary":"Negative TTL (invalid)","value":{"tool":"cache-ttl-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Error","value":"TTL cannot be negative. Enter a value of 0 or greater."},{"metric":"Total Seconds","value":"-"},{"metric":"Human-Readable Duration","value":"-"},{"metric":"Cache-Control Header","value":"-"},{"metric":"Expires Header (relative)","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cagr-calculator":{"post":{"operationId":"run_cagr_calculator","summary":"CAGR Calculator","tags":["Calculators"],"description":"Calculate the Compound Annual Growth Rate between a start and end value over a number of years, or project a future value forward from a known CAGR.\n\n[Try CAGR Calculator in your browser →](https://iotools.cloud/tool/cagr-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["cagr","project"],"description":"Mode"},"startValue":{"type":"number","description":"Start Value ($)","minimum":0.01},"endValue":{"type":"number","description":"End Value ($)","minimum":0.01},"cagrRate":{"type":"number","description":"CAGR (%)","minimum":-100,"maximum":1000},"years":{"type":"number","description":"Number of Years","minimum":1,"maximum":100}},"required":["startValue","years"]},"examples":{"cagr_from_10_000_to_25_000_over_5_years":{"summary":"CAGR from $10,000 to $25,000 over 5 years","value":{"mode":"cagr","startValue":"10000","endValue":"25000","cagrRate":"10","years":"5"}},"project_10_000_forward_at_10_for_5_years":{"summary":"Project $10,000 forward at 10% for 5 years","value":{"mode":"project","startValue":"10000","endValue":"25000","cagrRate":"10","years":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cagr_from_10_000_to_25_000_over_5_years":{"summary":"CAGR from $10,000 to $25,000 over 5 years","value":{"tool":"cagr-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"CAGR","value":"20.11%"},{"metric":"Start Value","value":"$10,000.00"},{"metric":"End Value","value":"$25,000.00"},{"metric":"Total Growth","value":"$15,000.00"},{"metric":"Total Growth %","value":"150.00%"}]},"credits_used":5,"credits_remaining":null}},"project_10_000_forward_at_10_for_5_years":{"summary":"Project $10,000 forward at 10% for 5 years","value":{"tool":"cagr-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Projected Future Value","value":"$16,105.10"},{"metric":"CAGR Used","value":"10.00%"},{"metric":"Total Growth","value":"$6,105.10"},{"metric":"Total Growth %","value":"61.05%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/capm-calculator":{"post":{"operationId":"run_capm_calculator","summary":"CAPM Calculator","tags":["Calculators"],"description":"Calculate the expected return on an investment with the Capital Asset Pricing Model (CAPM) from the risk-free rate, beta, and expected market return. Get the market risk premium, the risk premium, the CAPM expected return, and a plain-language read on the stock's beta.\n\n[Try CAPM Calculator in your browser →](https://iotools.cloud/tool/capm-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"riskFreeRate":{"type":"number","description":"Risk-Free Rate (%)","minimum":-10,"maximum":50},"beta":{"type":"number","description":"Beta","minimum":-10,"maximum":10},"marketReturn":{"type":"number","description":"Expected Market Return (%)","minimum":-50,"maximum":100}},"required":["riskFreeRate","beta","marketReturn"]},"examples":{"market_level_beta":{"summary":"Market-level beta","value":{"riskFreeRate":"4.5","beta":"1.2","marketReturn":"10"}},"low_volatility_stock":{"summary":"Low-volatility stock","value":{"riskFreeRate":"4","beta":"0.5","marketReturn":"8"}},"high_volatility_stock":{"summary":"High-volatility stock","value":{"riskFreeRate":"3.5","beta":"1.8","marketReturn":"9"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"market_level_beta":{"summary":"Market-level beta","value":{"tool":"capm-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Risk-Free Rate","value":"4.5%"},{"metric":"Beta","value":"1.20"},{"metric":"Expected Market Return","value":"10.0%"},{"metric":"Market Risk Premium (Market Return − Risk-Free Rate)","value":"5.5%"},{"metric":"Risk Premium (Beta × Market Risk Premium)","value":"6.6%"},{"metric":"CAPM Expected Return","value":"11.1%"},{"metric":"Beta Read","value":"Market-level volatility"}]},"credits_used":5,"credits_remaining":null}},"low_volatility_stock":{"summary":"Low-volatility stock","value":{"tool":"capm-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Risk-Free Rate","value":"4.0%"},{"metric":"Beta","value":"0.50"},{"metric":"Expected Market Return","value":"8.0%"},{"metric":"Market Risk Premium (Market Return − Risk-Free Rate)","value":"4.0%"},{"metric":"Risk Premium (Beta × Market Risk Premium)","value":"2.0%"},{"metric":"CAPM Expected Return","value":"6.0%"},{"metric":"Beta Read","value":"Low volatility (less volatile than the market)"}]},"credits_used":5,"credits_remaining":null}},"high_volatility_stock":{"summary":"High-volatility stock","value":{"tool":"capm-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Risk-Free Rate","value":"3.5%"},{"metric":"Beta","value":"1.80"},{"metric":"Expected Market Return","value":"9.0%"},{"metric":"Market Risk Premium (Market Return − Risk-Free Rate)","value":"5.5%"},{"metric":"Risk Premium (Beta × Market Risk Premium)","value":"9.9%"},{"metric":"CAPM Expected Return","value":"13.4%"},{"metric":"Beta Read","value":"High volatility (more volatile than the market)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"CAPM Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cpc-calculator":{"post":{"operationId":"run_cpc_calculator","summary":"CPC Calculator","tags":["Calculators"],"description":"Calculate CPC, CPM, or CTR from the other two ad-campaign metrics — cost per click, cost per 1,000 impressions, and click-through rate all determine each other. Pick which one to solve for and enter the other two.\n\n[Try CPC Calculator in your browser →](https://iotools.cloud/tool/cpc-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"calcMode":{"enum":["cpc","cpm","ctr"],"description":"Calculate"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"},"cpcInput":{"type":"number","description":"CPC — cost per click","minimum":0},"cpmInput":{"type":"number","description":"CPM — cost per 1,000 impressions","minimum":0},"ctrInput":{"type":"number","description":"CTR — click-through rate (%)","minimum":0}},"required":[]},"examples":{"solve_cpc_from_cpm_10_00_and_ctr_2":{"summary":"Solve CPC from CPM $10.00 and CTR 2%","value":{"calcMode":"cpc","currency":"USD","cpmInput":"10.00","ctrInput":"2"}},"solve_cpm_from_cpc_0_75_and_ctr_3_5":{"summary":"Solve CPM from CPC $0.75 and CTR 3.5%","value":{"calcMode":"cpm","currency":"USD","cpcInput":"0.75","ctrInput":"3.5"}},"solve_ctr_from_cpc_0_50_and_cpm_15_00":{"summary":"Solve CTR from CPC $0.50 and CPM $15.00","value":{"calcMode":"ctr","currency":"USD","cpcInput":"0.50","cpmInput":"15.00"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_cpc_from_cpm_10_00_and_ctr_2":{"summary":"Solve CPC from CPM $10.00 and CTR 2%","value":{"tool":"cpc-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"CPC (cost per click)","value":"$0.50"},{"metric":"CPM (cost per 1,000 impressions)","value":"$10.00"},{"metric":"CTR (click-through rate)","value":"2.00%"},{"metric":"Clicks per 1,000 impressions","value":"20.0"},{"metric":"Cost per 1,000 clicks","value":"$500.00"}]},"credits_used":5,"credits_remaining":null}},"solve_cpm_from_cpc_0_75_and_ctr_3_5":{"summary":"Solve CPM from CPC $0.75 and CTR 3.5%","value":{"tool":"cpc-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"CPC (cost per click)","value":"$0.75"},{"metric":"CPM (cost per 1,000 impressions)","value":"$26.25"},{"metric":"CTR (click-through rate)","value":"3.50%"},{"metric":"Clicks per 1,000 impressions","value":"35.0"},{"metric":"Cost per 1,000 clicks","value":"$750.00"}]},"credits_used":5,"credits_remaining":null}},"solve_ctr_from_cpc_0_50_and_cpm_15_00":{"summary":"Solve CTR from CPC $0.50 and CPM $15.00","value":{"tool":"cpc-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"CPC (cost per click)","value":"$0.50"},{"metric":"CPM (cost per 1,000 impressions)","value":"$15.00"},{"metric":"CTR (click-through rate)","value":"3.00%"},{"metric":"Clicks per 1,000 impressions","value":"30.0"},{"metric":"Cost per 1,000 clicks","value":"$500.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/calorie-burn-calculator":{"post":{"operationId":"run_calorie_burn_calculator","summary":"Calorie Burn Calculator","tags":["Calculators"],"description":"Estimate calories burned during exercise from your activity, body weight and duration, using the standard MET (Metabolic Equivalent of Task) formula and published Compendium of Physical Activities values.\n\n[Try Calorie Burn Calculator in your browser →](https://iotools.cloud/tool/calorie-burn-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activity":{"enum":["walking_slow","walking_moderate","walking_brisk","walking_very_brisk","hiking","hiking_backpack","stair_climbing_slow","stair_climbing_fast","jogging","running_6mph","running_7mph","running_8mph","running_9mph","running_10mph","cycling_leisure","cycling_moderate","cycling_vigorous","cycling_racing","spinning","rowing_moderate","rowing_vigorous","elliptical_moderate","elliptical_vigorous","swimming_leisure","swimming_freestyle_moderate","swimming_freestyle_vigorous","swimming_butterfly","jump_rope_moderate","jump_rope_fast","basketball_casual","basketball_game","soccer_casual","soccer_competitive","tennis_doubles","tennis_singles","badminton","pickleball","squash","racquetball","table_tennis","volleyball_casual","volleyball_beach","baseball","football_touch","football_tackle","golf_walking","golf_cart","bowling","ice_hockey","ice_skating","rock_climbing_ascend","rock_climbing_rappel","skiing_downhill_moderate","skiing_downhill_vigorous","skiing_cross_country","snowboarding","skateboarding","surfing","weights_light","weights_moderate","weights_vigorous","calisthenics_light","calisthenics_vigorous","circuit_training","crossfit","hiit","kettlebell","yoga_hatha","yoga_power","pilates","tai_chi","stretching","boxing_bag","boxing_sparring","kickboxing","karate","aerobic_dance_moderate","aerobic_dance_vigorous","zumba","dance_ballroom","dance_general","standing_light","sitting_desk","cooking","washing_dishes","vacuuming","sweeping","heavy_cleaning","painting","carpentry","mowing_push","mowing_riding","gardening","raking","shoveling_snow","chopping_wood","walking_dog","playing_with_kids","groceries_upstairs","construction_work","driving","sleeping"],"description":"Activity"},"weight":{"type":"number","description":"Body weight","minimum":0.1},"weightUnit":{"enum":["kg","lb"],"description":"Weight Unit"},"duration":{"type":"number","description":"Duration (minutes)","minimum":1}},"required":["weight","duration"]},"examples":{"running_6_mph_70_kg_30_minutes":{"summary":"Running 6 mph, 70 kg, 30 minutes","value":{"activity":"running_6mph","weight":"70","weightUnit":"kg","duration":"30"}},"cycling_moderate_154_lb_60_minutes":{"summary":"Cycling moderate, 154 lb, 60 minutes","value":{"activity":"cycling_moderate","weight":"154","weightUnit":"lb","duration":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"running_6_mph_70_kg_30_minutes":{"summary":"Running 6 mph, 70 kg, 30 minutes","value":{"tool":"calorie-burn-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Activity","value":"Running (6 mph / 10 min mile)"},{"metric":"MET value","value":"9.8"},{"metric":"Body weight","value":"70 kg"},{"metric":"Duration","value":"30 min"},{"metric":"Calories burned","value":"343 kcal"},{"metric":"Calories per hour","value":"686 kcal"}]},"credits_used":5,"credits_remaining":null}},"cycling_moderate_154_lb_60_minutes":{"summary":"Cycling moderate, 154 lb, 60 minutes","value":{"tool":"calorie-burn-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Activity","value":"Cycling, moderate (12-14 mph)"},{"metric":"MET value","value":"8.0"},{"metric":"Body weight","value":"69.9 kg (154 lb)"},{"metric":"Duration","value":"60 min"},{"metric":"Calories burned","value":"559 kcal"},{"metric":"Calories per hour","value":"559 kcal"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cpm-calculator":{"post":{"operationId":"run_cpm_calculator","summary":"CPM Calculator","tags":["Calculators"],"description":"Calculate campaign cost, CPM (cost per 1,000 impressions), or total impressions from the other two ad metrics. Pick which one you're solving for, enter the other two, and get cost-per-impression, impressions-per-dollar, and a daily budget/impressions breakdown for your campaign length.\n\n[Try CPM Calculator in your browser →](https://iotools.cloud/tool/cpm-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["cost","cpm","impressions"],"description":"Solve For"},"campaignCost":{"type":"number","description":"Campaign Cost ($)","minimum":0},"cpm":{"type":"number","description":"CPM ($ per 1,000 impressions)","minimum":0},"impressions":{"type":"number","description":"Impressions","minimum":0},"campaignDays":{"type":"number","description":"Campaign Length (days)","minimum":1,"maximum":365}},"required":[]},"examples":{"solve_campaign_cost_5_cpm_100_000_impressions":{"summary":"Solve Campaign Cost ($5 CPM, 100,000 impressions)","value":{"solveFor":"cost","campaignCost":"500","cpm":"5","impressions":"100000","campaignDays":"30"}},"solve_cpm_500_cost_100_000_impressions":{"summary":"Solve CPM ($500 cost, 100,000 impressions)","value":{"solveFor":"cpm","campaignCost":"500","cpm":"5","impressions":"100000","campaignDays":"30"}},"solve_impressions_500_cost_5_cpm_7_day_campaign":{"summary":"Solve Impressions ($500 cost, $5 CPM, 7-day campaign)","value":{"solveFor":"impressions","campaignCost":"500","cpm":"5","impressions":"100000","campaignDays":"7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_campaign_cost_5_cpm_100_000_impressions":{"summary":"Solve Campaign Cost ($5 CPM, 100,000 impressions)","value":{"tool":"cpm-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Campaign Cost","value":"$500.00"},{"metric":"CPM","value":"$5.00"},{"metric":"Impressions","value":"100,000"},{"metric":"Cost per Impression","value":"$0.0050"},{"metric":"Impressions per Dollar","value":"200.00"},{"metric":"Daily Impressions (30-day campaign)","value":"3,333"},{"metric":"Daily Budget (30-day campaign)","value":"$16.67"}]},"credits_used":5,"credits_remaining":null}},"solve_cpm_500_cost_100_000_impressions":{"summary":"Solve CPM ($500 cost, 100,000 impressions)","value":{"tool":"cpm-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Campaign Cost","value":"$500.00"},{"metric":"CPM","value":"$5.00"},{"metric":"Impressions","value":"100,000"},{"metric":"Cost per Impression","value":"$0.0050"},{"metric":"Impressions per Dollar","value":"200.00"},{"metric":"Daily Impressions (30-day campaign)","value":"3,333"},{"metric":"Daily Budget (30-day campaign)","value":"$16.67"}]},"credits_used":5,"credits_remaining":null}},"solve_impressions_500_cost_5_cpm_7_day_campaign":{"summary":"Solve Impressions ($500 cost, $5 CPM, 7-day campaign)","value":{"tool":"cpm-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Campaign Cost","value":"$500.00"},{"metric":"CPM","value":"$5.00"},{"metric":"Impressions","value":"100,000"},{"metric":"Cost per Impression","value":"$0.0050"},{"metric":"Impressions per Dollar","value":"200.00"},{"metric":"Daily Impressions (7-day campaign)","value":"14,286"},{"metric":"Daily Budget (7-day campaign)","value":"$71.43"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/carbon-footprint-estimator":{"post":{"operationId":"run_carbon_footprint_estimator","summary":"Carbon Footprint Estimator","tags":["Calculators"],"description":"Estimate your annual personal CO2e emissions from flights, car travel, home energy, diet and spending, broken down by category and compared against country per-capita averages, using published EPA/DEFRA/IPCC-style emission factors.\n\n[Try Carbon Footprint Estimator in your browser →](https://iotools.cloud/tool/carbon-footprint-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shortFlightKm":{"type":"number","description":"Short-haul flights (km/yr, passenger-km)","minimum":0},"longFlightKm":{"type":"number","description":"Long-haul flights (km/yr, passenger-km)","minimum":0},"carDistance":{"type":"number","description":"Car travel (per year)","minimum":0},"distanceUnit":{"enum":["km","mi"],"description":"Distance unit"},"carType":{"enum":["gasoline","diesel","hybrid","phev","ev","none"],"description":"Car type"},"electricityKwh":{"type":"number","description":"Electricity (kWh/yr)","minimum":0},"naturalGasTherms":{"type":"number","description":"Natural gas (therms/yr)","minimum":0},"gridRegion":{"enum":["us","ca","uk","de","fr","au","cn","in","world"],"description":"Grid region"},"diet":{"enum":["heavy","average","low","vegetarian","vegan"],"description":"Diet"},"goodsSpending":{"type":"number","description":"Goods & services ($/yr)","minimum":0},"compareCountry":{"enum":["us","ca","au","de","uk","fr","cn","in","world","paris"],"description":"Compare to"}},"required":[]},"examples":{"average_us_commuter_flights_gasoline_car_home_diet":{"summary":"Average US commuter (flights + gasoline car + home + diet)","value":{"shortFlightKm":"2000","longFlightKm":"8000","carDistance":"12000","distanceUnit":"km","carType":"gasoline","electricityKwh":"4500","naturalGasTherms":"600","gridRegion":"us","diet":"average","goodsSpending":"12000","compareCountry":"us"}},"low_carbon_lifestyle_ev_vegan_france_grid":{"summary":"Low-carbon lifestyle (EV, vegan, France grid)","value":{"shortFlightKm":"","longFlightKm":"","carDistance":"5000","distanceUnit":"mi","carType":"ev","electricityKwh":"3000","naturalGasTherms":"","gridRegion":"fr","diet":"vegan","goodsSpending":"2000","compareCountry":"world"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"average_us_commuter_flights_gasoline_car_home_diet":{"summary":"Average US commuter (flights + gasoline car + home + diet)","value":{"tool":"carbon-footprint-estimator","tool_version":"1.0.2","outputs":{"results":[{"category":"Flights (short-haul)","value":"492 kg"},{"category":"Flights (long-haul)","value":"1,560 kg"},{"category":"Car / vehicle","value":"2,304 kg"},{"category":"Transport subtotal","value":"4,356 kg (28.3%)"},{"category":"Electricity","value":"1,737 kg"},{"category":"Natural gas","value":"3,180 kg"},{"category":"Home energy subtotal","value":"4,917 kg (32.0%)"},{"category":"Food / diet","value":"2,500 kg (16.3%)"},{"category":"Goods & services","value":"3,600 kg (23.4%)"},{"category":"Total annual emissions","value":"15,373 kg / 15.37 t"},{"category":"Compared to United States","value":"16.0 t"},{"category":"Difference vs average","value":"0.63 t below average"},{"category":"Equivalent (trees)","value":"615 mature trees absorbing CO2 for one year"},{"category":"Equivalent (gasoline)","value":"1,730 gallons of gasoline burned"}]},"credits_used":5,"credits_remaining":null}},"low_carbon_lifestyle_ev_vegan_france_grid":{"summary":"Low-carbon lifestyle (EV, vegan, France grid)","value":{"tool":"carbon-footprint-estimator","tool_version":"1.0.2","outputs":{"results":[{"category":"Flights (short-haul)","value":"0 kg"},{"category":"Flights (long-haul)","value":"0 kg"},{"category":"Car / vehicle","value":"426 kg"},{"category":"Transport subtotal","value":"426 kg (15.8%)"},{"category":"Electricity","value":"168 kg"},{"category":"Natural gas","value":"0 kg"},{"category":"Home energy subtotal","value":"168 kg (6.2%)"},{"category":"Food / diet","value":"1,500 kg (55.7%)"},{"category":"Goods & services","value":"600 kg (22.3%)"},{"category":"Total annual emissions","value":"2,694 kg / 2.69 t"},{"category":"Compared to World average","value":"4.7 t"},{"category":"Difference vs average","value":"2.01 t below average"},{"category":"Equivalent (trees)","value":"108 mature trees absorbing CO2 for one year"},{"category":"Equivalent (gasoline)","value":"303 gallons of gasoline burned"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","description":"Category"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["category","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/car-lease-calculator":{"post":{"operationId":"run_car_lease_calculator","summary":"Car Lease Calculator","tags":["Calculators"],"description":"Estimate a monthly auto lease payment from vehicle price, residual value, money factor, lease term, down payment, sales tax, and fees — with a full breakdown of depreciation charge, finance charge, and total lease cost.\n\n[Try Car Lease Calculator in your browser →](https://iotools.cloud/tool/car-lease-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vehiclePrice":{"type":"number","description":"Vehicle Price / Negotiated Cap Cost ($)","minimum":0},"residualMode":{"enum":["percent","amount"],"description":"Residual Value As"},"residualValue":{"type":"number","description":"Residual Value","minimum":0},"moneyFactor":{"type":"number","description":"Money Factor","minimum":0},"leaseTerm":{"type":"number","description":"Lease Term (Months)","minimum":12,"maximum":60},"downPayment":{"type":"number","description":"Down Payment / Cap Cost Reduction ($)","minimum":0},"taxRate":{"type":"number","description":"Sales Tax Rate (%)","minimum":0,"maximum":15},"fees":{"type":"number","description":"Fees (acquisition, doc, etc.) ($)","minimum":0}},"required":["vehiclePrice","residualValue"]},"examples":{"32_000_vehicle_58_residual_36_month_lease":{"summary":"$32,000 vehicle, 58% residual, 36-month lease","value":{"vehiclePrice":"32000","residualMode":"percent","residualValue":"58","moneyFactor":"0.0015","leaseTerm":"36","downPayment":"2000","taxRate":"6","fees":"595"}},"45_000_vehicle_24_000_residual_24_month_lease_no_down_tax_fees":{"summary":"$45,000 vehicle, $24,000 residual, 24-month lease, no down/tax/fees","value":{"vehiclePrice":"45000","residualMode":"amount","residualValue":"24000","moneyFactor":"0.00125","leaseTerm":"24","downPayment":"0","taxRate":"0","fees":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"32_000_vehicle_58_residual_36_month_lease":{"summary":"$32,000 vehicle, 58% residual, 36-month lease","value":{"tool":"car-lease-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Monthly Payment","value":"$414.05"},{"metric":"  Depreciation Charge","value":"$317.78"},{"metric":"  Finance (Rent) Charge","value":"$72.84"},{"metric":"  Sales Tax","value":"$23.44"},{"metric":"Adjusted Cap Cost","value":"$30,000.00"},{"metric":"Residual Value","value":"$18,560.00"},{"metric":"Approx. APR (Money Factor × 2400)","value":"3.6%"},{"metric":"Amount Due at Signing","value":"$3,009.05"},{"metric":"Total of Lease Payments","value":"$14,905.97"},{"metric":"Total Lease Cost","value":"$17,500.97"}]},"credits_used":5,"credits_remaining":null}},"45_000_vehicle_24_000_residual_24_month_lease_no_down_tax_fees":{"summary":"$45,000 vehicle, $24,000 residual, 24-month lease, no down/tax/fees","value":{"tool":"car-lease-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Monthly Payment","value":"$961.25"},{"metric":"  Depreciation Charge","value":"$875.00"},{"metric":"  Finance (Rent) Charge","value":"$86.25"},{"metric":"  Sales Tax","value":"$0.00"},{"metric":"Adjusted Cap Cost","value":"$45,000.00"},{"metric":"Residual Value","value":"$24,000.00"},{"metric":"Approx. APR (Money Factor × 2400)","value":"3.0%"},{"metric":"Amount Due at Signing","value":"$961.25"},{"metric":"Total of Lease Payments","value":"$23,070.00"},{"metric":"Total Lease Cost","value":"$23,070.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Lease Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/carpet-calculator":{"post":{"operationId":"run_carpet_calculator","summary":"Carpet Calculator","tags":["Calculators"],"description":"Estimate carpet area, roll length, seams, padding, installation and total cost for a room — automatically picks the roll layout (which way the strips run) that wastes the least carpet, with every result shown in both imperial and metric.\n\n[Try Carpet Calculator in your browser →](https://iotools.cloud/tool/carpet-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["imperial","metric"],"description":"Unit system"},"roomLength":{"type":"number","description":"Room length","minimum":0},"roomWidth":{"type":"number","description":"Room width","minimum":0},"rollWidthFt":{"type":"number","description":"Carpet roll width","minimum":0},"rollWidthM":{"type":"number","description":"Carpet roll width","minimum":0},"wastePct":{"type":"number","description":"Waste buffer %","minimum":0,"maximum":30},"carpetPricePerUnit":{"type":"number","description":"Carpet price per unit area (optional)","minimum":0},"paddingPricePerUnit":{"type":"number","description":"Padding price per unit area (optional)","minimum":0},"installCostPerUnit":{"type":"number","description":"Installation cost per unit area (optional)","minimum":0}},"required":["roomLength","roomWidth"]},"examples":{"12x10_ft_room_12_ft_roll_fits_in_one_strip_imperial":{"summary":"12x10 ft room, 12 ft roll (fits in one strip), imperial","value":{"unitSystem":"imperial","roomLength":"12","roomWidth":"10","rollWidthFt":"12","rollWidthM":"","wastePct":"10","carpetPricePerUnit":"35","paddingPricePerUnit":"6","installCostPerUnit":"8"}},"5m_x_6m_room_4m_roll_needs_2_strips_metric_no_pricing":{"summary":"5m x 6m room, 4m roll (needs 2 strips), metric, no pricing","value":{"unitSystem":"metric","roomLength":"5","roomWidth":"6","rollWidthFt":"","rollWidthM":"4","wastePct":"15","carpetPricePerUnit":"","paddingPricePerUnit":"","installCostPerUnit":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12x10_ft_room_12_ft_roll_fits_in_one_strip_imperial":{"summary":"12x10 ft room, 12 ft roll (fits in one strip), imperial","value":{"tool":"carpet-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Room dimensions","value":"12.00 ft (3.66 m) × 10.00 ft (3.05 m)"},{"metric":"Room area","value":"120.00 sq ft (11.15 m²)"},{"metric":"Roll width used","value":"12.00 ft (3.66 m)"},{"metric":"Layout","value":"1 strip(s), 0 seam(s) — strips run the room's width, seamed side by side across the length"},{"metric":"Roll length needed (no waste)","value":"10.00 ft (3.05 m)"},{"metric":"Waste buffer (+10%)","value":"1.00 ft (0.30 m)"},{"metric":"Total roll length to order","value":"11.00 ft (3.35 m)"},{"metric":"Carpet to purchase","value":"132.00 sq ft / 14.67 sq yd (12.26 m²)"},{"metric":"Roll-width offcut (before waste buffer)","value":"0.00 sq ft (0.00 m²)"},{"metric":"Carpet cost","value":"$513.33"},{"metric":"Padding cost","value":"$80.00"},{"metric":"Installation cost","value":"$106.67"},{"metric":"Total cost","value":"$700.00"}],"summary":"120.00 sq ft (11.15 m²) room · 1 strip(s)/0 seam(s) · 11.00 ft (3.35 m) of carpet to order · $700.00 total"},"credits_used":5,"credits_remaining":null}},"5m_x_6m_room_4m_roll_needs_2_strips_metric_no_pricing":{"summary":"5m x 6m room, 4m roll (needs 2 strips), metric, no pricing","value":{"tool":"carpet-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Room dimensions","value":"16.40 ft (5.00 m) × 19.69 ft (6.00 m)"},{"metric":"Room area","value":"322.92 sq ft (30.00 m²)"},{"metric":"Roll width used","value":"13.12 ft (4.00 m)"},{"metric":"Layout","value":"2 strip(s), 1 seam(s) — strips run the room's length, seamed side by side across the width"},{"metric":"Roll length needed (no waste)","value":"32.81 ft (10.00 m)"},{"metric":"Waste buffer (+15%)","value":"4.92 ft (1.50 m)"},{"metric":"Total roll length to order","value":"37.73 ft (11.50 m)"},{"metric":"Carpet to purchase","value":"495.14 sq ft / 55.02 sq yd (46.00 m²)"},{"metric":"Roll-width offcut (before waste buffer)","value":"107.64 sq ft (10.00 m²)"},{"metric":"Carpet cost","value":"-"},{"metric":"Padding cost","value":"-"},{"metric":"Installation cost","value":"-"},{"metric":"Total cost","value":"-"}],"summary":"322.92 sq ft (30.00 m²) room · 2 strip(s)/1 seam(s) · 37.73 ft (11.50 m) of carpet to order"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cash-flow-calculator":{"post":{"operationId":"run_cash_flow_calculator","summary":"Cash Flow Calculator","tags":["Calculators"],"description":"Calculate your net monthly cash flow and projected ending cash balance from a beginning balance plus recurring monthly inflows and outflows, with an optional month-by-month running-balance breakdown.\n\n[Try Cash Flow Calculator in your browser →](https://iotools.cloud/tool/cash-flow-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startingCash":{"type":"number","description":"Beginning Cash Balance","minimum":-99999999,"maximum":99999999},"operatingIncome":{"type":"number","description":"Operating / Sales Income","minimum":0,"maximum":99999999},"otherIncome":{"type":"number","description":"Other Income","minimum":0,"maximum":99999999},"operatingExpenses":{"type":"number","description":"Operating Expenses","minimum":0,"maximum":99999999},"debtPayments":{"type":"number","description":"Loan / Debt Payments","minimum":0,"maximum":99999999},"taxPayments":{"type":"number","description":"Taxes","minimum":0,"maximum":99999999},"otherExpenses":{"type":"number","description":"Other Expenses","minimum":0,"maximum":99999999},"months":{"type":"number","description":"Number of Months to Project","minimum":1,"maximum":60},"includeSchedule":{"type":"boolean","description":"Show Month-by-Month Breakdown"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["startingCash","months"]},"examples":{"positive_cash_flow_6_month_projection":{"summary":"Positive cash flow, 6-month projection","value":{"startingCash":"10000","operatingIncome":"8000","otherIncome":"500","operatingExpenses":"4000","debtPayments":"1200","taxPayments":"800","otherExpenses":"300","months":"6","includeSchedule":"true","currency":"USD"}},"negative_cash_flow_4_month_projection":{"summary":"Negative cash flow, 4-month projection","value":{"startingCash":"5000","operatingIncome":"3000","otherIncome":"0","operatingExpenses":"2500","debtPayments":"800","taxPayments":"200","otherExpenses":"100","months":"4","includeSchedule":"true","currency":"USD"}},"summary_only_breakdown_hidden":{"summary":"Summary only, breakdown hidden","value":{"startingCash":"20000","operatingIncome":"10000","otherIncome":"1000","operatingExpenses":"5000","debtPayments":"0","taxPayments":"1500","otherExpenses":"500","months":"12","includeSchedule":"","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"positive_cash_flow_6_month_projection":{"summary":"Positive cash flow, 6-month projection","value":{"tool":"cash-flow-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Beginning Cash Balance","value":"$10,000.00"},{"metric":"Total Monthly Inflows","value":"$8,500.00"},{"metric":"Total Monthly Outflows","value":"$6,300.00"},{"metric":"Net Monthly Cash Flow","value":"$2,200.00"},{"metric":"Projection Period","value":"6 months"},{"metric":"Projected Ending Cash Balance","value":"$23,200.00"},{"metric":"Cash Flow Status","value":"Positive"}],"schedule":[{"month":"1","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$12,200.00"},{"month":"2","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$14,400.00"},{"month":"3","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$16,600.00"},{"month":"4","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$18,800.00"},{"month":"5","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$21,000.00"},{"month":"6","inflows":"$8,500.00","outflows":"$6,300.00","net-cash-flow":"$2,200.00","ending-balance":"$23,200.00"}]},"credits_used":5,"credits_remaining":null}},"negative_cash_flow_4_month_projection":{"summary":"Negative cash flow, 4-month projection","value":{"tool":"cash-flow-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Beginning Cash Balance","value":"$5,000.00"},{"metric":"Total Monthly Inflows","value":"$3,000.00"},{"metric":"Total Monthly Outflows","value":"$3,600.00"},{"metric":"Net Monthly Cash Flow","value":"-$600.00"},{"metric":"Projection Period","value":"4 months"},{"metric":"Projected Ending Cash Balance","value":"$2,600.00"},{"metric":"Cash Flow Status","value":"Negative"}],"schedule":[{"month":"1","inflows":"$3,000.00","outflows":"$3,600.00","net-cash-flow":"-$600.00","ending-balance":"$4,400.00"},{"month":"2","inflows":"$3,000.00","outflows":"$3,600.00","net-cash-flow":"-$600.00","ending-balance":"$3,800.00"},{"month":"3","inflows":"$3,000.00","outflows":"$3,600.00","net-cash-flow":"-$600.00","ending-balance":"$3,200.00"},{"month":"4","inflows":"$3,000.00","outflows":"$3,600.00","net-cash-flow":"-$600.00","ending-balance":"$2,600.00"}]},"credits_used":5,"credits_remaining":null}},"summary_only_breakdown_hidden":{"summary":"Summary only, breakdown hidden","value":{"tool":"cash-flow-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Beginning Cash Balance","value":"$20,000.00"},{"metric":"Total Monthly Inflows","value":"$11,000.00"},{"metric":"Total Monthly Outflows","value":"$7,000.00"},{"metric":"Net Monthly Cash Flow","value":"$4,000.00"},{"metric":"Projection Period","value":"12 months"},{"metric":"Projected Ending Cash Balance","value":"$68,000.00"},{"metric":"Cash Flow Status","value":"Positive"}],"schedule":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Cash Flow Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Month-by-Month Breakdown","items":{"type":"object","properties":{"month":{"type":"string","description":"Month"},"inflows":{"type":"string","description":"Inflows"},"outflows":{"type":"string","description":"Outflows"},"net-cash-flow":{"type":"string","description":"Net Cash Flow"},"ending-balance":{"type":"string","description":"Ending Balance"}}},"x-iotools-columns":["month","inflows","outflows","net-cash-flow","ending-balance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cat-litter-box-calculator":{"post":{"operationId":"run_cat_litter_box_calculator","summary":"Cat Litter Box Calculator","tags":["Calculators"],"description":"Calculate how many litter boxes your household needs (the vet-recommended N+1 rule), how to spread them across floors, and your monthly litter usage, bags, and cost by litter type.\n\n[Try Cat Litter Box Calculator in your browser →](https://iotools.cloud/tool/cat-litter-box-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"catCount":{"type":"number","description":"Number of cats","minimum":1},"floors":{"type":"number","description":"Floors in the home","minimum":1},"litterType":{"enum":["clumping-clay","crystal-silica","pine-pellet","corn-wheat","non-clumping-clay"],"description":"Litter type"},"bagSize":{"type":"number","description":"Bag size","minimum":0.1},"volumeUnit":{"enum":["l","gal"],"description":"Volume unit"},"bagCost":{"type":"number","description":"Cost per bag ($)","minimum":0}},"required":[]},"examples":{"2_cats_1_floor_clumping_clay":{"summary":"2 cats, 1 floor, clumping clay","value":{"catCount":"2","floors":"1","litterType":"clumping-clay","bagSize":"10","volumeUnit":"l","bagCost":"15"}},"3_cats_2_floors_crystal_litter_gallon_bags":{"summary":"3 cats, 2 floors, crystal litter, gallon bags","value":{"catCount":"3","floors":"2","litterType":"crystal-silica","bagSize":"8","volumeUnit":"gal","bagCost":"22"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_cats_1_floor_clumping_clay":{"summary":"2 cats, 1 floor, clumping clay","value":{"tool":"cat-litter-box-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Recommended Boxes (N+1 rule)","value":"3 for 2 cats"},{"metric":"Total Boxes to Place","value":"3"},{"metric":"Litter Type","value":"Clumping Clay"},{"metric":"Recommended Full Change","value":"Every 21 days — Scoop daily; clumps let you top off between full changes."},{"metric":"Weekly Litter Usage","value":"3.0 L"},{"metric":"Monthly Litter Usage","value":"13.0 L"},{"metric":"Bags Needed per Month","value":"1.3"},{"metric":"Estimated Monthly Cost","value":"$19.55"},{"metric":"Cost per Cat per Month","value":"$9.78"}],"placement":[{"floor":"Floor 1","boxes":"3 boxes"}]},"credits_used":5,"credits_remaining":null}},"3_cats_2_floors_crystal_litter_gallon_bags":{"summary":"3 cats, 2 floors, crystal litter, gallon bags","value":{"tool":"cat-litter-box-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Recommended Boxes (N+1 rule)","value":"4 for 3 cats"},{"metric":"Total Boxes to Place","value":"4"},{"metric":"Litter Type","value":"Crystal / Silica Gel"},{"metric":"Recommended Full Change","value":"Every 30 days — Absorbs without clumping — lowest volume used, but check for odor before the full change is due."},{"metric":"Weekly Litter Usage","value":"0.6 gal"},{"metric":"Monthly Litter Usage","value":"2.4 gal"},{"metric":"Bags Needed per Month","value":"0.3"},{"metric":"Estimated Monthly Cost","value":"$6.63"},{"metric":"Cost per Cat per Month","value":"$2.21"}],"placement":[{"floor":"Floor 1","boxes":"2 boxes"},{"floor":"Floor 2","boxes":"2 boxes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Litter Box & Usage Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"placement":{"type":"array","description":"Box Placement by Floor","items":{"type":"object","properties":{"floor":{"type":"string","description":"Floor"},"boxes":{"type":"string","description":"Boxes"}}},"x-iotools-columns":["floor","boxes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ceiling-and-floor-function-calculator":{"post":{"operationId":"run_ceiling_and_floor_function_calculator","summary":"Ceiling and Floor Function Calculator","tags":["Calculators"],"description":"Find the floor, ceiling, nearest integer, fractional part and distance to each neighboring integer for any decimal, fraction, or named constant (pi, e, phi, √2, √3, √5).\n\n[Try Ceiling and Floor Function Calculator in your browser →](https://iotools.cloud/tool/ceiling-and-floor-function-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","description":"Value"}},"required":["value"]},"examples":{"fraction_7_3":{"summary":"Fraction: 7/3","value":{"value":"7/3"}},"negative_decimal_2_75":{"summary":"Negative decimal: -2.75","value":{"value":"-2.75"}},"already_an_integer_5":{"summary":"Already an integer: 5","value":{"value":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fraction_7_3":{"summary":"Fraction: 7/3","value":{"tool":"ceiling-and-floor-function-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Value","value":"2.33333"},{"property":"Floor ⌊x⌋","value":"2"},{"property":"Ceiling ⌈x⌉","value":"3"},{"property":"Nearest integer","value":"2"},{"property":"Fractional part (= distance to floor)","value":"0.333333"},{"property":"Is integer","value":"No"},{"property":"Distance to ceiling","value":"0.666667"}],"steps":"Floor ⌊2.33333⌋ = greatest integer ≤ 2.33333 = 2\nCeiling ⌈2.33333⌉ = smallest integer ≥ 2.33333 = 3\nFractional part = 2.33333 − 2 = 0.333333"},"credits_used":5,"credits_remaining":null}},"negative_decimal_2_75":{"summary":"Negative decimal: -2.75","value":{"tool":"ceiling-and-floor-function-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Value","value":"-2.75"},{"property":"Floor ⌊x⌋","value":"-3"},{"property":"Ceiling ⌈x⌉","value":"-2"},{"property":"Nearest integer","value":"-3"},{"property":"Fractional part (= distance to floor)","value":"0.25"},{"property":"Is integer","value":"No"},{"property":"Distance to ceiling","value":"0.75"}],"steps":"Floor ⌊-2.75⌋ = greatest integer ≤ -2.75 = -3\nCeiling ⌈-2.75⌉ = smallest integer ≥ -2.75 = -2\nFractional part = -2.75 − -3 = 0.25"},"credits_used":5,"credits_remaining":null}},"already_an_integer_5":{"summary":"Already an integer: 5","value":{"tool":"ceiling-and-floor-function-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Value","value":"5"},{"property":"Floor ⌊x⌋","value":"5"},{"property":"Ceiling ⌈x⌉","value":"5"},{"property":"Nearest integer","value":"5"},{"property":"Fractional part (= distance to floor)","value":"0"},{"property":"Is integer","value":"Yes"},{"property":"Distance to ceiling","value":"0"}],"steps":"5 is already an integer, so floor = ceiling = nearest integer = 5."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/churn-rate-retention-calculator":{"post":{"operationId":"run_churn_rate_retention_calculator","summary":"Churn Rate & Retention Calculator","tags":["Calculators"],"description":"Calculate customer churn rate and retention rate from customers at the start of a period and customers lost — with an optional annualized rate projection and net-new customer tracking.\n\n[Try Churn Rate & Retention Calculator in your browser →](https://iotools.cloud/tool/churn-rate-retention-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"enum":["monthly","quarterly","annual"],"description":"Period Length"},"customersStart":{"type":"number","description":"Customers at Period Start","minimum":0},"customersLost":{"type":"number","description":"Customers Lost","minimum":0},"customersNew":{"type":"number","description":"New Customers (optional)","minimum":0}},"required":[]},"examples":{"monthly_saas_churn":{"summary":"Monthly SaaS churn","value":{"period":"monthly","customersStart":"1000","customersLost":"50"}},"with_new_customers_acquired":{"summary":"With new customers acquired","value":{"period":"monthly","customersStart":"1000","customersLost":"50","customersNew":"70"}},"annual_period_no_annualizing_needed":{"summary":"Annual period (no annualizing needed)","value":{"period":"annual","customersStart":"200","customersLost":"20"}},"zero_customers_at_start_invalid":{"summary":"Zero customers at start (invalid)","value":{"period":"monthly","customersStart":"0","customersLost":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"monthly_saas_churn":{"summary":"Monthly SaaS churn","value":{"tool":"churn-rate-retention-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Monthly Churn Rate","value":"5.00%"},{"metric":"Monthly Retention Rate","value":"95.00%"},{"metric":"Annualized Churn Rate","value":"45.96%"},{"metric":"Annualized Retention Rate","value":"54.04%"},{"metric":"Customers at Start","value":"1,000"},{"metric":"Customers Lost","value":"50"},{"metric":"Customers Retained","value":"950"}]},"credits_used":5,"credits_remaining":null}},"with_new_customers_acquired":{"summary":"With new customers acquired","value":{"tool":"churn-rate-retention-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Monthly Churn Rate","value":"5.00%"},{"metric":"Monthly Retention Rate","value":"95.00%"},{"metric":"Annualized Churn Rate","value":"45.96%"},{"metric":"Annualized Retention Rate","value":"54.04%"},{"metric":"Customers at Start","value":"1,000"},{"metric":"Customers Lost","value":"50"},{"metric":"New Customers","value":"70"},{"metric":"Net New (New − Lost)","value":"+20"},{"metric":"Customers at End","value":"1,020"}]},"credits_used":5,"credits_remaining":null}},"annual_period_no_annualizing_needed":{"summary":"Annual period (no annualizing needed)","value":{"tool":"churn-rate-retention-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Annual Churn Rate","value":"10.00%"},{"metric":"Annual Retention Rate","value":"90.00%"},{"metric":"Customers at Start","value":"200"},{"metric":"Customers Lost","value":"20"},{"metric":"Customers Retained","value":"180"}]},"credits_used":5,"credits_remaining":null}},"zero_customers_at_start_invalid":{"summary":"Zero customers at start (invalid)","value":{"tool":"churn-rate-retention-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Status","value":"Enter customers at the start of the period (a number greater than 0)."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Churn & Retention Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/circle-ellipse-calculator":{"post":{"operationId":"run_circle_ellipse_calculator","summary":"Circle & Ellipse Calculator","tags":["Calculators"],"description":"Calculate a circle's radius, diameter, circumference and area from any single known value, plus optional sector arc length and area — or an ellipse's area, perimeter (Ramanujan approximation), eccentricity, foci distance and semi-latus rectum from its semi-major/semi-minor axes.\n\n[Try Circle & Ellipse Calculator in your browser →](https://iotools.cloud/tool/circle-ellipse-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["circle","ellipse"],"description":"Shape"},"unit":{"enum":["mm","cm","m","in","ft","yd"],"description":"Unit"},"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"},"circleSolveFrom":{"enum":["radius","diameter","circumference","area"],"description":"Solve circle from"},"radius":{"type":"number","description":"Radius","minimum":0},"diameter":{"type":"number","description":"Diameter","minimum":0},"circumference":{"type":"number","description":"Circumference","minimum":0},"areaInput":{"type":"number","description":"Area","minimum":0},"sectorAngle":{"type":"number","description":"Sector angle (°)","minimum":0,"maximum":360},"semiMajor":{"type":"number","description":"Semi-major axis (a)","minimum":0},"semiMinor":{"type":"number","description":"Semi-minor axis (b)","minimum":0}},"required":[]},"examples":{"circle_from_radius_with_a_90_sector":{"summary":"Circle from radius, with a 90° sector","value":{"shape":"circle","unit":"cm","precision":"2","circleSolveFrom":"radius","radius":"5","sectorAngle":"90"}},"circle_from_diameter_no_sector":{"summary":"Circle from diameter, no sector","value":{"shape":"circle","unit":"cm","precision":"2","circleSolveFrom":"diameter","diameter":"10"}},"ellipse_a_3_b_7_axes_auto_sorted":{"summary":"Ellipse (a=3, b=7 — axes auto-sorted)","value":{"shape":"ellipse","unit":"cm","precision":"3","semiMajor":"3","semiMinor":"7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"circle_from_radius_with_a_90_sector":{"summary":"Circle from radius, with a 90° sector","value":{"tool":"circle-ellipse-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Radius","value":"5 cm"},{"property":"Diameter","value":"10 cm"},{"property":"Circumference","value":"31.42 cm"},{"property":"Area","value":"78.54 cm²"}],"sectorResults":[{"property":"Arc Length","value":"7.85 cm"},{"property":"Sector Area","value":"19.63 cm²"}]},"credits_used":5,"credits_remaining":null}},"circle_from_diameter_no_sector":{"summary":"Circle from diameter, no sector","value":{"tool":"circle-ellipse-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Radius","value":"5 cm"},{"property":"Diameter","value":"10 cm"},{"property":"Circumference","value":"31.42 cm"},{"property":"Area","value":"78.54 cm²"}],"sectorResults":[{"property":"Arc Length","value":"-"},{"property":"Sector Area","value":"-"}]},"credits_used":5,"credits_remaining":null}},"ellipse_a_3_b_7_axes_auto_sorted":{"summary":"Ellipse (a=3, b=7 — axes auto-sorted)","value":{"tool":"circle-ellipse-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Area","value":"65.973 cm²"},{"property":"Perimeter (Ramanujan)","value":"32.685 cm"},{"property":"Eccentricity","value":"0.904"},{"property":"Foci Distance (c)","value":"6.325 cm"},{"property":"Semi-Latus Rectum","value":"1.286 cm"}],"sectorResults":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"sectorResults":{"type":"array","description":"Sector & Segment (circle only)","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/circuit-breaker-sizing-helper":{"post":{"operationId":"run_circuit_breaker_sizing_helper","summary":"Circuit Breaker Sizing Helper","tags":["Calculators"],"description":"Recommend a circuit breaker's ampere rating from a load's current (or watts + voltage). Applies the standard continuous-load rule — breaker ≥ 1.25× continuous current + 1.0× non-continuous current — and rounds up to the nearest standard breaker size. Runs entirely in your browser.\n\n[Try Circuit Breaker Sizing Helper in your browser →](https://iotools.cloud/tool/circuit-breaker-sizing-helper/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["amps","watts"],"description":"Load given as"},"continuousAmps":{"type":"number","description":"Continuous load (A)","minimum":0,"maximum":5000},"nonContinuousAmps":{"type":"number","description":"Non-continuous load (A)","minimum":0,"maximum":5000},"continuousWatts":{"type":"number","description":"Continuous load (W)","minimum":0,"maximum":500000},"nonContinuousWatts":{"type":"number","description":"Non-continuous load (W)","minimum":0,"maximum":500000},"voltage":{"enum":["120","208","240","277","480"],"description":"Voltage"},"breakerType":{"enum":["standard","100percent"],"description":"Breaker type"}},"required":[]},"examples":{"16a_continuous_4a_non_continuous_standard_breaker":{"summary":"16A continuous + 4A non-continuous, standard breaker","value":{"inputMode":"amps","continuousAmps":"16","nonContinuousAmps":"4","breakerType":"standard"}},"1800w_continuous_500w_non_continuous_at_240v":{"summary":"1800W continuous + 500W non-continuous at 240V","value":{"inputMode":"watts","continuousWatts":"1800","nonContinuousWatts":"500","voltage":"240","breakerType":"standard"}},"80a_continuous_100_rated_breaker":{"summary":"80A continuous, 100%-rated breaker","value":{"inputMode":"amps","continuousAmps":"80","nonContinuousAmps":"0","breakerType":"100percent"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"16a_continuous_4a_non_continuous_standard_breaker":{"summary":"16A continuous + 4A non-continuous, standard breaker","value":{"tool":"circuit-breaker-sizing-helper","tool_version":"1.0.2","outputs":{"requiredCapacity":"24.00 A minimum (16.00 A continuous × 1.25 + 4.00 A non-continuous)","recommendedBreaker":"25 A breaker (next standard size ≥ 24.00 A)","breakdownTable":[{"item":"Continuous load","value":"16.00 A"},{"item":"Non-continuous load","value":"4.00 A"},{"item":"Adjusted continuous (125%)","value":"20.00 A"},{"item":"Total required capacity","value":"24.00 A"},{"item":"Recommended breaker","value":"25 A"}],"notes":"Standard breakers must not be loaded past 80% of their rating by a continuous load (3+ hours) — equivalent to sizing the breaker at 1.25x the continuous current, per NEC 210.19(A)(1)/210.20(A).\nThis sizes the breaker's ampere rating only. Conductor sizing, terminal temperature ratings and voltage drop must be checked separately against NEC Table 310.16 (or your local code) before wiring a circuit.\nThis is a rule-of-thumb estimate, not a substitute for a licensed electrician's review — especially for a permanent installation."},"credits_used":5,"credits_remaining":null}},"1800w_continuous_500w_non_continuous_at_240v":{"summary":"1800W continuous + 500W non-continuous at 240V","value":{"tool":"circuit-breaker-sizing-helper","tool_version":"1.0.2","outputs":{"requiredCapacity":"11.46 A minimum (7.50 A continuous × 1.25 + 2.08 A non-continuous)","recommendedBreaker":"15 A breaker (next standard size ≥ 11.46 A)","breakdownTable":[{"item":"Continuous load","value":"7.50 A"},{"item":"Non-continuous load","value":"2.08 A"},{"item":"Adjusted continuous (125%)","value":"9.38 A"},{"item":"Total required capacity","value":"11.46 A"},{"item":"Recommended breaker","value":"15 A"}],"notes":"Standard breakers must not be loaded past 80% of their rating by a continuous load (3+ hours) — equivalent to sizing the breaker at 1.25x the continuous current, per NEC 210.19(A)(1)/210.20(A).\nThis sizes the breaker's ampere rating only. Conductor sizing, terminal temperature ratings and voltage drop must be checked separately against NEC Table 310.16 (or your local code) before wiring a circuit.\nThis is a rule-of-thumb estimate, not a substitute for a licensed electrician's review — especially for a permanent installation."},"credits_used":5,"credits_remaining":null}},"80a_continuous_100_rated_breaker":{"summary":"80A continuous, 100%-rated breaker","value":{"tool":"circuit-breaker-sizing-helper","tool_version":"1.0.2","outputs":{"requiredCapacity":"80.00 A minimum (80.00 A continuous + 0.00 A non-continuous)","recommendedBreaker":"80 A breaker (next standard size ≥ 80.00 A)","breakdownTable":[{"item":"Continuous load","value":"80.00 A"},{"item":"Non-continuous load","value":"0.00 A"},{"item":"Adjusted continuous (125%)","value":"n/a — 100%-rated breaker"},{"item":"Total required capacity","value":"80.00 A"},{"item":"Recommended breaker","value":"80 A"}],"notes":"100%-rated breakers can carry the full continuous load without the 1.25x multiplier — but only when both the breaker AND the panel/enclosure are specifically UL-listed as a 100%-rated combination. Verify the listing before relying on this.\nThis sizes the breaker's ampere rating only. Conductor sizing, terminal temperature ratings and voltage drop must be checked separately against NEC Table 310.16 (or your local code) before wiring a circuit.\nThis is a rule-of-thumb estimate, not a substitute for a licensed electrician's review — especially for a permanent installation."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"requiredCapacity":{"type":"string","description":"Minimum required capacity"},"recommendedBreaker":{"type":"string","description":"Recommended breaker"},"breakdownTable":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["item","value"]},"notes":{"type":"string","description":"Notes & warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cloud-bandwidth-cost-estimator":{"post":{"operationId":"run_cloud_bandwidth_cost_estimator","summary":"Cloud Bandwidth Cost Estimator","tags":["Calculators"],"description":"Estimate monthly egress bandwidth costs across AWS, Google Cloud, Azure, Cloudflare, DigitalOcean and Backblaze B2 using tiered list pricing, with a side-by-side cost comparison.\n\n[Try Cloud Bandwidth Cost Estimator in your browser →](https://iotools.cloud/tool/cloud-bandwidth-cost-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["aws","gcp","azure","cloudflare","digitalocean","backblaze"],"description":"Provider"},"egress":{"type":"number","description":"Monthly Egress","minimum":0},"unit":{"enum":["gb","tb","pb"],"description":"Unit"},"freeAllowance":{"type":"number","description":"Free Allowance Override (GB)","minimum":0}},"required":["egress"]},"examples":{"5_tb_month_on_aws":{"summary":"5 TB/month on AWS","value":{"provider":"aws","egress":"5","unit":"tb","freeAllowance":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_tb_month_on_aws":{"summary":"5 TB/month on AWS","value":{"tool":"cloud-bandwidth-cost-estimator","tool_version":"1.0.2","outputs":{"tierBreakdown":[{"tier":"Free tier","rate":"$0.00 / GB","billed":"100 GB","cost":"$0.00"},{"tier":"First 10 TB","rate":"$0.0900 / GB","billed":"4.9 TB","cost":"$451.80"}],"comparison":[{"provider":"Cloudflare","monthly-cost":"$0.00","notes":"R2, Workers, Pages — zero egress fees"},{"provider":"DigitalOcean","monthly-cost":"$40.96","notes":"Includes 1 TB / month with smallest droplet, then $0.01/GB overage"},{"provider":"Backblaze B2","monthly-cost":"$51.20","notes":"3x stored data free per day; pure egress is $0.01/GB"},{"provider":"Azure","monthly-cost":"$436.74","notes":"Bandwidth Zone 1 (NA, EU)"},{"provider":"AWS (selected)","monthly-cost":"$451.80","notes":"EC2 / CloudFront list price, US/EU regions"},{"provider":"Google Cloud","monthly-cost":"$573.33","notes":"Compute Engine, US/EU/Canada destinations"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tierBreakdown":{"type":"array","description":"Tier Breakdown (Selected Provider)","items":{"type":"object","properties":{"tier":{"type":"string","description":"Tier"},"rate":{"type":"string","description":"Rate"},"billed":{"type":"string","description":"Billed"},"cost":{"type":"string","description":"Cost"}}},"x-iotools-columns":["tier","rate","billed","cost"]},"comparison":{"type":"array","description":"Provider Comparison","items":{"type":"object","properties":{"provider":{"type":"string","description":"Provider"},"monthly-cost":{"type":"string","description":"Monthly Cost"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["provider","monthly-cost","notes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/camera-depth-of-field-calculator":{"post":{"operationId":"run_camera_depth_of_field_calculator","summary":"Camera Depth of Field (DoF) Calculator","tags":["Calculators"],"description":"Calculate a camera's depth of field from focal length, aperture, subject distance and sensor size. Get the hyperfocal distance, near and far focus limits, total depth of field, and which side of the subject has more DoF. Pure optics math — no camera or photo upload needed.\n\n[Try Camera Depth of Field (DoF) Calculator in your browser →](https://iotools.cloud/tool/camera-depth-of-field-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sensor":{"enum":["fullframe","apsc-canon","apsc-nikon","mft","1inch","phone","medium-format","custom"],"description":"Sensor Size"},"coC":{"type":"number","description":"Circle of Confusion (mm)","minimum":0.001,"maximum":1},"focalLength":{"type":"number","description":"Focal Length (mm)","minimum":1,"maximum":2000},"aperture":{"type":"number","description":"Aperture (f-number)","minimum":0.5},"distance":{"type":"number","description":"Subject Distance","minimum":0.01},"distanceUnit":{"enum":["m","ft"],"description":"Distance Unit"}},"required":[]},"examples":{"50mm_f_5_6_full_frame_3m":{"summary":"50mm f/5.6, full frame, 3m","value":{"sensor":"fullframe","coC":"0.03","focalLength":"50","aperture":"5.6","distance":"3","distanceUnit":"m"}},"24mm_f_11_aps_c_canon_5_feet":{"summary":"24mm f/11, APS-C Canon, 5 feet","value":{"sensor":"apsc-canon","coC":"0.03","focalLength":"24","aperture":"11","distance":"5","distanceUnit":"ft"}},"24mm_f_11_aps_c_canon_10_feet_past_hyperfocal_far_is_infinite":{"summary":"24mm f/11, APS-C Canon, 10 feet (past hyperfocal — far is infinite)","value":{"sensor":"apsc-canon","coC":"0.03","focalLength":"24","aperture":"11","distance":"10","distanceUnit":"ft"}},"35mm_f_2_8_custom_sensor_manual_coc_1_5m":{"summary":"35mm f/2.8, custom sensor (manual CoC), 1.5m","value":{"sensor":"custom","coC":"0.05","focalLength":"35","aperture":"2.8","distance":"1.5","distanceUnit":"m"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"50mm_f_5_6_full_frame_3m":{"summary":"50mm f/5.6, full frame, 3m","value":{"tool":"camera-depth-of-field-calculator","tool_version":"1.0.2","outputs":{"result":"In focus from 2.50 m to 3.74 m — total depth of field 1.24 m","summary":[{"property":"Hyperfocal distance","value":"14.93 m"},{"property":"Near focus limit","value":"2.50 m"},{"property":"Far focus limit","value":"3.74 m"},{"property":"Total depth of field","value":"1.24 m"},{"property":"DoF in front of subject","value":"0.50 m"},{"property":"DoF behind subject","value":"0.74 m"},{"property":"Side with more depth of field","value":"Behind the subject (0.74 m vs 0.50 m in front)"}]},"credits_used":5,"credits_remaining":null}},"24mm_f_11_aps_c_canon_5_feet":{"summary":"24mm f/11, APS-C Canon, 5 feet","value":{"tool":"camera-depth-of-field-calculator","tool_version":"1.0.2","outputs":{"result":"In focus from 3.24 ft to 10.97 ft — total depth of field 7.73 ft","summary":[{"property":"Hyperfocal distance","value":"9.12 ft"},{"property":"Near focus limit","value":"3.24 ft"},{"property":"Far focus limit","value":"10.97 ft"},{"property":"Total depth of field","value":"7.73 ft"},{"property":"DoF in front of subject","value":"1.76 ft"},{"property":"DoF behind subject","value":"5.97 ft"},{"property":"Side with more depth of field","value":"Behind the subject (5.97 ft vs 1.76 ft in front)"}]},"credits_used":5,"credits_remaining":null}},"24mm_f_11_aps_c_canon_10_feet_past_hyperfocal_far_is_infinite":{"summary":"24mm f/11, APS-C Canon, 10 feet (past hyperfocal — far is infinite)","value":{"tool":"camera-depth-of-field-calculator","tool_version":"1.0.2","outputs":{"result":"In focus from 4.77 ft to infinity (hyperfocal distance reached)","summary":[{"property":"Hyperfocal distance","value":"9.12 ft"},{"property":"Near focus limit","value":"4.77 ft"},{"property":"Far focus limit","value":"∞ (infinity)"},{"property":"Total depth of field","value":"∞"},{"property":"DoF in front of subject","value":"5.23 ft"},{"property":"DoF behind subject","value":"∞"},{"property":"Side with more depth of field","value":"Behind the subject (extends to infinity)"}]},"credits_used":5,"credits_remaining":null}},"35mm_f_2_8_custom_sensor_manual_coc_1_5m":{"summary":"35mm f/2.8, custom sensor (manual CoC), 1.5m","value":{"tool":"camera-depth-of-field-calculator","tool_version":"1.0.2","outputs":{"result":"In focus from 1.28 m to 1.80 m — total depth of field 0.52 m","summary":[{"property":"Hyperfocal distance","value":"8.79 m"},{"property":"Near focus limit","value":"1.28 m"},{"property":"Far focus limit","value":"1.80 m"},{"property":"Total depth of field","value":"0.52 m"},{"property":"DoF in front of subject","value":"0.22 m"},{"property":"DoF behind subject","value":"0.30 m"},{"property":"Side with more depth of field","value":"Behind the subject (0.30 m vs 0.22 m in front)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"summary":{"type":"array","description":"Depth of Field Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/column-slenderness-calculator":{"post":{"operationId":"run_column_slenderness_calculator","summary":"Column Slenderness Calculator","tags":["Calculators"],"description":"Calculate a column's slenderness ratio (KL/r) from its end conditions, unbraced length and cross-section, classify it as a short/intermediate or long (slender) column against the Euler-Johnson tangent point, and estimate its critical buckling stress and load.\n\n[Try Column Slenderness Calculator in your browser →](https://iotools.cloud/tool/column-slenderness-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"endCondition":{"enum":["pinned-pinned","fixed-pinned","fixed-fixed","fixed-free","custom"],"description":"End Condition"},"customK":{"type":"number","description":"Effective Length Factor (K)","minimum":0},"unbracedLength":{"type":"number","description":"Unbraced Length (L)","minimum":0},"material":{"enum":["steel-a36","steel-a992","aluminum-6061","stainless-304","custom"],"description":"Material"},"elasticModulus":{"type":"number","description":"Elastic Modulus (E)","minimum":0},"yieldStrength":{"type":"number","description":"Yield Strength (Fy)","minimum":0},"sectionMode":{"enum":["direct","rectangular","circular"],"description":"Cross-Section"},"radiusOfGyration":{"type":"number","description":"Radius of Gyration (r)","minimum":0},"crossSectionArea":{"type":"number","description":"Cross-Sectional Area (optional)","minimum":0},"rectWidth":{"type":"number","description":"Width (b)","minimum":0},"rectHeight":{"type":"number","description":"Height (h)","minimum":0},"circDiameter":{"type":"number","description":"Diameter (d)","minimum":0}},"required":["unbracedLength"]},"examples":{"pinned_pinned_steel_column_direct_radius_of_gyration":{"summary":"Pinned-pinned steel column, direct radius of gyration","value":{"endCondition":"pinned-pinned","unbracedLength":"4","material":"steel-a36","sectionMode":"direct","radiusOfGyration":"50","crossSectionArea":"5000"}},"cantilever_aluminum_column_rectangular_section":{"summary":"Cantilever aluminum column, rectangular section","value":{"endCondition":"fixed-free","unbracedLength":"3","material":"aluminum-6061","sectionMode":"rectangular","rectWidth":"100","rectHeight":"150"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pinned_pinned_steel_column_direct_radius_of_gyration":{"summary":"Pinned-pinned steel column, direct radius of gyration","value":{"tool":"column-slenderness-calculator","tool_version":"1.0.2","outputs":{"status":"λ = 80.00 vs. Cc = 125.7 — short/intermediate column. Fcr = 199.3 MPa, Pcr = 996.7 kN.","results":[{"property":"Effective Length Factor (K)","value":"1.000"},{"property":"Effective Length (KL)","value":"4,000 mm (4.000 m)"},{"property":"Radius of Gyration (r)","value":"50.00 mm"},{"property":"Slenderness Ratio (λ = KL/r)","value":"80.00"},{"property":"Critical Slenderness Ratio (Cc)","value":"125.7"},{"property":"Classification","value":"Short/intermediate column (λ < Cc)"},{"property":"Buckling Mode","value":"Inelastic buckling governs (Johnson parabola) — yielding and buckling interact."},{"property":"Critical Buckling Stress (Fcr)","value":"199.3 MPa"},{"property":"Cross-Sectional Area","value":"5,000 mm²"},{"property":"Critical Buckling Load (Pcr)","value":"996.7 kN"},{"property":"Elastic Modulus Used","value":"200.0 GPa"},{"property":"Yield Strength Used","value":"250.0 MPa"},{"property":"Note","value":"Textbook Euler-Johnson estimate for a preliminary check only — not a substitute for a code-based design capacity (apply your governing code's resistance/safety factors separately)."}]},"credits_used":5,"credits_remaining":null}},"cantilever_aluminum_column_rectangular_section":{"summary":"Cantilever aluminum column, rectangular section","value":{"tool":"column-slenderness-calculator","tool_version":"1.0.2","outputs":{"status":"λ = 207.8 vs. Cc = 70.20 — long (slender) column. Fcr = 15.74 MPa, Pcr = 236.1 kN.","results":[{"property":"Effective Length Factor (K)","value":"2.000"},{"property":"Effective Length (KL)","value":"6,000 mm (6.000 m)"},{"property":"Radius of Gyration (r)","value":"28.87 mm"},{"property":"Slenderness Ratio (λ = KL/r)","value":"207.8"},{"property":"Critical Slenderness Ratio (Cc)","value":"70.20"},{"property":"Classification","value":"Long (slender) column (λ ≥ Cc)"},{"property":"Buckling Mode","value":"Elastic (Euler) buckling governs — the column buckles before the material yields."},{"property":"Critical Buckling Stress (Fcr)","value":"15.74 MPa"},{"property":"Cross-Sectional Area","value":"15,000 mm²"},{"property":"Critical Buckling Load (Pcr)","value":"236.1 kN"},{"property":"Elastic Modulus Used","value":"68.90 GPa"},{"property":"Yield Strength Used","value":"276.0 MPa"},{"property":"Note","value":"Textbook Euler-Johnson estimate for a preliminary check only — not a substitute for a code-based design capacity (apply your governing code's resistance/safety factors separately)."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"results":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/complementary-error-function-calculator":{"post":{"operationId":"run_complementary_error_function_calculator","summary":"Complementary Error Function Calculator","tags":["Calculators"],"description":"Calculate erf(x), the error function, and erfc(x) = 1 - erf(x), the complementary error function, for any real number x. Used in probability, statistics and diffusion/heat-transfer physics.\n\n[Try Complementary Error Function Calculator in your browser →](https://iotools.cloud/tool/complementary-error-function-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x":{"type":"number","description":"x","minimum":-6,"maximum":6}},"required":["x"]},"examples":{"x_0":{"summary":"x = 0","value":{"x":"0"}},"x_1":{"summary":"x = 1","value":{"x":"1"}},"x_2":{"summary":"x = 2","value":{"x":"2"}},"x_1_5":{"summary":"x = -1.5","value":{"x":"-1.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_0":{"summary":"x = 0","value":{"tool":"complementary-error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf(0)","value":"0.00000000"},{"function":"erfc(0)","value":"1.00000000"}]},"credits_used":5,"credits_remaining":null}},"x_1":{"summary":"x = 1","value":{"tool":"complementary-error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf(1)","value":"0.84270069"},{"function":"erfc(1)","value":"0.15729931"}]},"credits_used":5,"credits_remaining":null}},"x_2":{"summary":"x = 2","value":{"tool":"complementary-error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf(2)","value":"0.99532214"},{"function":"erfc(2)","value":"0.00467786"}]},"credits_used":5,"credits_remaining":null}},"x_1_5":{"summary":"x = -1.5","value":{"tool":"complementary-error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf(-1.5)","value":"-0.96610527"},{"function":"erfc(-1.5)","value":"1.96610527"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"function":{"type":"string","description":"Function"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["function","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/completing-the-square-calculator":{"post":{"operationId":"run_completing_the_square_calculator","summary":"Completing the Square Calculator","tags":["Calculators"],"description":"Convert ax² + bx + c = 0 to vertex form a(x − h)² + k and solve for x by completing the square, with the vertex point and a full step-by-step derivation.\n\n[Try Completing the Square Calculator in your browser →](https://iotools.cloud/tool/completing-the-square-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"a"},"coeffB":{"type":"number","description":"b"},"coeffC":{"type":"number","description":"c"}},"required":["coeffA","coeffB","coeffC"]},"examples":{"x_6x_5_0":{"summary":"x² + 6x + 5 = 0","value":{"coeffA":"1","coeffB":"6","coeffC":"5"}},"non_unit_leading_coefficient_2x_4x_6_0":{"summary":"Non-unit leading coefficient (2x² + 4x − 6 = 0)","value":{"coeffA":"2","coeffB":"4","coeffC":"-6"}},"complex_roots_x_x_1_0":{"summary":"Complex roots (x² + x + 1 = 0)","value":{"coeffA":"1","coeffB":"1","coeffC":"1"}},"fractional_vertex_x_3x_2_0":{"summary":"Fractional vertex (x² + 3x + 2 = 0)","value":{"coeffA":"1","coeffB":"3","coeffC":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_6x_5_0":{"summary":"x² + 6x + 5 = 0","value":{"tool":"completing-the-square-calculator","tool_version":"1.0.2","outputs":{"vertexForm":"y = (x + 3)² - 4","vertex":"(-3, -4)","roots":"x₁ = -1, x₂ = -5","steps":"x² + 6x + 5 = 0\nFactor a out of the x² and x terms: (x² + 6x) + 5 = 0\nHalf of the x-coefficient, squared — add it inside, subtract the equivalent outside: (x² + 6x + 9) - 9 + 5 = 0\nFactor the perfect square and combine the constants: (x + 3)² - 4 = 0\nVertex form: y = (x + 3)² - 4 — vertex at (h, k) = (-3, -4)\nSolve: (x + 3)² = 4 → x + 3 = ±2\nx₁ = -1, x₂ = -5"},"credits_used":5,"credits_remaining":null}},"non_unit_leading_coefficient_2x_4x_6_0":{"summary":"Non-unit leading coefficient (2x² + 4x − 6 = 0)","value":{"tool":"completing-the-square-calculator","tool_version":"1.0.2","outputs":{"vertexForm":"y = 2(x + 1)² - 8","vertex":"(-1, -8)","roots":"x₁ = 1, x₂ = -3","steps":"2x² + 4x - 6 = 0\nFactor a out of the x² and x terms: 2(x² + 2x) - 6 = 0\nHalf of the x-coefficient, squared — add it inside, subtract the equivalent outside: 2(x² + 2x + 1) - 2 - 6 = 0\nFactor the perfect square and combine the constants: 2(x + 1)² - 8 = 0\nVertex form: y = 2(x + 1)² - 8 — vertex at (h, k) = (-1, -8)\nSolve: (x + 1)² = 4 → x + 1 = ±2\nx₁ = 1, x₂ = -3"},"credits_used":5,"credits_remaining":null}},"complex_roots_x_x_1_0":{"summary":"Complex roots (x² + x + 1 = 0)","value":{"tool":"completing-the-square-calculator","tool_version":"1.0.2","outputs":{"vertexForm":"y = (x + 0.5)² + 0.75","vertex":"(-0.5, 0.75)","roots":"x₁ = -0.5 + 0.866025i, x₂ = -0.5 - 0.866025i","steps":"x² + x + 1 = 0\nFactor a out of the x² and x terms: (x² + x) + 1 = 0\nHalf of the x-coefficient, squared — add it inside, subtract the equivalent outside: (x² + x + 0.25) - 0.25 + 1 = 0\nFactor the perfect square and combine the constants: (x + 0.5)² + 0.75 = 0\nVertex form: y = (x + 0.5)² + 0.75 — vertex at (h, k) = (-0.5, 0.75)\nSolve: (x + 0.5)² = -0.75 → x + 0.5 = ±0.866025i\nx₁ = -0.5 + 0.866025i, x₂ = -0.5 - 0.866025i"},"credits_used":5,"credits_remaining":null}},"fractional_vertex_x_3x_2_0":{"summary":"Fractional vertex (x² + 3x + 2 = 0)","value":{"tool":"completing-the-square-calculator","tool_version":"1.0.2","outputs":{"vertexForm":"y = (x + 1.5)² - 0.25","vertex":"(-1.5, -0.25)","roots":"x₁ = -1, x₂ = -2","steps":"x² + 3x + 2 = 0\nFactor a out of the x² and x terms: (x² + 3x) + 2 = 0\nHalf of the x-coefficient, squared — add it inside, subtract the equivalent outside: (x² + 3x + 2.25) - 2.25 + 2 = 0\nFactor the perfect square and combine the constants: (x + 1.5)² - 0.25 = 0\nVertex form: y = (x + 1.5)² - 0.25 — vertex at (h, k) = (-1.5, -0.25)\nSolve: (x + 1.5)² = 0.25 → x + 1.5 = ±0.5\nx₁ = -1, x₂ = -2"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"vertexForm":{"type":"string","description":"Vertex Form"},"vertex":{"type":"string","description":"Vertex (h, k)"},"roots":{"type":"string","description":"Roots"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/compound-interest-calculator":{"post":{"operationId":"run_compound_interest_calculator","summary":"Compound Interest Calculator","tags":["Calculators"],"description":"Project the future value of an investment with compound interest — pick a compounding frequency (annually to continuous), add optional monthly contributions, and see a year-by-year growth table.\n\n[Try Compound Interest Calculator in your browser →](https://iotools.cloud/tool/compound-interest-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"number","description":"Principal Amount ($)","minimum":0},"rate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0,"maximum":100},"time":{"type":"number","description":"Time Period (Years)","minimum":1,"maximum":100},"frequency":{"enum":["1","4","12","52","365","continuous"],"description":"Compounding Frequency"},"contribution":{"type":"number","description":"Monthly Contribution ($)","minimum":0}},"required":["principal","rate","time"]},"examples":{"10_000_at_7_monthly_for_10_years":{"summary":"$10,000 at 7% monthly for 10 years","value":{"principal":"10000","rate":"7","time":"10","frequency":"12","contribution":"0"}},"with_monthly_contributions":{"summary":"With monthly contributions","value":{"principal":"5000","rate":"6","time":"5","frequency":"12","contribution":"200"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_at_7_monthly_for_10_years":{"summary":"$10,000 at 7% monthly for 10 years","value":{"tool":"compound-interest-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Future Value","value":"$20,096.61"},{"metric":"Total Contributions","value":"$10,000.00"},{"metric":"Total Interest Earned","value":"$10,096.61"}],"schedule":[{"year":"1","contributions":"$10,000.00","interest":"$722.90","balance":"$10,722.90"},{"year":"2","contributions":"$10,000.00","interest":"$1,498.06","balance":"$11,498.06"},{"year":"3","contributions":"$10,000.00","interest":"$2,329.26","balance":"$12,329.26"},{"year":"4","contributions":"$10,000.00","interest":"$3,220.54","balance":"$13,220.54"},{"year":"5","contributions":"$10,000.00","interest":"$4,176.25","balance":"$14,176.25"},{"year":"6","contributions":"$10,000.00","interest":"$5,201.06","balance":"$15,201.06"},{"year":"7","contributions":"$10,000.00","interest":"$6,299.94","balance":"$16,299.94"},{"year":"8","contributions":"$10,000.00","interest":"$7,478.26","balance":"$17,478.26"},{"year":"9","contributions":"$10,000.00","interest":"$8,741.77","balance":"$18,741.77"},{"year":"10","contributions":"$10,000.00","interest":"$10,096.61","balance":"$20,096.61"}]},"credits_used":5,"credits_remaining":null}},"with_monthly_contributions":{"summary":"With monthly contributions","value":{"tool":"compound-interest-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Future Value","value":"$20,698.26"},{"metric":"Total Contributions","value":"$17,000.00"},{"metric":"Total Interest Earned","value":"$3,698.26"}],"schedule":[{"year":"1","contributions":"$7,400.00","interest":"$375.50","balance":"$7,775.50"},{"year":"2","contributions":"$9,800.00","interest":"$922.19","balance":"$10,722.19"},{"year":"3","contributions":"$12,200.00","interest":"$1,650.62","balance":"$13,850.62"},{"year":"4","contributions":"$14,600.00","interest":"$2,572.01","balance":"$17,172.01"},{"year":"5","contributions":"$17,000.00","interest":"$3,698.26","balance":"$20,698.26"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Growth","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"contributions":{"type":"string","description":"Contributions"},"interest":{"type":"string","description":"Interest"},"balance":{"type":"string","description":"Balance"}}},"x-iotools-columns":["year","contributions","interest","balance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/compression-ratio-calculator":{"post":{"operationId":"run_compression_ratio_calculator","summary":"Compression Ratio Calculator","tags":["Calculators"],"description":"Calculate the compression ratio between an original and compressed file size — with space saved, percentage saved, decimal ratio and a compression-quality rating.\n\n[Try Compression Ratio Calculator in your browser →](https://iotools.cloud/tool/compression-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"originalSize":{"type":"number","description":"Original Size","minimum":0.01},"originalUnit":{"enum":["B","KB","MB","GB","TB"],"description":"Unit"},"compressedSize":{"type":"number","description":"Compressed Size","minimum":0.01},"compressedUnit":{"enum":["B","KB","MB","GB","TB"],"description":"Unit"}},"required":["originalSize","compressedSize"]},"examples":{"10_mb_compressed_to_2_5_mb":{"summary":"10 MB compressed to 2.5 MB","value":{"originalSize":"10","originalUnit":"MB","compressedSize":"2.5","compressedUnit":"MB"}},"file_grew_1_gb_to_1_2_gb":{"summary":"File grew (1 GB to 1.2 GB)","value":{"originalSize":"1","originalUnit":"GB","compressedSize":"1.2","compressedUnit":"GB"}},"blank_inputs":{"summary":"Blank inputs","value":{"originalSize":"","originalUnit":"MB","compressedSize":"","compressedUnit":"MB"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_mb_compressed_to_2_5_mb":{"summary":"10 MB compressed to 2.5 MB","value":{"tool":"compression-ratio-calculator","tool_version":"1.0.2","outputs":{"ratio":"4:1","details":[{"metric":"Original size","value":"10 MB"},{"metric":"Compressed size","value":"2.5 MB"},{"metric":"Decimal ratio","value":"4.0000"},{"metric":"Space saved","value":"7.5 MB"},{"metric":"Percentage saved","value":"75.00%"},{"metric":"Percentage remaining","value":"25.00%"},{"metric":"Quality rating","value":"Moderate (2-5:1)"}]},"credits_used":5,"credits_remaining":null}},"file_grew_1_gb_to_1_2_gb":{"summary":"File grew (1 GB to 1.2 GB)","value":{"tool":"compression-ratio-calculator","tool_version":"1.0.2","outputs":{"ratio":"1:1.2","details":[{"metric":"Original size","value":"1 GB"},{"metric":"Compressed size","value":"1.2 GB"},{"metric":"Decimal ratio","value":"0.8333"},{"metric":"Space saved","value":"-204.8 MB"},{"metric":"Percentage saved","value":"-20.00%"},{"metric":"Percentage remaining","value":"120.00%"},{"metric":"Quality rating","value":"Negative (file grew)"}]},"credits_used":5,"credits_remaining":null}},"blank_inputs":{"summary":"Blank inputs","value":{"tool":"compression-ratio-calculator","tool_version":"1.0.2","outputs":{"ratio":"","details":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"ratio":{"type":"string","description":"Compression Ratio"},"details":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/concrete-volume-bags-calculator":{"post":{"operationId":"run_concrete_volume_bags_calculator","summary":"Concrete Volume & Bags Calculator","tags":["Calculators"],"description":"Calculate the concrete volume of a slab or footing from length, width and depth, and convert it into the number of premix bags to buy — for six standard US and metric bag sizes.\n\n[Try Concrete Volume & Bags Calculator in your browser →](https://iotools.cloud/tool/concrete-volume-bags-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"unit":{"enum":["feet","meters","inches"],"description":"Length/width unit"},"depth":{"type":"number","description":"Depth / thickness (inches)","minimum":0},"bagSize":{"enum":["lb40","lb60","lb80","kg20","kg25","kg30"],"description":"Premix bag size"}},"required":[]},"examples":{"10ft_x_10ft_slab_4in_thick_80_lb_bags":{"summary":"10ft x 10ft slab, 4in thick, 80 lb bags","value":{"length":"10","width":"10","unit":"feet","depth":"4","bagSize":"lb80"}},"3m_x_2m_slab_6in_thick_25_kg_bags":{"summary":"3m x 2m slab, 6in thick, 25 kg bags","value":{"length":"3","width":"2","unit":"meters","depth":"6","bagSize":"kg25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10ft_x_10ft_slab_4in_thick_80_lb_bags":{"summary":"10ft x 10ft slab, 4in thick, 80 lb bags","value":{"tool":"concrete-volume-bags-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Volume (ft³)","value":"33.33"},{"metric":"Total Volume (yd³)","value":"1.235"},{"metric":"Total Volume (m³)","value":"0.944"},{"metric":"Bag Size","value":"80 lb bag (yields ~0.60 ft³)"},{"metric":"Bags Needed","value":"56 × 80 lb bags"}]},"credits_used":5,"credits_remaining":null}},"3m_x_2m_slab_6in_thick_25_kg_bags":{"summary":"3m x 2m slab, 6in thick, 25 kg bags","value":{"tool":"concrete-volume-bags-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Volume (ft³)","value":"32.29"},{"metric":"Total Volume (yd³)","value":"1.196"},{"metric":"Total Volume (m³)","value":"0.914"},{"metric":"Bag Size","value":"25 kg bag (yields ~0.41 ft³)"},{"metric":"Bags Needed","value":"79 × 25 kg bags"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/confidence-interval-calculator":{"post":{"operationId":"run_confidence_interval_calculator","summary":"Confidence Interval Calculator","tags":["Calculators"],"description":"Calculate a confidence interval for a sample mean or a sample proportion. Enter your sample statistics and confidence level to get the point estimate, margin of error and interval bounds.\n\n[Try Confidence Interval Calculator in your browser →](https://iotools.cloud/tool/confidence-interval-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["mean","proportion"],"description":"What are you estimating?"},"sampleSize":{"type":"number","description":"Sample Size (n)","minimum":1},"sampleMean":{"type":"number","description":"Sample Mean (x̄)"},"sampleStdDev":{"type":"number","description":"Sample Standard Deviation (s)","minimum":0},"successes":{"type":"number","description":"Successes (x)","minimum":0},"proportionMethod":{"enum":["wilson","wald"],"description":"CI Method"},"confidenceLevel":{"enum":["90","95","99"],"description":"Confidence Level"}},"required":[]},"examples":{"sample_mean_n_25_95_confidence":{"summary":"Sample mean (n=25, 95% confidence)","value":{"mode":"mean","sampleSize":"25","sampleMean":"100","sampleStdDev":"15","confidenceLevel":"95"}},"sample_proportion_n_400_200_successes_95_confidence_wilson":{"summary":"Sample proportion (n=400, 200 successes, 95% confidence, Wilson)","value":{"mode":"proportion","sampleSize":"400","successes":"200","proportionMethod":"wilson","confidenceLevel":"95"}},"same_proportion_via_the_normal_wald_method":{"summary":"Same proportion via the Normal (Wald) method","value":{"mode":"proportion","sampleSize":"400","successes":"200","proportionMethod":"wald","confidenceLevel":"95"}},"every_observation_a_success_n_10_x_10_wald_would_collapse_to_zero_width":{"summary":"Every observation a success (n=10, x=10) — Wald would collapse to zero width","value":{"mode":"proportion","sampleSize":"10","successes":"10","proportionMethod":"wilson","confidenceLevel":"95"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_mean_n_25_95_confidence":{"summary":"Sample mean (n=25, 95% confidence)","value":{"tool":"confidence-interval-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Point Estimate","value":"100.00"},{"metric":"Margin of Error","value":"±5.88"},{"metric":"95% Confidence Interval","value":"[94.12, 105.88]"}]},"credits_used":5,"credits_remaining":null}},"sample_proportion_n_400_200_successes_95_confidence_wilson":{"summary":"Sample proportion (n=400, 200 successes, 95% confidence, Wilson)","value":{"tool":"confidence-interval-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Point Estimate","value":"50.00%"},{"metric":"Margin of Error","value":"±4.88%"},{"metric":"95% Confidence Interval","value":"[45.12%, 54.88%]"}]},"credits_used":5,"credits_remaining":null}},"same_proportion_via_the_normal_wald_method":{"summary":"Same proportion via the Normal (Wald) method","value":{"tool":"confidence-interval-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Point Estimate","value":"50.00%"},{"metric":"Margin of Error","value":"±4.90%"},{"metric":"95% Confidence Interval","value":"[45.10%, 54.90%]"}]},"credits_used":5,"credits_remaining":null}},"every_observation_a_success_n_10_x_10_wald_would_collapse_to_zero_width":{"summary":"Every observation a success (n=10, x=10) — Wald would collapse to zero width","value":{"tool":"confidence-interval-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Point Estimate","value":"100.00%"},{"metric":"Margin of Error","value":"±13.88%"},{"metric":"95% Confidence Interval","value":"[72.25%, 100.00%]"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/container-garden-planner":{"post":{"operationId":"run_container_garden_planner","summary":"Container Garden Planner","tags":["Calculators"],"description":"Estimate how many plants fit in a round or rectangular container based on each plant's recommended spacing — pick from 25 common herbs, greens, vegetables and fruits.\n\n[Try Container Garden Planner in your browser →](https://iotools.cloud/tool/container-garden-planner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"containerShape":{"enum":["round","rectangular"],"description":"Container shape"},"diameter":{"type":"number","description":"Diameter (cm)","minimum":1},"length":{"type":"number","description":"Length (cm)","minimum":1},"width":{"type":"number","description":"Width (cm)","minimum":1},"plantType":{"enum":["basil","chives","cilantro","dill","mint","oregano","parsley","rosemary","sage","thyme","arugula","kale","lettuce","spinach","chard","pepper","carrots","tomato_cherry","chili","cucumber","eggplant","beans","green_onion","radish","strawberry"],"description":"Plant"}},"required":[]},"examples":{"60_cm_round_pot_basil":{"summary":"60 cm round pot, basil","value":{"containerShape":"round","diameter":"60","plantType":"basil"}},"60x40_cm_rectangular_planter_lettuce":{"summary":"60x40 cm rectangular planter, lettuce","value":{"containerShape":"rectangular","length":"60","width":"40","plantType":"lettuce"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"60_cm_round_pot_basil":{"summary":"60 cm round pot, basil","value":{"tool":"container-garden-planner","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Container Area","value":"2827 cm²"},{"metric":"Recommended Spacing","value":"25.0 cm between plants"},{"metric":"Estimated Plant Count","value":"5 plants"}]},"credits_used":5,"credits_remaining":null}},"60x40_cm_rectangular_planter_lettuce":{"summary":"60x40 cm rectangular planter, lettuce","value":{"tool":"container-garden-planner","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Container Area","value":"2400 cm²"},{"metric":"Recommended Spacing","value":"20.0 cm between plants"},{"metric":"Estimated Plant Count","value":"6 plants"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/contribution-margin-calculator":{"post":{"operationId":"run_contribution_margin_calculator","summary":"Contribution Margin Calculator","tags":["Calculators"],"description":"Calculate unit and total contribution margin, contribution margin ratio, operating profit, break-even units, and margin of safety from your price, variable cost, units sold, and fixed costs.\n\n[Try Contribution Margin Calculator in your browser →](https://iotools.cloud/tool/contribution-margin-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sellingPrice":{"type":"number","description":"Selling Price per Unit ($)","minimum":0},"variableCost":{"type":"number","description":"Variable Cost per Unit ($)","minimum":0},"unitsSold":{"type":"number","description":"Units Sold","minimum":0},"fixedCosts":{"type":"number","description":"Fixed Costs ($)","minimum":0},"targetProfit":{"type":"number","description":"Target Profit ($, optional)","minimum":0}},"required":["sellingPrice","variableCost","unitsSold","fixedCosts"]},"examples":{"default_price_50_variable_30_1_000_units_12_000_fixed":{"summary":"Default (price $50 / variable $30, 1,000 units, $12,000 fixed)","value":{"sellingPrice":"50","variableCost":"30","unitsSold":"1000","fixedCosts":"12000","targetProfit":""}},"with_a_target_profit_goal":{"summary":"With a target profit goal","value":{"sellingPrice":"50","variableCost":"30","unitsSold":"1000","fixedCosts":"12000","targetProfit":"20000"}},"below_break_even_impossible_pricing":{"summary":"Below break-even (impossible pricing)","value":{"sellingPrice":"8","variableCost":"10","unitsSold":"500","fixedCosts":"10000","targetProfit":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_price_50_variable_30_1_000_units_12_000_fixed":{"summary":"Default (price $50 / variable $30, 1,000 units, $12,000 fixed)","value":{"tool":"contribution-margin-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Unit Contribution Margin","value":"$20.00"},{"metric":"Contribution Margin Ratio","value":"40.00%"},{"metric":"Total Revenue","value":"$50,000.00"},{"metric":"Total Variable Cost","value":"$30,000.00"},{"metric":"Total Contribution Margin","value":"$20,000.00"},{"metric":"Operating Profit","value":"$8,000.00"},{"metric":"Break-Even Units","value":"600 units"},{"metric":"Break-Even Sales","value":"$30,000.00"},{"metric":"Margin of Safety (Units)","value":"400.00 units"},{"metric":"Margin of Safety (%)","value":"+40.00%"}]},"credits_used":5,"credits_remaining":null}},"with_a_target_profit_goal":{"summary":"With a target profit goal","value":{"tool":"contribution-margin-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Unit Contribution Margin","value":"$20.00"},{"metric":"Contribution Margin Ratio","value":"40.00%"},{"metric":"Total Revenue","value":"$50,000.00"},{"metric":"Total Variable Cost","value":"$30,000.00"},{"metric":"Total Contribution Margin","value":"$20,000.00"},{"metric":"Operating Profit","value":"$8,000.00"},{"metric":"Break-Even Units","value":"600 units"},{"metric":"Break-Even Sales","value":"$30,000.00"},{"metric":"Margin of Safety (Units)","value":"400.00 units"},{"metric":"Margin of Safety (%)","value":"+40.00%"},{"metric":"Units for Target Profit","value":"1,600 units"}]},"credits_used":5,"credits_remaining":null}},"below_break_even_impossible_pricing":{"summary":"Below break-even (impossible pricing)","value":{"tool":"contribution-margin-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Status","value":"Cannot compute break-even or margin figures — selling price must exceed variable cost."},{"metric":"Unit Contribution Margin","value":"-$2.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/conversion-rate-calculator":{"post":{"operationId":"run_conversion_rate_calculator","summary":"Conversion Rate Calculator","tags":["Calculators"],"description":"Calculate conversion rate from visitors and conversions. Enter your total visitors and completed conversions to get the conversion rate, non-conversions, and the conversion ratio.\n\n[Try Conversion Rate Calculator in your browser →](https://iotools.cloud/tool/conversion-rate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"visitors":{"type":"number","description":"Visitors","minimum":0},"conversions":{"type":"number","description":"Conversions","minimum":0}},"required":["visitors","conversions"]},"examples":{"10_000_visitors_350_conversions":{"summary":"10,000 visitors, 350 conversions","value":{"visitors":"10000","conversions":"350"}},"small_landing_page_test_250_visitors_12_signups":{"summary":"Small landing page test — 250 visitors, 12 signups","value":{"visitors":"250","conversions":"12"}},"no_conversions_yet":{"summary":"No conversions yet","value":{"visitors":"1500","conversions":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_visitors_350_conversions":{"summary":"10,000 visitors, 350 conversions","value":{"tool":"conversion-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Conversion Rate","value":"3.50%"},{"metric":"Non-Conversions","value":"9,650"},{"metric":"Conversion Ratio","value":"350 / 10,000"}]},"credits_used":5,"credits_remaining":null}},"small_landing_page_test_250_visitors_12_signups":{"summary":"Small landing page test — 250 visitors, 12 signups","value":{"tool":"conversion-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Conversion Rate","value":"4.80%"},{"metric":"Non-Conversions","value":"238"},{"metric":"Conversion Ratio","value":"12 / 250"}]},"credits_used":5,"credits_remaining":null}},"no_conversions_yet":{"summary":"No conversions yet","value":{"tool":"conversion-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Conversion Rate","value":"0.00%"},{"metric":"Non-Conversions","value":"1,500"},{"metric":"Conversion Ratio","value":"0 / 1,500"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/coffee-brew-ratio-calculator":{"post":{"operationId":"run_coffee_brew_ratio_calculator","summary":"Coffee Brew Ratio Calculator","tags":["Calculators"],"description":"Calculate how much coffee and water to use for pour-over, French press, AeroPress, Chemex, drip, moka pot, cold brew or espresso — from the water you have, the coffee you have, or the cups you want — with grams, ounces, tablespoons and a grind/temperature/time brew guide.\n\n[Try Coffee Brew Ratio Calculator in your browser →](https://iotools.cloud/tool/coffee-brew-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"enum":["pour-over","chemex","french-press","aeropress","drip","moka-pot","turkish","cold-brew-concentrate","cold-brew","espresso","custom"],"description":"Brew method"},"customRatio":{"type":"number","description":"Custom ratio (1:x)","minimum":3,"maximum":30},"strength":{"enum":["mild","standard","strong"],"description":"Strength"},"solveFrom":{"enum":["water","coffee","cups"],"description":"I know…"},"amount":{"type":"number","description":"Amount","minimum":0},"waterUnit":{"enum":["ml","floz"],"description":"Water unit"},"coffeeUnit":{"enum":["g","oz","tbsp"],"description":"Coffee unit"},"cupSize":{"enum":["6","8","12"],"description":"Cup size"}},"required":["amount"]},"examples":{"pour_over_from_350_ml_of_water":{"summary":"Pour-over from 350 mL of water","value":{"method":"pour-over","strength":"standard","solveFrom":"water","amount":"350","waterUnit":"ml"}},"strong_french_press_for_four_8_oz_mugs":{"summary":"Strong French press for four 8 oz mugs","value":{"method":"french-press","strength":"strong","solveFrom":"cups","amount":"4","cupSize":"8"}},"espresso_from_an_18_g_dose":{"summary":"Espresso from an 18 g dose","value":{"method":"espresso","strength":"standard","solveFrom":"coffee","amount":"18","coffeeUnit":"g"}},"custom_1_15_from_4_tablespoons_of_coffee":{"summary":"Custom 1:15 from 4 tablespoons of coffee","value":{"method":"custom","customRatio":"15","strength":"standard","solveFrom":"coffee","amount":"4","coffeeUnit":"tbsp"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pour_over_from_350_ml_of_water":{"summary":"Pour-over from 350 mL of water","value":{"tool":"coffee-brew-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":"Use 21.9 g coffee with 350 mL water (1:16) for about 306 mL brewed.","breakdown":[{"item":"Brew method","value":"Pour-over (V60, Kalita)"},{"item":"Ratio (coffee : water)","value":"1:16"},{"item":"Coffee","value":"21.9 g · 0.77 oz · 4.4 tbsp"},{"item":"Water","value":"350 mL · 11.8 fl oz"},{"item":"Estimated brewed coffee","value":"306 mL · 10.4 fl oz"},{"item":"Grind size","value":"Medium-fine"},{"item":"Water temperature","value":"92–96 °C (198–205 °F)"},{"item":"Brew time","value":"2:30–3:30 min"}]},"credits_used":5,"credits_remaining":null}},"strong_french_press_for_four_8_oz_mugs":{"summary":"Strong French press for four 8 oz mugs","value":{"tool":"coffee-brew-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":"Use 84.5 g coffee with 1115 mL water (1:13.2) for about 946 mL brewed.","breakdown":[{"item":"Brew method","value":"French press"},{"item":"Ratio (coffee : water)","value":"1:13.2 (strong, from 1:15)"},{"item":"Coffee","value":"84.5 g · 2.98 oz · 16.9 tbsp"},{"item":"Water","value":"1115 mL · 37.7 fl oz"},{"item":"Estimated brewed coffee","value":"946 mL · 32 fl oz"},{"item":"Grind size","value":"Coarse"},{"item":"Water temperature","value":"93–96 °C (200–205 °F)"},{"item":"Brew time","value":"4 min steep"}]},"credits_used":5,"credits_remaining":null}},"espresso_from_an_18_g_dose":{"summary":"Espresso from an 18 g dose","value":{"tool":"coffee-brew-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":"Use 18 g coffee for 36 g of espresso out (1:2).","breakdown":[{"item":"Brew method","value":"Espresso"},{"item":"Ratio (coffee : water)","value":"1:2"},{"item":"Coffee","value":"18 g · 0.63 oz · 3.6 tbsp"},{"item":"Beverage yield (in the cup)","value":"36 g"},{"item":"Grind size","value":"Fine"},{"item":"Water temperature","value":"90–94 °C (194–201 °F)"},{"item":"Brew time","value":"25–30 s"}]},"credits_used":5,"credits_remaining":null}},"custom_1_15_from_4_tablespoons_of_coffee":{"summary":"Custom 1:15 from 4 tablespoons of coffee","value":{"tool":"coffee-brew-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":"Use 20 g coffee with 300 mL water (1:15) for about 260 mL brewed.","breakdown":[{"item":"Brew method","value":"Custom ratio"},{"item":"Ratio (coffee : water)","value":"1:15"},{"item":"Coffee","value":"20 g · 0.71 oz · 4 tbsp"},{"item":"Water","value":"300 mL · 10.1 fl oz"},{"item":"Estimated brewed coffee","value":"260 mL · 8.8 fl oz"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Recipe"},"breakdown":{"type":"array","description":"Brew breakdown","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["item","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/coordinate-area-calculator":{"post":{"operationId":"run_coordinate_area_calculator","summary":"Coordinate Area Calculator","tags":["Calculators"],"description":"Calculate land area from a table of survey (Northing, Easting) coordinates using the surveyor's coordinate-method formula — enter the traverse points in order and get the enclosed area in m², hectares, acres and ft², the boundary perimeter, plus a per-leg bearing and distance table.\n\n[Try Coordinate Area Calculator in your browser →](https://iotools.cloud/tool/coordinate-area-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vertices":{"type":"string","description":"Traverse coordinates (Northing, Easting)"},"units":{"enum":["meters","feet"],"description":"Coordinate units"}},"required":["vertices"]},"examples":{"100_100_m_square_traverse":{"summary":"100×100 m square traverse","value":{"vertices":"P1, 0, 0\nP2, 0, 100\nP3, 100, 100\nP4, 100, 0","units":"meters"}},"right_triangle_feet":{"summary":"Right triangle, feet","value":{"vertices":"A, 0, 0\nB, 0, 60\nC, 80, 0","units":"feet"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_100_m_square_traverse":{"summary":"100×100 m square traverse","value":{"tool":"coordinate-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"point":"P1","northing":"0.000","easting":"0.000","leg-to":"P2","bearing":"90.00°","distance":"100.000"},{"point":"P2","northing":"0.000","easting":"100.000","leg-to":"P3","bearing":"0.00°","distance":"100.000"},{"point":"P3","northing":"100.000","easting":"100.000","leg-to":"P4","bearing":"270.00°","distance":"100.000"},{"point":"P4","northing":"100.000","easting":"0.000","leg-to":"P1","bearing":"180.00°","distance":"100.000"}],"summary":"Area: 10000.000 m² (1.0000 ha, 2.4711 acres, 107639.10 ft²)\nPerimeter: 400.000 m (1312.336 ft)\n4 points, coordinates in m"},"credits_used":5,"credits_remaining":null}},"right_triangle_feet":{"summary":"Right triangle, feet","value":{"tool":"coordinate-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"point":"A","northing":"0.000","easting":"0.000","leg-to":"B","bearing":"90.00°","distance":"60.000"},{"point":"B","northing":"0.000","easting":"60.000","leg-to":"C","bearing":"323.13°","distance":"100.000"},{"point":"C","northing":"80.000","easting":"0.000","leg-to":"A","bearing":"180.00°","distance":"80.000"}],"summary":"Area: 2400.000 ft² (0.0551 acres, 0.0223 ha, 222.97 m²)\nPerimeter: 240.000 ft (73.152 m)\n3 points, coordinates in ft"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string","description":"Point"},"northing":{"type":"string","description":"Northing"},"easting":{"type":"string","description":"Easting"},"leg-to":{"type":"string","description":"Leg to"},"bearing":{"type":"string","description":"Bearing"},"distance":{"type":"string","description":"Distance"}}},"x-iotools-columns":["point","northing","easting","leg-to","bearing","distance"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cost-per-lead-calculator":{"post":{"operationId":"run_cost_per_lead_calculator","summary":"Cost Per Lead Calculator","tags":["Calculators"],"description":"Calculate cost per lead and optional funnel metrics. Enter spend and leads for cost per lead, and optionally add clicks, customers, or deal value to unlock cost per click, cost per customer, and ROI.\n\n[Try Cost Per Lead Calculator in your browser →](https://iotools.cloud/tool/cost-per-lead-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"spend":{"type":"number","description":"Marketing Spend ($)","minimum":0},"leads":{"type":"number","description":"Leads","minimum":0},"clicks":{"type":"number","description":"Clicks","minimum":0},"customers":{"type":"number","description":"Customers","minimum":0},"dealValue":{"type":"number","description":"Avg. Deal Value ($)","minimum":0}},"required":["spend","leads"]},"examples":{"5_000_spend_120_leads_cost_per_lead_only":{"summary":"$5,000 spend, 120 leads — cost per lead only","value":{"spend":"5000","leads":"120","clicks":"","customers":"","dealValue":""}},"with_clicks_adds_cost_per_click_and_click_to_lead_rate":{"summary":"With clicks — adds cost per click and click-to-lead rate","value":{"spend":"5000","leads":"120","clicks":"2400","customers":"","dealValue":""}},"full_funnel_clicks_customers_and_deal_value":{"summary":"Full funnel — clicks, customers, and deal value","value":{"spend":"5000","leads":"120","clicks":"2400","customers":"18","dealValue":"800"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_000_spend_120_leads_cost_per_lead_only":{"summary":"$5,000 spend, 120 leads — cost per lead only","value":{"tool":"cost-per-lead-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Cost Per Lead","value":"$41.67"}]},"credits_used":5,"credits_remaining":null}},"with_clicks_adds_cost_per_click_and_click_to_lead_rate":{"summary":"With clicks — adds cost per click and click-to-lead rate","value":{"tool":"cost-per-lead-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Cost Per Lead","value":"$41.67"},{"metric":"Cost Per Click","value":"$2.08"},{"metric":"Click-to-Lead Rate","value":"5.00%"}]},"credits_used":5,"credits_remaining":null}},"full_funnel_clicks_customers_and_deal_value":{"summary":"Full funnel — clicks, customers, and deal value","value":{"tool":"cost-per-lead-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Cost Per Lead","value":"$41.67"},{"metric":"Cost Per Click","value":"$2.08"},{"metric":"Click-to-Lead Rate","value":"5.00%"},{"metric":"Cost Per Customer","value":"$277.78"},{"metric":"Lead-to-Customer Rate","value":"15.00%"},{"metric":"Revenue","value":"$14,400.00"},{"metric":"ROI","value":"188.00%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/credit-card-minimum-payment-calculator":{"post":{"operationId":"run_credit_card_minimum_payment_calculator","summary":"Credit Card Minimum Payment Calculator","tags":["Calculators"],"description":"See how long it takes — and how much interest you pay — making only the minimum payment on a credit card, plus how much time and interest a fixed extra payment saves.\n\n[Try Credit Card Minimum Payment Calculator in your browser →](https://iotools.cloud/tool/credit-card-minimum-payment-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","description":"Current Balance ($)","minimum":0.01},"apr":{"type":"number","description":"Annual Percentage Rate (%)","minimum":0},"minPercent":{"type":"number","description":"Minimum Payment (% of Balance)","minimum":0.1},"minAmount":{"type":"number","description":"Minimum Payment Floor ($)","minimum":0},"fixedPayment":{"type":"number","description":"Compare to a Fixed Monthly Payment ($)","minimum":0.01}},"required":["balance","apr"]},"examples":{"5_000_at_19_99_apr_minimum_only":{"summary":"$5,000 at 19.99% APR, minimum only","value":{"balance":"5000","apr":"19.99","minPercent":"2","minAmount":"25","fixedPayment":""}},"same_card_compared_to_a_200_mo_fixed_payment":{"summary":"Same card, compared to a $200/mo fixed payment","value":{"balance":"5000","apr":"19.99","minPercent":"2","minAmount":"25","fixedPayment":"200"}},"low_balance_hitting_the_dollar_floor":{"summary":"Low balance hitting the dollar floor","value":{"balance":"500","apr":"19.99","minPercent":"2","minAmount":"25","fixedPayment":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_000_at_19_99_apr_minimum_only":{"summary":"$5,000 at 19.99% APR, minimum only","value":{"tool":"credit-card-minimum-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Minimum-Payment Payoff Time","value":"485 payments (40 years 5 months)"},{"metric":"Minimum-Payment Total Interest","value":"$18,451.17"},{"metric":"Minimum-Payment Total Paid","value":"$23,451.17"}]},"credits_used":5,"credits_remaining":null}},"same_card_compared_to_a_200_mo_fixed_payment":{"summary":"Same card, compared to a $200/mo fixed payment","value":{"tool":"credit-card-minimum-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Minimum-Payment Payoff Time","value":"485 payments (40 years 5 months)"},{"metric":"Minimum-Payment Total Interest","value":"$18,451.17"},{"metric":"Minimum-Payment Total Paid","value":"$23,451.17"},{"metric":"Fixed-Payment Payoff Time","value":"33 payments (2 years 9 months)"},{"metric":"Fixed-Payment Total Interest","value":"$1,521.02"},{"metric":"Fixed-Payment Total Paid","value":"$6,521.02"},{"metric":"Time Saved","value":"452 payments (37 years 8 months)"},{"metric":"Interest Saved","value":"$16,930.15"}]},"credits_used":5,"credits_remaining":null}},"low_balance_hitting_the_dollar_floor":{"summary":"Low balance hitting the dollar floor","value":{"tool":"credit-card-minimum-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Minimum-Payment Payoff Time","value":"25 payments (2 years 1 month)"},{"metric":"Minimum-Payment Total Interest","value":"$113.23"},{"metric":"Minimum-Payment Total Paid","value":"$613.23"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Payoff Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/credit-card-payment-calculator":{"post":{"operationId":"run_credit_card_payment_calculator","summary":"Credit Card Payment Calculator","tags":["Calculators"],"description":"Calculate the fixed monthly payment needed to pay off a credit card balance over a chosen number of months, plus the total interest and total cost.\n\n[Try Credit Card Payment Calculator in your browser →](https://iotools.cloud/tool/credit-card-payment-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","description":"Current Balance ($)","minimum":0.01},"apr":{"type":"number","description":"Annual Percentage Rate (%)","minimum":0},"months":{"type":"number","description":"Payoff Term (Months)","minimum":1}},"required":["balance","apr","months"]},"examples":{"3_000_at_17_apr_over_12_months":{"summary":"$3,000 at 17% APR over 12 months","value":{"balance":"3000","apr":"17","months":"12"}},"5_000_at_22_99_apr_over_24_months":{"summary":"$5,000 at 22.99% APR over 24 months","value":{"balance":"5000","apr":"22.99","months":"24"}},"0_intro_apr":{"summary":"0% intro APR","value":{"balance":"2000","apr":"0","months":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3_000_at_17_apr_over_12_months":{"summary":"$3,000 at 17% APR over 12 months","value":{"tool":"credit-card-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Monthly Payment","value":"$273.61"},{"metric":"Total Amount Paid","value":"$3,283.37"},{"metric":"Total Interest Paid","value":"$283.37"},{"metric":"Interest as % of Balance","value":"9.45%"}]},"credits_used":5,"credits_remaining":null}},"5_000_at_22_99_apr_over_24_months":{"summary":"$5,000 at 22.99% APR over 24 months","value":{"tool":"credit-card-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Monthly Payment","value":"$261.84"},{"metric":"Total Amount Paid","value":"$6,284.20"},{"metric":"Total Interest Paid","value":"$1,284.20"},{"metric":"Interest as % of Balance","value":"25.68%"}]},"credits_used":5,"credits_remaining":null}},"0_intro_apr":{"summary":"0% intro APR","value":{"tool":"credit-card-payment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Monthly Payment","value":"$200.00"},{"metric":"Total Amount Paid","value":"$2,000.00"},{"metric":"Total Interest Paid","value":"$0.00"},{"metric":"Interest as % of Balance","value":"0.00%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Payment Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/credit-card-payoff-calculator":{"post":{"operationId":"run_credit_card_payoff_calculator","summary":"Credit Card Payoff Calculator","tags":["Calculators"],"description":"Estimate how long it takes to pay off a credit card balance with a fixed monthly payment, plus the total interest and total cost — including new charges if you keep using the card while paying it down.\n\n[Try Credit Card Payoff Calculator in your browser →](https://iotools.cloud/tool/credit-card-payoff-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","description":"Current Balance ($)","minimum":0.01},"apr":{"type":"number","description":"Annual Percentage Rate (%)","minimum":0},"payment":{"type":"number","description":"Fixed Monthly Payment ($)","minimum":0.01},"monthlyCharges":{"type":"number","description":"New Charges Added Each Month ($)","minimum":0}},"required":["balance","apr","payment"]},"examples":{"5_000_at_22_99_apr_200_mo":{"summary":"$5,000 at 22.99% APR, $200/mo","value":{"balance":"5000","apr":"22.99","payment":"200","monthlyCharges":"0"}},"same_card_with_50_mo_in_new_charges":{"summary":"Same card with $50/mo in new charges","value":{"balance":"5000","apr":"22.99","payment":"200","monthlyCharges":"50"}},"0_intro_apr":{"summary":"0% intro APR","value":{"balance":"3000","apr":"0","payment":"250","monthlyCharges":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_000_at_22_99_apr_200_mo":{"summary":"$5,000 at 22.99% APR, $200/mo","value":{"tool":"credit-card-payoff-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Payoff Time","value":"35 payments (2 years 11 months)"},{"metric":"Total Interest Paid","value":"$1,871.08"},{"metric":"Total Amount Paid","value":"$6,871.08"}]},"credits_used":5,"credits_remaining":null}},"same_card_with_50_mo_in_new_charges":{"summary":"Same card with $50/mo in new charges","value":{"tool":"credit-card-payoff-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Payoff Time","value":"54 payments (4 years 6 months)"},{"metric":"Total Interest Paid","value":"$3,045.29"},{"metric":"Total New Charges Added","value":"$2,700.00"},{"metric":"Total Amount Paid","value":"$10,745.29"}]},"credits_used":5,"credits_remaining":null}},"0_intro_apr":{"summary":"0% intro APR","value":{"tool":"credit-card-payoff-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Payoff Time","value":"12 payments (1 year)"},{"metric":"Total Interest Paid","value":"$0.00"},{"metric":"Total Amount Paid","value":"$3,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Payoff Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/credit-utilization-calculator":{"post":{"operationId":"run_credit_utilization_calculator","summary":"Credit Utilization Calculator","tags":["Calculators"],"description":"Calculate per-card and overall credit utilization from a list of cards. Get a rating (Excellent to Critical) for each card and your overall utilization, plus the exact amount to pay down to hit the 30% and 10% benchmarks credit scoring models reward.\n\n[Try Credit Utilization Calculator in your browser →](https://iotools.cloud/tool/credit-utilization-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cards":{"type":"string","description":"Credit Cards"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["cards"]},"examples":{"two_cards_mixed_utilization":{"summary":"Two cards, mixed utilization","value":{"cards":"Visa, 450, 2000\nMastercard, 1200, 5000","currency":"USD"}},"near_maxed_single_card":{"summary":"Near-maxed single card","value":{"cards":"Store Card, 850, 1000","currency":"USD"}},"three_cards_already_low_utilization":{"summary":"Three cards, already low utilization","value":{"cards":"Amex, 100, 5000\nVisa, 50, 3000\nDiscover, 20, 2000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_cards_mixed_utilization":{"summary":"Two cards, mixed utilization","value":{"tool":"credit-utilization-calculator","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Total Balance","value":"$1,650.00"},{"metric":"Total Credit Limit","value":"$7,000.00"},{"metric":"Overall Utilization","value":"23.6%"},{"metric":"Overall Rating","value":"Good"},{"metric":"Available Credit","value":"$5,350.00"},{"metric":"Highest Single-Card Utilization","value":"Mastercard (24.0%)"},{"metric":"Pay Down to Reach 30%","value":"Already at or under 30%"},{"metric":"Pay Down to Reach 10%","value":"$950.00"},{"metric":"Card to Prioritize","value":"Mastercard — paying this down first cuts overall utilization fastest"}],"perCard":[{"card":"Visa","balance":"$450.00","limit":"$2,000.00","utilization":"22.5%","rating":"Good","pay-down-to-30":"$0.00","pay-down-to-10":"$250.00"},{"card":"Mastercard","balance":"$1,200.00","limit":"$5,000.00","utilization":"24.0%","rating":"Good","pay-down-to-30":"$0.00","pay-down-to-10":"$700.00"}]},"credits_used":5,"credits_remaining":null}},"near_maxed_single_card":{"summary":"Near-maxed single card","value":{"tool":"credit-utilization-calculator","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Total Balance","value":"$850.00"},{"metric":"Total Credit Limit","value":"$1,000.00"},{"metric":"Overall Utilization","value":"85.0%"},{"metric":"Overall Rating","value":"Critical"},{"metric":"Available Credit","value":"$150.00"},{"metric":"Highest Single-Card Utilization","value":"Store Card (85.0%)"},{"metric":"Pay Down to Reach 30%","value":"$550.00"},{"metric":"Pay Down to Reach 10%","value":"$750.00"},{"metric":"Card to Prioritize","value":"Only one card entered"}],"perCard":[{"card":"Store Card","balance":"$850.00","limit":"$1,000.00","utilization":"85.0%","rating":"Critical","pay-down-to-30":"$550.00","pay-down-to-10":"$750.00"}]},"credits_used":5,"credits_remaining":null}},"three_cards_already_low_utilization":{"summary":"Three cards, already low utilization","value":{"tool":"credit-utilization-calculator","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Total Balance","value":"$170.00"},{"metric":"Total Credit Limit","value":"$10,000.00"},{"metric":"Overall Utilization","value":"1.7%"},{"metric":"Overall Rating","value":"Excellent"},{"metric":"Available Credit","value":"$9,830.00"},{"metric":"Highest Single-Card Utilization","value":"Amex (2.0%)"},{"metric":"Pay Down to Reach 30%","value":"Already at or under 30%"},{"metric":"Pay Down to Reach 10%","value":"Already at or under 10%"},{"metric":"Card to Prioritize","value":"Amex — paying this down first cuts overall utilization fastest"}],"perCard":[{"card":"Amex","balance":"$100.00","limit":"$5,000.00","utilization":"2.0%","rating":"Excellent","pay-down-to-30":"$0.00","pay-down-to-10":"$0.00"},{"card":"Visa","balance":"$50.00","limit":"$3,000.00","utilization":"1.7%","rating":"Excellent","pay-down-to-30":"$0.00","pay-down-to-10":"$0.00"},{"card":"Discover","balance":"$20.00","limit":"$2,000.00","utilization":"1.0%","rating":"Excellent","pay-down-to-30":"$0.00","pay-down-to-10":"$0.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"overview":{"type":"array","description":"Overall Utilization","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"perCard":{"type":"array","description":"Per-Card Breakdown","items":{"type":"object","properties":{"card":{"type":"string","description":"Card"},"balance":{"type":"string","description":"Balance"},"limit":{"type":"string","description":"Limit"},"utilization":{"type":"string","description":"Utilization"},"rating":{"type":"string","description":"Rating"},"pay-down-to-30":{"type":"string","description":"Pay Down to 30%"},"pay-down-to-10":{"type":"string","description":"Pay Down to 10%"}}},"x-iotools-columns":["card","balance","limit","utilization","rating","pay-down-to-30","pay-down-to-10"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crypto-arbitrage-calculator":{"post":{"operationId":"run_crypto_arbitrage_calculator","summary":"Crypto Arbitrage Calculator","tags":["Calculators"],"description":"Estimate cross-exchange crypto arbitrage profit from a buy price on one exchange and a sell price on another, after trading fees, a crypto-denominated withdrawal fee, and a fiat network/transfer fee.\n\n[Try Crypto Arbitrage Calculator in your browser →](https://iotools.cloud/tool/crypto-arbitrage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"buyPrice":{"type":"number","description":"Buy Price per Unit ($) — Exchange A","minimum":1e-8,"maximum":100000000},"sellPrice":{"type":"number","description":"Sell Price per Unit ($) — Exchange B","minimum":1e-8,"maximum":100000000},"amount":{"type":"number","description":"Amount to Trade (crypto units)","minimum":1e-8,"maximum":1000000000},"buyFeePct":{"type":"number","description":"Buy Exchange Trading Fee (%)","minimum":0,"maximum":100},"sellFeePct":{"type":"number","description":"Sell Exchange Trading Fee (%)","minimum":0,"maximum":100},"withdrawalFeeCrypto":{"type":"number","description":"Withdrawal Fee (crypto units)","minimum":0,"maximum":1000000},"networkFee":{"type":"number","description":"Network / Transfer Fee ($)","minimum":0,"maximum":1000000},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["buyPrice","sellPrice","amount"]},"examples":{"0_25_btc_bought_at_60000_sold_at_61500_default_spread":{"summary":"0.25 BTC bought at 60000, sold at 61500 (default spread)","value":{"buyPrice":"60000","sellPrice":"61500","amount":"0.25","buyFeePct":"0.1","sellFeePct":"0.1","withdrawalFeeCrypto":"0.0002","networkFee":"2","currency":"USD"}},"2_eth_bought_at_3000_sold_at_2950_narrow_reverse_spread_a_loss":{"summary":"2 ETH bought at 3000, sold at 2950 (narrow reverse spread, a loss)","value":{"buyPrice":"3000","sellPrice":"2950","amount":"2","buyFeePct":"0.15","sellFeePct":"0.15","withdrawalFeeCrypto":"0.005","networkFee":"3","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"0_25_btc_bought_at_60000_sold_at_61500_default_spread":{"summary":"0.25 BTC bought at 60000, sold at 61500 (default spread)","value":{"tool":"crypto-arbitrage-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Buy Price per Unit","value":"$60,000.00"},{"metric":"Sell Price per Unit","value":"$61,500.00"},{"metric":"Amount to Trade","value":"0.25"},{"metric":"Total Buy Cost","value":"$15,015.00"},{"metric":"Net Sell Proceeds","value":"$15,347.34"},{"metric":"Network / Transfer Fee","value":"$2.00"},{"metric":"Net Profit","value":"$330.34"},{"metric":"Result","value":"Profitable"},{"metric":"ROI","value":"+2.20%"},{"metric":"Break-Even Sell Price","value":"$60,176.27"}],"breakdown":[{"metric":"Buy Subtotal (Buy Price × Amount)","value":"$15,000.00"},{"metric":"Buy Exchange Fee","value":"$15.00"},{"metric":"Total Buy Cost","value":"$15,015.00"},{"metric":"Amount After Withdrawal Fee","value":"0.2498"},{"metric":"Gross Sell Value","value":"$15,362.70"},{"metric":"Sell Exchange Fee","value":"$15.36"},{"metric":"Net Sell Proceeds","value":"$15,347.34"},{"metric":"Network / Transfer Fee","value":"$2.00"},{"metric":"Net Profit","value":"$330.34"}]},"credits_used":5,"credits_remaining":null}},"2_eth_bought_at_3000_sold_at_2950_narrow_reverse_spread_a_loss":{"summary":"2 ETH bought at 3000, sold at 2950 (narrow reverse spread, a loss)","value":{"tool":"crypto-arbitrage-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Buy Price per Unit","value":"$3,000.00"},{"metric":"Sell Price per Unit","value":"$2,950.00"},{"metric":"Amount to Trade","value":"2"},{"metric":"Total Buy Cost","value":"$6,009.00"},{"metric":"Net Sell Proceeds","value":"$5,876.42"},{"metric":"Network / Transfer Fee","value":"$3.00"},{"metric":"Net Profit","value":"-$135.58"},{"metric":"Result","value":"Not Profitable"},{"metric":"ROI","value":"-2.26%"},{"metric":"Break-Even Sell Price","value":"$3,018.06"}],"breakdown":[{"metric":"Buy Subtotal (Buy Price × Amount)","value":"$6,000.00"},{"metric":"Buy Exchange Fee","value":"$9.00"},{"metric":"Total Buy Cost","value":"$6,009.00"},{"metric":"Amount After Withdrawal Fee","value":"1.995"},{"metric":"Gross Sell Value","value":"$5,885.25"},{"metric":"Sell Exchange Fee","value":"$8.83"},{"metric":"Net Sell Proceeds","value":"$5,876.42"},{"metric":"Network / Transfer Fee","value":"$3.00"},{"metric":"Net Profit","value":"-$135.58"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Cost & Revenue Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crypto-leverage-calculator":{"post":{"operationId":"run_crypto_leverage_calculator","summary":"Crypto Leverage Calculator","tags":["Calculators"],"description":"Estimate leveraged crypto position size, liquidation price, ROI, and profit/loss from entry price, leverage, and margin — with a full price-scenario ladder from -20% to +20% around entry.\n\n[Try Crypto Leverage Calculator in your browser →](https://iotools.cloud/tool/crypto-leverage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"direction":{"enum":["long","short"],"description":"Position Direction"},"entryPrice":{"type":"number","description":"Entry Price per Unit","minimum":1e-8,"maximum":100000000},"leverage":{"type":"number","description":"Leverage","minimum":1,"maximum":125},"margin":{"type":"number","description":"Margin (Collateral)","minimum":0.01,"maximum":1000000000},"maintenanceMarginRate":{"type":"number","description":"Maintenance Margin Rate (%)","minimum":0,"maximum":50},"exitPrice":{"type":"number","description":"Exit Price (optional)","minimum":1e-8,"maximum":100000000},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["entryPrice","margin"]},"examples":{"10x_long_btc_1_000_margin":{"summary":"10x long BTC, $1,000 margin","value":{"direction":"long","entryPrice":"45000","leverage":"10","margin":"1000","maintenanceMarginRate":"0.5","exitPrice":"48000","currency":"USD"}},"5x_short_eth_500_margin":{"summary":"5x short ETH, $500 margin","value":{"direction":"short","entryPrice":"3200","leverage":"5","margin":"500","maintenanceMarginRate":"0.5","exitPrice":"2900","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10x_long_btc_1_000_margin":{"summary":"10x long BTC, $1,000 margin","value":{"tool":"crypto-leverage-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Position Direction","value":"Long"},{"metric":"Entry Price","value":"$45,000.00"},{"metric":"Leverage","value":"10x"},{"metric":"Margin (Collateral)","value":"$1,000.00"},{"metric":"Position Size (Notional)","value":"$10,000.00"},{"metric":"Quantity","value":"0.22222222"},{"metric":"Maintenance Margin Rate","value":"0.50%"},{"metric":"Liquidation Price","value":"$40,725.00"},{"metric":"Price Change to Liquidation","value":"-9.5%"},{"metric":"Risk Level","value":"Moderate"},{"metric":"Exit Price","value":"$48,000.00"},{"metric":"P/L at Exit","value":"$666.67"},{"metric":"ROI on Margin at Exit","value":"+66.7%"}],"scenarios":[{"price-change":"-20%","price":"$36,000.00","p-l":"-$1,000.00 (Liquidated)","roi-on-margin":"-100.0%"},{"price-change":"-10%","price":"$40,500.00","p-l":"-$1,000.00 (Liquidated)","roi-on-margin":"-100.0%"},{"price-change":"-5%","price":"$42,750.00","p-l":"-$500.00","roi-on-margin":"-50.0%"},{"price-change":"Entry (0%)","price":"$45,000.00","p-l":"$0.00","roi-on-margin":"0.0%"},{"price-change":"+5%","price":"$47,250.00","p-l":"$500.00","roi-on-margin":"+50.0%"},{"price-change":"+10%","price":"$49,500.00","p-l":"$1,000.00","roi-on-margin":"+100.0%"},{"price-change":"+20%","price":"$54,000.00","p-l":"$2,000.00","roi-on-margin":"+200.0%"}]},"credits_used":5,"credits_remaining":null}},"5x_short_eth_500_margin":{"summary":"5x short ETH, $500 margin","value":{"tool":"crypto-leverage-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Position Direction","value":"Short"},{"metric":"Entry Price","value":"$3,200.00"},{"metric":"Leverage","value":"5x"},{"metric":"Margin (Collateral)","value":"$500.00"},{"metric":"Position Size (Notional)","value":"$2,500.00"},{"metric":"Quantity","value":"0.78125"},{"metric":"Maintenance Margin Rate","value":"0.50%"},{"metric":"Liquidation Price","value":"$3,824.00"},{"metric":"Price Change to Liquidation","value":"+19.5%"},{"metric":"Risk Level","value":"Moderate"},{"metric":"Exit Price","value":"$2,900.00"},{"metric":"P/L at Exit","value":"$234.38"},{"metric":"ROI on Margin at Exit","value":"+46.9%"}],"scenarios":[{"price-change":"-20%","price":"$2,560.00","p-l":"$500.00","roi-on-margin":"+100.0%"},{"price-change":"-10%","price":"$2,880.00","p-l":"$250.00","roi-on-margin":"+50.0%"},{"price-change":"-5%","price":"$3,040.00","p-l":"$125.00","roi-on-margin":"+25.0%"},{"price-change":"Entry (0%)","price":"$3,200.00","p-l":"$0.00","roi-on-margin":"0.0%"},{"price-change":"+5%","price":"$3,360.00","p-l":"-$125.00","roi-on-margin":"-25.0%"},{"price-change":"+10%","price":"$3,520.00","p-l":"-$250.00","roi-on-margin":"-50.0%"},{"price-change":"+20%","price":"$3,840.00","p-l":"-$500.00 (Liquidated)","roi-on-margin":"-100.0%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Position Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"scenarios":{"type":"array","description":"Price Scenarios","items":{"type":"object","properties":{"price-change":{"type":"string","description":"Price Change"},"price":{"type":"string","description":"Price"},"p-l":{"type":"string","description":"P/L"},"roi-on-margin":{"type":"string","description":"ROI on Margin"}}},"x-iotools-columns":["price-change","price","p-l","roi-on-margin"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/crypto-profit-loss-calculator":{"post":{"operationId":"run_crypto_profit_loss_calculator","summary":"Crypto Profit/Loss Calculator","tags":["Calculators"],"description":"Calculate the net profit or loss, ROI, and break-even price on a crypto trade from buy price, sell price, quantity, and per-side trading fees (percentage or flat) — plus a full cost breakdown of the trade.\n\n[Try Crypto Profit/Loss Calculator in your browser →](https://iotools.cloud/tool/crypto-profit-loss-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"buyPrice":{"type":"number","description":"Buy Price per Unit ($)","minimum":1e-8,"maximum":100000000},"sellPrice":{"type":"number","description":"Sell Price per Unit ($)","minimum":1e-8,"maximum":100000000},"quantity":{"type":"number","description":"Quantity","minimum":1e-8,"maximum":1000000000},"feeType":{"enum":["percent","flat"],"description":"Fee Type"},"buyFee":{"type":"number","description":"Buy Fee","minimum":0,"maximum":100000000},"sellFee":{"type":"number","description":"Sell Fee","minimum":0,"maximum":100000000},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["buyPrice","sellPrice","quantity"]},"examples":{"0_5_btc_bought_at_45_000_sold_at_52_000_0_5_fees":{"summary":"0.5 BTC bought at $45,000, sold at $52,000, 0.5% fees","value":{"buyPrice":"45000","sellPrice":"52000","quantity":"0.5","feeType":"percent","buyFee":"0.5","sellFee":"0.5","currency":"USD"}},"2_eth_bought_at_3_200_sold_at_2_900_flat_5_fees":{"summary":"2 ETH bought at $3,200, sold at $2,900, flat $5 fees","value":{"buyPrice":"3200","sellPrice":"2900","quantity":"2","feeType":"flat","buyFee":"5","sellFee":"5","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"0_5_btc_bought_at_45_000_sold_at_52_000_0_5_fees":{"summary":"0.5 BTC bought at $45,000, sold at $52,000, 0.5% fees","value":{"tool":"crypto-profit-loss-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Buy Price per Unit","value":"$45,000.00"},{"metric":"Sell Price per Unit","value":"$52,000.00"},{"metric":"Quantity","value":"0.5"},{"metric":"Fee Type","value":"Percentage of Trade Value"},{"metric":"Buy Fee","value":"+0.50%"},{"metric":"Sell Fee","value":"+0.50%"},{"metric":"Price Change","value":"+15.56%"},{"metric":"Net Profit/Loss","value":"$3,257.50"},{"metric":"Result","value":"Profit"},{"metric":"ROI","value":"+14.41%"},{"metric":"Profit/Loss per Unit","value":"$6,515.00"},{"metric":"Break-Even Sell Price","value":"$45,452.26"}],"breakdown":[{"metric":"Gross Buy Cost (Price × Quantity)","value":"$22,500.00"},{"metric":"Buy Fee (% of trade value)","value":"$112.50"},{"metric":"Total Buy Cost","value":"$22,612.50"},{"metric":"Gross Sell Proceeds (Price × Quantity)","value":"$26,000.00"},{"metric":"Sell Fee (% of trade value)","value":"$130.00"},{"metric":"Net Sell Proceeds","value":"$25,870.00"},{"metric":"Net Profit/Loss","value":"$3,257.50"}]},"credits_used":5,"credits_remaining":null}},"2_eth_bought_at_3_200_sold_at_2_900_flat_5_fees":{"summary":"2 ETH bought at $3,200, sold at $2,900, flat $5 fees","value":{"tool":"crypto-profit-loss-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Buy Price per Unit","value":"$3,200.00"},{"metric":"Sell Price per Unit","value":"$2,900.00"},{"metric":"Quantity","value":"2"},{"metric":"Fee Type","value":"Flat Amount"},{"metric":"Buy Fee","value":"$5.00"},{"metric":"Sell Fee","value":"$5.00"},{"metric":"Price Change","value":"-9.38%"},{"metric":"Net Profit/Loss","value":"-$610.00"},{"metric":"Result","value":"Loss"},{"metric":"ROI","value":"-9.52%"},{"metric":"Profit/Loss per Unit","value":"-$305.00"},{"metric":"Break-Even Sell Price","value":"$3,205.00"}],"breakdown":[{"metric":"Gross Buy Cost (Price × Quantity)","value":"$6,400.00"},{"metric":"Buy Fee (flat amount)","value":"$5.00"},{"metric":"Total Buy Cost","value":"$6,405.00"},{"metric":"Gross Sell Proceeds (Price × Quantity)","value":"$5,800.00"},{"metric":"Sell Fee (flat amount)","value":"$5.00"},{"metric":"Net Sell Proceeds","value":"$5,795.00"},{"metric":"Net Profit/Loss","value":"-$610.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Cost Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-specificity-calculator":{"post":{"operationId":"run_css_specificity_calculator","summary":"CSS Specificity Calculator","tags":["Calculators"],"description":"Calculate the CSS specificity of one or more selectors as an (A, B, C) triple — ID, class/attribute/pseudo-class, and type/pseudo-element counts — to debug why a style rule isn't winning.\n\n[Try CSS Specificity Calculator in your browser →](https://iotools.cloud/tool/css-specificity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"selectors":{"type":"string","description":"CSS Selectors"}},"required":[]},"examples":{"single_id_selector":{"summary":"Single ID selector","value":{"selectors":"#header"}},"reference_selectors":{"summary":"Reference selectors","value":{"selectors":"#header\n.nav a:hover\ndiv > p::before\n*\n.btn.btn-primary"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_id_selector":{"summary":"Single ID selector","value":{"tool":"css-specificity-calculator","tool_version":"1.0.2","outputs":{"results":[{"selector":"#header","id":"1","class":"0","type":"0","specificity":"(1, 0, 0)"}]},"credits_used":5,"credits_remaining":null}},"reference_selectors":{"summary":"Reference selectors","value":{"tool":"css-specificity-calculator","tool_version":"1.0.2","outputs":{"results":[{"selector":"#header","id":"1","class":"0","type":"0","specificity":"(1, 0, 0)"},{"selector":".nav a:hover","id":"0","class":"2","type":"1","specificity":"(0, 2, 1)"},{"selector":"div > p::before","id":"0","class":"0","type":"3","specificity":"(0, 0, 3)"},{"selector":"*","id":"0","class":"0","type":"0","specificity":"(0, 0, 0)"},{"selector":".btn.btn-primary","id":"0","class":"2","type":"0","specificity":"(0, 2, 0)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Specificity","items":{"type":"object","properties":{"selector":{"type":"string","description":"Selector"},"id":{"type":"string","description":"ID"},"class":{"type":"string","description":"Class"},"type":{"type":"string","description":"Type"},"specificity":{"type":"string","description":"Specificity"}}},"x-iotools-columns":["selector","id","class","type","specificity"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ctr-calculator":{"post":{"operationId":"run_ctr_calculator","summary":"CTR Calculator","tags":["Calculators"],"description":"Calculate click-through rate from clicks and impressions, work out the clicks needed to hit a target CTR, or compare CTR across multiple campaigns pasted as name/clicks/impressions rows.\n\n[Try CTR Calculator in your browser →](https://iotools.cloud/tool/ctr-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["basic","reverse","compare"],"description":"Mode"},"clicks":{"type":"number","description":"Clicks","minimum":0},"impressions":{"type":"number","description":"Impressions","minimum":1},"targetCtr":{"type":"number","description":"Target CTR (%)","minimum":0,"maximum":100},"campaigns":{"type":"string","description":"Campaigns"}},"required":[]},"examples":{"basic_250_clicks_10_000_impressions":{"summary":"Basic: 250 clicks / 10,000 impressions","value":{"mode":"basic","clicks":"250","impressions":"10000","targetCtr":"5","campaigns":""}},"reverse_clicks_needed_for_a_2_5_ctr_on_333_impressions":{"summary":"Reverse: clicks needed for a 2.5% CTR on 333 impressions","value":{"mode":"reverse","clicks":"250","impressions":"333","targetCtr":"2.5","campaigns":""}},"compare_three_channels_industry_average_ctr":{"summary":"Compare: three channels' industry-average CTR","value":{"mode":"compare","clicks":"250","impressions":"10000","targetCtr":"5","campaigns":"Search Ads | 317 | 10000\nEmail | 262 | 10000\nDisplay | 46 | 10000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_250_clicks_10_000_impressions":{"summary":"Basic: 250 clicks / 10,000 impressions","value":{"tool":"ctr-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Clicks","value":"250"},{"metric":"Impressions","value":"10000"},{"metric":"CTR","value":"2.50%"},{"metric":"Non-Click Rate","value":"97.50%"},{"metric":"Rating","value":"Good (2–5%)"}]},"credits_used":5,"credits_remaining":null}},"reverse_clicks_needed_for_a_2_5_ctr_on_333_impressions":{"summary":"Reverse: clicks needed for a 2.5% CTR on 333 impressions","value":{"tool":"ctr-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Target CTR","value":"2.50%"},{"metric":"Impressions","value":"333"},{"metric":"Required Clicks","value":"9"},{"metric":"Resulting CTR","value":"2.703%"}]},"credits_used":5,"credits_remaining":null}},"compare_three_channels_industry_average_ctr":{"summary":"Compare: three channels' industry-average CTR","value":{"tool":"ctr-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Search Ads","value":"3.17%"},{"metric":"Email","value":"2.62%"},{"metric":"Display","value":"0.46%"},{"metric":"Best Performing","value":"Search Ads (3.17%)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cube-and-cube-root-calculator":{"post":{"operationId":"run_cube_and_cube_root_calculator","summary":"Cube and Cube Root Calculator","tags":["Calculators"],"description":"Calculate a number's cube (n³) and cube root (∛n) together, with a perfect-cube check, a simplified radical form for whole numbers, and a step-by-step breakdown of both.\n\n[Try Cube and Cube Root Calculator in your browser →](https://iotools.cloud/tool/cube-and-cube-root-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"number","description":"Number"}},"required":["number"]},"examples":{"perfect_cube_8":{"summary":"Perfect cube (8)","value":{"number":"8"}},"negative_perfect_cube_27":{"summary":"Negative perfect cube (-27)","value":{"number":"-27"}},"non_perfect_cube_with_a_simplifiable_factor_72":{"summary":"Non-perfect cube with a simplifiable factor (72)","value":{"number":"72"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"perfect_cube_8":{"summary":"Perfect cube (8)","value":{"tool":"cube-and-cube-root-calculator","tool_version":"1.0.2","outputs":{"cube":"512","cubeRoot":"2","isPerfectCube":"Yes","simplifiedRadical":"2","steps":"n = 8\nCube: 8³ = 8 × 8 × 8 = 512\nCube root: ∛8 = 2\n8 is a perfect cube: 2³ = 8."},"credits_used":5,"credits_remaining":null}},"negative_perfect_cube_27":{"summary":"Negative perfect cube (-27)","value":{"tool":"cube-and-cube-root-calculator","tool_version":"1.0.2","outputs":{"cube":"-19683","cubeRoot":"-3","isPerfectCube":"Yes","simplifiedRadical":"-3","steps":"n = -27\nCube: -27³ = -27 × -27 × -27 = -19683\nCube root: ∛-27 = -3\n-27 is a perfect cube: -3³ = -27."},"credits_used":5,"credits_remaining":null}},"non_perfect_cube_with_a_simplifiable_factor_72":{"summary":"Non-perfect cube with a simplifiable factor (72)","value":{"tool":"cube-and-cube-root-calculator","tool_version":"1.0.2","outputs":{"cube":"373248","cubeRoot":"4.16017","isPerfectCube":"No","simplifiedRadical":"2∛9","steps":"n = 72\nCube: 72³ = 72 × 72 × 72 = 373248\nCube root: ∛72 = 4.16017\nLargest perfect-cube factor: 2³ = 8 → ∛72 = 2∛9."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cube":{"type":"string","description":"Cube (n³)"},"cubeRoot":{"type":"string","description":"Cube Root (∛n)"},"isPerfectCube":{"type":"string","description":"Perfect Cube?"},"simplifiedRadical":{"type":"string","description":"Simplified Radical Form"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cube-root-calculator":{"post":{"operationId":"run_cube_root_calculator","summary":"Cube Root Calculator","tags":["Calculators"],"description":"Calculate the real cube root of any number, positive or negative, with a perfect-cube check, the two nearest bounding perfect cubes, and a simplified radical form for whole numbers.\n\n[Try Cube Root Calculator in your browser →](https://iotools.cloud/tool/cube-root-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"number","description":"Number"}},"required":["number"]},"examples":{"perfect_cube_125":{"summary":"Perfect cube (125)","value":{"number":"125"}},"negative_number_27":{"summary":"Negative number (-27)","value":{"number":"-27"}},"non_perfect_cube_with_a_simplifiable_factor_72":{"summary":"Non-perfect cube with a simplifiable factor (72)","value":{"number":"72"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"perfect_cube_125":{"summary":"Perfect cube (125)","value":{"tool":"cube-root-calculator","tool_version":"1.0.2","outputs":{"cubeRoot":"5","isPerfectCube":"Yes","simplifiedRadical":"5","lowerCube":"125 (5³)","upperCube":"216 (6³)","steps":"n = 125\nReal cube root: ∛125 = 5\n125 is a perfect cube: 5³ = 125.\nNearest perfect cubes: 125 (5³) ≤ 125 ≤ 216 (6³)"},"credits_used":5,"credits_remaining":null}},"negative_number_27":{"summary":"Negative number (-27)","value":{"tool":"cube-root-calculator","tool_version":"1.0.2","outputs":{"cubeRoot":"-3","isPerfectCube":"Yes","simplifiedRadical":"-3","lowerCube":"-27 (-3³)","upperCube":"-8 (-2³)","steps":"n = -27\nReal cube root: ∛-27 = -3\n-27 is a perfect cube: -3³ = -27.\nNearest perfect cubes: -27 (-3³) ≤ -27 ≤ -8 (-2³)"},"credits_used":5,"credits_remaining":null}},"non_perfect_cube_with_a_simplifiable_factor_72":{"summary":"Non-perfect cube with a simplifiable factor (72)","value":{"tool":"cube-root-calculator","tool_version":"1.0.2","outputs":{"cubeRoot":"4.16017","isPerfectCube":"No","simplifiedRadical":"2∛9","lowerCube":"64 (4³)","upperCube":"125 (5³)","steps":"n = 72\nReal cube root: ∛72 = 4.16017\nLargest perfect-cube factor: 2³ = 8 → ∛72 = 2∛9.\nNearest perfect cubes: 64 (4³) ≤ 72 ≤ 125 (5³)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cubeRoot":{"type":"string","description":"Cube Root"},"isPerfectCube":{"type":"string","description":"Perfect Cube?"},"simplifiedRadical":{"type":"string","description":"Simplified Radical Form"},"lowerCube":{"type":"string","description":"Nearest Lower Perfect Cube"},"upperCube":{"type":"string","description":"Nearest Upper Perfect Cube"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cubic-equation-solver":{"post":{"operationId":"run_cubic_equation_solver","summary":"Cubic Equation Solver","tags":["Calculators"],"description":"Solve ax³ + bx² + cx + d = 0 for x using Cardano's method. Returns all three roots — real or complex — with a step-by-step depressed-cubic derivation.\n\n[Try Cubic Equation Solver in your browser →](https://iotools.cloud/tool/cubic-equation-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"a"},"coeffB":{"type":"number","description":"b"},"coeffC":{"type":"number","description":"c"},"coeffD":{"type":"number","description":"d"}},"required":["coeffA","coeffB","coeffC","coeffD"]},"examples":{"three_distinct_real_roots_x_6x_11x_6_0":{"summary":"Three distinct real roots (x³ − 6x² + 11x − 6 = 0)","value":{"coeffA":"1","coeffB":"-6","coeffC":"11","coeffD":"-6"}},"triple_root_x_3x_3x_1_0":{"summary":"Triple root (x³ − 3x² + 3x − 1 = 0)","value":{"coeffA":"1","coeffB":"-3","coeffC":"3","coeffD":"-1"}},"one_real_two_complex_roots_x_1_0":{"summary":"One real, two complex roots (x³ − 1 = 0)","value":{"coeffA":"1","coeffB":"0","coeffC":"0","coeffD":"-1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"three_distinct_real_roots_x_6x_11x_6_0":{"summary":"Three distinct real roots (x³ − 6x² + 11x − 6 = 0)","value":{"tool":"cubic-equation-solver","tool_version":"1.0.2","outputs":{"roots":"x₁ = 3, x₂ = 1, x₃ = 2","discriminant":"-0.037037","steps":"a = 1, b = -6, c = 11, d = -6\nDivide by a: x³ + Bx² + Cx + D = 0, where B = -6, C = 11, D = -6\nSubstitute x = t − B/3 to remove the x² term: t³ + pt + q = 0, where p = -1, q = 0\nΔ = (q/2)² + (p/3)³ = -0.037037 < 0 → three distinct real roots (trigonometric form)\nφ = arccos(−q / (2·√(−p³/27))) = 1.5708 rad\nx₁ = 2√(−p/3)·cos(φ/3) − B/3 = 3\nx₂ = 2√(−p/3)·cos((φ+2π)/3) − B/3 = 1\nx₃ = 2√(−p/3)·cos((φ+4π)/3) − B/3 = 2"},"credits_used":5,"credits_remaining":null}},"triple_root_x_3x_3x_1_0":{"summary":"Triple root (x³ − 3x² + 3x − 1 = 0)","value":{"tool":"cubic-equation-solver","tool_version":"1.0.2","outputs":{"roots":"x = 1 (triple root)","discriminant":"0","steps":"a = 1, b = -3, c = 3, d = -1\nDivide by a: x³ + Bx² + Cx + D = 0, where B = -3, C = 3, D = -1\nSubstitute x = t − B/3 to remove the x² term: t³ + pt + q = 0, where p = 0, q = 0\nΔ = (q/2)² + (p/3)³ = 0 → 0 → all roots real, with a repeat\np = q = 0 → triple root: t = 0 → x = 1"},"credits_used":5,"credits_remaining":null}},"one_real_two_complex_roots_x_1_0":{"summary":"One real, two complex roots (x³ − 1 = 0)","value":{"tool":"cubic-equation-solver","tool_version":"1.0.2","outputs":{"roots":"x₁ = 1, x₂ = -0.5 + 0.866025i, x₃ = -0.5 - 0.866025i","discriminant":"0.25","steps":"a = 1, b = 0, c = 0, d = -1\nDivide by a: x³ + Bx² + Cx + D = 0, where B = 0, C = 0, D = -1\nSubstitute x = t − B/3 to remove the x² term: t³ + pt + q = 0, where p = 0, q = -1\nΔ = (q/2)² + (p/3)³ = 0.25 > 0 → one real root, two complex conjugate roots\nu = ∛(−q/2 + √Δ) = 1, v = ∛(−q/2 − √Δ) = 0\nx₁ = u + v − B/3 = 1\nx₂ = -0.5 + 0.866025i\nx₃ = -0.5 - 0.866025i"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"roots":{"type":"string","description":"Roots"},"discriminant":{"type":"string","description":"Discriminant (Δ)"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/curl-calculator":{"post":{"operationId":"run_curl_calculator","summary":"Curl Calculator","tags":["Calculators"],"description":"Calculate the curl of a 3D vector field F(x, y, z) = (P, Q, R) at a point, with the simplified symbolic curl and a step-by-step partial-derivative derivation.\n\n[Try Curl Calculator in your browser →](https://iotools.cloud/tool/curl-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"p":{"type":"string","description":"P(x, y, z)"},"q":{"type":"string","description":"Q(x, y, z)"},"r":{"type":"string","description":"R(x, y, z)"},"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"z":{"type":"number","description":"z"}},"required":["p","q","r","x","y","z"]},"examples":{"rotation_field_f_y_x_0_at_1_2_3":{"summary":"Rotation field F = (-y, x, 0) at (1, 2, 3)","value":{"p":"-y","q":"x","r":"0","x":"1","y":"2","z":"3"}},"conservative_field_f_y_z_x_z_x_y_at_1_1_1":{"summary":"Conservative field F = (y*z, x*z, x*y) at (1, 1, 1)","value":{"p":"y*z","q":"x*z","r":"x*y","x":"1","y":"1","z":"1"}},"f_x_2_y_sin_x_z_z_2_at_1_2_0":{"summary":"F = (x^2*y, sin(x*z), z^2) at (1, 2, 0)","value":{"p":"x^2*y","q":"sin(x*z)","r":"z^2","x":"1","y":"2","z":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rotation_field_f_y_x_0_at_1_2_3":{"summary":"Rotation field F = (-y, x, 0) at (1, 2, 3)","value":{"tool":"curl-calculator","tool_version":"1.0.2","outputs":{"curlVector":"(0, 0, 2)","curlX":"0","curlY":"0","curlZ":"2","steps":"F(x, y, z) = (-y, x, 0)\n∂R/∂y = 0\n∂Q/∂z = 0\n∂P/∂z = 0\n∂R/∂x = 0\n∂Q/∂x = 1\n∂P/∂y = -1\ncurl F = (∂R/∂y − ∂Q/∂z, ∂P/∂z − ∂R/∂x, ∂Q/∂x − ∂P/∂y)\n       = (0, 0, 2)\nAt (x, y, z) = (1, 2, 3):\ncurl F = (0, 0, 2)"},"credits_used":5,"credits_remaining":null}},"conservative_field_f_y_z_x_z_x_y_at_1_1_1":{"summary":"Conservative field F = (y*z, x*z, x*y) at (1, 1, 1)","value":{"tool":"curl-calculator","tool_version":"1.0.2","outputs":{"curlVector":"(0, 0, 0)","curlX":"0","curlY":"0","curlZ":"0","steps":"F(x, y, z) = (y*z, x*z, x*y)\n∂R/∂y = x\n∂Q/∂z = x\n∂P/∂z = y\n∂R/∂x = y\n∂Q/∂x = z\n∂P/∂y = z\ncurl F = (∂R/∂y − ∂Q/∂z, ∂P/∂z − ∂R/∂x, ∂Q/∂x − ∂P/∂y)\n       = (0, 0, 0)\nAt (x, y, z) = (1, 1, 1):\ncurl F = (0, 0, 0)"},"credits_used":5,"credits_remaining":null}},"f_x_2_y_sin_x_z_z_2_at_1_2_0":{"summary":"F = (x^2*y, sin(x*z), z^2) at (1, 2, 0)","value":{"tool":"curl-calculator","tool_version":"1.0.2","outputs":{"curlVector":"(-1, 0, -1)","curlX":"-1","curlY":"0","curlZ":"-1","steps":"F(x, y, z) = (x^2*y, sin(x*z), z^2)\n∂R/∂y = 0\n∂Q/∂z = x * cos(x * z)\n∂P/∂z = 0\n∂R/∂x = 0\n∂Q/∂x = z * cos(x * z)\n∂P/∂y = x ^ 2\ncurl F = (∂R/∂y − ∂Q/∂z, ∂P/∂z − ∂R/∂x, ∂Q/∂x − ∂P/∂y)\n       = (-(x * cos(x * z)), 0, z * cos(x * z) - x ^ 2)\nAt (x, y, z) = (1, 2, 0):\ncurl F = (-1, 0, -1)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"curlVector":{"type":"string","description":"curl F at (x, y, z)"},"curlX":{"type":"string","description":"curl F · i"},"curlY":{"type":"string","description":"curl F · j"},"curlZ":{"type":"string","description":"curl F · k"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/curvature-calculator":{"post":{"operationId":"run_curvature_calculator","summary":"Curvature Calculator","tags":["Calculators"],"description":"Calculate the curvature κ and radius of curvature R of a curve y = f(x) at a point, for any function — not just a quadratic — with both derivatives shown symbolically and a step-by-step derivation.\n\n[Try Curvature Calculator in your browser →](https://iotools.cloud/tool/curvature-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"functionExpr":{"type":"string","description":"f(x)"},"x":{"type":"number","description":"x"}},"required":["functionExpr","x"]},"examples":{"f_x_x_at_x_1":{"summary":"f(x) = x² at x = 1","value":{"functionExpr":"x^2","x":"1"}},"f_x_x_at_the_vertex_x_0":{"summary":"f(x) = x² at the vertex, x = 0","value":{"functionExpr":"x^2","x":"0"}},"straight_line_f_x_x_has_zero_curvature":{"summary":"Straight line f(x) = x has zero curvature","value":{"functionExpr":"x","x":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_x_at_x_1":{"summary":"f(x) = x² at x = 1","value":{"tool":"curvature-calculator","tool_version":"1.0.2","outputs":{"curvature":"0.178885","radiusOfCurvature":"5.59017","firstDerivative":"2 * x","secondDerivative":"2","steps":"f(x) = x^2\nf'(x) = 2 * x\nf''(x) = 2\nAt x = 1: f'(x) = 2, f''(x) = 2\nκ = |f''(x)| / (1 + f'(x)²)^(3/2) = |2| / (1 + 2²)^(3/2) = 0.178885\nR = 1 / κ = 1 / 0.178885 = 5.59017"},"credits_used":5,"credits_remaining":null}},"f_x_x_at_the_vertex_x_0":{"summary":"f(x) = x² at the vertex, x = 0","value":{"tool":"curvature-calculator","tool_version":"1.0.2","outputs":{"curvature":"2","radiusOfCurvature":"0.5","firstDerivative":"2 * x","secondDerivative":"2","steps":"f(x) = x^2\nf'(x) = 2 * x\nf''(x) = 2\nAt x = 0: f'(x) = 0, f''(x) = 2\nκ = |f''(x)| / (1 + f'(x)²)^(3/2) = |2| / (1 + 0²)^(3/2) = 2\nR = 1 / κ = 1 / 2 = 0.5"},"credits_used":5,"credits_remaining":null}},"straight_line_f_x_x_has_zero_curvature":{"summary":"Straight line f(x) = x has zero curvature","value":{"tool":"curvature-calculator","tool_version":"1.0.2","outputs":{"curvature":"0","radiusOfCurvature":"∞","firstDerivative":"1","secondDerivative":"0","steps":"f(x) = x\nf'(x) = 1\nf''(x) = 0\nAt x = 2: f'(x) = 1, f''(x) = 0\nκ = |f''(x)| / (1 + f'(x)²)^(3/2) = |0| / (1 + 1²)^(3/2) = 0\nR = 1 / κ is undefined (κ = 0 — the curve is locally straight at this point)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"curvature":{"type":"string","description":"Curvature (κ)"},"radiusOfCurvature":{"type":"string","description":"Radius of Curvature (R)"},"firstDerivative":{"type":"string","description":"f'(x)"},"secondDerivative":{"type":"string","description":"f''(x)"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/directional-derivative-calculator":{"post":{"operationId":"run_directional_derivative_calculator","summary":"Directional Derivative Calculator","tags":["Calculators"],"description":"Calculate the directional derivative of f(x, y, z) at a point along a direction vector, with the symbolic and numeric gradient, the maximum rate of change, and the unit direction it's achieved along.\n\n[Try Directional Derivative Calculator in your browser →](https://iotools.cloud/tool/directional-derivative-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"f":{"type":"string","description":"f(x, y, z)"},"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"z":{"type":"number","description":"z"},"a":{"type":"number","description":"Direction vector a"},"b":{"type":"number","description":"Direction vector b"},"c":{"type":"number","description":"Direction vector c"}},"required":["f","x","y","z","a","b","c"]},"examples":{"f_x_y_z_at_1_1_1_direction_1_0_0":{"summary":"f = x² + y² + z² at (1, 1, 1), direction (1, 0, 0)","value":{"f":"x^2 + y^2 + z^2","x":"1","y":"1","z":"1","a":"1","b":"0","c":"0"}},"f_x_y_z_at_1_2_3_direction_1_1_1":{"summary":"f = x*y*z at (1, 2, 3), direction (1, 1, 1)","value":{"f":"x*y*z","x":"1","y":"2","z":"3","a":"1","b":"1","c":"1"}},"2_variable_function_f_x_2_y_z_unused_at_2_1_0_direction_0_1_0":{"summary":"2-variable function: f = x^2 * y (z unused) at (2, 1, 0), direction (0, 1, 0)","value":{"f":"x^2 * y","x":"2","y":"1","z":"0","a":"0","b":"1","c":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_y_z_at_1_1_1_direction_1_0_0":{"summary":"f = x² + y² + z² at (1, 1, 1), direction (1, 0, 0)","value":{"tool":"directional-derivative-calculator","tool_version":"1.0.2","outputs":{"directionalDerivative":"2","gradientVector":"(2, 2, 2)","maxRateOfChange":"3.4641","maxRateDirection":"(0.57735, 0.57735, 0.57735)","steps":"f(x, y, z) = x^2 + y^2 + z^2\n∂f/∂x = 2 * x\n∂f/∂y = 2 * y\n∂f/∂z = 2 * z\n∇f = (∂f/∂x, ∂f/∂y, ∂f/∂z)\nAt P = (1, 1, 1): ∇f(P) = (2, 2, 2)\nDirection vector v = (1, 0, 0), |v| = 1\nUnit vector u = v / |v| = (1, 0, 0)\nD_u f(P) = ∇f(P) · u = (2, 2, 2) · (1, 0, 0) = 2\nMaximum rate of change = |∇f(P)| = 3.4641, achieved along (0.57735, 0.57735, 0.57735)"},"credits_used":5,"credits_remaining":null}},"f_x_y_z_at_1_2_3_direction_1_1_1":{"summary":"f = x*y*z at (1, 2, 3), direction (1, 1, 1)","value":{"tool":"directional-derivative-calculator","tool_version":"1.0.2","outputs":{"directionalDerivative":"6.35085","gradientVector":"(6, 3, 2)","maxRateOfChange":"7","maxRateDirection":"(0.857143, 0.428571, 0.285714)","steps":"f(x, y, z) = x*y*z\n∂f/∂x = z * y\n∂f/∂y = z * x\n∂f/∂z = x * y\n∇f = (∂f/∂x, ∂f/∂y, ∂f/∂z)\nAt P = (1, 2, 3): ∇f(P) = (6, 3, 2)\nDirection vector v = (1, 1, 1), |v| = 1.73205\nUnit vector u = v / |v| = (0.57735, 0.57735, 0.57735)\nD_u f(P) = ∇f(P) · u = (6, 3, 2) · (0.57735, 0.57735, 0.57735) = 6.35085\nMaximum rate of change = |∇f(P)| = 7, achieved along (0.857143, 0.428571, 0.285714)"},"credits_used":5,"credits_remaining":null}},"2_variable_function_f_x_2_y_z_unused_at_2_1_0_direction_0_1_0":{"summary":"2-variable function: f = x^2 * y (z unused) at (2, 1, 0), direction (0, 1, 0)","value":{"tool":"directional-derivative-calculator","tool_version":"1.0.2","outputs":{"directionalDerivative":"4","gradientVector":"(4, 4, 0)","maxRateOfChange":"5.65685","maxRateDirection":"(0.707107, 0.707107, 0)","steps":"f(x, y, z) = x^2 * y\n∂f/∂x = 2 * y * x\n∂f/∂y = x ^ 2\n∂f/∂z = 0\n∇f = (∂f/∂x, ∂f/∂y, ∂f/∂z)\nAt P = (2, 1, 0): ∇f(P) = (4, 4, 0)\nDirection vector v = (0, 1, 0), |v| = 1\nUnit vector u = v / |v| = (0, 1, 0)\nD_u f(P) = ∇f(P) · u = (4, 4, 0) · (0, 1, 0) = 4\nMaximum rate of change = |∇f(P)| = 5.65685, achieved along (0.707107, 0.707107, 0)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"directionalDerivative":{"type":"string","description":"Directional Derivative D_u f(P)"},"gradientVector":{"type":"string","description":"Gradient ∇f(P)"},"maxRateOfChange":{"type":"string","description":"Maximum Rate of Change"},"maxRateDirection":{"type":"string","description":"Direction of Maximum Rate"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/divergence-calculator":{"post":{"operationId":"run_divergence_calculator","summary":"Divergence Calculator","tags":["Calculators"],"description":"Calculate the divergence of a 3D vector field F(x, y, z) = (P, Q, R) at a point, with the simplified symbolic divergence expression and a step-by-step partial-derivative derivation.\n\n[Try Divergence Calculator in your browser →](https://iotools.cloud/tool/divergence-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"p":{"type":"string","description":"P(x, y, z)"},"q":{"type":"string","description":"Q(x, y, z)"},"r":{"type":"string","description":"R(x, y, z)"},"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"z":{"type":"number","description":"z"}},"required":["p","q","r","x","y","z"]},"examples":{"f_x_2_y_y_z_x_z_2_at_1_2_3":{"summary":"F = (x^2*y, y*z, x*z^2) at (1, 2, 3)","value":{"p":"x^2*y","q":"y*z","r":"x*z^2","x":"1","y":"2","z":"3"}},"rotation_field_f_y_x_0_at_1_2_3_incompressible":{"summary":"Rotation field F = (-y, x, 0) at (1, 2, 3) — incompressible","value":{"p":"-y","q":"x","r":"0","x":"1","y":"2","z":"3"}},"sink_field_f_x_y_z_at_2_2_2":{"summary":"Sink field F = (-x, -y, -z) at (2, 2, 2)","value":{"p":"-x","q":"-y","r":"-z","x":"2","y":"2","z":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_2_y_y_z_x_z_2_at_1_2_3":{"summary":"F = (x^2*y, y*z, x*z^2) at (1, 2, 3)","value":{"tool":"divergence-calculator","tool_version":"1.0.2","outputs":{"divergenceValue":"13","divergenceExpression":"z * (2 * x + 1) + 2 * y * x","classification":"div F > 0 at this point — a net source (outward flux)","steps":"F(x, y, z) = (x^2*y, y*z, x*z^2)\n∂P/∂x = 2 * y * x\n∂Q/∂y = z\n∂R/∂z = 2 * x * z\ndiv F = ∂P/∂x + ∂Q/∂y + ∂R/∂z\n      = z * (2 * x + 1) + 2 * y * x\nAt (x, y, z) = (1, 2, 3):\ndiv F = 13"},"credits_used":5,"credits_remaining":null}},"rotation_field_f_y_x_0_at_1_2_3_incompressible":{"summary":"Rotation field F = (-y, x, 0) at (1, 2, 3) — incompressible","value":{"tool":"divergence-calculator","tool_version":"1.0.2","outputs":{"divergenceValue":"0","divergenceExpression":"0","classification":"div F = 0 everywhere — the field is incompressible (solenoidal)","steps":"F(x, y, z) = (-y, x, 0)\n∂P/∂x = 0\n∂Q/∂y = 0\n∂R/∂z = 0\ndiv F = ∂P/∂x + ∂Q/∂y + ∂R/∂z\n      = 0\nAt (x, y, z) = (1, 2, 3):\ndiv F = 0"},"credits_used":5,"credits_remaining":null}},"sink_field_f_x_y_z_at_2_2_2":{"summary":"Sink field F = (-x, -y, -z) at (2, 2, 2)","value":{"tool":"divergence-calculator","tool_version":"1.0.2","outputs":{"divergenceValue":"-3","divergenceExpression":"-3","classification":"div F < 0 at this point — a net sink (inward flux)","steps":"F(x, y, z) = (-x, -y, -z)\n∂P/∂x = -1\n∂Q/∂y = -1\n∂R/∂z = -1\ndiv F = ∂P/∂x + ∂Q/∂y + ∂R/∂z\n      = -3\nAt (x, y, z) = (2, 2, 2):\ndiv F = -3"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"divergenceValue":{"type":"string","description":"div F at (x, y, z)"},"divergenceExpression":{"type":"string","description":"Symbolic div F"},"classification":{"type":"string","description":"Interpretation"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/customer-lifetime-value-calculator":{"post":{"operationId":"run_customer_lifetime_value_calculator","summary":"Customer Lifetime Value Calculator","tags":["Calculators"],"description":"Calculate Customer Lifetime Value (CLV / LTV) with the e-commerce model (average order value × purchases per year × lifespan) or the SaaS model (ARPU ÷ monthly churn), apply gross margin for net value, and compare against CAC for an LTV:CAC ratio and payback period.\n\n[Try Customer Lifetime Value Calculator in your browser →](https://iotools.cloud/tool/customer-lifetime-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"enum":["ecommerce","saas"],"description":"Business Model"},"avgOrderValue":{"type":"number","description":"Avg Order Value ($)","minimum":0},"purchaseFrequency":{"type":"number","description":"Purchases / Year","minimum":0},"customerLifespan":{"type":"number","description":"Customer Lifespan (years)","minimum":0},"grossMargin":{"type":"number","description":"Gross Margin (%)","minimum":0,"maximum":100},"arpu":{"type":"number","description":"ARPU / Month ($)","minimum":0},"churnRate":{"type":"number","description":"Monthly Churn (%)","minimum":0,"maximum":100},"saasMargin":{"type":"number","description":"Gross Margin (%)","minimum":0,"maximum":100},"cac":{"type":"number","description":"CAC / Customer ($)","minimum":0}},"required":[]},"examples":{"e_commerce_with_margin_cac":{"summary":"E-commerce with margin & CAC","value":{"model":"ecommerce","avgOrderValue":"75","purchaseFrequency":"4","customerLifespan":"3","grossMargin":"60","cac":"150"}},"e_commerce_gross_only_no_margin":{"summary":"E-commerce gross only (no margin)","value":{"model":"ecommerce","avgOrderValue":"50","purchaseFrequency":"6","customerLifespan":"2"}},"saas_with_margin_cac":{"summary":"SaaS with margin & CAC","value":{"model":"saas","arpu":"50","churnRate":"5","saasMargin":"80","cac":"200"}},"saas_churn_of_100_undefined_ltv":{"summary":"SaaS churn of 100% (undefined LTV)","value":{"model":"saas","arpu":"50","churnRate":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"e_commerce_with_margin_cac":{"summary":"E-commerce with margin & CAC","value":{"tool":"customer-lifetime-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Annual Customer Value","value":"$300.00"},{"metric":"Gross CLV (Revenue)","value":"$900.00"},{"metric":"Net CLV (Profit)","value":"$540.00"},{"metric":"Avg Customer Lifespan","value":"3.00 years"},{"metric":"CAC","value":"$150.00"},{"metric":"Net CLV : CAC","value":"3.60 : 1"},{"metric":"LTV : CAC Verdict","value":"Healthy — the ideal 3:1 to 5:1 range"},{"metric":"Payback Period","value":"0.83 years"}]},"credits_used":5,"credits_remaining":null}},"e_commerce_gross_only_no_margin":{"summary":"E-commerce gross only (no margin)","value":{"tool":"customer-lifetime-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Annual Customer Value","value":"$300.00"},{"metric":"Gross CLV (Revenue)","value":"$600.00"},{"metric":"Avg Customer Lifespan","value":"2.00 years"}]},"credits_used":5,"credits_remaining":null}},"saas_with_margin_cac":{"summary":"SaaS with margin & CAC","value":{"tool":"customer-lifetime-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Avg Customer Lifespan","value":"20.0 months"},{"metric":"Gross LTV (Revenue)","value":"$1,000.00"},{"metric":"Net LTV (Margin-adj.)","value":"$800.00"},{"metric":"CAC","value":"$200.00"},{"metric":"LTV : CAC","value":"4.00 : 1"},{"metric":"LTV : CAC Verdict","value":"Healthy — the ideal 3:1 to 5:1 range"},{"metric":"Payback Period","value":"5.0 months"}]},"credits_used":5,"credits_remaining":null}},"saas_churn_of_100_undefined_ltv":{"summary":"SaaS churn of 100% (undefined LTV)","value":{"tool":"customer-lifetime-value-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Status","value":"Monthly churn of 100% or more means no customer survives a full month, so lifetime value is undefined. Did you enter annual churn instead of monthly?"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Lifetime Value Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/daily-time-savings-calculator":{"post":{"operationId":"run_daily_time_savings_calculator","summary":"Daily Time Savings Calculator","tags":["Calculators"],"description":"Calculate the weekly, monthly, and yearly time saved from a small daily habit — a faster commute, a quicker routine — with an optional dollar value from your hourly rate.\n\n[Try Daily Time Savings Calculator in your browser →](https://iotools.cloud/tool/daily-time-savings-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"minutesPerDay":{"type":"number","description":"Minutes saved each time","minimum":0},"daysPerWeek":{"type":"number","description":"Days per week","minimum":1,"maximum":7},"hourlyValue":{"type":"number","description":"Hourly value of your time (optional, $)","minimum":0}},"required":[]},"examples":{"10_minute_daily_habit_every_day":{"summary":"10-minute daily habit, every day","value":{"minutesPerDay":"10","daysPerWeek":"7","hourlyValue":""}},"15_minute_faster_commute_workdays_only_30_hr":{"summary":"15-minute faster commute, workdays only, $30/hr","value":{"minutesPerDay":"15","daysPerWeek":"5","hourlyValue":"30"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_minute_daily_habit_every_day":{"summary":"10-minute daily habit, every day","value":{"tool":"daily-time-savings-calculator","tool_version":"1.0.2","outputs":{"results":[{"period":"Per occurrence","time-saved":"10 min"},{"period":"Weekly","time-saved":"70 min (1.17 hr)"},{"period":"Monthly (~30 days)","time-saved":"300 min (5 hr)"},{"period":"Yearly","time-saved":"3650 min (60.83 hr)"},{"period":"Yearly, as full 24-hour days","time-saved":"2.53 days"},{"period":"Yearly, as 8-hour workdays","time-saved":"7.6 workdays"}],"breakdown":"Weekly = minutes per occurrence × days/week = 10 × 7 = 70 min\nYearly = minutes per occurrence × (days/week ÷ 7) × 365 = 10 × 1 × 365 = 3650 min\n\nPut another way, that yearly total is about:\n• 7.6 full 8-hour workdays\n• 2.53 full 24-hour days back to back\n• 30.42 two-hour movies you could watch instead\n• Add an hourly rate above to see a dollar value for this time."},"credits_used":5,"credits_remaining":null}},"15_minute_faster_commute_workdays_only_30_hr":{"summary":"15-minute faster commute, workdays only, $30/hr","value":{"tool":"daily-time-savings-calculator","tool_version":"1.0.2","outputs":{"results":[{"period":"Per occurrence","time-saved":"15 min"},{"period":"Weekly","time-saved":"75 min (1.25 hr)"},{"period":"Monthly (~30 days)","time-saved":"321.43 min (5.36 hr)"},{"period":"Yearly","time-saved":"3910.71 min (65.18 hr)"},{"period":"Yearly, as full 24-hour days","time-saved":"2.72 days"},{"period":"Yearly, as 8-hour workdays","time-saved":"8.15 workdays"},{"period":"Yearly dollar value","time-saved":"$1,955.36 at $30.00/hr"}],"breakdown":"Weekly = minutes per occurrence × days/week = 15 × 5 = 75 min\nYearly = minutes per occurrence × (days/week ÷ 7) × 365 = 15 × 0.71 × 365 = 3910.71 min\n\nPut another way, that yearly total is about:\n• 8.15 full 8-hour workdays\n• 2.72 full 24-hour days back to back\n• 32.59 two-hour movies you could watch instead\n• $1,955.36 of your time, at $30.00/hr"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Time Savings","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"time-saved":{"type":"string","description":"Time Saved"}}},"x-iotools-columns":["period","time-saved"]},"breakdown":{"type":"string","description":"Formula & Perspective"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/data-transfer-time-calculator":{"post":{"operationId":"run_data_transfer_time_calculator","summary":"Data Transfer Time Calculator","tags":["Calculators"],"description":"Estimate how long a file takes to transfer over a given bandwidth, accounting for protocol overhead (TCP/UDP/HTTP) and real-world network efficiency — with a human-readable time, exact seconds, and the effective speed.\n\n[Try Data Transfer Time Calculator in your browser →](https://iotools.cloud/tool/data-transfer-time-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fileSize":{"type":"number","description":"File size","minimum":0},"fileSizeUnit":{"enum":["B","KB","MB","GB","TB","PB"],"description":"File size unit"},"bandwidth":{"type":"number","description":"Bandwidth","minimum":0},"bandwidthUnit":{"enum":["bps","Kbps","Mbps","Gbps"],"description":"Bandwidth unit"},"protocol":{"enum":["None","TCP","UDP","HTTP"],"description":"Protocol overhead"},"efficiency":{"type":"number","description":"Network efficiency %","minimum":50,"maximum":100}},"required":["fileSize","bandwidth"]},"examples":{"1_gb_over_100_mbps_tcp_80":{"summary":"1 GB over 100 Mbps (TCP, 80%)","value":{"fileSize":"1","fileSizeUnit":"GB","bandwidth":"100","bandwidthUnit":"Mbps","protocol":"TCP","efficiency":"80"}},"15_gb_4k_movie_over_1_gbps_no_overhead_100":{"summary":"15 GB 4K movie over 1 Gbps (no overhead, 100%)","value":{"fileSize":"15","fileSizeUnit":"GB","bandwidth":"1","bandwidthUnit":"Gbps","protocol":"None","efficiency":"100"}},"1_tb_backup_over_500_mbps_tcp_80":{"summary":"1 TB backup over 500 Mbps (TCP, 80%)","value":{"fileSize":"1","fileSizeUnit":"TB","bandwidth":"500","bandwidthUnit":"Mbps","protocol":"TCP","efficiency":"80"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_gb_over_100_mbps_tcp_80":{"summary":"1 GB over 100 Mbps (TCP, 80%)","value":{"tool":"data-transfer-time-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Transfer time","value":"1 minute, 53.03 seconds"},{"metric":"In seconds","value":"113.0255 s"},{"metric":"Effective speed","value":"76.00 Mbps"},{"metric":"Applied efficiency","value":"76%"}]},"credits_used":5,"credits_remaining":null}},"15_gb_4k_movie_over_1_gbps_no_overhead_100":{"summary":"15 GB 4K movie over 1 Gbps (no overhead, 100%)","value":{"tool":"data-transfer-time-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Transfer time","value":"2 minutes, 8.85 seconds"},{"metric":"In seconds","value":"128.8490 s"},{"metric":"Effective speed","value":"1.00 Gbps"},{"metric":"Applied efficiency","value":"100%"}]},"credits_used":5,"credits_remaining":null}},"1_tb_backup_over_500_mbps_tcp_80":{"summary":"1 TB backup over 500 Mbps (TCP, 80%)","value":{"tool":"data-transfer-time-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Transfer time","value":"6 hours, 25 minutes, 47.61 seconds"},{"metric":"In seconds","value":"23147.6132 s"},{"metric":"Effective speed","value":"380.00 Mbps"},{"metric":"Applied efficiency","value":"76%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/date-calculator":{"post":{"operationId":"run_date_calculator","summary":"Date Calculator","tags":["Calculators"],"description":"Add or subtract years, months and days from a date. Get the resulting date, its day of the week, ISO format, and the total number of days and weeks between the two dates.\n\n[Try Date Calculator in your browser →](https://iotools.cloud/tool/date-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startDate":{"type":"string","description":"Start Date"},"operation":{"enum":["add","subtract"],"description":"Operation"},"years":{"type":"number","description":"Years","minimum":0},"months":{"type":"number","description":"Months","minimum":0},"days":{"type":"number","description":"Days","minimum":0}},"required":["startDate"]},"examples":{"add_2_years_3_months_10_days":{"summary":"Add 2 years, 3 months, 10 days","value":{"startDate":"1990-06-15","operation":"add","years":"2","months":"3","days":"10"}},"add_1_month_to_jan_31_leap_year_clamps_to_feb_29":{"summary":"Add 1 month to Jan 31 (leap year, clamps to Feb 29)","value":{"startDate":"2024-01-31","operation":"add","years":"0","months":"1","days":"0"}},"subtract_45_days":{"summary":"Subtract 45 days","value":{"startDate":"2023-03-15","operation":"subtract","years":"0","months":"0","days":"45"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"add_2_years_3_months_10_days":{"summary":"Add 2 years, 3 months, 10 days","value":{"tool":"date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Start Date","value":"Friday, June 15, 1990"},{"metric":"Operation","value":"Added 2 years, 3 months, 10 days"},{"metric":"Result Date","value":"Friday, September 25, 1992"},{"metric":"Day of Week","value":"Friday"},{"metric":"ISO Format","value":"1992-09-25"},{"metric":"Total Days","value":"833 days"},{"metric":"In Weeks","value":"119 weeks and 0 days"}]},"credits_used":5,"credits_remaining":null}},"add_1_month_to_jan_31_leap_year_clamps_to_feb_29":{"summary":"Add 1 month to Jan 31 (leap year, clamps to Feb 29)","value":{"tool":"date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Start Date","value":"Wednesday, January 31, 2024"},{"metric":"Operation","value":"Added 1 month"},{"metric":"Result Date","value":"Thursday, February 29, 2024"},{"metric":"Day of Week","value":"Thursday"},{"metric":"ISO Format","value":"2024-02-29"},{"metric":"Total Days","value":"29 days"},{"metric":"In Weeks","value":"4 weeks and 1 day"}]},"credits_used":5,"credits_remaining":null}},"subtract_45_days":{"summary":"Subtract 45 days","value":{"tool":"date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Start Date","value":"Wednesday, March 15, 2023"},{"metric":"Operation","value":"Subtracted 45 days"},{"metric":"Result Date","value":"Sunday, January 29, 2023"},{"metric":"Day of Week","value":"Sunday"},{"metric":"ISO Format","value":"2023-01-29"},{"metric":"Total Days","value":"45 days"},{"metric":"In Weeks","value":"6 weeks and 3 days"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/date-countdown-calculator":{"post":{"operationId":"run_date_countdown_calculator","summary":"Date Countdown Calculator","tags":["Calculators"],"description":"Count down the days, hours, minutes and seconds until a target date and time — or the time elapsed since a past one. Optionally count only working days (Mon-Fri), and measure the span from any custom start moment.\n\n[Try Date Countdown Calculator in your browser →](https://iotools.cloud/tool/date-countdown-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventName":{"type":"string","description":"Event Name"},"targetDate":{"type":"string","description":"Target Date & Time"},"fromDate":{"type":"string","description":"From Date & Time"},"workingDaysOnly":{"type":"boolean","description":"Count working days only (exclude weekends)"}},"required":["targetDate"]},"examples":{"days_until_new_year_s_eve_fixed_span":{"summary":"Days until New Year's Eve (fixed span)","value":{"eventName":"New Year's Eve","targetDate":"2024-12-31T23:59","fromDate":"2024-12-01T00:00","workingDaysOnly":""}},"working_days_until_a_deadline":{"summary":"Working days until a deadline","value":{"eventName":"Project Deadline","targetDate":"2024-03-15T17:00","fromDate":"2024-03-01T09:00","workingDaysOnly":"true"}},"time_since_a_past_event":{"summary":"Time since a past event","value":{"eventName":"Product Launch","targetDate":"2020-01-01T00:00","fromDate":"2020-01-08T06:30","workingDaysOnly":""}},"countdown_from_now":{"summary":"Countdown from now","value":{"eventName":"New Year's Eve","targetDate":"2030-12-31T23:59","fromDate":"","workingDaysOnly":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"days_until_new_year_s_eve_fixed_span":{"summary":"Days until New Year's Eve (fixed span)","value":{"tool":"date-countdown-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Event","value":"New Year's Eve"},{"metric":"Status","value":"Upcoming"},{"metric":"Time until","value":"30 days, 23 hours, 59 minutes, 0 seconds"},{"metric":"Target Date","value":"Tuesday, December 31, 2024 at 11:59 PM"},{"metric":"From Date","value":"Sunday, December 1, 2024 at 12:00 AM"},{"metric":"Days","value":"30"},{"metric":"Hours","value":"23"},{"metric":"Minutes","value":"59"},{"metric":"Seconds","value":"0"},{"metric":"Total Hours","value":"743"},{"metric":"Total Minutes","value":"44,639"}]},"credits_used":5,"credits_remaining":null}},"working_days_until_a_deadline":{"summary":"Working days until a deadline","value":{"tool":"date-countdown-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Event","value":"Project Deadline"},{"metric":"Status","value":"Upcoming"},{"metric":"Time until","value":"14 days, 8 hours, 0 minutes, 0 seconds"},{"metric":"Target Date","value":"Friday, March 15, 2024 at 5:00 PM"},{"metric":"From Date","value":"Friday, March 1, 2024 at 9:00 AM"},{"metric":"Days","value":"14"},{"metric":"Hours","value":"8"},{"metric":"Minutes","value":"0"},{"metric":"Seconds","value":"0"},{"metric":"Total Hours","value":"344"},{"metric":"Total Minutes","value":"20,640"},{"metric":"Working Days","value":"10 working days remaining"}]},"credits_used":5,"credits_remaining":null}},"time_since_a_past_event":{"summary":"Time since a past event","value":{"tool":"date-countdown-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Event","value":"Product Launch"},{"metric":"Status","value":"In the past"},{"metric":"Time since","value":"7 days, 6 hours, 30 minutes, 0 seconds"},{"metric":"Target Date","value":"Wednesday, January 1, 2020 at 12:00 AM"},{"metric":"From Date","value":"Wednesday, January 8, 2020 at 6:30 AM"},{"metric":"Days","value":"7"},{"metric":"Hours","value":"6"},{"metric":"Minutes","value":"30"},{"metric":"Seconds","value":"0"},{"metric":"Total Hours","value":"174"},{"metric":"Total Minutes","value":"10,470"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Countdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/date-difference-calculator":{"post":{"operationId":"run_date_difference_calculator","summary":"Date Difference Calculator","tags":["Calculators"],"description":"Find the difference between two dates: total days, weeks, and a full years/months/days breakdown, plus weekend and business-day counts with optional US, UK, or Australian public-holiday presets and a configurable weekend.\n\n[Try Date Difference Calculator in your browser →](https://iotools.cloud/tool/date-difference-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startDate":{"type":"string","description":"Start Date"},"endDate":{"type":"string","description":"End Date"},"weekendDays":{"enum":["sat_sun","fri_sat","fri_sat_sun","fri","sat","sun"],"description":"Weekend"},"holidayPreset":{"enum":["none","us","uk","au"],"description":"Holidays"}},"required":["startDate","endDate"]},"examples":{"a_full_calendar_year_2024":{"summary":"A full calendar year (2024)","value":{"startDate":"2024-01-01","endDate":"2024-12-31","weekendDays":"sat_sun","holidayPreset":"none"}},"business_days_across_us_independence_day":{"summary":"Business days across US Independence Day","value":{"startDate":"2025-06-30","endDate":"2025-07-31","weekendDays":"sat_sun","holidayPreset":"us"}},"end_date_before_start_date_friday_saturday_weekend":{"summary":"End date before start date (Friday–Saturday weekend)","value":{"startDate":"2026-03-10","endDate":"2026-02-14","weekendDays":"fri_sat","holidayPreset":"none"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_full_calendar_year_2024":{"summary":"A full calendar year (2024)","value":{"tool":"date-difference-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"From","value":"Monday, January 1, 2024"},{"metric":"To","value":"Tuesday, December 31, 2024"},{"metric":"Total Days","value":"365 days"},{"metric":"Weeks & Days","value":"52 weeks and 1 day"},{"metric":"Months & Days","value":"11 months and 30 days"},{"metric":"Years, Months & Days","value":"0 years, 11 months and 30 days"},{"metric":"Weekend Days","value":"104 (Saturdays & Sundays)"},{"metric":"Business Days","value":"261"}]},"credits_used":5,"credits_remaining":null}},"business_days_across_us_independence_day":{"summary":"Business days across US Independence Day","value":{"tool":"date-difference-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"From","value":"Monday, June 30, 2025"},{"metric":"To","value":"Thursday, July 31, 2025"},{"metric":"Total Days","value":"31 days"},{"metric":"Weeks & Days","value":"4 weeks and 3 days"},{"metric":"Months & Days","value":"1 month and 1 day"},{"metric":"Years, Months & Days","value":"0 years, 1 month and 1 day"},{"metric":"Weekend Days","value":"8 (Saturdays & Sundays)"},{"metric":"Business Days","value":"22"},{"metric":"Holidays (weekdays)","value":"1 (US Federal Holidays)"},{"metric":"2025-07-04 (Fri)","value":"Independence Day"}]},"credits_used":5,"credits_remaining":null}},"end_date_before_start_date_friday_saturday_weekend":{"summary":"End date before start date (Friday–Saturday weekend)","value":{"tool":"date-difference-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Note","value":"End date is before start date — showing the absolute difference."},{"metric":"From","value":"Saturday, February 14, 2026"},{"metric":"To","value":"Tuesday, March 10, 2026"},{"metric":"Total Days","value":"24 days"},{"metric":"Weeks & Days","value":"3 weeks and 3 days"},{"metric":"Months & Days","value":"0 months and 24 days"},{"metric":"Years, Months & Days","value":"0 years, 0 months and 24 days"},{"metric":"Weekend Days","value":"6 (Fridays & Saturdays)"},{"metric":"Business Days","value":"18"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dca-calculator":{"post":{"operationId":"run_dca_calculator","summary":"DCA (Dollar-Cost Averaging) Calculator","tags":["Calculators"],"description":"Simulate a dollar-cost averaging investment strategy — periodic contributions at a chosen frequency compounding over time — and compare the result against investing the same total amount as a single lump sum.\n\n[Try DCA (Dollar-Cost Averaging) Calculator in your browser →](https://iotools.cloud/tool/dca-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contribution":{"type":"number","description":"Periodic Investment ($)","minimum":0},"frequency":{"enum":["52","26","12","4","1"],"description":"Investment Frequency"},"years":{"type":"number","description":"Investment Duration (Years)","minimum":1,"maximum":60},"returnRate":{"type":"number","description":"Expected Annual Return (%)","minimum":-50,"maximum":100},"initial":{"type":"number","description":"Initial Lump Sum ($)","minimum":0}},"required":["contribution","years","returnRate"]},"examples":{"500_mo_for_20_years_at_8":{"summary":"$500/mo for 20 years at 8%","value":{"contribution":"500","frequency":"12","years":"20","returnRate":"8","initial":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"500_mo_for_20_years_at_8":{"summary":"$500/mo for 20 years at 8%","value":{"tool":"dca-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Final DCA Value","value":"$296,473.61"},{"metric":"Total Invested","value":"$120,000.00"},{"metric":"Total Gain","value":"$176,473.61"},{"metric":"Total Gain %","value":"+147.06%"},{"metric":"Lump Sum Equivalent (same total, invested upfront)","value":"$559,314.86"},{"metric":"Investment Frequency","value":"Monthly"}],"schedule":[{"year":"1","total-invested":"$6,000.00","dca-value":"$6,266.46","lump-sum-equivalent":"$6,480.00","dca-gain":"$266.46"},{"year":"2","total-invested":"$12,000.00","dca-value":"$13,053.04","lump-sum-equivalent":"$13,996.80","dca-gain":"$1,053.04"},{"year":"3","total-invested":"$18,000.00","dca-value":"$20,402.90","lump-sum-equivalent":"$22,674.82","dca-gain":"$2,402.90"},{"year":"4","total-invested":"$24,000.00","dca-value":"$28,362.79","lump-sum-equivalent":"$32,651.74","dca-gain":"$4,362.79"},{"year":"5","total-invested":"$30,000.00","dca-value":"$36,983.35","lump-sum-equivalent":"$44,079.84","dca-gain":"$6,983.35"},{"year":"6","total-invested":"$36,000.00","dca-value":"$46,319.41","lump-sum-equivalent":"$57,127.48","dca-gain":"$10,319.41"},{"year":"7","total-invested":"$42,000.00","dca-value":"$56,430.36","lump-sum-equivalent":"$71,980.62","dca-gain":"$14,430.36"},{"year":"8","total-invested":"$48,000.00","dca-value":"$67,380.52","lump-sum-equivalent":"$88,844.65","dca-gain":"$19,380.52"},{"year":"9","total-invested":"$54,000.00","dca-value":"$79,239.53","lump-sum-equivalent":"$107,946.25","dca-gain":"$25,239.53"},{"year":"10","total-invested":"$60,000.00","dca-value":"$92,082.84","lump-sum-equivalent":"$129,535.50","dca-gain":"$32,082.84"},{"year":"11","total-invested":"$66,000.00","dca-value":"$105,992.13","lump-sum-equivalent":"$153,888.17","dca-gain":"$39,992.13"},{"year":"12","total-invested":"$72,000.00","dca-value":"$121,055.89","lump-sum-equivalent":"$181,308.25","dca-gain":"$49,055.89"},{"year":"13","total-invested":"$78,000.00","dca-value":"$137,369.93","lump-sum-equivalent":"$212,130.65","dca-gain":"$59,369.93"},{"year":"14","total-invested":"$84,000.00","dca-value":"$155,038.03","lump-sum-equivalent":"$246,724.26","dca-gain":"$71,038.03"},{"year":"15","total-invested":"$90,000.00","dca-value":"$174,172.57","lump-sum-equivalent":"$285,495.22","dca-gain":"$84,172.57"},{"year":"16","total-invested":"$96,000.00","dca-value":"$194,895.27","lump-sum-equivalent":"$328,890.49","dca-gain":"$98,895.27"},{"year":"17","total-invested":"$102,000.00","dca-value":"$217,337.95","lump-sum-equivalent":"$377,401.84","dca-gain":"$115,337.95"},{"year":"18","total-invested":"$108,000.00","dca-value":"$241,643.35","lump-sum-equivalent":"$431,570.11","dca-gain":"$133,643.35"},{"year":"19","total-invested":"$114,000.00","dca-value":"$267,966.09","lump-sum-equivalent":"$491,989.92","dca-gain":"$153,966.09"},{"year":"20","total-invested":"$120,000.00","dca-value":"$296,473.61","lump-sum-equivalent":"$559,314.86","dca-gain":"$176,473.61"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Comparison","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"total-invested":{"type":"string","description":"Total Invested"},"dca-value":{"type":"string","description":"DCA Value"},"lump-sum-equivalent":{"type":"string","description":"Lump Sum Equivalent"},"dca-gain":{"type":"string","description":"DCA Gain"}}},"x-iotools-columns":["year","total-invested","dca-value","lump-sum-equivalent","dca-gain"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/debt-consolidation-calculator":{"post":{"operationId":"run_debt_consolidation_calculator","summary":"Debt Consolidation Calculator","tags":["Calculators"],"description":"Compare a list of existing debts (balance and APR each) against a single new consolidated loan. Get the blended current APR, current monthly interest, and the consolidated loan's monthly payment, total interest and total paid.\n\n[Try Debt Consolidation Calculator in your browser →](https://iotools.cloud/tool/debt-consolidation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"debts":{"type":"string","description":"Your Debts (balance, APR% — one per line)"},"newApr":{"type":"number","description":"New Consolidated Loan APR (%)","minimum":0},"termMonths":{"type":"number","description":"Consolidation Loan Term (months)","minimum":1},"minPaymentPercent":{"type":"number","description":"Assumed Current Minimum Payment (% of balance)","minimum":0}},"required":["debts"]},"examples":{"three_cards_consolidated_into_a_24_month_loan_at_12_apr":{"summary":"Three cards consolidated into a 24-month loan at 12% APR","value":{"debts":"5000, 22.99\n3200, 18.90\n1800, 24.99","newApr":"12","termMonths":"24","minPaymentPercent":"2.5"}},"single_card_longer_term_to_lower_the_payment":{"summary":"Single card, longer term to lower the payment","value":{"debts":"8000, 26.99","newApr":"15","termMonths":"36","minPaymentPercent":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"three_cards_consolidated_into_a_24_month_loan_at_12_apr":{"summary":"Three cards consolidated into a 24-month loan at 12% APR","value":{"tool":"debt-consolidation-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Number of Debts","value":"3"},{"metric":"Total Balance","value":"$10,000.00"},{"metric":"Weighted Current APR","value":"22.04%"},{"metric":"Current Monthly Interest","value":"$183.68"},{"metric":"Estimated Current Minimum Payment","value":"$250.00"},{"metric":"New Consolidated APR","value":"12.00%"},{"metric":"Consolidation Term","value":"24 months (2 years)"},{"metric":"Consolidated Monthly Payment","value":"$470.73"},{"metric":"Consolidated Total Interest","value":"$1,297.63"},{"metric":"Consolidated Total Paid","value":"$11,297.63"},{"metric":"Monthly Payment Change","value":"$220.73 higher"},{"metric":"APR Improvement","value":"10.04% lower"}]},"credits_used":5,"credits_remaining":null}},"single_card_longer_term_to_lower_the_payment":{"summary":"Single card, longer term to lower the payment","value":{"tool":"debt-consolidation-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Number of Debts","value":"1"},{"metric":"Total Balance","value":"$8,000.00"},{"metric":"Weighted Current APR","value":"26.99%"},{"metric":"Current Monthly Interest","value":"$179.93"},{"metric":"Estimated Current Minimum Payment","value":"$160.00"},{"metric":"New Consolidated APR","value":"15.00%"},{"metric":"Consolidation Term","value":"36 months (3 years)"},{"metric":"Consolidated Monthly Payment","value":"$277.32"},{"metric":"Consolidated Total Interest","value":"$1,983.61"},{"metric":"Consolidated Total Paid","value":"$9,983.61"},{"metric":"Monthly Payment Change","value":"$117.32 higher"},{"metric":"APR Improvement","value":"11.99% lower"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Consolidation Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/debt-repayment-calculator":{"post":{"operationId":"run_debt_repayment_calculator","summary":"Debt Repayment Calculator","tags":["Calculators"],"description":"Calculate your monthly loan or debt repayment amount, total interest paid, and payoff timeline from principal, interest rate and term using standard amortization — and see how an extra monthly payment shortens the term and cuts interest.\n\n[Try Debt Repayment Calculator in your browser →](https://iotools.cloud/tool/debt-repayment-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"number","description":"Loan Amount ($)","minimum":0.01},"annualRate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0},"termYears":{"type":"number","description":"Loan Term (Years)","minimum":0.1},"extraPayment":{"type":"number","description":"Extra Monthly Payment ($)","minimum":0}},"required":["principal","annualRate","termYears"]},"examples":{"20_000_at_6_over_5_years":{"summary":"$20,000 at 6% over 5 years","value":{"principal":"20000","annualRate":"6","termYears":"5","extraPayment":"0"}},"same_loan_with_a_100_extra_monthly_payment":{"summary":"Same loan with a $100 extra monthly payment","value":{"principal":"20000","annualRate":"6","termYears":"5","extraPayment":"100"}},"0_interest_e_g_an_interest_free_family_loan":{"summary":"0% interest (e.g. an interest-free family loan)","value":{"principal":"12000","annualRate":"0","termYears":"2","extraPayment":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"20_000_at_6_over_5_years":{"summary":"$20,000 at 6% over 5 years","value":{"tool":"debt-repayment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Monthly Payment","value":"$386.66"},{"metric":"Number of Payments","value":"60 payments (5 years)"},{"metric":"Total Interest Paid","value":"$3,199.36"},{"metric":"Total Amount Paid","value":"$23,199.36"}]},"credits_used":5,"credits_remaining":null}},"same_loan_with_a_100_extra_monthly_payment":{"summary":"Same loan with a $100 extra monthly payment","value":{"tool":"debt-repayment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Base Monthly Payment","value":"$386.66"},{"metric":"Extra Monthly Payment","value":"$100.00"},{"metric":"Total Monthly Payment","value":"$486.66"},{"metric":"Payoff Time","value":"47 payments (3 years 11 months)"},{"metric":"Original Term","value":"60 payments (5 years)"},{"metric":"Time Saved","value":"13 payments (1 year 1 month)"},{"metric":"Total Interest Paid","value":"$2,444.38"},{"metric":"Interest Saved","value":"$754.98"},{"metric":"Total Amount Paid","value":"$22,444.38"}]},"credits_used":5,"credits_remaining":null}},"0_interest_e_g_an_interest_free_family_loan":{"summary":"0% interest (e.g. an interest-free family loan)","value":{"tool":"debt-repayment-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Monthly Payment","value":"$500.00"},{"metric":"Number of Payments","value":"24 payments (2 years)"},{"metric":"Total Interest Paid","value":"$0.00"},{"metric":"Total Amount Paid","value":"$12,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Repayment Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/debt-service-coverage-ratio-calculator":{"post":{"operationId":"run_debt_service_coverage_ratio_calculator","summary":"Debt Service Coverage Ratio Calculator","tags":["Calculators"],"description":"Calculate your Debt Service Coverage Ratio (DSCR) and cash flow after annual debt service from gross annual income, operating expenses, and annual debt payments. Get a health rating and see how you compare against common lender DSCR minimums.\n\n[Try Debt Service Coverage Ratio Calculator in your browser →](https://iotools.cloud/tool/debt-service-coverage-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grossAnnualIncome":{"type":"number","description":"Gross Annual Income","minimum":0,"maximum":999999999},"operatingExpenses":{"type":"number","description":"Annual Operating Expenses","minimum":0,"maximum":999999999},"annualPrincipal":{"type":"number","description":"Annual Principal Payments","minimum":0,"maximum":999999999},"annualInterest":{"type":"number","description":"Annual Interest Payments","minimum":0,"maximum":999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["grossAnnualIncome"]},"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"grossAnnualIncome":"250000","operatingExpenses":"100000","annualPrincipal":"30000","annualInterest":"20000","currency":"USD"}},"marginal_coverage":{"summary":"Marginal coverage","value":{"grossAnnualIncome":"180000","operatingExpenses":"90000","annualPrincipal":"40000","annualInterest":"35000","currency":"USD"}},"insufficient_coverage_negative_cash_flow":{"summary":"Insufficient coverage (negative cash flow)","value":{"grossAnnualIncome":"100000","operatingExpenses":"60000","annualPrincipal":"25000","annualInterest":"20000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"tool":"debt-service-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Operating Income (NOI)","value":"$150,000.00"},{"metric":"Total Annual Debt Service","value":"$50,000.00"},{"metric":"Debt Service Coverage Ratio (DSCR)","value":"3.00x"},{"metric":"Cash Flow After Debt Service","value":"$100,000.00"},{"metric":"DSCR Rating","value":"Strong"}],"qualification":[{"loan-program":"SBA 7(a) Loan","guideline-min-dscr":"1.15x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"Conventional Commercial Mortgage","guideline-min-dscr":"1.20x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"Multifamily / Apartment Loan","guideline-min-dscr":"1.25x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"CMBS Loan","guideline-min-dscr":"1.25x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"Construction Loan","guideline-min-dscr":"1.35x","meets-guideline":"Yes","additional-noi-needed":"—"}]},"credits_used":5,"credits_remaining":null}},"marginal_coverage":{"summary":"Marginal coverage","value":{"tool":"debt-service-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Operating Income (NOI)","value":"$90,000.00"},{"metric":"Total Annual Debt Service","value":"$75,000.00"},{"metric":"Debt Service Coverage Ratio (DSCR)","value":"1.20x"},{"metric":"Cash Flow After Debt Service","value":"$15,000.00"},{"metric":"DSCR Rating","value":"Marginal"}],"qualification":[{"loan-program":"SBA 7(a) Loan","guideline-min-dscr":"1.15x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"Conventional Commercial Mortgage","guideline-min-dscr":"1.20x","meets-guideline":"Yes","additional-noi-needed":"—"},{"loan-program":"Multifamily / Apartment Loan","guideline-min-dscr":"1.25x","meets-guideline":"No","additional-noi-needed":"$3,750.00"},{"loan-program":"CMBS Loan","guideline-min-dscr":"1.25x","meets-guideline":"No","additional-noi-needed":"$3,750.00"},{"loan-program":"Construction Loan","guideline-min-dscr":"1.35x","meets-guideline":"No","additional-noi-needed":"$11,250.00"}]},"credits_used":5,"credits_remaining":null}},"insufficient_coverage_negative_cash_flow":{"summary":"Insufficient coverage (negative cash flow)","value":{"tool":"debt-service-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Operating Income (NOI)","value":"$40,000.00"},{"metric":"Total Annual Debt Service","value":"$45,000.00"},{"metric":"Debt Service Coverage Ratio (DSCR)","value":"0.89x"},{"metric":"Cash Flow After Debt Service","value":"-$5,000.00"},{"metric":"DSCR Rating","value":"Insufficient"}],"qualification":[{"loan-program":"SBA 7(a) Loan","guideline-min-dscr":"1.15x","meets-guideline":"No","additional-noi-needed":"$11,750.00"},{"loan-program":"Conventional Commercial Mortgage","guideline-min-dscr":"1.20x","meets-guideline":"No","additional-noi-needed":"$14,000.00"},{"loan-program":"Multifamily / Apartment Loan","guideline-min-dscr":"1.25x","meets-guideline":"No","additional-noi-needed":"$16,250.00"},{"loan-program":"CMBS Loan","guideline-min-dscr":"1.25x","meets-guideline":"No","additional-noi-needed":"$16,250.00"},{"loan-program":"Construction Loan","guideline-min-dscr":"1.35x","meets-guideline":"No","additional-noi-needed":"$20,750.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"DSCR Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"qualification":{"type":"array","description":"Lender Threshold Comparison","items":{"type":"object","properties":{"loan-program":{"type":"string","description":"Loan Program"},"guideline-min-dscr":{"type":"string","description":"Guideline Min. DSCR"},"meets-guideline":{"type":"string","description":"Meets Guideline?"},"additional-noi-needed":{"type":"string","description":"Additional NOI Needed"}}},"x-iotools-columns":["loan-program","guideline-min-dscr","meets-guideline","additional-noi-needed"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/debt-to-income-ratio-calculator":{"post":{"operationId":"run_debt_to_income_ratio_calculator","summary":"Debt-to-Income Ratio Calculator","tags":["Calculators"],"description":"Calculate your debt-to-income (DTI) ratio from gross monthly income and a breakdown of monthly debt payments. Get your front-end (housing-only) and back-end (all-debt) DTI, a health rating, and how you compare against common mortgage-program DTI guidelines.\n\n[Try Debt-to-Income Ratio Calculator in your browser →](https://iotools.cloud/tool/debt-to-income-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grossMonthlyIncome":{"type":"number","description":"Gross Monthly Income","minimum":0,"maximum":99999999},"housingCost":{"type":"number","description":"Housing (Rent or Mortgage)","minimum":0,"maximum":99999999},"autoLoans":{"type":"number","description":"Auto Loans","minimum":0,"maximum":99999999},"studentLoans":{"type":"number","description":"Student Loans","minimum":0,"maximum":99999999},"creditCardPayments":{"type":"number","description":"Credit Card Payments","minimum":0,"maximum":99999999},"personalLoans":{"type":"number","description":"Personal Loans","minimum":0,"maximum":99999999},"otherDebts":{"type":"number","description":"Other Debts","minimum":0,"maximum":99999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["grossMonthlyIncome"]},"examples":{"typical_household_budget":{"summary":"Typical household budget","value":{"grossMonthlyIncome":"6000","housingCost":"1500","autoLoans":"350","studentLoans":"250","creditCardPayments":"100","personalLoans":"0","otherDebts":"0","currency":"USD"}},"high_debt_load":{"summary":"High debt load","value":{"grossMonthlyIncome":"4000","housingCost":"1400","autoLoans":"400","studentLoans":"300","creditCardPayments":"300","personalLoans":"200","otherDebts":"0","currency":"USD"}},"low_debt_income_only":{"summary":"Low debt, income only","value":{"grossMonthlyIncome":"5000","housingCost":"800","autoLoans":"0","studentLoans":"0","creditCardPayments":"0","personalLoans":"0","otherDebts":"0","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"typical_household_budget":{"summary":"Typical household budget","value":{"tool":"debt-to-income-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Gross Monthly Income","value":"$6,000.00"},{"metric":"Total Monthly Debt Payments","value":"$2,200.00"},{"metric":"Front-End DTI (Housing Only)","value":"25.0%"},{"metric":"Back-End DTI (All Debts)","value":"36.7%"},{"metric":"DTI Rating","value":"Fair"},{"metric":"Remaining Monthly Income","value":"$3,800.00"}],"qualification":[{"loan-program":"Conventional","guideline-max-dti":"45.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"FHA","guideline-max-dti":"50.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"VA","guideline-max-dti":"41.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"USDA","guideline-max-dti":"41.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"Jumbo","guideline-max-dti":"43.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"}]},"credits_used":5,"credits_remaining":null}},"high_debt_load":{"summary":"High debt load","value":{"tool":"debt-to-income-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Gross Monthly Income","value":"$4,000.00"},{"metric":"Total Monthly Debt Payments","value":"$2,600.00"},{"metric":"Front-End DTI (Housing Only)","value":"35.0%"},{"metric":"Back-End DTI (All Debts)","value":"65.0%"},{"metric":"DTI Rating","value":"Very High"},{"metric":"Remaining Monthly Income","value":"$1,400.00"}],"qualification":[{"loan-program":"Conventional","guideline-max-dti":"45.0%","meets-guideline":"No","monthly-debt-to-cut":"$800.00"},{"loan-program":"FHA","guideline-max-dti":"50.0%","meets-guideline":"No","monthly-debt-to-cut":"$600.00"},{"loan-program":"VA","guideline-max-dti":"41.0%","meets-guideline":"No","monthly-debt-to-cut":"$960.00"},{"loan-program":"USDA","guideline-max-dti":"41.0%","meets-guideline":"No","monthly-debt-to-cut":"$960.00"},{"loan-program":"Jumbo","guideline-max-dti":"43.0%","meets-guideline":"No","monthly-debt-to-cut":"$880.00"}]},"credits_used":5,"credits_remaining":null}},"low_debt_income_only":{"summary":"Low debt, income only","value":{"tool":"debt-to-income-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Gross Monthly Income","value":"$5,000.00"},{"metric":"Total Monthly Debt Payments","value":"$800.00"},{"metric":"Front-End DTI (Housing Only)","value":"16.0%"},{"metric":"Back-End DTI (All Debts)","value":"16.0%"},{"metric":"DTI Rating","value":"Excellent"},{"metric":"Remaining Monthly Income","value":"$4,200.00"}],"qualification":[{"loan-program":"Conventional","guideline-max-dti":"45.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"FHA","guideline-max-dti":"50.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"VA","guideline-max-dti":"41.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"USDA","guideline-max-dti":"41.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"},{"loan-program":"Jumbo","guideline-max-dti":"43.0%","meets-guideline":"Yes","monthly-debt-to-cut":"—"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"DTI Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"qualification":{"type":"array","description":"Mortgage-Program Guidelines","items":{"type":"object","properties":{"loan-program":{"type":"string","description":"Loan Program"},"guideline-max-dti":{"type":"string","description":"Guideline Max DTI"},"meets-guideline":{"type":"string","description":"Meets Guideline?"},"monthly-debt-to-cut":{"type":"string","description":"Monthly Debt to Cut"}}},"x-iotools-columns":["loan-program","guideline-max-dti","meets-guideline","monthly-debt-to-cut"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/density-calculator":{"post":{"operationId":"run_density_calculator","summary":"Density Calculator","tags":["Calculators"],"description":"Calculate density from mass and volume, mass from density and volume, or volume from mass and density (ρ = m ÷ V), with unit pickers for g/cm³, kg/m³, kg/L, lb/ft³, lb/in³, and common mass and volume units.\n\n[Try Density Calculator in your browser →](https://iotools.cloud/tool/density-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["density","mass","volume"],"description":"Solve For"},"density":{"type":"number","description":"Density","minimum":0},"densityUnit":{"enum":["gcm3","kgm3","kgl","lbft3","lbin3"],"description":"Density Unit"},"mass":{"type":"number","description":"Mass","minimum":0},"massUnit":{"enum":["kg","g","mg","lb","oz","t","ust"],"description":"Mass Unit"},"volume":{"type":"number","description":"Volume","minimum":0},"volumeUnit":{"enum":["m3","l","ml","ft3","in3","usgal","ukgal"],"description":"Volume Unit"}},"required":[]},"examples":{"density_of_water_1000_g_in_1_l":{"summary":"Density of water — 1000 g in 1 L","value":{"solveFor":"density","density":"7.85","densityUnit":"gcm3","mass":"1000","massUnit":"g","volume":"1","volumeUnit":"l"}},"mass_of_a_steel_bar_7_85_g_cm_2_l":{"summary":"Mass of a steel bar — 7.85 g/cm³, 2 L","value":{"solveFor":"mass","density":"7.85","densityUnit":"gcm3","mass":"1000","massUnit":"g","volume":"2","volumeUnit":"l"}},"volume_of_a_block_of_ice_0_92_g_cm_920_g":{"summary":"Volume of a block of ice — 0.92 g/cm³, 920 g","value":{"solveFor":"volume","density":"0.92","densityUnit":"gcm3","mass":"920","massUnit":"g","volume":"1","volumeUnit":"l"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"density_of_water_1000_g_in_1_l":{"summary":"Density of water — 1000 g in 1 L","value":{"tool":"density-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Density","value":"1 g/cm³ (= g/mL)","other-units":"1000 kg/m³ · 1 kg/L · 62.428 lb/ft³ · 0.0361273 lb/in³"},{"quantity":"Mass","value":"1 kg (kilograms)","other-units":"1000 g (grams) · 1000000 mg (milligrams) · 2.20462 lb (pounds) · 35.274 oz (ounces) · 0.001 t (metric tons) · 0.00110231 US ton (short ton)"},{"quantity":"Volume","value":"1 L (liters)","other-units":"0.001 m³ (cubic meters) · 1000 mL (= cm³) · 0.0353147 ft³ (cubic feet) · 61.0236 in³ (cubic inches) · 0.264172 US gal (gallons) · 0.219969 UK gal (imperial gallons)"}],"breakdown":"Solving for: Density\ndensity = mass ÷ volume\ndensity = 1 g/cm³\nmass = 1 kg\nvolume = 1 L"},"credits_used":5,"credits_remaining":null}},"mass_of_a_steel_bar_7_85_g_cm_2_l":{"summary":"Mass of a steel bar — 7.85 g/cm³, 2 L","value":{"tool":"density-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Density","value":"7.85 g/cm³ (= g/mL)","other-units":"7850 kg/m³ · 7.85 kg/L · 490.059 lb/ft³ · 0.283599 lb/in³"},{"quantity":"Mass","value":"15.7 kg (kilograms)","other-units":"15700 g (grams) · 15700000 mg (milligrams) · 34.6126 lb (pounds) · 553.801 oz (ounces) · 0.0157 t (metric tons) · 0.0173063 US ton (short ton)"},{"quantity":"Volume","value":"2 L (liters)","other-units":"0.002 m³ (cubic meters) · 2000 mL (= cm³) · 0.0706293 ft³ (cubic feet) · 122.047 in³ (cubic inches) · 0.528344 US gal (gallons) · 0.439938 UK gal (imperial gallons)"}],"breakdown":"Solving for: Mass\nmass = density × volume\ndensity = 7.85 g/cm³\nmass = 15.7 kg\nvolume = 2 L"},"credits_used":5,"credits_remaining":null}},"volume_of_a_block_of_ice_0_92_g_cm_920_g":{"summary":"Volume of a block of ice — 0.92 g/cm³, 920 g","value":{"tool":"density-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Density","value":"0.92 g/cm³ (= g/mL)","other-units":"920 kg/m³ · 0.92 kg/L · 57.4337 lb/ft³ · 0.0332371 lb/in³"},{"quantity":"Mass","value":"0.92 kg (kilograms)","other-units":"920 g (grams) · 920000 mg (milligrams) · 2.02825 lb (pounds) · 32.452 oz (ounces) · 0.00092 t (metric tons) · 0.00101413 US ton (short ton)"},{"quantity":"Volume","value":"1 L (liters)","other-units":"0.001 m³ (cubic meters) · 1000 mL (= cm³) · 0.0353147 ft³ (cubic feet) · 61.0236 in³ (cubic inches) · 0.264172 US gal (gallons) · 0.219969 UK gal (imperial gallons)"}],"breakdown":"Solving for: Volume\nvolume = mass ÷ density\ndensity = 0.92 g/cm³\nmass = 0.92 kg\nvolume = 1 L"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Density, Mass & Volume","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"},"other-units":{"type":"string","description":"Other units"}}},"x-iotools-columns":["quantity","value","other-units"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/depreciation-calculator":{"post":{"operationId":"run_depreciation_calculator","summary":"Depreciation Calculator","tags":["Calculators"],"description":"Calculate asset depreciation with straight-line, declining balance, double-declining balance, or sum-of-years-digits methods, and see a full year-by-year schedule of depreciation expense and book value.\n\n[Try Depreciation Calculator in your browser →](https://iotools.cloud/tool/depreciation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"enum":["straight-line","declining-balance","double-declining-balance","sum-of-years-digits"],"description":"Depreciation Method"},"assetCost":{"type":"number","description":"Asset Cost ($)","minimum":0},"salvageValue":{"type":"number","description":"Salvage Value ($)","minimum":0},"usefulLife":{"type":"number","description":"Useful Life (Years)","minimum":1,"maximum":100},"decliningRate":{"type":"number","description":"Declining Rate (%)","minimum":0,"maximum":100}},"required":["assetCost","salvageValue","usefulLife"]},"examples":{"straight_line_10_000_asset_over_5_years":{"summary":"Straight-line: $10,000 asset over 5 years","value":{"method":"straight-line","assetCost":"10000","salvageValue":"1000","usefulLife":"5","decliningRate":"40"}},"double_declining_balance_10_000_asset_over_5_years":{"summary":"Double-declining balance: $10,000 asset over 5 years","value":{"method":"double-declining-balance","assetCost":"10000","salvageValue":"1000","usefulLife":"5","decliningRate":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"straight_line_10_000_asset_over_5_years":{"summary":"Straight-line: $10,000 asset over 5 years","value":{"tool":"depreciation-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Method","value":"Straight-Line"},{"metric":"Total Depreciable Amount","value":"$9,000.00"},{"metric":"First-Year Depreciation","value":"$1,800.00"},{"metric":"Total Accumulated Depreciation","value":"$9,000.00"},{"metric":"Final Book Value","value":"$1,000.00"}],"schedule":[{"year":"1","beginning-book-value":"$10,000.00","depreciation-expense":"$1,800.00","accumulated-depreciation":"$1,800.00","ending-book-value":"$8,200.00"},{"year":"2","beginning-book-value":"$8,200.00","depreciation-expense":"$1,800.00","accumulated-depreciation":"$3,600.00","ending-book-value":"$6,400.00"},{"year":"3","beginning-book-value":"$6,400.00","depreciation-expense":"$1,800.00","accumulated-depreciation":"$5,400.00","ending-book-value":"$4,600.00"},{"year":"4","beginning-book-value":"$4,600.00","depreciation-expense":"$1,800.00","accumulated-depreciation":"$7,200.00","ending-book-value":"$2,800.00"},{"year":"5","beginning-book-value":"$2,800.00","depreciation-expense":"$1,800.00","accumulated-depreciation":"$9,000.00","ending-book-value":"$1,000.00"}]},"credits_used":5,"credits_remaining":null}},"double_declining_balance_10_000_asset_over_5_years":{"summary":"Double-declining balance: $10,000 asset over 5 years","value":{"tool":"depreciation-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Method","value":"Double-Declining Balance"},{"metric":"Total Depreciable Amount","value":"$9,000.00"},{"metric":"First-Year Depreciation","value":"$4,000.00"},{"metric":"Total Accumulated Depreciation","value":"$9,000.00"},{"metric":"Final Book Value","value":"$1,000.00"}],"schedule":[{"year":"1","beginning-book-value":"$10,000.00","depreciation-expense":"$4,000.00","accumulated-depreciation":"$4,000.00","ending-book-value":"$6,000.00"},{"year":"2","beginning-book-value":"$6,000.00","depreciation-expense":"$2,400.00","accumulated-depreciation":"$6,400.00","ending-book-value":"$3,600.00"},{"year":"3","beginning-book-value":"$3,600.00","depreciation-expense":"$1,440.00","accumulated-depreciation":"$7,840.00","ending-book-value":"$2,160.00"},{"year":"4","beginning-book-value":"$2,160.00","depreciation-expense":"$864.00","accumulated-depreciation":"$8,704.00","ending-book-value":"$1,296.00"},{"year":"5","beginning-book-value":"$1,296.00","depreciation-expense":"$296.00","accumulated-depreciation":"$9,000.00","ending-book-value":"$1,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Depreciation Schedule","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"beginning-book-value":{"type":"string","description":"Beginning Book Value"},"depreciation-expense":{"type":"string","description":"Depreciation Expense"},"accumulated-depreciation":{"type":"string","description":"Accumulated Depreciation"},"ending-book-value":{"type":"string","description":"Ending Book Value"}}},"x-iotools-columns":["year","beginning-book-value","depreciation-expense","accumulated-depreciation","ending-book-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/descartes-rule-of-signs-calculator":{"post":{"operationId":"run_descartes_rule_of_signs_calculator","summary":"Descartes' Rule of Signs Calculator","tags":["Calculators"],"description":"Find the possible number of positive and negative real roots of a polynomial using Descartes' Rule of Signs. Counts sign changes in f(x) and f(-x), lists every possible root count, and builds the full positive/negative/complex root-combination table with a step-by-step derivation.\n\n[Try Descartes' Rule of Signs Calculator in your browser →](https://iotools.cloud/tool/descartes-rule-of-signs-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coefficients":{"type":"string","description":"Coefficients"}},"required":["coefficients"]},"examples":{"x_4_3x_3_2x_2_5x_1":{"summary":"x^4 - 3x^3 + 2x^2 + 5x - 1","value":{"coefficients":"1,-3,2,5,-1"}},"x_3_1_zero_coefficients_skipped":{"summary":"x^3 - 1 (zero coefficients skipped)","value":{"coefficients":"1,0,0,-1"}},"x_2_1_no_real_roots":{"summary":"x^2 + 1 (no real roots)","value":{"coefficients":"1,0,1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_4_3x_3_2x_2_5x_1":{"summary":"x^4 - 3x^3 + 2x^2 + 5x - 1","value":{"tool":"descartes-rule-of-signs-calculator","tool_version":"1.0.2","outputs":{"degree":"4","positiveSignChanges":"3","negativeSignChanges":"1","possiblePositiveRoots":"3, 1","possibleNegativeRoots":"1","rootCombinations":[{"positive":"3","negative":"1","complex":"0"},{"positive":"1","negative":"1","complex":"2"}],"steps":"f(x) = x^4 - 3x^3 + 2x^2 + 5x - 1  (degree 4)\nCoefficients of f(x), zeros skipped: 1, -3, 2, 5, -1 → 3 sign changes.\nf(-x) = x^4 + 3x^3 + 2x^2 - 5x - 1\nCoefficients of f(-x), zeros skipped: 1, 3, 2, -5, -1 → 1 sign change.\nPossible positive real roots: 3, 1 (start at 3 sign changes, subtract 2 each step).\nPossible negative real roots: 1 (start at 1 sign changes, subtract 2 each step).\nEvery (positive, negative) pair from those lists whose sum ≤ degree fills the rest with complex-conjugate pairs (degree − positive − negative): 2 valid combinations."},"credits_used":5,"credits_remaining":null}},"x_3_1_zero_coefficients_skipped":{"summary":"x^3 - 1 (zero coefficients skipped)","value":{"tool":"descartes-rule-of-signs-calculator","tool_version":"1.0.2","outputs":{"degree":"3","positiveSignChanges":"1","negativeSignChanges":"0","possiblePositiveRoots":"1","possibleNegativeRoots":"0","rootCombinations":[{"positive":"1","negative":"0","complex":"2"}],"steps":"f(x) = x^3 - 1  (degree 3)\nCoefficients of f(x), zeros skipped: 1, -1 → 1 sign change.\nf(-x) = -x^3 - 1\nCoefficients of f(-x), zeros skipped: -1, -1 → 0 sign changes.\nPossible positive real roots: 1 (start at 1 sign changes, subtract 2 each step).\nPossible negative real roots: 0 (start at 0 sign changes, subtract 2 each step).\nEvery (positive, negative) pair from those lists whose sum ≤ degree fills the rest with complex-conjugate pairs (degree − positive − negative): 1 valid combination."},"credits_used":5,"credits_remaining":null}},"x_2_1_no_real_roots":{"summary":"x^2 + 1 (no real roots)","value":{"tool":"descartes-rule-of-signs-calculator","tool_version":"1.0.2","outputs":{"degree":"2","positiveSignChanges":"0","negativeSignChanges":"0","possiblePositiveRoots":"0","possibleNegativeRoots":"0","rootCombinations":[{"positive":"0","negative":"0","complex":"2"}],"steps":"f(x) = x^2 + 1  (degree 2)\nCoefficients of f(x), zeros skipped: 1, 1 → 0 sign changes.\nf(-x) = x^2 + 1\nCoefficients of f(-x), zeros skipped: 1, 1 → 0 sign changes.\nPossible positive real roots: 0 (start at 0 sign changes, subtract 2 each step).\nPossible negative real roots: 0 (start at 0 sign changes, subtract 2 each step).\nEvery (positive, negative) pair from those lists whose sum ≤ degree fills the rest with complex-conjugate pairs (degree − positive − negative): 1 valid combination."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"degree":{"type":"string","description":"Degree"},"positiveSignChanges":{"type":"string","description":"Sign Changes in f(x)"},"negativeSignChanges":{"type":"string","description":"Sign Changes in f(-x)"},"possiblePositiveRoots":{"type":"string","description":"Possible Positive Real Roots"},"possibleNegativeRoots":{"type":"string","description":"Possible Negative Real Roots"},"rootCombinations":{"type":"array","description":"Root Combinations","items":{"type":"object","properties":{"positive":{"type":"string","description":"Positive"},"negative":{"type":"string","description":"Negative"},"complex":{"type":"string","description":"Complex"}}},"x-iotools-columns":["positive","negative","complex"]},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dew-point-humidity-calculator":{"post":{"operationId":"run_dew_point_humidity_calculator","summary":"Dew Point & Humidity Calculator","tags":["Calculators"],"description":"Calculate dew point, wet-bulb temperature, heat index, vapor pressure, absolute humidity, mixing ratio, specific humidity and moist-air density from temperature and relative humidity.\n\n[Try Dew Point & Humidity Calculator in your browser →](https://iotools.cloud/tool/dew-point-humidity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tempUnit":{"enum":["C","F"],"description":"Temperature unit"},"temperature":{"type":"number","description":"Air temperature"},"humidity":{"type":"number","description":"Relative humidity (%)","minimum":0,"maximum":100},"pressure":{"type":"number","description":"Air pressure (hPa)","minimum":500,"maximum":1100}},"required":["temperature","humidity"]},"examples":{"25_c_60_rh_at_sea_level":{"summary":"25 °C, 60% RH at sea level","value":{"tempUnit":"C","temperature":"25","humidity":"60","pressure":"1013.25"}},"95_f_40_rh_fahrenheit_heat_index_in_range":{"summary":"95 °F, 40% RH (Fahrenheit, heat index in range)","value":{"tempUnit":"F","temperature":"95","humidity":"40","pressure":"1013.25"}},"30_c_80_rh_no_pressure_mixing_ratio_omitted":{"summary":"30 °C, 80% RH, no pressure (mixing ratio omitted)","value":{"tempUnit":"C","temperature":"30","humidity":"80"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"25_c_60_rh_at_sea_level":{"summary":"25 °C, 60% RH at sea level","value":{"tool":"dew-point-humidity-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Dew Point","value":"16.70 °C"},{"metric":"Wet-Bulb Temperature","value":"19.50 °C"},{"metric":"Heat Index (Apparent Temp)","value":"25.06 °C (n/a — below 80 °F)"},{"metric":"Saturation Vapor Pressure","value":"31.62 hPa"},{"metric":"Actual Vapor Pressure","value":"18.97 hPa"},{"metric":"Absolute Humidity","value":"13.79 g/m³"},{"metric":"Mixing Ratio","value":"11.867 g/kg"},{"metric":"Specific Humidity","value":"11.728 g/kg"},{"metric":"Moist Air Density","value":"1.1755 kg/m³"},{"metric":"Comfort Level","value":"Slightly sticky (dew point 16.70 °C)"}]},"credits_used":5,"credits_remaining":null}},"95_f_40_rh_fahrenheit_heat_index_in_range":{"summary":"95 °F, 40% RH (Fahrenheit, heat index in range)","value":{"tool":"dew-point-humidity-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Dew Point","value":"66.91 °F"},{"metric":"Wet-Bulb Temperature","value":"76.13 °F"},{"metric":"Heat Index (Apparent Temp)","value":"98.99 °F"},{"metric":"Saturation Vapor Pressure","value":"56.18 hPa"},{"metric":"Actual Vapor Pressure","value":"22.47 hPa"},{"metric":"Absolute Humidity","value":"15.80 g/m³"},{"metric":"Mixing Ratio","value":"14.106 g/kg"},{"metric":"Specific Humidity","value":"13.910 g/kg"},{"metric":"Moist Air Density","value":"1.1359 kg/m³"},{"metric":"Comfort Level","value":"Humid (dew point 66.91 °F)"}]},"credits_used":5,"credits_remaining":null}},"30_c_80_rh_no_pressure_mixing_ratio_omitted":{"summary":"30 °C, 80% RH, no pressure (mixing ratio omitted)","value":{"tool":"dew-point-humidity-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Dew Point","value":"26.17 °C"},{"metric":"Wet-Bulb Temperature","value":"27.13 °C"},{"metric":"Heat Index (Apparent Temp)","value":"37.67 °C"},{"metric":"Saturation Vapor Pressure","value":"42.37 hPa"},{"metric":"Actual Vapor Pressure","value":"33.89 hPa"},{"metric":"Absolute Humidity","value":"24.23 g/m³"},{"metric":"Mixing Ratio","value":"-"},{"metric":"Specific Humidity","value":"-"},{"metric":"Moist Air Density","value":"-"},{"metric":"Comfort Level","value":"Miserable / dangerous (dew point 26.17 °C)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dilution-calculator":{"post":{"operationId":"run_dilution_calculator","summary":"Dilution Calculator","tags":["Calculators"],"description":"Solve the dilution equation C₁V₁ = C₂V₂ for stock concentration, stock volume, final concentration, or final volume — with independent M/mM/µM/nM and µL/mL/L units per field, converted automatically. Runs entirely in your browser.\n\n[Try Dilution Calculator in your browser →](https://iotools.cloud/tool/dilution-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["c1","v1","c2","v2"],"description":"Solve for"},"c1":{"type":"number","description":"Stock concentration (C₁)","minimum":0},"c1Unit":{"enum":["M","mM","uM","nM"],"description":"C₁ unit"},"v1":{"type":"number","description":"Stock volume (V₁)","minimum":0},"v1Unit":{"enum":["uL","mL","L"],"description":"V₁ unit"},"c2":{"type":"number","description":"Final concentration (C₂)","minimum":0},"c2Unit":{"enum":["M","mM","uM","nM"],"description":"C₂ unit"},"v2":{"type":"number","description":"Final volume (V₂)","minimum":0},"v2Unit":{"enum":["uL","mL","L"],"description":"V₂ unit"}},"required":[]},"examples":{"solve_stock_volume_dilute_10_m_stock_to_1_m_in_100_ml":{"summary":"Solve stock volume — dilute 10 M stock to 1 M in 100 mL","value":{"solveFor":"v1","c1":"10","c1Unit":"M","v1":"10","v1Unit":"mL","c2":"1","c2Unit":"M","v2":"100","v2Unit":"mL"}},"solve_final_concentration_5_mm_stock_2_ml_to_10_ml":{"summary":"Solve final concentration — 5 mM stock, 2 mL to 10 mL","value":{"solveFor":"c2","c1":"5","c1Unit":"mM","v1":"2","v1Unit":"mL","c2":"1","c2Unit":"mM","v2":"10","v2Unit":"mL"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_stock_volume_dilute_10_m_stock_to_1_m_in_100_ml":{"summary":"Solve stock volume — dilute 10 M stock to 1 M in 100 mL","value":{"tool":"dilution-calculator","tool_version":"1.0.2","outputs":{"result":"10 mL","summaryTable":[{"metric":"Solved for","value":"Stock volume (V₁)"},{"metric":"Stock concentration (C₁)","value":"10 M"},{"metric":"Stock volume (V₁)","value":"10 mL"},{"metric":"Final concentration (C₂)","value":"1 M"},{"metric":"Final volume (V₂)","value":"100 mL"},{"metric":"Dilution factor (C₁ ÷ C₂)","value":"10×"},{"metric":"Diluent (solvent) to add","value":"90 mL"}],"steps":"Formula: C₁V₁ = C₂V₂ (converted to mol/L and L before solving)\nV₁ = (C₂ × V₂) ÷ C₁ = (1 M × 0.1 L) ÷ 10 M = 0.01 L"},"credits_used":5,"credits_remaining":null}},"solve_final_concentration_5_mm_stock_2_ml_to_10_ml":{"summary":"Solve final concentration — 5 mM stock, 2 mL to 10 mL","value":{"tool":"dilution-calculator","tool_version":"1.0.2","outputs":{"result":"1 mM","summaryTable":[{"metric":"Solved for","value":"Final concentration (C₂)"},{"metric":"Stock concentration (C₁)","value":"5 mM"},{"metric":"Stock volume (V₁)","value":"2 mL"},{"metric":"Final concentration (C₂)","value":"1 mM"},{"metric":"Final volume (V₂)","value":"10 mL"},{"metric":"Dilution factor (C₁ ÷ C₂)","value":"5×"},{"metric":"Diluent (solvent) to add","value":"8 mL"}],"steps":"Formula: C₁V₁ = C₂V₂ (converted to mol/L and L before solving)\nC₂ = (C₁ × V₁) ÷ V₂ = (0.005 M × 0.002 L) ÷ 0.01 L = 0.001 M"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"summaryTable":{"type":"array","description":"Dilution breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/discount-markup-calculator":{"post":{"operationId":"run_discount_markup_calculator","summary":"Discount & Markup Calculator","tags":["Calculators"],"description":"Calculate sale price, profit margin, markup, discounts and stacked discounts. Five modes: markup, margin, discount, reverse discount, and stacked (compounded) discounts — with a full breakdown.\n\n[Try Discount & Markup Calculator in your browser →](https://iotools.cloud/tool/discount-markup-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"calcMode":{"enum":["markup","margin","discount","reverse","stacked"],"description":"Calculation Mode"},"costPrice":{"type":"number","description":"Cost Price","minimum":0},"markupPercent":{"type":"number","description":"Markup %","minimum":0},"salePrice":{"type":"number","description":"Sale Price","minimum":0},"originalPrice":{"type":"number","description":"Original Price","minimum":0},"discountPercent":{"type":"number","description":"Discount %","minimum":0,"maximum":100},"finalPrice":{"type":"number","description":"Final (Discounted) Price","minimum":0},"stackedDiscount1":{"type":"number","description":"Discount 1 %","minimum":0,"maximum":100},"stackedDiscount2":{"type":"number","description":"Discount 2 %","minimum":0,"maximum":100},"stackedDiscount3":{"type":"number","description":"Discount 3 % (optional)","minimum":0,"maximum":100}},"required":[]},"examples":{"markup_40_on_a_50_cost":{"summary":"Markup: 40% on a $50 cost","value":{"calcMode":"markup","costPrice":"50","markupPercent":"40"}},"margin_cost_50_sells_for_70":{"summary":"Margin: cost $50, sells for $70","value":{"calcMode":"margin","costPrice":"50","salePrice":"70"}},"discount_20_off_100":{"summary":"Discount: 20% off $100","value":{"calcMode":"discount","originalPrice":"100","discountPercent":"20"}},"reverse_80_paid_after_20_off":{"summary":"Reverse: $80 paid after 20% off","value":{"calcMode":"reverse","finalPrice":"80","discountPercent":"20"}},"stacked_20_then_10_off_100":{"summary":"Stacked: 20% then 10% off $100","value":{"calcMode":"stacked","originalPrice":"100","stackedDiscount1":"20","stackedDiscount2":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"markup_40_on_a_50_cost":{"summary":"Markup: 40% on a $50 cost","value":{"tool":"discount-markup-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sale Price","value":"70.00"},{"metric":"Cost Price","value":"50.00"},{"metric":"Profit","value":"20.00"},{"metric":"Markup %","value":"40.00%"},{"metric":"Margin %","value":"28.57%"}]},"credits_used":5,"credits_remaining":null}},"margin_cost_50_sells_for_70":{"summary":"Margin: cost $50, sells for $70","value":{"tool":"discount-markup-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Profit Margin","value":"28.57%"},{"metric":"Cost Price","value":"50.00"},{"metric":"Sale Price","value":"70.00"},{"metric":"Profit","value":"20.00"},{"metric":"Markup %","value":"40.00%"}]},"credits_used":5,"credits_remaining":null}},"discount_20_off_100":{"summary":"Discount: 20% off $100","value":{"tool":"discount-markup-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Final Price","value":"80.00"},{"metric":"Original Price","value":"100.00"},{"metric":"You Save","value":"20.00"},{"metric":"Discount %","value":"20.00%"},{"metric":"You Pay","value":"80.00%"}]},"credits_used":5,"credits_remaining":null}},"reverse_80_paid_after_20_off":{"summary":"Reverse: $80 paid after 20% off","value":{"tool":"discount-markup-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Original Price","value":"100.00"},{"metric":"Final Price","value":"80.00"},{"metric":"Discount Amount","value":"20.00"},{"metric":"Discount %","value":"20.00%"},{"metric":"You Pay","value":"80.00%"}]},"credits_used":5,"credits_remaining":null}},"stacked_20_then_10_off_100":{"summary":"Stacked: 20% then 10% off $100","value":{"tool":"discount-markup-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Final Price","value":"72.00"},{"metric":"Original Price","value":"100.00"},{"metric":"Total Saved","value":"28.00"},{"metric":"Effective Discount","value":"28.00%"},{"metric":"Step 1: 20.00% off","value":"80.00 (saved 20.00)"},{"metric":"Step 2: 10.00% off","value":"72.00 (saved 8.00)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dishwasher-load-optimizer":{"post":{"operationId":"run_dishwasher_load_optimizer","summary":"Dishwasher Load Optimizer","tags":["Calculators"],"description":"Estimate dishwasher rack utilization, wash cycles needed, and an item-by-item placement map from your dish counts and dishwasher size.\n\n[Try Dishwasher Load Optimizer in your browser →](https://iotools.cloud/tool/dishwasher-load-optimizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dishwasherSize":{"enum":["compact","standard","large"],"description":"Dishwasher size"},"dinnerPlates":{"type":"number","description":"Dinner plates","minimum":0},"bowls":{"type":"number","description":"Bowls","minimum":0},"potsPans":{"type":"number","description":"Pots & pans","minimum":0},"traysBoards":{"type":"number","description":"Trays & cutting boards","minimum":0},"glasses":{"type":"number","description":"Glasses","minimum":0},"mugs":{"type":"number","description":"Mugs","minimum":0},"wineGlasses":{"type":"number","description":"Wine glasses","minimum":0},"plastics":{"type":"number","description":"Plastic containers","minimum":0},"utensilsLarge":{"type":"number","description":"Large utensils (ladles, spatulas)","minimum":0},"cutlery":{"type":"number","description":"Cutlery (forks, knives, spoons)","minimum":0}},"required":[]},"examples":{"standard_dishwasher_default_weeknight_load":{"summary":"Standard dishwasher, default weeknight load","value":{"dishwasherSize":"standard","dinnerPlates":"6","bowls":"4","potsPans":"1","traysBoards":"0","glasses":"6","mugs":"2","wineGlasses":"0","plastics":"2","utensilsLarge":"2","cutlery":"16"}},"compact_dishwasher_dinner_party_overflow_needs_4_cycles":{"summary":"Compact dishwasher, dinner-party overflow (needs 4 cycles)","value":{"dishwasherSize":"compact","dinnerPlates":"12","bowls":"8","potsPans":"4","traysBoards":"2","glasses":"10","mugs":"4","wineGlasses":"6","plastics":"0","utensilsLarge":"3","cutlery":"30"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_dishwasher_default_weeknight_load":{"summary":"Standard dishwasher, default weeknight load","value":{"tool":"dishwasher-load-optimizer","tool_version":"1.0.2","outputs":{"results":[{"metric":"Dishwasher size","value":"Standard (24″, full-size)"},{"metric":"Total items","value":"39"},{"metric":"Wash cycles needed","value":"1"},{"metric":"Overall utilization (per cycle)","value":"49.1%"},{"metric":"Efficiency rating","value":"Fair — room for more before running a cycle"},{"metric":"Bottom rack","value":"11 / 12 slots (91.7%)"},{"metric":"Top rack","value":"12.5 / 14 slots (89.3%)"},{"metric":"Cutlery basket","value":"4 / 30 slots (13.3%)"}],"placement":[{"item":"Dinner plates","count":"6","zone":"Bottom rack","total-slots":"6","per-cycle":"6"},{"item":"Bowls","count":"4","zone":"Bottom rack","total-slots":"3","per-cycle":"4"},{"item":"Pots & pans","count":"1","zone":"Bottom rack","total-slots":"2","per-cycle":"1"},{"item":"Glasses","count":"6","zone":"Top rack","total-slots":"6","per-cycle":"6"},{"item":"Mugs","count":"2","zone":"Top rack","total-slots":"1.5","per-cycle":"2"},{"item":"Plastic containers","count":"2","zone":"Top rack","total-slots":"2","per-cycle":"2"},{"item":"Large utensils (ladles, spatulas)","count":"2","zone":"Top rack","total-slots":"3","per-cycle":"2"},{"item":"Cutlery (forks, knives, spoons)","count":"16","zone":"Cutlery basket","total-slots":"4","per-cycle":"16"}],"breakdown":"Footprint totals — Bottom rack: 11 slots · Top rack: 12.5 slots · Cutlery basket: 4 slots\nRack capacity (Standard (24″, full-size)) — Bottom rack: 12 · Top rack: 14 · Cutlery basket: 30\nCycles needed = max(⌈zone slots ÷ zone capacity⌉) across all three zones = 1\nOverall utilization = (bottom + top + cutlery slots used per cycle) ÷ total capacity × 100 = 49.1%\n\nPlacement notes:\n• Angle large utensils along the rack edges so they don't block the spray arm.\n\nFootprint and capacity values are estimates for a typical rack layout, not a manufacturer spec — actual fit varies by model."},"credits_used":5,"credits_remaining":null}},"compact_dishwasher_dinner_party_overflow_needs_4_cycles":{"summary":"Compact dishwasher, dinner-party overflow (needs 4 cycles)","value":{"tool":"dishwasher-load-optimizer","tool_version":"1.0.2","outputs":{"results":[{"metric":"Dishwasher size","value":"Compact (18″ / tabletop)"},{"metric":"Total items","value":"79"},{"metric":"Wash cycles needed","value":"4"},{"metric":"Overall utilization (per cycle)","value":"40.5%"},{"metric":"Efficiency rating","value":"Fair — room for more before running a cycle"},{"metric":"Bottom rack","value":"7.25 / 8 slots (90.6%)"},{"metric":"Top rack","value":"6.25 / 10 slots (62.5%)"},{"metric":"Cutlery basket","value":"1.88 / 20 slots (9.4%)"}],"placement":[{"item":"Dinner plates","count":"12","zone":"Bottom rack","total-slots":"12","per-cycle":"≈3/cycle × 4"},{"item":"Bowls","count":"8","zone":"Bottom rack","total-slots":"6","per-cycle":"≈2/cycle × 4"},{"item":"Pots & pans","count":"4","zone":"Bottom rack","total-slots":"8","per-cycle":"≈1/cycle × 4"},{"item":"Trays & cutting boards","count":"2","zone":"Bottom rack","total-slots":"3","per-cycle":"≈0.5/cycle × 4"},{"item":"Glasses","count":"10","zone":"Top rack","total-slots":"10","per-cycle":"≈2.5/cycle × 4"},{"item":"Mugs","count":"4","zone":"Top rack","total-slots":"3","per-cycle":"≈1/cycle × 4"},{"item":"Wine glasses","count":"6","zone":"Top rack","total-slots":"7.5","per-cycle":"≈1.5/cycle × 4"},{"item":"Large utensils (ladles, spatulas)","count":"3","zone":"Top rack","total-slots":"4.5","per-cycle":"≈0.75/cycle × 4"},{"item":"Cutlery (forks, knives, spoons)","count":"30","zone":"Cutlery basket","total-slots":"7.5","per-cycle":"≈7.5/cycle × 4"}],"breakdown":"Footprint totals — Bottom rack: 29 slots · Top rack: 25 slots · Cutlery basket: 7.5 slots\nRack capacity (Compact (18″ / tabletop)) — Bottom rack: 8 · Top rack: 10 · Cutlery basket: 20\nCycles needed = max(⌈zone slots ÷ zone capacity⌉) across all three zones = 4\nOverall utilization = (bottom + top + cutlery slots used per cycle) ÷ total capacity × 100 = 40.5%\n\nPlacement notes:\n• Angle wine glasses over the tines on the top rack, clear of the spray arm's path.\n• Angle large utensils along the rack edges so they don't block the spray arm.\n• Heavily soiled pots and pans may need pre-rinsing — baked-on residue often survives a single cycle.\n• This load needs 4 cycles because at least one rack exceeds a single load's capacity — see the Placement Map for the per-cycle split.\n\nFootprint and capacity values are estimates for a typical rack layout, not a manufacturer spec — actual fit varies by model."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Load Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"placement":{"type":"array","description":"Placement Map","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"count":{"type":"string","description":"Count"},"zone":{"type":"string","description":"Zone"},"total-slots":{"type":"string","description":"Total Slots"},"per-cycle":{"type":"string","description":"Per Cycle"}}},"x-iotools-columns":["item","count","zone","total-slots","per-cycle"]},"breakdown":{"type":"string","description":"Notes & Warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dividend-reinvestment-calculator":{"post":{"operationId":"run_dividend_reinvestment_calculator","summary":"Dividend Reinvestment (DRIP) Calculator","tags":["Calculators"],"description":"Simulate a Dividend Reinvestment Plan (DRIP) period by period — enter an initial investment, dividend yield, dividend growth rate, and share price growth to see a year-by-year share count, dividend income, and portfolio value, plus a DRIP-on vs. cash-dividend comparison.\n\n[Try Dividend Reinvestment (DRIP) Calculator in your browser →](https://iotools.cloud/tool/dividend-reinvestment-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"initialInvestment":{"type":"number","description":"Initial Investment ($)","minimum":0},"sharePrice":{"type":"number","description":"Starting Share Price ($)","minimum":0.01},"dividendYield":{"type":"number","description":"Dividend Yield (%)","minimum":0,"maximum":100},"dividendGrowthRate":{"type":"number","description":"Annual Dividend Growth Rate (%)"},"sharePriceGrowthRate":{"type":"number","description":"Annual Share Price Growth Rate (%)"},"years":{"type":"number","description":"Investment Period (Years)","minimum":1,"maximum":100},"dividendFrequency":{"enum":["4","1"],"description":"Dividend Frequency"},"reinvestDividends":{"type":"boolean","description":"Reinvest Dividends (DRIP)"}},"required":[]},"examples":{"10_000_quarterly_drip_10_years":{"summary":"$10,000 quarterly DRIP, 10 years","value":{"initialInvestment":"10000","sharePrice":"50","dividendYield":"3","dividendGrowthRate":"5","sharePriceGrowthRate":"6","years":"10","dividendFrequency":"4","reinvestDividends":"true"}},"cash_dividends_no_drip_annual_payout_5_years":{"summary":"Cash dividends (no DRIP), annual payout, 5 years","value":{"initialInvestment":"5000","sharePrice":"25","dividendYield":"4","dividendGrowthRate":"3","sharePriceGrowthRate":"4","years":"5","dividendFrequency":"1","reinvestDividends":""}},"flat_dividend_and_price_quarterly_3_years":{"summary":"Flat dividend and price, quarterly, 3 years","value":{"initialInvestment":"1000","sharePrice":"10","dividendYield":"5","dividendGrowthRate":"0","sharePriceGrowthRate":"0","years":"3","dividendFrequency":"4","reinvestDividends":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_quarterly_drip_10_years":{"summary":"$10,000 quarterly DRIP, 10 years","value":{"tool":"dividend-reinvestment-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Starting Shares","value":"200.0000"},{"metric":"Ending Share Price","value":"$89.54"},{"metric":"Final Shares Held","value":"263.6680"},{"metric":"Total Dividends Received","value":"$4,389.36"},{"metric":"Portfolio Value","value":"$23,609.46"},{"metric":"Total Return","value":"+136.09%"},{"metric":"Yield on Cost","value":"+4.65%"},{"metric":"Portfolio Value (With DRIP)","value":"$23,609.46"},{"metric":"Portfolio Value (Without DRIP)","value":"$21,681.84"},{"metric":"DRIP Advantage","value":"$1,927.62 (+8.89%)"}],"schedule":[{"year":"1","share-price":"$53.00","shares-held":"205.8493","dividends-received":"$303.31","portfolio-value":"$10,910.01"},{"year":"2","share-price":"$56.18","shares-held":"211.8122","dividends-received":"$327.76","portfolio-value":"$11,899.61"},{"year":"3","share-price":"$59.55","shares-held":"217.8893","dividends-received":"$354.08","portfolio-value":"$12,975.48"},{"year":"4","share-price":"$63.12","shares-held":"224.0813","dividends-received":"$382.41","portfolio-value":"$14,144.87"},{"year":"5","share-price":"$66.91","shares-held":"230.3885","dividends-received":"$412.90","portfolio-value":"$15,415.59"},{"year":"6","share-price":"$70.93","shares-held":"236.8114","dividends-received":"$445.70","portfolio-value":"$16,796.07"},{"year":"7","share-price":"$75.18","shares-held":"243.3504","dividends-received":"$480.99","portfolio-value":"$18,295.45"},{"year":"8","share-price":"$79.69","shares-held":"250.0060","dividends-received":"$518.93","portfolio-value":"$19,923.58"},{"year":"9","share-price":"$84.47","shares-held":"256.7784","dividends-received":"$559.72","portfolio-value":"$21,691.09"},{"year":"10","share-price":"$89.54","shares-held":"263.6680","dividends-received":"$603.57","portfolio-value":"$23,609.46"}]},"credits_used":5,"credits_remaining":null}},"cash_dividends_no_drip_annual_payout_5_years":{"summary":"Cash dividends (no DRIP), annual payout, 5 years","value":{"tool":"dividend-reinvestment-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Starting Shares","value":"200.0000"},{"metric":"Ending Share Price","value":"$30.42"},{"metric":"Final Shares Held","value":"200.0000"},{"metric":"Total Dividends Received","value":"$1,061.83"},{"metric":"Portfolio Value","value":"$7,145.09"},{"metric":"Total Return","value":"+42.90%"},{"metric":"Yield on Cost","value":"+4.50%"},{"metric":"Portfolio Value (With DRIP)","value":"$7,320.76"},{"metric":"Portfolio Value (Without DRIP)","value":"$7,145.09"},{"metric":"DRIP Advantage","value":"$175.67 (+2.46%)"}],"schedule":[{"year":"1","share-price":"$26.00","shares-held":"200.0000","dividends-received":"$200.00","portfolio-value":"$5,400.00"},{"year":"2","share-price":"$27.04","shares-held":"200.0000","dividends-received":"$206.00","portfolio-value":"$5,814.00"},{"year":"3","share-price":"$28.12","shares-held":"200.0000","dividends-received":"$212.18","portfolio-value":"$6,242.50"},{"year":"4","share-price":"$29.25","shares-held":"200.0000","dividends-received":"$218.55","portfolio-value":"$6,686.02"},{"year":"5","share-price":"$30.42","shares-held":"200.0000","dividends-received":"$225.10","portfolio-value":"$7,145.09"}]},"credits_used":5,"credits_remaining":null}},"flat_dividend_and_price_quarterly_3_years":{"summary":"Flat dividend and price, quarterly, 3 years","value":{"tool":"dividend-reinvestment-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Starting Shares","value":"100.0000"},{"metric":"Ending Share Price","value":"$10.00"},{"metric":"Final Shares Held","value":"116.0755"},{"metric":"Total Dividends Received","value":"$160.75"},{"metric":"Portfolio Value","value":"$1,160.75"},{"metric":"Total Return","value":"+16.08%"},{"metric":"Yield on Cost","value":"+5.00%"},{"metric":"Portfolio Value (With DRIP)","value":"$1,160.75"},{"metric":"Portfolio Value (Without DRIP)","value":"$1,150.00"},{"metric":"DRIP Advantage","value":"$10.75 (+0.94%)"}],"schedule":[{"year":"1","share-price":"$10.00","shares-held":"105.0945","dividends-received":"$50.95","portfolio-value":"$1,050.95"},{"year":"2","share-price":"$10.00","shares-held":"110.4486","dividends-received":"$53.54","portfolio-value":"$1,104.49"},{"year":"3","share-price":"$10.00","shares-held":"116.0755","dividends-received":"$56.27","portfolio-value":"$1,160.75"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Breakdown","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"share-price":{"type":"string","description":"Share Price"},"shares-held":{"type":"string","description":"Shares Held"},"dividends-received":{"type":"string","description":"Dividends Received"},"portfolio-value":{"type":"string","description":"Portfolio Value"}}},"x-iotools-columns":["year","share-price","shares-held","dividends-received","portfolio-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dns-record-ttl-expiry-calculator":{"post":{"operationId":"run_dns_record_ttl_expiry_calculator","summary":"DNS Record TTL Expiry Calculator","tags":["Calculators"],"description":"Paste DNS records (TYPE TTL name) and see exactly when each cached copy expires, the live countdown remaining, and the safe propagation window (TTL x 2). Includes an optional TTL-reduction schedule for planning migrations.\n\n[Try DNS Record TTL Expiry Calculator in your browser →](https://iotools.cloud/tool/dns-record-ttl-expiry-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dnsRecords":{"type":"string","description":"DNS Records"},"fetchTime":{"type":"string","description":"Fetched At"},"now":{"type":"string","description":"Evaluation Time (now)"},"showMigrationPlan":{"type":"boolean","description":"Show recommended TTL reduction schedule for migrations"}},"required":["dnsRecords"]},"examples":{"mixed_records_30_minutes_after_fetch":{"summary":"Mixed records, 30 minutes after fetch","value":{"dnsRecords":"A 3600 example.com\nAAAA 3600 example.com\nMX 14400 example.com\nCNAME 300 www.example.com\nTXT 86400 _dmarc.example.com","fetchTime":"2024-01-01T00:00:00","now":"2024-01-01T00:30:00","showMigrationPlan":""}},"fresh_fetch_with_migration_schedule":{"summary":"Fresh fetch with migration schedule","value":{"dnsRecords":"A 86400 example.com\nMX 43200 example.com","fetchTime":"","now":"2024-06-01T12:00:00","showMigrationPlan":"true"}},"invalid_line_reported_valid_ones_still_parsed":{"summary":"Invalid line reported, valid ones still parsed","value":{"dnsRecords":"A 3600 example.com\nWIDGET 300 oops.example.com\nMX abc example.com","fetchTime":"2024-01-01T00:00:00","now":"2024-01-01T00:00:00","showMigrationPlan":""}},"against_the_current_time":{"summary":"Against the current time","value":{"dnsRecords":"A 3600 example.com\nNS 172800 example.com","fetchTime":"","now":"","showMigrationPlan":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_records_30_minutes_after_fetch":{"summary":"Mixed records, 30 minutes after fetch","value":{"tool":"dns-record-ttl-expiry-calculator","tool_version":"1.0.2","outputs":{"summary":"5 records parsed\nFetched at: 2024-01-01 00:00:00\nStatus: 1 of 5 expired\nNext expiry: 30m\nAll clear in: 23h 30m","records":[{"type":"A","name":"example.com","ttl":"3,600s (1h)","expires-at-utc":"2024-01-01 01:00:00","countdown":"30m left","safe-window-ttl-x2":"2h"},{"type":"AAAA","name":"example.com","ttl":"3,600s (1h)","expires-at-utc":"2024-01-01 01:00:00","countdown":"30m left","safe-window-ttl-x2":"2h"},{"type":"MX","name":"example.com","ttl":"14,400s (4h)","expires-at-utc":"2024-01-01 04:00:00","countdown":"3h 30m left","safe-window-ttl-x2":"8h"},{"type":"CNAME","name":"www.example.com","ttl":"300s (5m)","expires-at-utc":"2024-01-01 00:05:00","countdown":"Expired 25m ago","safe-window-ttl-x2":"10m"},{"type":"TXT","name":"_dmarc.example.com","ttl":"86,400s (1d)","expires-at-utc":"2024-01-02 00:00:00","countdown":"23h 30m left","safe-window-ttl-x2":"2d"}]},"credits_used":5,"credits_remaining":null}},"fresh_fetch_with_migration_schedule":{"summary":"Fresh fetch with migration schedule","value":{"tool":"dns-record-ttl-expiry-calculator","tool_version":"1.0.2","outputs":{"summary":"2 records parsed\nFetched at: 2024-06-01 12:00:00\nStatus: all records fresh\nNext expiry: 12h\nAll clear in: 1d\n\nRecommended TTL reduction schedule:\n  1. Wait for current TTL to expire — cached copies from the original fetch fully expire after 1d (max TTL across records). Safe propagation window: 2d.\n  2. Lower TTL to 1 hour (3600s) — at least 1d before the planned change. Wait 1d for the previous TTL to expire.\n  3. Lower TTL to 5 minutes (300s) — at least 1 hour before the planned change. Wait 1h for the 3600s window to expire.\n  4. Make the change — update record values. Cached lookups now expire within 5m. Verify with \"dig +short\" from multiple resolvers (or whatsmydns.net).\n  5. Restore long TTL — 24-48 hours after the change, raise TTLs back to 1d to reduce DNS query load and cost.","records":[{"type":"A","name":"example.com","ttl":"86,400s (1d)","expires-at-utc":"2024-06-02 12:00:00","countdown":"1d left","safe-window-ttl-x2":"2d"},{"type":"MX","name":"example.com","ttl":"43,200s (12h)","expires-at-utc":"2024-06-02 00:00:00","countdown":"12h left","safe-window-ttl-x2":"1d"}]},"credits_used":5,"credits_remaining":null}},"invalid_line_reported_valid_ones_still_parsed":{"summary":"Invalid line reported, valid ones still parsed","value":{"tool":"dns-record-ttl-expiry-calculator","tool_version":"1.0.2","outputs":{"summary":"Issues with input (2):\n  - Line 2: unknown DNS record type \"WIDGET\"\n  - Line 3: TTL must be a non-negative integer — got \"abc\"\n1 record parsed\nFetched at: 2024-01-01 00:00:00\nStatus: all records fresh\nNext expiry: 1h\nAll clear in: 1h","records":[{"type":"A","name":"example.com","ttl":"3,600s (1h)","expires-at-utc":"2024-01-01 01:00:00","countdown":"1h left","safe-window-ttl-x2":"2h"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"records":{"type":"array","description":"Expiry Breakdown","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"name":{"type":"string","description":"Name"},"ttl":{"type":"string","description":"TTL"},"expires-at-utc":{"type":"string","description":"Expires At (UTC)"},"countdown":{"type":"string","description":"Countdown"},"safe-window-ttl-x2":{"type":"string","description":"Safe Window (TTL x2)"}}},"x-iotools-columns":["type","name","ttl","expires-at-utc","countdown","safe-window-ttl-x2"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/docker-container-resource-calculator":{"post":{"operationId":"run_docker_container_resource_calculator","summary":"Docker Container Resource Calculator","tags":["Calculators"],"description":"Calculate recommended CPU and memory requests and limits for Docker containers and Kubernetes pods. Pick a workload preset or enter custom values, cap them to your host capacity, and copy a ready docker run command and Kubernetes resources block.\n\n[Try Docker Container Resource Calculator in your browser →](https://iotools.cloud/tool/docker-container-resource-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"workloadType":{"enum":["web-server","background-worker","database","cache","ml-inference","custom"],"description":"Workload Type"},"hostCpu":{"type":"number","description":"Host CPU (cores)","minimum":1,"maximum":512},"hostRam":{"type":"number","description":"Host RAM (GB)","minimum":0.5,"maximum":4096},"containerCount":{"type":"number","description":"Number of Containers","minimum":1,"maximum":100},"cpuRequest":{"type":"number","description":"CPU Request (cores)","minimum":0.01,"maximum":512},"cpuLimit":{"type":"number","description":"CPU Limit (cores)","minimum":0.01,"maximum":512},"memRequest":{"type":"number","description":"Memory Request (MB)","minimum":1,"maximum":4194304},"memLimit":{"type":"number","description":"Memory Limit (MB)","minimum":1,"maximum":4194304}},"required":[]},"examples":{"web_server_on_a_4_core_8_gb_host":{"summary":"Web server on a 4-core / 8 GB host","value":{"workloadType":"web-server","hostCpu":"4","hostRam":"8","containerCount":"1"}},"database_2_containers_on_a_1_core_1_gb_host_over_subscribed_capped":{"summary":"Database, 2 containers on a 1-core / 1 GB host (over-subscribed → capped)","value":{"workloadType":"database","hostCpu":"1","hostRam":"1","containerCount":"2"}},"custom_limits_3_containers_on_an_8_core_16_gb_host":{"summary":"Custom limits, 3 containers on an 8-core / 16 GB host","value":{"workloadType":"custom","hostCpu":"8","hostRam":"16","containerCount":"3","cpuRequest":"0.5","cpuLimit":"2","memRequest":"512","memLimit":"2048"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"web_server_on_a_4_core_8_gb_host":{"summary":"Web server on a 4-core / 8 GB host","value":{"tool":"docker-container-resource-calculator","tool_version":"1.0.2","outputs":{"resourceTable":[{"property":"CPU Request","value":"0.10 cores"},{"property":"CPU Limit","value":"0.50 cores"},{"property":"CPU Request (millicores)","value":"100m"},{"property":"CPU Limit (millicores)","value":"500m"},{"property":"Memory Request","value":"128 MB"},{"property":"Memory Limit","value":"512 MB"},{"property":"Total CPU (all containers)","value":"0.50 / 4 cores"},{"property":"Total Memory (all containers)","value":"512 MB / 8 GB"}],"dockerCmd":"docker run --memory=512m --cpus=0.50 <image>","k8sYaml":"resources:\n  requests:\n    cpu: \"100m\"\n    memory: \"128Mi\"\n  limits:\n    cpu: \"500m\"\n    memory: \"512Mi\""},"credits_used":5,"credits_remaining":null}},"database_2_containers_on_a_1_core_1_gb_host_over_subscribed_capped":{"summary":"Database, 2 containers on a 1-core / 1 GB host (over-subscribed → capped)","value":{"tool":"docker-container-resource-calculator","tool_version":"1.0.2","outputs":{"resourceTable":[{"property":"CPU Request","value":"0.50 cores"},{"property":"CPU Limit","value":"0.50 cores"},{"property":"CPU Request (millicores)","value":"500m"},{"property":"CPU Limit (millicores)","value":"500m"},{"property":"Memory Request","value":"512 MB"},{"property":"Memory Limit","value":"512 MB"},{"property":"Total CPU (all containers)","value":"1.00 / 1 cores"},{"property":"Total Memory (all containers)","value":"1 GB / 1 GB"},{"property":"Warning","value":"Total CPU limits (4.00 cores) exceed host capacity (1 cores). Limits have been capped."},{"property":"Warning","value":"Total memory limits (4 GB) exceed host capacity (1 GB). Limits have been capped."}],"dockerCmd":"docker run --memory=512m --cpus=0.50 <image>","k8sYaml":"resources:\n  requests:\n    cpu: \"500m\"\n    memory: \"512Mi\"\n  limits:\n    cpu: \"500m\"\n    memory: \"512Mi\""},"credits_used":5,"credits_remaining":null}},"custom_limits_3_containers_on_an_8_core_16_gb_host":{"summary":"Custom limits, 3 containers on an 8-core / 16 GB host","value":{"tool":"docker-container-resource-calculator","tool_version":"1.0.2","outputs":{"resourceTable":[{"property":"CPU Request","value":"0.50 cores"},{"property":"CPU Limit","value":"2.00 cores"},{"property":"CPU Request (millicores)","value":"500m"},{"property":"CPU Limit (millicores)","value":"2000m"},{"property":"Memory Request","value":"512 MB"},{"property":"Memory Limit","value":"2 GB"},{"property":"Total CPU (all containers)","value":"6.00 / 8 cores"},{"property":"Total Memory (all containers)","value":"6 GB / 16 GB"}],"dockerCmd":"docker run --memory=2g --cpus=2.00 <image>","k8sYaml":"resources:\n  requests:\n    cpu: \"500m\"\n    memory: \"512Mi\"\n  limits:\n    cpu: \"2000m\"\n    memory: \"2048Mi\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resourceTable":{"type":"array","description":"Recommended Resources","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"dockerCmd":{"type":"string","description":"Docker Run Command"},"k8sYaml":{"type":"string","description":"Kubernetes Resources"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/double-integral-calculator":{"post":{"operationId":"run_double_integral_calculator","summary":"Double Integral Calculator","tags":["Calculators"],"description":"Numerically evaluate the double integral of f(x, y) over a rectangular region [a, b] × [c, d] with composite 2D Simpson's rule, showing the integral setup and method alongside the numeric result.\n\n[Try Double Integral Calculator in your browser →](https://iotools.cloud/tool/double-integral-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"f":{"type":"string","description":"f(x, y)"},"a":{"type":"number","description":"x lower bound (a)"},"b":{"type":"number","description":"x upper bound (b)"},"c":{"type":"number","description":"y lower bound (c)"},"d":{"type":"number","description":"y upper bound (d)"}},"required":["f","a","b","c","d"]},"examples":{"f_x_y_x_y_over_0_1_0_1":{"summary":"f(x, y) = x*y over [0, 1] × [0, 1]","value":{"f":"x*y","a":"0","b":"1","c":"0","d":"1"}},"f_x_y_x_2_y_2_over_0_1_0_1":{"summary":"f(x, y) = x^2 + y^2 over [0, 1] × [0, 1]","value":{"f":"x^2 + y^2","a":"0","b":"1","c":"0","d":"1"}},"f_x_y_x_y_over_1_3_2_4":{"summary":"f(x, y) = x*y over [1, 3] × [2, 4]","value":{"f":"x*y","a":"1","b":"3","c":"2","d":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_y_x_y_over_0_1_0_1":{"summary":"f(x, y) = x*y over [0, 1] × [0, 1]","value":{"tool":"double-integral-calculator","tool_version":"1.0.2","outputs":{"value":"0.25","setup":"∫∫ f(x, y) dy dx, f(x, y) = x*y, x ∈ [0, 1], y ∈ [0, 1]","steps":"f(x, y) = x*y\nRegion: x ∈ [0, 1], y ∈ [0, 1]\n∫∫ f(x, y) dy dx = 0.25\nMethod: composite 2D Simpson's rule, integrated over y first then x, 100×100 subdivisions (101×101 grid of points)."},"credits_used":5,"credits_remaining":null}},"f_x_y_x_2_y_2_over_0_1_0_1":{"summary":"f(x, y) = x^2 + y^2 over [0, 1] × [0, 1]","value":{"tool":"double-integral-calculator","tool_version":"1.0.2","outputs":{"value":"0.666667","setup":"∫∫ f(x, y) dy dx, f(x, y) = x^2 + y^2, x ∈ [0, 1], y ∈ [0, 1]","steps":"f(x, y) = x^2 + y^2\nRegion: x ∈ [0, 1], y ∈ [0, 1]\n∫∫ f(x, y) dy dx = 0.666667\nMethod: composite 2D Simpson's rule, integrated over y first then x, 100×100 subdivisions (101×101 grid of points)."},"credits_used":5,"credits_remaining":null}},"f_x_y_x_y_over_1_3_2_4":{"summary":"f(x, y) = x*y over [1, 3] × [2, 4]","value":{"tool":"double-integral-calculator","tool_version":"1.0.2","outputs":{"value":"24","setup":"∫∫ f(x, y) dy dx, f(x, y) = x*y, x ∈ [1, 3], y ∈ [2, 4]","steps":"f(x, y) = x*y\nRegion: x ∈ [1, 3], y ∈ [2, 4]\n∫∫ f(x, y) dy dx = 24\nMethod: composite 2D Simpson's rule, integrated over y first then x, 100×100 subdivisions (101×101 grid of points)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"value":{"type":"string","description":"∫∫ f(x, y) dA"},"setup":{"type":"string","description":"Integral Setup"},"steps":{"type":"string","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dpi-ppi-calculator":{"post":{"operationId":"run_dpi_ppi_calculator","summary":"DPI / PPI Calculator","tags":["Calculators"],"description":"Calculate a screen's pixel density (PPI) from its resolution and diagonal size — plus pixel pitch, aspect ratio, total megapixels, Android density bucket and a Retina check.\n\n[Try DPI / PPI Calculator in your browser →](https://iotools.cloud/tool/dpi-ppi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"widthPx":{"type":"number","description":"Width (px)","minimum":1},"heightPx":{"type":"number","description":"Height (px)","minimum":1},"diagonalSize":{"type":"number","description":"Diagonal size (inches)","minimum":0.1}},"required":["widthPx","heightPx","diagonalSize"]},"examples":{"4k_monitor_27":{"summary":"4K monitor, 27\"","value":{"widthPx":"3840","heightPx":"2160","diagonalSize":"27"}},"iphone_15_pro_6_1":{"summary":"iPhone 15 Pro, 6.1\"","value":{"widthPx":"2556","heightPx":"1179","diagonalSize":"6.1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4k_monitor_27":{"summary":"4K monitor, 27\"","value":{"tool":"dpi-ppi-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"PPI (Pixels Per Inch)","value":"163.18 PPI"},{"property":"Pixel Pitch","value":"0.1557 mm"},{"property":"Total Pixels","value":"8,294,400 px (8.29 MP)"},{"property":"Aspect Ratio","value":"16:9"},{"property":"Diagonal Pixels","value":"4405.81 px"},{"property":"Density Category","value":"Medium Density (mdpi)"},{"property":"Retina Display","value":"No — below the 220 PPI Retina threshold"}]},"credits_used":5,"credits_remaining":null}},"iphone_15_pro_6_1":{"summary":"iPhone 15 Pro, 6.1\"","value":{"tool":"dpi-ppi-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"PPI (Pixels Per Inch)","value":"461.44 PPI"},{"property":"Pixel Pitch","value":"0.0550 mm"},{"property":"Total Pixels","value":"3,013,524 px (3.01 MP)"},{"property":"Aspect Ratio","value":"284:131"},{"property":"Diagonal Pixels","value":"2814.81 px"},{"property":"Density Category","value":"Extra-Extra-High Density (xxhdpi)"},{"property":"Retina Display","value":"Yes — meets the 220 PPI Retina threshold"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/duct-velocity-calculator":{"post":{"operationId":"run_duct_velocity_calculator","summary":"Duct Velocity Calculator","tags":["Calculators"],"description":"Calculate the mean air velocity in a round or rectangular HVAC duct from its airflow (CFM or metric) and cross-section, reported in FPM and m/s and checked against common SMACNA/ASHRAE duct velocity guidelines. A rectangular duct also gets its circular equivalent diameter.\n\n[Try Duct Velocity Calculator in your browser →](https://iotools.cloud/tool/duct-velocity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ductShape":{"enum":["round","rectangular"],"description":"Duct Shape"},"airflow":{"type":"number","description":"Airflow (Q)","minimum":0},"flowUnit":{"enum":["cfm","lps","m3s","m3h"],"description":"Airflow Unit"},"diameter":{"type":"number","description":"Duct Diameter","minimum":0},"width":{"type":"number","description":"Duct Width","minimum":0},"height":{"type":"number","description":"Duct Height","minimum":0},"lengthUnit":{"enum":["in","mm","ft","m"],"description":"Duct Dimension Unit"}},"required":["airflow"]},"examples":{"1000_cfm_in_a_12_in_round_duct":{"summary":"1000 CFM in a 12 in round duct","value":{"ductShape":"round","airflow":"1000","flowUnit":"cfm","diameter":"12","lengthUnit":"in"}},"800_cfm_in_a_14_x_8_in_rectangular_duct":{"summary":"800 CFM in a 14 x 8 in rectangular duct","value":{"ductShape":"rectangular","airflow":"800","flowUnit":"cfm","width":"14","height":"8","lengthUnit":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1000_cfm_in_a_12_in_round_duct":{"summary":"1000 CFM in a 12 in round duct","value":{"tool":"duct-velocity-calculator","tool_version":"1.0.2","outputs":{"status":"1000 CFM through a 12 in round duct gives a velocity of 1273 FPM (6.468 m/s).","result":[{"property":"Velocity","value":"1273 FPM (6.468 m/s)"},{"property":"Airflow","value":"1000 CFM (0.4719 m³/s)"},{"property":"Duct Area","value":"0.07297 m²"},{"property":"Formula","value":"V = Q / A = 0.4719 / 0.07297"}],"guidelineTable":[{"duct-role":"Residential branch supply duct","range-fpm":"500–700 FPM","range-m-s":"2.54–3.56 m/s","this-duct":""},{"duct-role":"Residential main supply duct","range-fpm":"700–900 FPM","range-m-s":"3.56–4.57 m/s","this-duct":""},{"duct-role":"Residential return duct","range-fpm":"600–800 FPM","range-m-s":"3.05–4.06 m/s","this-duct":""},{"duct-role":"Commercial main supply duct (low velocity)","range-fpm":"1000–1500 FPM","range-m-s":"5.08–7.62 m/s","this-duct":"◄ Within range"},{"duct-role":"Commercial main supply duct (high velocity)","range-fpm":"2500–4000 FPM","range-m-s":"12.7–20.32 m/s","this-duct":""},{"duct-role":"Outdoor air intake / louver face","range-fpm":"400–500 FPM","range-m-s":"2.03–2.54 m/s","this-duct":""}]},"credits_used":5,"credits_remaining":null}},"800_cfm_in_a_14_x_8_in_rectangular_duct":{"summary":"800 CFM in a 14 x 8 in rectangular duct","value":{"tool":"duct-velocity-calculator","tool_version":"1.0.2","outputs":{"status":"800 CFM through a 14 x 8 in rectangular duct gives a velocity of 1029 FPM (5.225 m/s).","result":[{"property":"Velocity","value":"1029 FPM (5.225 m/s)"},{"property":"Airflow","value":"800 CFM (0.3776 m³/s)"},{"property":"Duct Area","value":"0.07226 m²"},{"property":"Formula","value":"V = Q / A = 0.3776 / 0.07226"},{"property":"Circular Equivalent Diameter","value":"11.46 in"}],"guidelineTable":[{"duct-role":"Residential branch supply duct","range-fpm":"500–700 FPM","range-m-s":"2.54–3.56 m/s","this-duct":""},{"duct-role":"Residential main supply duct","range-fpm":"700–900 FPM","range-m-s":"3.56–4.57 m/s","this-duct":""},{"duct-role":"Residential return duct","range-fpm":"600–800 FPM","range-m-s":"3.05–4.06 m/s","this-duct":""},{"duct-role":"Commercial main supply duct (low velocity)","range-fpm":"1000–1500 FPM","range-m-s":"5.08–7.62 m/s","this-duct":"◄ Within range"},{"duct-role":"Commercial main supply duct (high velocity)","range-fpm":"2500–4000 FPM","range-m-s":"12.7–20.32 m/s","this-duct":""},{"duct-role":"Outdoor air intake / louver face","range-fpm":"400–500 FPM","range-m-s":"2.03–2.54 m/s","this-duct":""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"guidelineTable":{"type":"array","description":"Duct Velocity Guidelines","items":{"type":"object","properties":{"duct-role":{"type":"string","description":"Duct Role"},"range-fpm":{"type":"string","description":"Range (FPM)"},"range-m-s":{"type":"string","description":"Range (m/s)"},"this-duct":{"type":"string","description":"This Duct"}}},"x-iotools-columns":["duct-role","range-fpm","range-m-s","this-duct"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ebay-fee-calculator":{"post":{"operationId":"run_ebay_fee_calculator","summary":"eBay Fee Calculator","tags":["Calculators"],"description":"Estimate eBay final value, per-order, promoted-listing, and insertion fees from your item price, quantity, and category, then see net profit, margin, and the price you'd need to hit a target margin.\n\n[Try eBay Fee Calculator in your browser →](https://iotools.cloud/tool/ebay-fee-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemPrice":{"type":"number","description":"Item Price ($)","minimum":0,"maximum":10000000},"quantity":{"type":"number","description":"Quantity","minimum":1,"maximum":1000000},"shippingCharged":{"type":"number","description":"Shipping Charged to Buyer ($)","minimum":0,"maximum":10000000},"productCost":{"type":"number","description":"Your Product Cost per Unit ($)","minimum":0,"maximum":10000000},"shippingCostActual":{"type":"number","description":"Your Actual Shipping Cost ($)","minimum":0,"maximum":10000000},"category":{"enum":["most","books_media","clothing","sneakers","jewelry","electronics","guitars","cards","coins_bullion","heavy"],"description":"Category"},"finalValueFeeOverride":{"type":"number","description":"Custom Final Value Fee % (optional)","minimum":0,"maximum":100},"fixedOrderFee":{"type":"number","description":"Per-Order Fee ($)","minimum":0,"maximum":10000},"promotedListingPct":{"type":"number","description":"Promoted Listings Ad Rate (%)","minimum":0,"maximum":100},"insertionFeeEach":{"type":"number","description":"Insertion Fee per Unit ($)","minimum":0,"maximum":10000},"targetMarginPct":{"type":"number","description":"Target Profit Margin (%)","minimum":0,"maximum":99},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["itemPrice","quantity"]},"examples":{"50_dollar_item_1_unit_most_categories_defaults":{"summary":"50-dollar item, 1 unit, most categories, defaults","value":{"itemPrice":"50","quantity":"1","shippingCharged":"5","productCost":"20","shippingCostActual":"4.5","category":"most","fixedOrderFee":"0.4","promotedListingPct":"2","insertionFeeEach":"0","targetMarginPct":"25","currency":"USD"}},"3_sneakers_at_180_dollars_each_sneakers_category":{"summary":"3 sneakers at 180 dollars each, sneakers category","value":{"itemPrice":"180","quantity":"3","shippingCharged":"12","productCost":"90","shippingCostActual":"10","category":"sneakers","fixedOrderFee":"0.4","promotedListingPct":"0","insertionFeeEach":"0.35","targetMarginPct":"20","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"50_dollar_item_1_unit_most_categories_defaults":{"summary":"50-dollar item, 1 unit, most categories, defaults","value":{"tool":"ebay-fee-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Category","value":"Most Categories"},{"metric":"Final Value Fee Rate","value":"13.6%"},{"metric":"Total Item Revenue","value":"$50.00"},{"metric":"Total Revenue (incl. shipping)","value":"$55.00"},{"metric":"Final Value Fee","value":"$7.48"},{"metric":"Per-Order Fee","value":"$0.40"},{"metric":"Promoted Listing Fee","value":"$1.10"},{"metric":"Insertion Fee(s)","value":"$0.00"},{"metric":"Total eBay Fees","value":"$8.98"},{"metric":"Total Costs (product + shipping + fees)","value":"$33.48"},{"metric":"Net Profit","value":"$21.52"},{"metric":"Result","value":"Profit"},{"metric":"Profit Margin","value":"39.1%"},{"metric":"Item Price for 25% Margin","value":"$36.92"}],"comparison":[{"category":"Most Categories (selected)","final-value-fee":"13.6%","final-value-fee-2":"$7.48"},{"category":"Books, Movies & Music","final-value-fee":"14.6%","final-value-fee-2":"$8.03"},{"category":"Clothing, Shoes & Accessories","final-value-fee":"13.6%","final-value-fee-2":"$7.48"},{"category":"Sneakers ($150+)","final-value-fee":"8.0%","final-value-fee-2":"$4.40"},{"category":"Jewelry & Watches","final-value-fee":"15.0%","final-value-fee-2":"$8.25"},{"category":"Consumer Electronics","final-value-fee":"12.3%","final-value-fee-2":"$6.79"},{"category":"Musical Instruments & Gear","final-value-fee":"6.3%","final-value-fee-2":"$3.49"},{"category":"Collectible Trading Cards","final-value-fee":"12.0%","final-value-fee-2":"$6.60"},{"category":"Coins & Paper Money / Bullion","final-value-fee":"7.0%","final-value-fee-2":"$3.85"},{"category":"Business & Industrial (Heavy Equipment)","final-value-fee":"3.0%","final-value-fee-2":"$1.65"}]},"credits_used":5,"credits_remaining":null}},"3_sneakers_at_180_dollars_each_sneakers_category":{"summary":"3 sneakers at 180 dollars each, sneakers category","value":{"tool":"ebay-fee-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Category","value":"Sneakers ($150+)"},{"metric":"Final Value Fee Rate","value":"8.0%"},{"metric":"Total Item Revenue","value":"$540.00"},{"metric":"Total Revenue (incl. shipping)","value":"$552.00"},{"metric":"Final Value Fee","value":"$44.16"},{"metric":"Per-Order Fee","value":"$0.40"},{"metric":"Promoted Listing Fee","value":"$0.00"},{"metric":"Insertion Fee(s)","value":"$1.05"},{"metric":"Total eBay Fees","value":"$45.61"},{"metric":"Total Costs (product + shipping + fees)","value":"$325.61"},{"metric":"Net Profit","value":"$226.39"},{"metric":"Result","value":"Profit"},{"metric":"Profit Margin","value":"41.0%"},{"metric":"Item Price for 20% Margin","value":"$126.30"}],"comparison":[{"category":"Most Categories","final-value-fee":"13.6%","final-value-fee-2":"$75.07"},{"category":"Books, Movies & Music","final-value-fee":"14.6%","final-value-fee-2":"$80.59"},{"category":"Clothing, Shoes & Accessories","final-value-fee":"13.6%","final-value-fee-2":"$75.07"},{"category":"Sneakers ($150+) (selected)","final-value-fee":"8.0%","final-value-fee-2":"$44.16"},{"category":"Jewelry & Watches","final-value-fee":"15.0%","final-value-fee-2":"$82.80"},{"category":"Consumer Electronics","final-value-fee":"12.3%","final-value-fee-2":"$68.17"},{"category":"Musical Instruments & Gear","final-value-fee":"6.3%","final-value-fee-2":"$35.05"},{"category":"Collectible Trading Cards","final-value-fee":"12.0%","final-value-fee-2":"$66.24"},{"category":"Coins & Paper Money / Bullion","final-value-fee":"7.0%","final-value-fee-2":"$38.64"},{"category":"Business & Industrial (Heavy Equipment)","final-value-fee":"3.0%","final-value-fee-2":"$16.56"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"comparison":{"type":"array","description":"Category Fee Comparison","items":{"type":"object","properties":{"category":{"type":"string","description":"Category"},"final-value-fee":{"type":"string","description":"Final Value Fee %"},"final-value-fee-2":{"type":"string","description":"Final Value Fee ($)"}}},"x-iotools-columns":["category","final-value-fee","final-value-fee-2"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/effective-interest-rate-calculator":{"post":{"operationId":"run_effective_interest_rate_calculator","summary":"Effective Interest Rate Calculator","tags":["Calculators"],"description":"Convert a nominal (stated) annual interest rate to its effective annual rate (EAR) for any compounding frequency, from annually to continuously. See exactly how much extra compounding periods add to your real annual return or cost.\n\n[Try Effective Interest Rate Calculator in your browser →](https://iotools.cloud/tool/effective-interest-rate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"nominalRate":{"type":"number","description":"Nominal Annual Interest Rate (%)","minimum":0,"maximum":1000},"compoundingFrequency":{"enum":["1","2","4","12","24","26","52","365","continuous"],"description":"Compounding Frequency"}},"required":["nominalRate"]},"examples":{"6_compounded_monthly":{"summary":"6% compounded monthly","value":{"nominalRate":"6","compoundingFrequency":"12"}},"5_compounded_quarterly":{"summary":"5% compounded quarterly","value":{"nominalRate":"5","compoundingFrequency":"4"}},"8_compounded_continuously":{"summary":"8% compounded continuously","value":{"nominalRate":"8","compoundingFrequency":"continuous"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_compounded_monthly":{"summary":"6% compounded monthly","value":{"tool":"effective-interest-rate-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Annual Rate","value":"6.0%"},{"metric":"Compounding Frequency","value":"Monthly (12x/year)"},{"metric":"Effective Annual Rate (EAR)","value":"6.2%"},{"metric":"Difference (EAR − Nominal)","value":"0.2%"}]},"credits_used":5,"credits_remaining":null}},"5_compounded_quarterly":{"summary":"5% compounded quarterly","value":{"tool":"effective-interest-rate-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Annual Rate","value":"5.0%"},{"metric":"Compounding Frequency","value":"Quarterly (4x/year)"},{"metric":"Effective Annual Rate (EAR)","value":"5.1%"},{"metric":"Difference (EAR − Nominal)","value":"0.1%"}]},"credits_used":5,"credits_remaining":null}},"8_compounded_continuously":{"summary":"8% compounded continuously","value":{"tool":"effective-interest-rate-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Annual Rate","value":"8.0%"},{"metric":"Compounding Frequency","value":"Continuously"},{"metric":"Effective Annual Rate (EAR)","value":"8.3%"},{"metric":"Difference (EAR − Nominal)","value":"0.3%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Effective Rate Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/electricity-cost-calculator":{"post":{"operationId":"run_electricity_cost_calculator","summary":"Electricity Cost Calculator","tags":["Calculators"],"description":"Estimate the running cost of any appliance from its wattage, daily usage hours, and your electricity rate — with daily/weekly/monthly/yearly energy and cost, plus a yearly CO2 estimate.\n\n[Try Electricity Cost Calculator in your browser →](https://iotools.cloud/tool/electricity-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"wattage":{"type":"number","description":"Device Wattage (W)","minimum":0.01},"hoursPerDay":{"type":"number","description":"Hours Per Day","minimum":0.01,"maximum":24},"ratePreset":{"enum":["custom","0.16","0.34","0.25","0.30","0.13","0.08"],"description":"Rate Preset"},"rate":{"type":"number","description":"Rate (per kWh)","minimum":0.001},"quantity":{"type":"number","description":"Number of Devices","minimum":1,"maximum":100}},"required":[]},"examples":{"100w_device_8h_day_0_12_kwh":{"summary":"100W device, 8h/day, $0.12/kWh","value":{"wattage":"100","hoursPerDay":"8","ratePreset":"custom","rate":"0.12","quantity":"1"}},"1500w_space_heater_5h_day_2_units_us_preset":{"summary":"1500W space heater, 5h/day, 2 units, US preset","value":{"wattage":"1500","hoursPerDay":"5","ratePreset":"0.16","rate":"0.12","quantity":"2"}},"10w_bulb_left_on_24_7_0_30_kwh":{"summary":"10W bulb left on 24/7, $0.30/kWh","value":{"wattage":"10","hoursPerDay":"24","ratePreset":"custom","rate":"0.30","quantity":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100w_device_8h_day_0_12_kwh":{"summary":"100W device, 8h/day, $0.12/kWh","value":{"tool":"electricity-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Daily","energy-kwh":"0.80","cost":"$0.10"},{"period":"Weekly","energy-kwh":"5.60","cost":"$0.67"},{"period":"Monthly","energy-kwh":"24.00","cost":"$2.88"},{"period":"Yearly","energy-kwh":"292.00","cost":"$35.04"}],"co2":"121.8 kg CO₂ (0.12 tonnes)"},"credits_used":5,"credits_remaining":null}},"1500w_space_heater_5h_day_2_units_us_preset":{"summary":"1500W space heater, 5h/day, 2 units, US preset","value":{"tool":"electricity-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Daily","energy-kwh":"15.00","cost":"$2.40"},{"period":"Weekly","energy-kwh":"105.00","cost":"$16.80"},{"period":"Monthly","energy-kwh":"450.00","cost":"$72.00"},{"period":"Yearly","energy-kwh":"5475.00","cost":"$876.00"}],"co2":"2283.1 kg CO₂ (2.28 tonnes)"},"credits_used":5,"credits_remaining":null}},"10w_bulb_left_on_24_7_0_30_kwh":{"summary":"10W bulb left on 24/7, $0.30/kWh","value":{"tool":"electricity-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Daily","energy-kwh":"0.24","cost":"$0.07"},{"period":"Weekly","energy-kwh":"1.68","cost":"$0.50"},{"period":"Monthly","energy-kwh":"7.20","cost":"$2.16"},{"period":"Yearly","energy-kwh":"87.60","cost":"$26.28"}],"co2":"36.5 kg CO₂ (0.04 tonnes)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Energy & Cost","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"energy-kwh":{"type":"string","description":"Energy (kWh)"},"cost":{"type":"string","description":"Cost"}}},"x-iotools-columns":["period","energy-kwh","cost"]},"co2":{"type":"string","description":"CO2 Emissions (yearly)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-open-rate-calculator":{"post":{"operationId":"run_email_open_rate_calculator","summary":"Email Open Rate Calculator","tags":["Calculators"],"description":"Calculate email delivery rate and open rate from campaign counts. Enter emails sent, delivered, and opened to get delivery rate, open rate (of delivered and of sent), unopened count, and bounces.\n\n[Try Email Open Rate Calculator in your browser →](https://iotools.cloud/tool/email-open-rate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emailsSent":{"type":"number","description":"Emails Sent","minimum":0},"emailsDelivered":{"type":"number","description":"Emails Delivered","minimum":0},"uniqueOpens":{"type":"number","description":"Unique Opens","minimum":0}},"required":["emailsSent","uniqueOpens"]},"examples":{"10_000_sent_9_600_delivered_2_400_opened":{"summary":"10,000 sent, 9,600 delivered, 2,400 opened","value":{"emailsSent":"10000","emailsDelivered":"9600","uniqueOpens":"2400"}},"no_bounce_tracking_delivered_left_blank_assumes_delivered_sent":{"summary":"No bounce tracking — delivered left blank (assumes delivered = sent)","value":{"emailsSent":"5000","emailsDelivered":"","uniqueOpens":"1250"}},"low_delivery_rate_heavy_bounces":{"summary":"Low delivery rate — heavy bounces","value":{"emailsSent":"20000","emailsDelivered":"14000","uniqueOpens":"3500"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_sent_9_600_delivered_2_400_opened":{"summary":"10,000 sent, 9,600 delivered, 2,400 opened","value":{"tool":"email-open-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Delivery Rate","value":"96.00%"},{"metric":"Open Rate (of Delivered)","value":"25.00%"},{"metric":"Open Rate (of Sent)","value":"24.00%"},{"metric":"Unopened (Delivered but not Opened)","value":"7,200"},{"metric":"Bounced / Undelivered","value":"400"}]},"credits_used":5,"credits_remaining":null}},"no_bounce_tracking_delivered_left_blank_assumes_delivered_sent":{"summary":"No bounce tracking — delivered left blank (assumes delivered = sent)","value":{"tool":"email-open-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Delivery Rate","value":"100.00%"},{"metric":"Open Rate (of Delivered)","value":"25.00%"},{"metric":"Open Rate (of Sent)","value":"25.00%"},{"metric":"Unopened (Delivered but not Opened)","value":"3,750"},{"metric":"Bounced / Undelivered","value":"0"}]},"credits_used":5,"credits_remaining":null}},"low_delivery_rate_heavy_bounces":{"summary":"Low delivery rate — heavy bounces","value":{"tool":"email-open-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Delivery Rate","value":"70.00%"},{"metric":"Open Rate (of Delivered)","value":"25.00%"},{"metric":"Open Rate (of Sent)","value":"17.50%"},{"metric":"Unopened (Delivered but not Opened)","value":"10,500"},{"metric":"Bounced / Undelivered","value":"6,000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/emi-calculator":{"post":{"operationId":"run_emi_calculator","summary":"EMI Calculator","tags":["Calculators"],"description":"Calculate the monthly EMI on a loan, with a full amortization schedule, total interest and total repayment. Compare Reducing Balance vs Flat Rate, model extra or lump-sum prepayments to see interest and time saved, and put two loan offers side by side.\n\n[Try EMI Calculator in your browser →](https://iotools.cloud/tool/emi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"loanAmount":{"type":"number","description":"Loan Amount ($)","minimum":0,"maximum":999999999},"interestRate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0,"maximum":100},"tenure":{"type":"number","description":"Loan Tenure","minimum":1,"maximum":600},"tenureUnit":{"enum":["years","months"],"description":"Tenure Unit"},"calcMethod":{"enum":["reducing","flat"],"description":"Calculation Method"},"extraMonthly":{"type":"number","description":"Monthly Extra Payment ($)","minimum":0,"maximum":999999999},"lumpSum":{"type":"number","description":"One-time Lump Sum ($)","minimum":0,"maximum":999999999},"lumpSumMonth":{"type":"number","description":"Lump Sum at Month #","minimum":1,"maximum":600},"compAAmount":{"type":"number","description":"Loan A Amount ($)","minimum":0,"maximum":999999999},"compARate":{"type":"number","description":"Loan A Rate (%)","minimum":0,"maximum":100},"compATenure":{"type":"number","description":"Loan A Tenure","minimum":1,"maximum":600},"compATenureUnit":{"enum":["years","months"],"description":"Loan A Unit"},"compBAmount":{"type":"number","description":"Loan B Amount ($)","minimum":0,"maximum":999999999},"compBRate":{"type":"number","description":"Loan B Rate (%)","minimum":0,"maximum":100},"compBTenure":{"type":"number","description":"Loan B Tenure","minimum":1,"maximum":600},"compBTenureUnit":{"enum":["years","months"],"description":"Loan B Unit"}},"required":["loanAmount","interestRate","tenure"]},"examples":{"car_loan_12_000_at_9_5_for_12_months":{"summary":"Car loan: $12,000 at 9.5% for 12 months","value":{"loanAmount":"12000","interestRate":"9.5","tenure":"12","tenureUnit":"months","calcMethod":"reducing"}},"same_loan_with_a_200_month_extra_payment":{"summary":"Same loan with a $200/month extra payment","value":{"loanAmount":"12000","interestRate":"9.5","tenure":"12","tenureUnit":"months","calcMethod":"reducing","extraMonthly":"200"}},"compare_two_mortgage_offers_20yr_7_5_vs_15yr_8":{"summary":"Compare two mortgage offers (20yr @ 7.5% vs 15yr @ 8%)","value":{"loanAmount":"12000","interestRate":"9.5","tenure":"12","tenureUnit":"months","calcMethod":"reducing","compAAmount":"250000","compARate":"7.5","compATenure":"20","compATenureUnit":"years","compBAmount":"250000","compBRate":"8","compBTenure":"15","compBTenureUnit":"years"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"car_loan_12_000_at_9_5_for_12_months":{"summary":"Car loan: $12,000 at 9.5% for 12 months","value":{"tool":"emi-calculator","tool_version":"1.0.2","outputs":{"emiSummary":"=== EMI Results ===\n  Monthly EMI:              $1,052.20\n  Total Interest Payable:   $626.43\n  Total Amount Payable:     $12,626.43\n  Principal Amount:         $12,000.00\n  Interest-to-Principal:    0.05 : 1\n\n=== Loan Details ===\n  Loan Amount:              $12,000.00\n  Annual Interest Rate:     9.50%\n  Loan Tenure:              12.00 months (12 months)\n  Calculation Method:       Reducing Balance\n\n=== Formula ===\n  EMI = P x r x (1+r)^n / ((1+r)^n - 1)\n  P = $12,000.00, r = 9.50%/12/100 = 0.007917\n  n = 12 months","amortization":[{"month":"1","emi":"$1,052.20","principal":"$957.20","interest":"$95.00","balance":"$11,042.80"},{"month":"2","emi":"$1,052.20","principal":"$964.78","interest":"$87.42","balance":"$10,078.02"},{"month":"3","emi":"$1,052.20","principal":"$972.42","interest":"$79.78","balance":"$9,105.60"},{"month":"4","emi":"$1,052.20","principal":"$980.12","interest":"$72.09","balance":"$8,125.48"},{"month":"5","emi":"$1,052.20","principal":"$987.88","interest":"$64.33","balance":"$7,137.61"},{"month":"6","emi":"$1,052.20","principal":"$995.70","interest":"$56.51","balance":"$6,141.91"},{"month":"7","emi":"$1,052.20","principal":"$1,003.58","interest":"$48.62","balance":"$5,138.33"},{"month":"8","emi":"$1,052.20","principal":"$1,011.52","interest":"$40.68","balance":"$4,126.81"},{"month":"9","emi":"$1,052.20","principal":"$1,019.53","interest":"$32.67","balance":"$3,107.28"},{"month":"10","emi":"$1,052.20","principal":"$1,027.60","interest":"$24.60","balance":"$2,079.68"},{"month":"11","emi":"$1,052.20","principal":"$1,035.74","interest":"$16.46","balance":"$1,043.94"},{"month":"12","emi":"$1,052.20","principal":"$1,043.94","interest":"$8.26","balance":"$0.00"},{"month":"Year 1 total","emi":"$12,626.43","principal":"$12,000.00","interest":"$626.43","balance":""}],"prepayment":"","comparison":""},"credits_used":5,"credits_remaining":null}},"same_loan_with_a_200_month_extra_payment":{"summary":"Same loan with a $200/month extra payment","value":{"tool":"emi-calculator","tool_version":"1.0.2","outputs":{"emiSummary":"=== EMI Results ===\n  Monthly EMI:              $1,052.20\n  Total Interest Payable:   $626.43\n  Total Amount Payable:     $12,626.43\n  Principal Amount:         $12,000.00\n  Interest-to-Principal:    0.05 : 1\n\n=== Loan Details ===\n  Loan Amount:              $12,000.00\n  Annual Interest Rate:     9.50%\n  Loan Tenure:              12.00 months (12 months)\n  Calculation Method:       Reducing Balance\n\n=== Formula ===\n  EMI = P x r x (1+r)^n / ((1+r)^n - 1)\n  P = $12,000.00, r = 9.50%/12/100 = 0.007917\n  n = 12 months","amortization":[{"month":"1","emi":"$1,052.20","principal":"$957.20","interest":"$95.00","balance":"$11,042.80"},{"month":"2","emi":"$1,052.20","principal":"$964.78","interest":"$87.42","balance":"$10,078.02"},{"month":"3","emi":"$1,052.20","principal":"$972.42","interest":"$79.78","balance":"$9,105.60"},{"month":"4","emi":"$1,052.20","principal":"$980.12","interest":"$72.09","balance":"$8,125.48"},{"month":"5","emi":"$1,052.20","principal":"$987.88","interest":"$64.33","balance":"$7,137.61"},{"month":"6","emi":"$1,052.20","principal":"$995.70","interest":"$56.51","balance":"$6,141.91"},{"month":"7","emi":"$1,052.20","principal":"$1,003.58","interest":"$48.62","balance":"$5,138.33"},{"month":"8","emi":"$1,052.20","principal":"$1,011.52","interest":"$40.68","balance":"$4,126.81"},{"month":"9","emi":"$1,052.20","principal":"$1,019.53","interest":"$32.67","balance":"$3,107.28"},{"month":"10","emi":"$1,052.20","principal":"$1,027.60","interest":"$24.60","balance":"$2,079.68"},{"month":"11","emi":"$1,052.20","principal":"$1,035.74","interest":"$16.46","balance":"$1,043.94"},{"month":"12","emi":"$1,052.20","principal":"$1,043.94","interest":"$8.26","balance":"$0.00"},{"month":"Year 1 total","emi":"$12,626.43","principal":"$12,000.00","interest":"$626.43","balance":""}],"prepayment":"=== Prepayment Analysis ===\n\n                                       Original      With Prepayment\n  ------------------------------------------------------------------\n  Loan Tenure                         12 months            11 months\n  Total Interest                        $626.43              $528.98\n  Total Amount                       $12,626.43           $12,528.98\n\n=== Savings ===\n  Time Saved:              1 months\n  Interest Saved:          $97.45\n  Extra Monthly Payment:   $200.00","comparison":""},"credits_used":5,"credits_remaining":null}},"compare_two_mortgage_offers_20yr_7_5_vs_15yr_8":{"summary":"Compare two mortgage offers (20yr @ 7.5% vs 15yr @ 8%)","value":{"tool":"emi-calculator","tool_version":"1.0.2","outputs":{"emiSummary":"=== EMI Results ===\n  Monthly EMI:              $1,052.20\n  Total Interest Payable:   $626.43\n  Total Amount Payable:     $12,626.43\n  Principal Amount:         $12,000.00\n  Interest-to-Principal:    0.05 : 1\n\n=== Loan Details ===\n  Loan Amount:              $12,000.00\n  Annual Interest Rate:     9.50%\n  Loan Tenure:              12.00 months (12 months)\n  Calculation Method:       Reducing Balance\n\n=== Formula ===\n  EMI = P x r x (1+r)^n / ((1+r)^n - 1)\n  P = $12,000.00, r = 9.50%/12/100 = 0.007917\n  n = 12 months","amortization":[{"month":"1","emi":"$1,052.20","principal":"$957.20","interest":"$95.00","balance":"$11,042.80"},{"month":"2","emi":"$1,052.20","principal":"$964.78","interest":"$87.42","balance":"$10,078.02"},{"month":"3","emi":"$1,052.20","principal":"$972.42","interest":"$79.78","balance":"$9,105.60"},{"month":"4","emi":"$1,052.20","principal":"$980.12","interest":"$72.09","balance":"$8,125.48"},{"month":"5","emi":"$1,052.20","principal":"$987.88","interest":"$64.33","balance":"$7,137.61"},{"month":"6","emi":"$1,052.20","principal":"$995.70","interest":"$56.51","balance":"$6,141.91"},{"month":"7","emi":"$1,052.20","principal":"$1,003.58","interest":"$48.62","balance":"$5,138.33"},{"month":"8","emi":"$1,052.20","principal":"$1,011.52","interest":"$40.68","balance":"$4,126.81"},{"month":"9","emi":"$1,052.20","principal":"$1,019.53","interest":"$32.67","balance":"$3,107.28"},{"month":"10","emi":"$1,052.20","principal":"$1,027.60","interest":"$24.60","balance":"$2,079.68"},{"month":"11","emi":"$1,052.20","principal":"$1,035.74","interest":"$16.46","balance":"$1,043.94"},{"month":"12","emi":"$1,052.20","principal":"$1,043.94","interest":"$8.26","balance":"$0.00"},{"month":"Year 1 total","emi":"$12,626.43","principal":"$12,000.00","interest":"$626.43","balance":""}],"prepayment":"","comparison":"=== Loan Comparison ===\n\n  Metric                             Loan A             Loan B\n  ------------------------------------------------------------\n  Loan Amount                   $250,000.00        $250,000.00\n  Interest Rate                       7.50%              8.00%\n  Tenure                         240 months         180 months\n  Monthly EMI                     $2,013.98          $2,389.13\n  Total Interest                $233,355.92        $180,043.44\n  Total Cost                    $483,355.92        $430,043.44\n\n=== Result ===\n  Lower Total Interest:    Loan B (saves $53,312.48)\n  Lower Monthly EMI:       Loan A (saves $375.15/month)\n  Total Cost Difference:   $53,312.48"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"emiSummary":{"type":"string","description":"EMI Results"},"amortization":{"type":"array","description":"Amortization Schedule","items":{"type":"object","properties":{"month":{"type":"string","description":"Month"},"emi":{"type":"string","description":"EMI"},"principal":{"type":"string","description":"Principal"},"interest":{"type":"string","description":"Interest"},"balance":{"type":"string","description":"Balance"}}},"x-iotools-columns":["month","emi","principal","interest","balance"]},"prepayment":{"type":"string","description":"Prepayment Analysis"},"comparison":{"type":"string","description":"Loan Comparison"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/employee-cost-calculator":{"post":{"operationId":"run_employee_cost_calculator","summary":"Employee Cost Calculator","tags":["Calculators"],"description":"Calculate the true fully-loaded annual cost of an employee — salary plus payroll taxes, benefits, PTO, equipment, training, and recruiting — with the resulting cost per hour and per month.\n\n[Try Employee Cost Calculator in your browser →](https://iotools.cloud/tool/employee-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"annualSalary":{"type":"number","description":"Annual salary ($)","minimum":0},"payrollTaxPercent":{"type":"number","description":"Payroll taxes (% of salary)","minimum":0,"maximum":20},"benefitsCost":{"type":"number","description":"Benefits ($/year)","minimum":0},"ptoCost":{"type":"number","description":"Paid time off ($/year)","minimum":0},"equipmentCost":{"type":"number","description":"Equipment & software ($/year)","minimum":0},"trainingCost":{"type":"number","description":"Training & onboarding ($)","minimum":0},"recruitingCost":{"type":"number","description":"Recruiting ($)","minimum":0}},"required":["annualSalary"]},"examples":{"75_000_salary_default_taxes_9k_benefits_4k_pto_2k_equipment":{"summary":"$75,000 salary, default taxes, $9k benefits, $4k PTO, $2k equipment","value":{"annualSalary":"75000","payrollTaxPercent":"7.65","benefitsCost":"9000","ptoCost":"4000","equipmentCost":"2000","trainingCost":"1500","recruitingCost":"5000"}},"50_000_salary_taxes_only":{"summary":"$50,000 salary, taxes only","value":{"annualSalary":"50000","payrollTaxPercent":"7.65","benefitsCost":"0","ptoCost":"0","equipmentCost":"0","trainingCost":"0","recruitingCost":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"75_000_salary_default_taxes_9k_benefits_4k_pto_2k_equipment":{"summary":"$75,000 salary, default taxes, $9k benefits, $4k PTO, $2k equipment","value":{"tool":"employee-cost-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Base Annual Salary","value":"$75,000.00"},{"metric":"Payroll Taxes (est.)","value":"$5,737.50 (7.65%)"},{"metric":"Benefits","value":"$9,000.00"},{"metric":"Paid Time Off","value":"$4,000.00"},{"metric":"Equipment & Software","value":"$2,000.00"},{"metric":"Training & Onboarding","value":"$1,500.00"},{"metric":"Recruiting","value":"$5,000.00"},{"metric":"Total Annual Cost","value":"$102,237.50"},{"metric":"Load Multiplier","value":"1.36x salary"},{"metric":"Cost per Hour","value":"$49.15 (2,080 hrs/yr)"},{"metric":"Cost per Month","value":"$8,519.79"}]},"credits_used":5,"credits_remaining":null}},"50_000_salary_taxes_only":{"summary":"$50,000 salary, taxes only","value":{"tool":"employee-cost-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Base Annual Salary","value":"$50,000.00"},{"metric":"Payroll Taxes (est.)","value":"$3,825.00 (7.65%)"},{"metric":"Benefits","value":"$0.00"},{"metric":"Paid Time Off","value":"$0.00"},{"metric":"Equipment & Software","value":"$0.00"},{"metric":"Training & Onboarding","value":"$0.00"},{"metric":"Recruiting","value":"$0.00"},{"metric":"Total Annual Cost","value":"$53,825.00"},{"metric":"Load Multiplier","value":"1.08x salary"},{"metric":"Cost per Hour","value":"$25.88 (2,080 hrs/yr)"},{"metric":"Cost per Month","value":"$4,485.42"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/eoq-calculator":{"post":{"operationId":"run_eoq_calculator","summary":"EOQ Calculator","tags":["Calculators"],"description":"Calculate the Economic Order Quantity — the order size that minimizes combined ordering and holding cost — plus orders per year, cycle length, reorder point, and total annual inventory cost.\n\n[Try EOQ Calculator in your browser →](https://iotools.cloud/tool/eoq-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"annualDemand":{"type":"number","description":"Annual Demand (units/year)","minimum":0},"orderingCost":{"type":"number","description":"Ordering Cost per Order ($)","minimum":0},"holdingCost":{"type":"number","description":"Holding Cost per Unit per Year ($)","minimum":0},"leadTimeDays":{"type":"number","description":"Lead Time (days)","minimum":0},"safetyStock":{"type":"number","description":"Safety Stock (units)","minimum":0}},"required":["annualDemand","orderingCost","holdingCost"]},"examples":{"12_000_units_yr_50_order_4_unit_holding":{"summary":"12,000 units/yr, $50/order, $4/unit holding","value":{"annualDemand":"12000","orderingCost":"50","holdingCost":"4","leadTimeDays":"","safetyStock":""}},"with_7_day_lead_time_and_100_unit_safety_stock":{"summary":"With 7-day lead time and 100-unit safety stock","value":{"annualDemand":"12000","orderingCost":"50","holdingCost":"4","leadTimeDays":"7","safetyStock":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12_000_units_yr_50_order_4_unit_holding":{"summary":"12,000 units/yr, $50/order, $4/unit holding","value":{"tool":"eoq-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Economic Order Quantity (units)","value":"547.72"},{"metric":"Orders per Year","value":"21.91"},{"metric":"Cycle Length (days between orders)","value":"16.7"},{"metric":"Annual Ordering Cost","value":"$1,095.45"},{"metric":"Annual Holding Cost","value":"$1,095.45"},{"metric":"Total Annual Inventory Cost","value":"$2,190.89"},{"metric":"Reorder Point (units)","value":"-"}]},"credits_used":5,"credits_remaining":null}},"with_7_day_lead_time_and_100_unit_safety_stock":{"summary":"With 7-day lead time and 100-unit safety stock","value":{"tool":"eoq-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Economic Order Quantity (units)","value":"547.72"},{"metric":"Orders per Year","value":"21.91"},{"metric":"Cycle Length (days between orders)","value":"16.7"},{"metric":"Annual Ordering Cost","value":"$1,095.45"},{"metric":"Annual Holding Cost","value":"$1,095.45"},{"metric":"Total Annual Inventory Cost","value":"$2,190.89"},{"metric":"Reorder Point (units)","value":"330.14"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/equivalent-fractions-calculator":{"post":{"operationId":"run_equivalent_fractions_calculator","summary":"Equivalent Fractions Calculator","tags":["Calculators"],"description":"Generate a list of fractions equal in value to a given fraction, or check whether two fractions are equivalent — with simplified form, decimal/percentage, and a step-by-step derivation.\n\n[Try Equivalent Fractions Calculator in your browser →](https://iotools.cloud/tool/equivalent-fractions-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate","check"],"description":"Mode"},"wholeNumber":{"type":"number","description":"Whole number (optional)"},"numerator":{"type":"number","description":"Numerator"},"denominator":{"type":"number","description":"Denominator"},"count":{"enum":["5","10","15","20","25","30","40","50","75","100"],"description":"How many to generate"},"wholeA":{"type":"number","description":"Fraction A — whole number (optional)"},"numeratorA":{"type":"number","description":"Fraction A — numerator"},"denominatorA":{"type":"number","description":"Fraction A — denominator"},"wholeB":{"type":"number","description":"Fraction B — whole number (optional)"},"numeratorB":{"type":"number","description":"Fraction B — numerator"},"denominatorB":{"type":"number","description":"Fraction B — denominator"}},"required":[]},"examples":{"generate_5_equivalents_of_1_2":{"summary":"Generate 5 equivalents of 1/2","value":{"mode":"generate","wholeNumber":"","numerator":"1","denominator":"2","count":"5"}},"mixed_number_1_1_2_generate_3":{"summary":"Mixed number 1 1/2, generate 3","value":{"mode":"generate","wholeNumber":"1","numerator":"1","denominator":"2","count":"3"}},"check_2_4_vs_1_2_equivalent":{"summary":"Check 2/4 vs 1/2 (equivalent)","value":{"mode":"check","wholeA":"","numeratorA":"2","denominatorA":"4","wholeB":"","numeratorB":"1","denominatorB":"2"}},"check_3_5_vs_2_3_not_equivalent":{"summary":"Check 3/5 vs 2/3 (not equivalent)","value":{"mode":"check","wholeA":"","numeratorA":"3","denominatorA":"5","wholeB":"","numeratorB":"2","denominatorB":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"generate_5_equivalents_of_1_2":{"summary":"Generate 5 equivalents of 1/2","value":{"tool":"equivalent-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Input Fraction","value":"1/2"},{"property":"Simplified Fraction","value":"1/2"},{"property":"Decimal","value":"0.5"},{"property":"Percentage","value":"50%"},{"property":"Equivalent Fractions Generated","value":"5"}],"list":[{"label":"×1","fraction":"1/2","decimal":"0.5"},{"label":"×2","fraction":"2/4","decimal":"0.5"},{"label":"×3","fraction":"3/6","decimal":"0.5"},{"label":"×4","fraction":"4/8","decimal":"0.5"},{"label":"×5","fraction":"5/10","decimal":"0.5"}],"steps":"1/2 × k/k, for k = 1 to 5:\n×1: 1×1/2×1 = 1/2\n×2: 1×2/2×2 = 2/4\n×3: 1×3/2×3 = 3/6\n×4: 1×4/2×4 = 4/8\n×5: 1×5/2×5 = 5/10"},"credits_used":5,"credits_remaining":null}},"mixed_number_1_1_2_generate_3":{"summary":"Mixed number 1 1/2, generate 3","value":{"tool":"equivalent-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Input Fraction","value":"3/2"},{"property":"Simplified Fraction","value":"3/2"},{"property":"Decimal","value":"1.5"},{"property":"Percentage","value":"150%"},{"property":"Equivalent Fractions Generated","value":"3"}],"list":[{"label":"×1","fraction":"3/2","decimal":"1.5"},{"label":"×2","fraction":"6/4","decimal":"1.5"},{"label":"×3","fraction":"9/6","decimal":"1.5"}],"steps":"3/2 × k/k, for k = 1 to 3:\n×1: 3×1/2×1 = 3/2\n×2: 3×2/2×2 = 6/4\n×3: 3×3/2×3 = 9/6"},"credits_used":5,"credits_remaining":null}},"check_2_4_vs_1_2_equivalent":{"summary":"Check 2/4 vs 1/2 (equivalent)","value":{"tool":"equivalent-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction A","value":"2/4"},{"property":"Fraction B","value":"1/2"},{"property":"Simplified A","value":"1/2"},{"property":"Simplified B","value":"1/2"},{"property":"Equivalent?","value":"Yes"}],"list":[{"label":"Fraction A","fraction":"2/4","decimal":"0.5"},{"label":"Fraction B","fraction":"1/2","decimal":"0.5"}],"steps":"Cross-multiplication: a/b ≡ c/d  ⇔  a×d = b×c\n2 × 2 = 4\n1 × 4 = 4\n4 = 4 → the fractions are equivalent."},"credits_used":5,"credits_remaining":null}},"check_3_5_vs_2_3_not_equivalent":{"summary":"Check 3/5 vs 2/3 (not equivalent)","value":{"tool":"equivalent-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction A","value":"3/5"},{"property":"Fraction B","value":"2/3"},{"property":"Simplified A","value":"3/5"},{"property":"Simplified B","value":"2/3"},{"property":"Equivalent?","value":"No"}],"list":[{"label":"Fraction A","fraction":"3/5","decimal":"0.6"},{"label":"Fraction B","fraction":"2/3","decimal":"0.666666666667"}],"steps":"Cross-multiplication: a/b ≡ c/d  ⇔  a×d = b×c\n3 × 3 = 9\n2 × 5 = 10\n9 ≠ 10 → the fractions are NOT equivalent."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"list":{"type":"array","description":"Fractions","items":{"type":"object","properties":{"label":{"type":"string","description":"Label"},"fraction":{"type":"string","description":"Fraction"},"decimal":{"type":"string","description":"Decimal"}}},"x-iotools-columns":["label","fraction","decimal"]},"steps":{"type":"string","description":"Step-by-Step"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/era-calculator":{"post":{"operationId":"run_era_calculator","summary":"ERA Calculator","tags":["Calculators"],"description":"Calculate a pitcher's earned run average from earned runs and innings pitched — ERA = (earned runs ÷ innings pitched) × 9, rounded to two decimal places.\n\n[Try ERA Calculator in your browser →](https://iotools.cloud/tool/era-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"earnedRuns":{"type":"number","description":"Earned runs","minimum":0},"inningsPitched":{"type":"number","description":"Innings pitched","minimum":0.1}},"required":["earnedRuns","inningsPitched"]},"examples":{"season_27_earned_runs_over_90_innings":{"summary":"Season: 27 earned runs over 90 innings","value":{"earnedRuns":"27","inningsPitched":"90"}},"single_game_3_earned_runs_over_9_innings":{"summary":"Single game: 3 earned runs over 9 innings","value":{"earnedRuns":"3","inningsPitched":"9"}},"partial_outing_3_earned_runs_over_7_5_innings":{"summary":"Partial outing: 3 earned runs over 7.5 innings","value":{"earnedRuns":"3","inningsPitched":"7.5"}},"shutout_0_earned_runs_over_7_innings":{"summary":"Shutout: 0 earned runs over 7 innings","value":{"earnedRuns":"0","inningsPitched":"7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"season_27_earned_runs_over_90_innings":{"summary":"Season: 27 earned runs over 90 innings","value":{"tool":"era-calculator","tool_version":"1.0.2","outputs":{"era":"2.70"},"credits_used":5,"credits_remaining":null}},"single_game_3_earned_runs_over_9_innings":{"summary":"Single game: 3 earned runs over 9 innings","value":{"tool":"era-calculator","tool_version":"1.0.2","outputs":{"era":"3.00"},"credits_used":5,"credits_remaining":null}},"partial_outing_3_earned_runs_over_7_5_innings":{"summary":"Partial outing: 3 earned runs over 7.5 innings","value":{"tool":"era-calculator","tool_version":"1.0.2","outputs":{"era":"3.60"},"credits_used":5,"credits_remaining":null}},"shutout_0_earned_runs_over_7_innings":{"summary":"Shutout: 0 earned runs over 7 innings","value":{"tool":"era-calculator","tool_version":"1.0.2","outputs":{"era":"0.00"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"era":{"type":"string","description":"Earned run average (ERA)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/error-function-calculator":{"post":{"operationId":"run_error_function_calculator","summary":"Error Function Calculator","tags":["Calculators"],"description":"Calculate the inverse error function erf⁻¹(y) and inverse complementary error function erfc⁻¹(y) — solve for x given erf(x) = y or erfc(x) = y. Used in probability, statistics and diffusion/heat-transfer physics.\n\n[Try Error Function Calculator in your browser →](https://iotools.cloud/tool/error-function-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["erf","erfc"],"description":"Solve for"},"y":{"type":"number","description":"y"}},"required":["y"]},"examples":{"erf_0":{"summary":"erf⁻¹(0)","value":{"mode":"erf","y":"0"}},"erf_0_5":{"summary":"erf⁻¹(0.5)","value":{"mode":"erf","y":"0.5"}},"erf_0_5_2":{"summary":"erf⁻¹(-0.5)","value":{"mode":"erf","y":"-0.5"}},"erfc_1":{"summary":"erfc⁻¹(1)","value":{"mode":"erfc","y":"1"}},"erfc_0_5":{"summary":"erfc⁻¹(0.5)","value":{"mode":"erfc","y":"0.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"erf_0":{"summary":"erf⁻¹(0)","value":{"tool":"error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf⁻¹(0)","value":"0.00000000"},{"function":"Check: erf(0.00000000)","value":"0.00000000"}]},"credits_used":5,"credits_remaining":null}},"erf_0_5":{"summary":"erf⁻¹(0.5)","value":{"tool":"error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf⁻¹(0.5)","value":"0.47693628"},{"function":"Check: erf(0.47693628)","value":"0.50000013"}]},"credits_used":5,"credits_remaining":null}},"erf_0_5_2":{"summary":"erf⁻¹(-0.5)","value":{"tool":"error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erf⁻¹(-0.5)","value":"-0.47693628"},{"function":"Check: erf(-0.47693628)","value":"-0.50000013"}]},"credits_used":5,"credits_remaining":null}},"erfc_1":{"summary":"erfc⁻¹(1)","value":{"tool":"error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erfc⁻¹(1)","value":"0.00000000"},{"function":"Check: erfc(0.00000000)","value":"1.00000000"}]},"credits_used":5,"credits_remaining":null}},"erfc_0_5":{"summary":"erfc⁻¹(0.5)","value":{"tool":"error-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"erfc⁻¹(0.5)","value":"0.47693628"},{"function":"Check: erfc(0.47693628)","value":"0.49999987"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"function":{"type":"string","description":"Function"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["function","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/eta-calculator":{"post":{"operationId":"run_eta_calculator","summary":"ETA Calculator","tags":["Calculators"],"description":"Estimate when a batch of repetitive work will finish. Give a start time, how many units there are, and how long one unit takes — then optionally add break time, a buffer percentage, and constrain the estimate to working hours (9am-5pm) or exclude weekends.\n\n[Try ETA Calculator in your browser →](https://iotools.cloud/tool/eta-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startTime":{"type":"string","description":"Start time"},"totalUnits":{"type":"number","description":"Total units","minimum":1},"perNumber":{"type":"number","description":"A unit finished every","minimum":1},"perUnit":{"enum":["ms","s","m","h","d","w","mo","y"],"description":"Pace unit"},"breakTime":{"type":"number","description":"Break time","minimum":0},"breakTimeUnit":{"enum":["ms","s","m","h","d","w","mo","y"],"description":"Break time unit"},"bufferTimePercentage":{"type":"number","description":"Buffer time %","minimum":0},"workingHoursOnly":{"type":"boolean","description":"Working hours only (9am-5pm)"},"excludeWeekends":{"type":"boolean","description":"Exclude weekends (Sat & Sun)"}},"required":["startTime","totalUnits","perNumber"]},"examples":{"100_tasks_3_minutes_each":{"summary":"100 tasks, 3 minutes each","value":{"startTime":"2026-07-13T09:00","totalUnits":"100","perNumber":"3","perUnit":"m","breakTime":"0","breakTimeUnit":"m","bufferTimePercentage":"0","workingHoursOnly":"","excludeWeekends":""}},"with_a_break_and_a_10_buffer":{"summary":"With a break and a 10% buffer","value":{"startTime":"2026-07-13T09:00","totalUnits":"10","perNumber":"5","perUnit":"m","breakTime":"30","breakTimeUnit":"m","bufferTimePercentage":"10","workingHoursOnly":"","excludeWeekends":""}},"working_hours_only_9am_5pm":{"summary":"Working hours only (9am-5pm)","value":{"startTime":"2026-07-13T15:00","totalUnits":"100","perNumber":"6","perUnit":"m","breakTime":"0","breakTimeUnit":"m","bufferTimePercentage":"0","workingHoursOnly":"true","excludeWeekends":""}},"exclude_weekends":{"summary":"Exclude weekends","value":{"startTime":"2026-07-17T12:00","totalUnits":"3","perNumber":"8","perUnit":"h","breakTime":"0","breakTimeUnit":"m","bufferTimePercentage":"0","workingHoursOnly":"","excludeWeekends":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_tasks_3_minutes_each":{"summary":"100 tasks, 3 minutes each","value":{"tool":"eta-calculator","tool_version":"1.0.2","outputs":{"finishTime":"Monday, July 13, 2026 at 2:00 PM","totalDuration":"5 hours"},"credits_used":5,"credits_remaining":null}},"with_a_break_and_a_10_buffer":{"summary":"With a break and a 10% buffer","value":{"tool":"eta-calculator","tool_version":"1.0.2","outputs":{"finishTime":"Monday, July 13, 2026 at 10:28 AM","totalDuration":"1 hour 28 minutes"},"credits_used":5,"credits_remaining":null}},"working_hours_only_9am_5pm":{"summary":"Working hours only (9am-5pm)","value":{"tool":"eta-calculator","tool_version":"1.0.2","outputs":{"finishTime":"Tuesday, July 14, 2026 at 5:00 PM","totalDuration":"10 hours"},"credits_used":5,"credits_remaining":null}},"exclude_weekends":{"summary":"Exclude weekends","value":{"tool":"eta-calculator","tool_version":"1.0.2","outputs":{"finishTime":"Monday, July 20, 2026 at 12:00 PM","totalDuration":"1 day"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"finishTime":{"type":"string","description":"Estimated finish time"},"totalDuration":{"type":"string","description":"Total working duration"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ev-charging-cost-calculator":{"post":{"operationId":"run_ev_charging_cost_calculator","summary":"EV Charging Cost Calculator","tags":["Calculators"],"description":"Estimate what it costs to charge an electric vehicle from your battery size, start/target charge, and electricity rate — with a home vs public cost comparison, cost per mile/km, a monthly estimate, and Level 1/Level 2/DC-fast charging times.\n\n[Try EV Charging Cost Calculator in your browser →](https://iotools.cloud/tool/ev-charging-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"batteryCapacity":{"type":"number","description":"Battery Capacity (kWh)","minimum":1,"maximum":300},"startPercent":{"type":"number","description":"Start Charge (%)","minimum":0,"maximum":100},"targetPercent":{"type":"number","description":"Target Charge (%)","minimum":0,"maximum":100},"ratePreset":{"enum":["custom","0.16","0.34","0.25","0.30","0.13","0.10"],"description":"Rate Preset"},"homeRate":{"type":"number","description":"Home Rate ($/kWh)","minimum":0.001},"publicRate":{"type":"number","description":"Public Rate ($/kWh)","minimum":0},"efficiency":{"type":"number","description":"Vehicle Efficiency","minimum":0.1},"distanceUnit":{"enum":["km","mi"],"description":"Distance Unit"},"dailyDistance":{"type":"number","description":"Avg Daily Distance","minimum":0}},"required":[]},"examples":{"75_kwh_20_80_home_vs_public_50_km_day":{"summary":"75 kWh, 20→80%, home vs public, 50 km/day","value":{"batteryCapacity":"75","startPercent":"20","targetPercent":"80","ratePreset":"custom","homeRate":"0.16","publicRate":"0.45","efficiency":"6","distanceUnit":"km","dailyDistance":"50"}},"miles_eu_preset_no_public_rate_10_100":{"summary":"Miles + EU preset, no public rate (10→100%)","value":{"batteryCapacity":"60","startPercent":"10","targetPercent":"100","ratePreset":"0.25","homeRate":"0.16","publicRate":"","efficiency":"4","distanceUnit":"mi","dailyDistance":"30"}},"no_daily_distance_monthly_estimate_skipped":{"summary":"No daily distance (monthly estimate skipped)","value":{"batteryCapacity":"82","startPercent":"30","targetPercent":"90","ratePreset":"custom","homeRate":"0.34","publicRate":"0.55","efficiency":"5","distanceUnit":"km","dailyDistance":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"75_kwh_20_80_home_vs_public_50_km_day":{"summary":"75 kWh, 20→80%, home vs public, 50 km/day","value":{"tool":"ev-charging-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Energy Needed","home-charging":"45.00 kWh","public-charging":"45.00 kWh"},{"metric":"Total Cost","home-charging":"$7.20","public-charging":"$20.25"},{"metric":"Cost per km","home-charging":"$0.027","public-charging":"$0.075"},{"metric":"Monthly Cost (1500 km/mo)","home-charging":"$40.00","public-charging":"$112.50"}],"chargeTimeTable":[{"charger-type":"Level 1 (Standard Outlet)","power":"1.4 kW","est-time":"32 h 9 min"},{"charger-type":"Level 2 (Home / Public AC)","power":"7 kW","est-time":"6 h 26 min"},{"charger-type":"DC Fast Charging","power":"50 kW","est-time":"1 h 17 min"}]},"credits_used":5,"credits_remaining":null}},"miles_eu_preset_no_public_rate_10_100":{"summary":"Miles + EU preset, no public rate (10→100%)","value":{"tool":"ev-charging-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Energy Needed","home-charging":"54.00 kWh","public-charging":"54.00 kWh"},{"metric":"Total Cost","home-charging":"$13.50","public-charging":"-"},{"metric":"Cost per mile","home-charging":"$0.063","public-charging":"-"},{"metric":"Monthly Cost (900 mile/mo)","home-charging":"$56.25","public-charging":"-"}],"chargeTimeTable":[{"charger-type":"Level 1 (Standard Outlet)","power":"1.4 kW","est-time":"38 h 34 min"},{"charger-type":"Level 2 (Home / Public AC)","power":"7 kW","est-time":"7 h 43 min"},{"charger-type":"DC Fast Charging","power":"50 kW","est-time":"1 h 33 min"}]},"credits_used":5,"credits_remaining":null}},"no_daily_distance_monthly_estimate_skipped":{"summary":"No daily distance (monthly estimate skipped)","value":{"tool":"ev-charging-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Energy Needed","home-charging":"49.20 kWh","public-charging":"49.20 kWh"},{"metric":"Total Cost","home-charging":"$16.73","public-charging":"$27.06"},{"metric":"Cost per km","home-charging":"$0.068","public-charging":"$0.110"},{"metric":"Monthly Cost (enter daily distance)","home-charging":"-","public-charging":"-"}],"chargeTimeTable":[{"charger-type":"Level 1 (Standard Outlet)","power":"1.4 kW","est-time":"35 h 9 min"},{"charger-type":"Level 2 (Home / Public AC)","power":"7 kW","est-time":"7 h 2 min"},{"charger-type":"DC Fast Charging","power":"50 kW","est-time":"1 h 24 min"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summaryTable":{"type":"array","description":"Cost Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"home-charging":{"type":"string","description":"Home Charging"},"public-charging":{"type":"string","description":"Public Charging"}}},"x-iotools-columns":["metric","home-charging","public-charging"]},"chargeTimeTable":{"type":"array","description":"Estimated Charging Time","items":{"type":"object","properties":{"charger-type":{"type":"string","description":"Charger Type"},"power":{"type":"string","description":"Power"},"est-time":{"type":"string","description":"Est. Time"}}},"x-iotools-columns":["charger-type","power","est-time"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ev-range-estimator":{"post":{"operationId":"run_ev_range_estimator","summary":"EV Range Estimator","tags":["Calculators"],"description":"Estimate an electric vehicle's driving range from battery size, usable capacity, and efficiency — adjusted for cold/hot weather derating and city vs highway driving, with a remaining-range readout at your current charge level.\n\n[Try EV Range Estimator in your browser →](https://iotools.cloud/tool/ev-range-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"batteryCapacity":{"type":"number","description":"Battery Capacity (kWh)","minimum":1,"maximum":300},"usablePercent":{"type":"number","description":"Usable Battery (%)","minimum":50,"maximum":100},"modelPreset":{"enum":["custom","tesla-model-3-lr","tesla-model-y-lr","tesla-model-s","nissan-leaf-62","chevrolet-bolt-ev","hyundai-ioniq-5","kia-ev6","ford-mustang-mach-e","bmw-i4-edrive40","vw-id4"],"description":"Vehicle Model"},"efficiency":{"type":"number","description":"Efficiency (Wh per unit)","minimum":1},"distanceUnit":{"enum":["km","mi"],"description":"Distance Unit"},"temperature":{"type":"number","description":"Outdoor Temperature (°F)","minimum":-10,"maximum":110},"drivingStyle":{"enum":["city","mixed","highway"],"description":"Driving Style"},"batteryRemainingPercent":{"type":"number","description":"Current Battery (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"75_kwh_custom_ev_mild_weather_mixed_driving":{"summary":"75 kWh custom EV, mild weather, mixed driving","value":{"batteryCapacity":"75","usablePercent":"95","modelPreset":"custom","efficiency":"150","distanceUnit":"km","temperature":"70","drivingStyle":"mixed","batteryRemainingPercent":"60"}},"tesla_model_3_lr_cold_weather_highway_miles":{"summary":"Tesla Model 3 LR, cold weather, highway (miles)","value":{"batteryCapacity":"75","usablePercent":"100","modelPreset":"tesla-model-3-lr","efficiency":"150","distanceUnit":"mi","temperature":"14","drivingStyle":"highway","batteryRemainingPercent":""}},"hot_weather_city_driving":{"summary":"Hot weather, city driving","value":{"batteryCapacity":"62","usablePercent":"90","modelPreset":"nissan-leaf-62","efficiency":"150","distanceUnit":"km","temperature":"95","drivingStyle":"city","batteryRemainingPercent":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"75_kwh_custom_ev_mild_weather_mixed_driving":{"summary":"75 kWh custom EV, mild weather, mixed driving","value":{"tool":"ev-range-estimator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Usable Battery","value":"71.3 kWh"},{"metric":"Efficiency (Wh/km)","value":"150 Wh/km"},{"metric":"Ideal Range (no derating)","value":"475 km"},{"metric":"Adjusted Range (temp + driving)","value":"475 km"},{"metric":"Remaining Range (at 60% battery)","value":"285 km"}],"factorsTable":[{"factor":"Temperature","impact-on-range":"+0% at 70°F"},{"factor":"Driving Style","impact-on-range":"+0% (Mixed)"}]},"credits_used":5,"credits_remaining":null}},"tesla_model_3_lr_cold_weather_highway_miles":{"summary":"Tesla Model 3 LR, cold weather, highway (miles)","value":{"tool":"ev-range-estimator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Usable Battery","value":"75.0 kWh"},{"metric":"Efficiency (Wh/mi)","value":"225 Wh/mi"},{"metric":"Ideal Range (no derating)","value":"333 mi"},{"metric":"Adjusted Range (temp + driving)","value":"212 mi"},{"metric":"Remaining Range (enter current battery %)","value":"-"}],"factorsTable":[{"factor":"Temperature","impact-on-range":"-25% at 14°F"},{"factor":"Driving Style","impact-on-range":"-15% (Highway)"}]},"credits_used":5,"credits_remaining":null}},"hot_weather_city_driving":{"summary":"Hot weather, city driving","value":{"tool":"ev-range-estimator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Usable Battery","value":"55.8 kWh"},{"metric":"Efficiency (Wh/km)","value":"170 Wh/km"},{"metric":"Ideal Range (no derating)","value":"328 km"},{"metric":"Adjusted Range (temp + driving)","value":"340 km"},{"metric":"Remaining Range (at 100% battery)","value":"340 km"}],"factorsTable":[{"factor":"Temperature","impact-on-range":"-10% at 95°F"},{"factor":"Driving Style","impact-on-range":"+15% (City)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summaryTable":{"type":"array","description":"Range Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"factorsTable":{"type":"array","description":"Adjustment Factors","items":{"type":"object","properties":{"factor":{"type":"string","description":"Factor"},"impact-on-range":{"type":"string","description":"Impact on Range"}}},"x-iotools-columns":["factor","impact-on-range"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/even-or-odd-number-checker":{"post":{"operationId":"run_even_or_odd_number_checker","summary":"Even or Odd Number Checker","tags":["Calculators"],"description":"Check whether one or more whole numbers are even or odd. Enter one or more integers, separated by commas, spaces, or new lines, and see each number's parity and the division by 2 that proves it.\n\n[Try Even or Odd Number Checker in your browser →](https://iotools.cloud/tool/even-or-odd-number-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"numbers":{"type":"string","description":"Numbers"}},"required":[]},"examples":{"a_single_even_number":{"summary":"A single even number","value":{"numbers":"10"}},"a_mixed_list_including_a_negative_and_zero":{"summary":"A mixed list including a negative and zero","value":{"numbers":"2, 7, -4, 0, 15"}},"a_negative_odd_number":{"summary":"A negative odd number","value":{"numbers":"-7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_single_even_number":{"summary":"A single even number","value":{"tool":"even-or-odd-number-checker","tool_version":"1.0.2","outputs":{"result":[{"number":"10","parity":"Even","divided-by-2":"10 ÷ 2 = 5"}]},"credits_used":5,"credits_remaining":null}},"a_mixed_list_including_a_negative_and_zero":{"summary":"A mixed list including a negative and zero","value":{"tool":"even-or-odd-number-checker","tool_version":"1.0.2","outputs":{"result":[{"number":"2","parity":"Even","divided-by-2":"2 ÷ 2 = 1"},{"number":"7","parity":"Odd","divided-by-2":"7 ÷ 2 = 3 remainder 1"},{"number":"-4","parity":"Even","divided-by-2":"-4 ÷ 2 = -2"},{"number":"0","parity":"Even","divided-by-2":"0 ÷ 2 = 0"},{"number":"15","parity":"Odd","divided-by-2":"15 ÷ 2 = 7 remainder 1"}]},"credits_used":5,"credits_remaining":null}},"a_negative_odd_number":{"summary":"A negative odd number","value":{"tool":"even-or-odd-number-checker","tool_version":"1.0.2","outputs":{"result":[{"number":"-7","parity":"Odd","divided-by-2":"-7 ÷ 2 = -4 remainder 1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"number":{"type":"string","description":"Number"},"parity":{"type":"string","description":"Parity"},"divided-by-2":{"type":"string","description":"Divided by 2"}}},"x-iotools-columns":["number","parity","divided-by-2"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/exponential-growth-calculator":{"post":{"operationId":"run_exponential_growth_calculator","summary":"Exponential Growth Calculator","tags":["Calculators"],"description":"Solve continuous exponential growth (or decay) equations — P(t) = P₀ · e^(rt) — for the final amount, initial amount, growth rate, or time elapsed, with a doubling-time/half-life figure and a full step-by-step derivation.\n\n[Try Exponential Growth Calculator in your browser →](https://iotools.cloud/tool/exponential-growth-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["final","initial","rate","time"],"description":"Solve For"},"initialAmount":{"type":"number","description":"Initial Amount (P₀)"},"finalAmount":{"type":"number","description":"Final Amount (P(t))"},"rateInput":{"enum":["rate","halfLife"],"description":"Enter Rate As"},"growthRate":{"type":"number","description":"Growth Rate (% per period, continuous)"},"halfLifeValue":{"type":"number","description":"Half-Life (periods)","minimum":0},"timeValue":{"type":"number","description":"Time Elapsed (periods)"}},"required":[]},"examples":{"solve_final_amount_1_000_at_5_for_10_periods":{"summary":"Solve final amount ($1,000 at 5% for 10 periods)","value":{"solveFor":"final","initialAmount":"1000","growthRate":"5","timeValue":"10"}},"solve_initial_amount":{"summary":"Solve initial amount","value":{"solveFor":"initial","finalAmount":"1648.72","growthRate":"5","timeValue":"10"}},"solve_growth_rate":{"summary":"Solve growth rate","value":{"solveFor":"rate","initialAmount":"1000","finalAmount":"1648.72","timeValue":"10"}},"solve_time_elapsed":{"summary":"Solve time elapsed","value":{"solveFor":"time","initialAmount":"1000","finalAmount":"1648.72","growthRate":"5"}},"continuous_decay_negative_rate":{"summary":"Continuous decay (negative rate)","value":{"solveFor":"final","initialAmount":"500","growthRate":"-3","timeValue":"20"}},"decay_entered_as_a_half_life_2_half_lives_elapsed":{"summary":"Decay entered as a half-life (2 half-lives elapsed)","value":{"solveFor":"final","initialAmount":"100","rateInput":"halfLife","halfLifeValue":"10","timeValue":"20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_final_amount_1_000_at_5_for_10_periods":{"summary":"Solve final amount ($1,000 at 5% for 10 periods)","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Final Amount"},{"metric":"Initial Amount (P₀)","value":"1000"},{"metric":"Final Amount (P(t))","value":"1648.72"},{"metric":"Growth Rate (r)","value":"5%"},{"metric":"Time Elapsed (t)","value":"10"},{"metric":"Growth Type","value":"Growth"},{"metric":"Doubling Time","value":"13.8629"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nP(t) = 1000 · e^(0.05 × 10) = 1000 · e^0.5 = 1648.72"},"credits_used":5,"credits_remaining":null}},"solve_initial_amount":{"summary":"Solve initial amount","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Initial Amount"},{"metric":"Initial Amount (P₀)","value":"999.999"},{"metric":"Final Amount (P(t))","value":"1648.72"},{"metric":"Growth Rate (r)","value":"5%"},{"metric":"Time Elapsed (t)","value":"10"},{"metric":"Growth Type","value":"Growth"},{"metric":"Doubling Time","value":"13.8629"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nP₀ = P(t) · e^(−rt) = 1648.72 · e^(−0.05 × 10) = 1648.72 · e^-0.5 = 999.999"},"credits_used":5,"credits_remaining":null}},"solve_growth_rate":{"summary":"Solve growth rate","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Growth Rate"},{"metric":"Initial Amount (P₀)","value":"1000"},{"metric":"Final Amount (P(t))","value":"1648.72"},{"metric":"Growth Rate (r)","value":"4.99999%"},{"metric":"Time Elapsed (t)","value":"10"},{"metric":"Growth Type","value":"Growth"},{"metric":"Doubling Time","value":"13.863"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nr = ln(P(t) / P₀) / t = ln(1648.72 / 1000) / 10 = ln(1.64872) / 10 = 0.0499999"},"credits_used":5,"credits_remaining":null}},"solve_time_elapsed":{"summary":"Solve time elapsed","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Time Elapsed"},{"metric":"Initial Amount (P₀)","value":"1000"},{"metric":"Final Amount (P(t))","value":"1648.72"},{"metric":"Growth Rate (r)","value":"5%"},{"metric":"Time Elapsed (t)","value":"9.99998"},{"metric":"Growth Type","value":"Growth"},{"metric":"Doubling Time","value":"13.8629"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nt = ln(P(t) / P₀) / r = ln(1648.72 / 1000) / 0.05 = ln(1.64872) / 0.05 = 9.99998"},"credits_used":5,"credits_remaining":null}},"continuous_decay_negative_rate":{"summary":"Continuous decay (negative rate)","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Final Amount"},{"metric":"Initial Amount (P₀)","value":"500"},{"metric":"Final Amount (P(t))","value":"274.406"},{"metric":"Growth Rate (r)","value":"-3%"},{"metric":"Time Elapsed (t)","value":"20"},{"metric":"Growth Type","value":"Decay"},{"metric":"Half-Life","value":"23.1049"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nP(t) = 500 · e^(-0.03 × 20) = 500 · e^-0.6 = 274.406"},"credits_used":5,"credits_remaining":null}},"decay_entered_as_a_half_life_2_half_lives_elapsed":{"summary":"Decay entered as a half-life (2 half-lives elapsed)","value":{"tool":"exponential-growth-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Final Amount"},{"metric":"Initial Amount (P₀)","value":"100"},{"metric":"Final Amount (P(t))","value":"25"},{"metric":"Growth Rate (r)","value":"-6.93147%"},{"metric":"Time Elapsed (t)","value":"20"},{"metric":"Growth Type","value":"Decay"},{"metric":"Half-Life","value":"10"}],"steps":"Formula: P(t) = P₀ · e^(rt)\nP(t) = 100 · e^(-0.0693147 × 20) = 100 · e^-1.38629 = 25"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/factor-of-safety-calculator":{"post":{"operationId":"run_factor_of_safety_calculator","summary":"Factor of Safety Calculator","tags":["Calculators"],"description":"Calculate the factor of safety (material strength divided by working stress) for a preliminary mechanical or structural check — with an optional comparison against the typical minimum FOS ranges engineers use for common applications.\n\n[Try Factor of Safety Calculator in your browser →](https://iotools.cloud/tool/factor-of-safety-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"strength":{"type":"number","description":"Strength (capacity)","minimum":0},"workingStress":{"type":"number","description":"Working stress (demand)","minimum":0},"application":{"enum":["not-sure","general-mechanical","machine-dynamic","aerospace","pressure-vessels","structural-steel","lifting-rigging"],"description":"Application (optional)"}},"required":["strength","workingStress"]},"examples":{"steel_bracket_general_mechanical_design":{"summary":"Steel bracket, general mechanical design","value":{"strength":"250","workingStress":"100","application":"general-mechanical"}},"lifting_sling_no_application_comparison":{"summary":"Lifting sling, no application comparison","value":{"strength":"80","workingStress":"120","application":"not-sure"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"steel_bracket_general_mechanical_design":{"summary":"Steel bracket, general mechanical design","value":{"tool":"factor-of-safety-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Factor of Safety","value":"2.500"},{"metric":"Verdict","value":"Capacity exceeds demand (FOS > 1) — the required margin still depends on your code and application."},{"metric":"Compared to General mechanical design (static load)","value":"Within the typical 1.500–2.500 range for general mechanical design (static load)."},{"metric":"Note","value":"A broad guide only, not a code requirement — verify against your governing design standard. Don't mix ultimate capacity with service demand, or compare factored and unfactored values."}]},"credits_used":5,"credits_remaining":null}},"lifting_sling_no_application_comparison":{"summary":"Lifting sling, no application comparison","value":{"tool":"factor-of-safety-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Factor of Safety","value":"0.6667"},{"metric":"Verdict","value":"Demand exceeds capacity (FOS < 1) — unsafe as specified."},{"metric":"Note","value":"A broad guide only, not a code requirement — verify against your governing design standard. Don't mix ultimate capacity with service demand, or compare factored and unfactored values."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fibonacci-retracement-calculator":{"post":{"operationId":"run_fibonacci_retracement_calculator","summary":"Fibonacci Retracement Calculator","tags":["Calculators"],"description":"Calculate Fibonacci retracement and extension price levels from a swing high and swing low — the standard 23.6%, 38.2%, 50%, 61.8% and 78.6% pullbacks plus 127.2%, 161.8%, 200% and 261.8% extension targets, for uptrends and downtrends.\n\n[Try Fibonacci Retracement Calculator in your browser →](https://iotools.cloud/tool/fibonacci-retracement-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"swingHigh":{"type":"number","description":"Swing high"},"swingLow":{"type":"number","description":"Swing low"},"trend":{"enum":["up","down"],"description":"Trend direction"},"decimals":{"enum":["2","4","5","8"],"description":"Price decimals"}},"required":["swingHigh","swingLow"]},"examples":{"uptrend_100_150":{"summary":"Uptrend 100 → 150","value":{"swingHigh":"150","swingLow":"100","trend":"up","decimals":"2"}},"downtrend_150_100":{"summary":"Downtrend 150 → 100","value":{"swingHigh":"150","swingLow":"100","trend":"down","decimals":"2"}},"crypto_uptrend_2_decimals":{"summary":"Crypto uptrend, 2 decimals","value":{"swingHigh":"69000","swingLow":"15500","trend":"up","decimals":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"uptrend_100_150":{"summary":"Uptrend 100 → 150","value":{"tool":"fibonacci-retracement-calculator","tool_version":"1.0.2","outputs":{"summary":"Uptrend · Range 50.00 (High 150.00 - Low 100.00). Key 61.8% level at 119.10.","retracement":[{"level":"0%","price":"150.00","notes":"Swing high"},{"level":"23.6%","price":"138.20","notes":"Shallow"},{"level":"38.2%","price":"130.90","notes":"Common pullback"},{"level":"50%","price":"125.00","notes":"Halfway (psychological)"},{"level":"61.8%","price":"119.10","notes":"Golden ratio"},{"level":"78.6%","price":"110.70","notes":"Deep pullback"},{"level":"100%","price":"100.00","notes":"Swing low"}],"extension":[{"level":"127.2%","price":"163.60","notes":"Target 1"},{"level":"161.8%","price":"180.90","notes":"Golden extension"},{"level":"200%","price":"200.00","notes":"Target 2"},{"level":"261.8%","price":"230.90","notes":"Extended target"}]},"credits_used":5,"credits_remaining":null}},"downtrend_150_100":{"summary":"Downtrend 150 → 100","value":{"tool":"fibonacci-retracement-calculator","tool_version":"1.0.2","outputs":{"summary":"Downtrend · Range 50.00 (High 150.00 - Low 100.00). Key 61.8% level at 130.90.","retracement":[{"level":"0%","price":"100.00","notes":"Swing low"},{"level":"23.6%","price":"111.80","notes":"Shallow"},{"level":"38.2%","price":"119.10","notes":"Common bounce"},{"level":"50%","price":"125.00","notes":"Halfway (psychological)"},{"level":"61.8%","price":"130.90","notes":"Golden ratio"},{"level":"78.6%","price":"139.30","notes":"Deep bounce"},{"level":"100%","price":"150.00","notes":"Swing high"}],"extension":[{"level":"127.2%","price":"86.40","notes":"Target 1"},{"level":"161.8%","price":"69.10","notes":"Golden extension"},{"level":"200%","price":"50.00","notes":"Target 2"},{"level":"261.8%","price":"19.10","notes":"Extended target"}]},"credits_used":5,"credits_remaining":null}},"crypto_uptrend_2_decimals":{"summary":"Crypto uptrend, 2 decimals","value":{"tool":"fibonacci-retracement-calculator","tool_version":"1.0.2","outputs":{"summary":"Uptrend · Range 53,500.00 (High 69,000.00 - Low 15,500.00). Key 61.8% level at 35,937.00.","retracement":[{"level":"0%","price":"69,000.00","notes":"Swing high"},{"level":"23.6%","price":"56,374.00","notes":"Shallow"},{"level":"38.2%","price":"48,563.00","notes":"Common pullback"},{"level":"50%","price":"42,250.00","notes":"Halfway (psychological)"},{"level":"61.8%","price":"35,937.00","notes":"Golden ratio"},{"level":"78.6%","price":"26,949.00","notes":"Deep pullback"},{"level":"100%","price":"15,500.00","notes":"Swing low"}],"extension":[{"level":"127.2%","price":"83,552.00","notes":"Target 1"},{"level":"161.8%","price":"102,063.00","notes":"Golden extension"},{"level":"200%","price":"122,500.00","notes":"Target 2"},{"level":"261.8%","price":"155,563.00","notes":"Extended target"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"retracement":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"price":{"type":"string","description":"Price"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["level","price","notes"]},"extension":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"price":{"type":"string","description":"Price"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["level","price","notes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fire-calculator":{"post":{"operationId":"run_fire_calculator","summary":"FIRE Calculator","tags":["Calculators"],"description":"Calculate your Financial Independence / Retire Early (FIRE) number, how many years until you reach it, your savings rate, and Lean/Fat/Coast FIRE reference targets.\n\n[Try FIRE Calculator in your browser →](https://iotools.cloud/tool/fire-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentAge":{"type":"number","description":"Current Age","minimum":1,"maximum":100},"annualIncome":{"type":"number","description":"Annual Income (after tax, $)","minimum":0},"annualExpenses":{"type":"number","description":"Annual Expenses ($)","minimum":0},"currentSavings":{"type":"number","description":"Current Savings ($)","minimum":0},"annualReturn":{"type":"number","description":"Expected Real Return (%)","minimum":-10,"maximum":30},"swr":{"enum":["3.5","4","4.5"],"description":"Safe Withdrawal Rate"}},"required":["currentAge","annualIncome","annualExpenses","currentSavings"]},"examples":{"age_30_80k_income_40k_expenses_4_swr":{"summary":"Age 30, $80k income, $40k expenses, 4% SWR","value":{"currentAge":"30","annualIncome":"80000","annualExpenses":"40000","currentSavings":"20000","annualReturn":"7","swr":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"age_30_80k_income_40k_expenses_4_swr":{"summary":"Age 30, $80k income, $40k expenses, 4% SWR","value":{"tool":"fire-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"FIRE Number","value":"$1,000,000"},{"metric":"Years to FIRE","value":"14.4 yrs"},{"metric":"Retire At Age","value":"44"},{"metric":"Annual Savings","value":"$40,000 / yr"},{"metric":"Savings Rate","value":"50.0%"},{"metric":"Coast FIRE Number","value":"$93,663"},{"metric":"Lean FIRE / Fat FIRE Number","value":"$600,000 / $1,320,000"}],"schedule":[{"year":"1","starting-balance":"$20,000","growth":"$1,400","ending-balance":"$61,400"},{"year":"2","starting-balance":"$61,400","growth":"$4,298","ending-balance":"$105,698"},{"year":"3","starting-balance":"$105,698","growth":"$7,399","ending-balance":"$153,097"},{"year":"4","starting-balance":"$153,097","growth":"$10,717","ending-balance":"$203,814"},{"year":"5","starting-balance":"$203,814","growth":"$14,267","ending-balance":"$258,081"},{"year":"6","starting-balance":"$258,081","growth":"$18,066","ending-balance":"$316,146"},{"year":"7","starting-balance":"$316,146","growth":"$22,130","ending-balance":"$378,276"},{"year":"8","starting-balance":"$378,276","growth":"$26,479","ending-balance":"$444,756"},{"year":"9","starting-balance":"$444,756","growth":"$31,133","ending-balance":"$515,889"},{"year":"10","starting-balance":"$515,889","growth":"$36,112","ending-balance":"$592,001"},{"year":"11","starting-balance":"$592,001","growth":"$41,440","ending-balance":"$673,441"},{"year":"12","starting-balance":"$673,441","growth":"$47,141","ending-balance":"$760,582"},{"year":"13","starting-balance":"$760,582","growth":"$53,241","ending-balance":"$853,823"},{"year":"14","starting-balance":"$853,823","growth":"$59,768","ending-balance":"$953,590"},{"year":"15","starting-balance":"$953,590","growth":"$66,751","ending-balance":"$1,060,342"},{"year":"16","starting-balance":"$1,060,342","growth":"$74,224","ending-balance":"$1,174,565"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Projection","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"starting-balance":{"type":"string","description":"Starting Balance"},"growth":{"type":"string","description":"Growth"},"ending-balance":{"type":"string","description":"Ending Balance"}}},"x-iotools-columns":["year","starting-balance","growth","ending-balance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/first-n-digits-of-e-calculator":{"post":{"operationId":"run_first_n_digits_of_e_calculator","summary":"First N Digits of e Calculator","tags":["Calculators"],"description":"Compute the first n digits of Euler's number e — up to 1000 digits — with a per-digit frequency breakdown across the generated digits.\n\n[Try First N Digits of e Calculator in your browser →](https://iotools.cloud/tool/first-n-digits-of-e-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"digitCount":{"type":"number","description":"Number of digits","minimum":1,"maximum":1000}},"required":[]},"examples":{"first_20_digits":{"summary":"First 20 digits","value":{"digitCount":"20"}},"first_50_digits":{"summary":"First 50 digits","value":{"digitCount":"50"}},"just_the_leading_digit":{"summary":"Just the leading digit","value":{"digitCount":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"first_20_digits":{"summary":"First 20 digits","value":{"tool":"first-n-digits-of-e-calculator","tool_version":"1.0.2","outputs":{"eValue":"2.7182818284590452353","digitFrequencyTable":[{"digit":"0","count":"1","percentage":"5.00%"},{"digit":"1","count":"2","percentage":"10.00%"},{"digit":"2","count":"4","percentage":"20.00%"},{"digit":"3","count":"2","percentage":"10.00%"},{"digit":"4","count":"2","percentage":"10.00%"},{"digit":"5","count":"3","percentage":"15.00%"},{"digit":"6","count":"0","percentage":"0.00%"},{"digit":"7","count":"1","percentage":"5.00%"},{"digit":"8","count":"4","percentage":"20.00%"},{"digit":"9","count":"1","percentage":"5.00%"}]},"credits_used":5,"credits_remaining":null}},"first_50_digits":{"summary":"First 50 digits","value":{"tool":"first-n-digits-of-e-calculator","tool_version":"1.0.2","outputs":{"eValue":"2.7182818284590452353602874713526624977572470936999","digitFrequencyTable":[{"digit":"0","count":"3","percentage":"6.00%"},{"digit":"1","count":"3","percentage":"6.00%"},{"digit":"2","count":"8","percentage":"16.00%"},{"digit":"3","count":"4","percentage":"8.00%"},{"digit":"4","count":"5","percentage":"10.00%"},{"digit":"5","count":"5","percentage":"10.00%"},{"digit":"6","count":"4","percentage":"8.00%"},{"digit":"7","count":"7","percentage":"14.00%"},{"digit":"8","count":"5","percentage":"10.00%"},{"digit":"9","count":"6","percentage":"12.00%"}]},"credits_used":5,"credits_remaining":null}},"just_the_leading_digit":{"summary":"Just the leading digit","value":{"tool":"first-n-digits-of-e-calculator","tool_version":"1.0.2","outputs":{"eValue":"2","digitFrequencyTable":[{"digit":"0","count":"0","percentage":"0.00%"},{"digit":"1","count":"0","percentage":"0.00%"},{"digit":"2","count":"1","percentage":"100.00%"},{"digit":"3","count":"0","percentage":"0.00%"},{"digit":"4","count":"0","percentage":"0.00%"},{"digit":"5","count":"0","percentage":"0.00%"},{"digit":"6","count":"0","percentage":"0.00%"},{"digit":"7","count":"0","percentage":"0.00%"},{"digit":"8","count":"0","percentage":"0.00%"},{"digit":"9","count":"0","percentage":"0.00%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"eValue":{"type":"string","description":"e"},"digitFrequencyTable":{"type":"array","description":"Digit frequency","items":{"type":"object","properties":{"digit":{"type":"string","description":"Digit"},"count":{"type":"string","description":"Count"},"percentage":{"type":"string","description":"Percentage"}}},"x-iotools-columns":["digit","count","percentage"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/first-n-digits-of-pi-calculator":{"post":{"operationId":"run_first_n_digits_of_pi_calculator","summary":"First N Digits of Pi Calculator","tags":["Calculators"],"description":"Compute the first n digits of pi (π) — up to 1000 digits — with a per-digit frequency breakdown across the generated digits.\n\n[Try First N Digits of Pi Calculator in your browser →](https://iotools.cloud/tool/first-n-digits-of-pi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"digitCount":{"type":"number","description":"Number of digits","minimum":1,"maximum":1000}},"required":[]},"examples":{"first_20_digits":{"summary":"First 20 digits","value":{"digitCount":"20"}},"first_50_digits":{"summary":"First 50 digits","value":{"digitCount":"50"}},"just_the_leading_digit":{"summary":"Just the leading digit","value":{"digitCount":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"first_20_digits":{"summary":"First 20 digits","value":{"tool":"first-n-digits-of-pi-calculator","tool_version":"1.0.2","outputs":{"piValue":"3.1415926535897932384","digitFrequencyTable":[{"digit":"0","count":"0","percentage":"0.00%"},{"digit":"1","count":"2","percentage":"10.00%"},{"digit":"2","count":"2","percentage":"10.00%"},{"digit":"3","count":"4","percentage":"20.00%"},{"digit":"4","count":"2","percentage":"10.00%"},{"digit":"5","count":"3","percentage":"15.00%"},{"digit":"6","count":"1","percentage":"5.00%"},{"digit":"7","count":"1","percentage":"5.00%"},{"digit":"8","count":"2","percentage":"10.00%"},{"digit":"9","count":"3","percentage":"15.00%"}]},"credits_used":5,"credits_remaining":null}},"first_50_digits":{"summary":"First 50 digits","value":{"tool":"first-n-digits-of-pi-calculator","tool_version":"1.0.2","outputs":{"piValue":"3.1415926535897932384626433832795028841971693993751","digitFrequencyTable":[{"digit":"0","count":"1","percentage":"2.00%"},{"digit":"1","count":"5","percentage":"10.00%"},{"digit":"2","count":"5","percentage":"10.00%"},{"digit":"3","count":"9","percentage":"18.00%"},{"digit":"4","count":"4","percentage":"8.00%"},{"digit":"5","count":"5","percentage":"10.00%"},{"digit":"6","count":"4","percentage":"8.00%"},{"digit":"7","count":"4","percentage":"8.00%"},{"digit":"8","count":"5","percentage":"10.00%"},{"digit":"9","count":"8","percentage":"16.00%"}]},"credits_used":5,"credits_remaining":null}},"just_the_leading_digit":{"summary":"Just the leading digit","value":{"tool":"first-n-digits-of-pi-calculator","tool_version":"1.0.2","outputs":{"piValue":"3","digitFrequencyTable":[{"digit":"0","count":"0","percentage":"0.00%"},{"digit":"1","count":"0","percentage":"0.00%"},{"digit":"2","count":"0","percentage":"0.00%"},{"digit":"3","count":"1","percentage":"100.00%"},{"digit":"4","count":"0","percentage":"0.00%"},{"digit":"5","count":"0","percentage":"0.00%"},{"digit":"6","count":"0","percentage":"0.00%"},{"digit":"7","count":"0","percentage":"0.00%"},{"digit":"8","count":"0","percentage":"0.00%"},{"digit":"9","count":"0","percentage":"0.00%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"piValue":{"type":"string","description":"π"},"digitFrequencyTable":{"type":"array","description":"Digit frequency","items":{"type":"object","properties":{"digit":{"type":"string","description":"Digit"},"count":{"type":"string","description":"Count"},"percentage":{"type":"string","description":"Percentage"}}},"x-iotools-columns":["digit","count","percentage"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fixed-charge-coverage-ratio-calculator":{"post":{"operationId":"run_fixed_charge_coverage_ratio_calculator","summary":"Fixed Charge Coverage Ratio Calculator","tags":["Calculators"],"description":"Calculate your Fixed Charge Coverage Ratio (FCCR) from EBIT or EBITDA, lease/rental payments, interest expense, and optional tax-adjusted principal payments. Get a coverage rating alongside the raw ratio.\n\n[Try Fixed Charge Coverage Ratio Calculator in your browser →](https://iotools.cloud/tool/fixed-charge-coverage-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"earningsBasis":{"enum":["EBIT","EBITDA"],"description":"Earnings Basis"},"earnings":{"type":"number","description":"EBIT / EBITDA"},"leasePayments":{"type":"number","description":"Lease / Rental Payments","minimum":0,"maximum":999999999},"interestExpense":{"type":"number","description":"Interest Expense","minimum":0,"maximum":999999999},"principalPayments":{"type":"number","description":"Principal Payments (optional)","minimum":0,"maximum":999999999},"taxRate":{"type":"number","description":"Tax Rate (%)","minimum":0,"maximum":99.99},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["earnings"]},"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"earningsBasis":"EBIT","earnings":"500000","leasePayments":"60000","interestExpense":"40000","principalPayments":"0","taxRate":"21","currency":"USD"}},"marginal_coverage_with_grossed_up_principal":{"summary":"Marginal coverage (with grossed-up principal)","value":{"earningsBasis":"EBIT","earnings":"150000","leasePayments":"50000","interestExpense":"45000","principalPayments":"30000","taxRate":"25","currency":"USD"}},"insufficient_coverage":{"summary":"Insufficient coverage","value":{"earningsBasis":"EBITDA","earnings":"60000","leasePayments":"40000","interestExpense":"50000","principalPayments":"20000","taxRate":"20","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"tool":"fixed-charge-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Earnings (EBIT)","value":"$500,000.00"},{"metric":"Fixed Charges (Lease/Rental Payments)","value":"$60,000.00"},{"metric":"Interest Expense","value":"$40,000.00"},{"metric":"Grossed-Up Principal Payments","value":"—"},{"metric":"Total Fixed Charges","value":"$100,000.00"},{"metric":"Fixed Charge Coverage Ratio (FCCR)","value":"5.60x"},{"metric":"FCCR Rating","value":"Strong"}]},"credits_used":5,"credits_remaining":null}},"marginal_coverage_with_grossed_up_principal":{"summary":"Marginal coverage (with grossed-up principal)","value":{"tool":"fixed-charge-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Earnings (EBIT)","value":"$150,000.00"},{"metric":"Fixed Charges (Lease/Rental Payments)","value":"$50,000.00"},{"metric":"Interest Expense","value":"$45,000.00"},{"metric":"Grossed-Up Principal Payments","value":"$40,000.00"},{"metric":"Total Fixed Charges","value":"$135,000.00"},{"metric":"Fixed Charge Coverage Ratio (FCCR)","value":"1.48x"},{"metric":"FCCR Rating","value":"Marginal"}]},"credits_used":5,"credits_remaining":null}},"insufficient_coverage":{"summary":"Insufficient coverage","value":{"tool":"fixed-charge-coverage-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Earnings (EBITDA)","value":"$60,000.00"},{"metric":"Fixed Charges (Lease/Rental Payments)","value":"$40,000.00"},{"metric":"Interest Expense","value":"$50,000.00"},{"metric":"Grossed-Up Principal Payments","value":"$25,000.00"},{"metric":"Total Fixed Charges","value":"$115,000.00"},{"metric":"Fixed Charge Coverage Ratio (FCCR)","value":"0.87x"},{"metric":"FCCR Rating","value":"Insufficient"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"FCCR Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/floor-tile-area-calculator":{"post":{"operationId":"run_floor_tile_area_calculator","summary":"Floor / Tile Area Calculator","tags":["Calculators"],"description":"Estimate floor area and the number of tiles and boxes to buy for a tiling project — accounting for grout gap, a wastage allowance and box rounding, for rectangular or L-shaped rooms in metric or imperial units.\n\n[Try Floor / Tile Area Calculator in your browser →](https://iotools.cloud/tool/floor-tile-area-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"roomShape":{"enum":["rectangle","lshape"],"description":"Room shape"},"roomLength":{"type":"number","description":"Room length","minimum":0},"roomWidth":{"type":"number","description":"Room width","minimum":0},"roomLength2":{"type":"number","description":"Extension length (L-shape)","minimum":0},"roomWidth2":{"type":"number","description":"Extension width (L-shape)","minimum":0},"tileLength":{"type":"number","description":"Tile length","minimum":0},"tileWidth":{"type":"number","description":"Tile width","minimum":0},"groutGap":{"type":"number","description":"Grout gap","minimum":0},"wastagePct":{"type":"number","description":"Wastage %","minimum":0,"maximum":30},"tilesPerBox":{"type":"number","description":"Tiles per box","minimum":1}},"required":["roomLength","roomWidth","tileLength","tileWidth"]},"examples":{"metric_rectangle_5m_x_4m_room_600mm_tiles":{"summary":"Metric rectangle — 5m x 4m room, 600mm tiles","value":{"unitSystem":"metric","roomShape":"rectangle","roomLength":"5","roomWidth":"4","tileLength":"600","tileWidth":"600","groutGap":"3","wastagePct":"10","tilesPerBox":"6"}},"metric_l_shape_5m_x_4m_plus_a_2m_x_1_5m_extension":{"summary":"Metric L-shape — 5m x 4m plus a 2m x 1.5m extension","value":{"unitSystem":"metric","roomShape":"lshape","roomLength":"5","roomWidth":"4","roomLength2":"2","roomWidth2":"1.5","tileLength":"600","tileWidth":"600","groutGap":"3","wastagePct":"10","tilesPerBox":"6"}},"imperial_rectangle_16ft_x_13ft_room_12in_tiles":{"summary":"Imperial rectangle — 16ft x 13ft room, 12in tiles","value":{"unitSystem":"imperial","roomShape":"rectangle","roomLength":"16","roomWidth":"13","tileLength":"12","tileWidth":"12","groutGap":"0.125","wastagePct":"10","tilesPerBox":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_rectangle_5m_x_4m_room_600mm_tiles":{"summary":"Metric rectangle — 5m x 4m room, 600mm tiles","value":{"tool":"floor-tile-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total floor area","value":"20.00 m²"},{"metric":"Effective tile area (with grout)","value":"0.36 m²"},{"metric":"Tiles needed (no wastage)","value":"56 tiles"},{"metric":"Tiles needed (with wastage)","value":"61 tiles (+10%)"},{"metric":"Cut / waste tiles","value":"~6 tiles"},{"metric":"Coverage from purchase","value":"24.00 m² (66 tiles)"},{"metric":"Boxes to buy","value":"11 boxes"}],"summary":"20.00 m² floor · 61 tiles +10% · 11 boxes of 6"},"credits_used":5,"credits_remaining":null}},"metric_l_shape_5m_x_4m_plus_a_2m_x_1_5m_extension":{"summary":"Metric L-shape — 5m x 4m plus a 2m x 1.5m extension","value":{"tool":"floor-tile-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total floor area","value":"23.00 m²"},{"metric":"Effective tile area (with grout)","value":"0.36 m²"},{"metric":"Tiles needed (no wastage)","value":"64 tiles"},{"metric":"Tiles needed (with wastage)","value":"70 tiles (+10%)"},{"metric":"Cut / waste tiles","value":"~7 tiles"},{"metric":"Coverage from purchase","value":"26.18 m² (72 tiles)"},{"metric":"Boxes to buy","value":"12 boxes"}],"summary":"23.00 m² floor · 70 tiles +10% · 12 boxes of 6"},"credits_used":5,"credits_remaining":null}},"imperial_rectangle_16ft_x_13ft_room_12in_tiles":{"summary":"Imperial rectangle — 16ft x 13ft room, 12in tiles","value":{"tool":"floor-tile-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total floor area","value":"208.00 sq ft"},{"metric":"Effective tile area (with grout)","value":"1.02 sq ft"},{"metric":"Tiles needed (no wastage)","value":"204 tiles"},{"metric":"Tiles needed (with wastage)","value":"225 tiles (+10%)"},{"metric":"Cut / waste tiles","value":"~22 tiles"},{"metric":"Coverage from purchase","value":"232.77 sq ft (228 tiles)"},{"metric":"Boxes to buy","value":"38 boxes"}],"summary":"208.00 sq ft floor · 225 tiles +10% · 38 boxes of 6"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/friction-calculator":{"post":{"operationId":"run_friction_calculator","summary":"Friction Calculator","tags":["Calculators"],"description":"Calculate static and kinetic friction force, whether an object slides, its acceleration once moving, and its angle of repose — from mass or a direct normal force. Pick a material pair (steel on steel, rubber on concrete, ice on ice…) or enter your own μs/μk. Metric and imperial. Runs entirely in your browser.\n\n[Try Friction Calculator in your browser →](https://iotools.cloud/tool/friction-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Units"},"normalMode":{"enum":["weight","direct"],"description":"Normal force source"},"mass":{"type":"number","description":"Mass","minimum":0.001,"maximum":10000000},"normalForce":{"type":"number","description":"Normal force","minimum":0,"maximum":100000000},"material":{"enum":["rubber-concrete-dry","rubber-concrete-wet","steel-steel-dry","steel-steel-lubricated","aluminum-steel","copper-steel","wood-wood","glass-glass","leather-wood","ice-ice","teflon-teflon","custom"],"description":"Material pair"},"muS":{"type":"number","description":"Static friction coefficient (μs)","minimum":0,"maximum":5},"muK":{"type":"number","description":"Kinetic friction coefficient (μk)","minimum":0,"maximum":5},"appliedForce":{"type":"number","description":"Applied (pushing) force","minimum":0,"maximum":100000000}},"required":[]},"examples":{"10_kg_steel_block_50_n_push_stays_put":{"summary":"10 kg steel block, 50 N push (stays put)","value":{"unitSystem":"metric","normalMode":"weight","mass":"10","material":"steel-steel-dry","appliedForce":"50"}},"same_block_100_n_push_breaks_loose":{"summary":"Same block, 100 N push (breaks loose)","value":{"unitSystem":"metric","normalMode":"weight","mass":"10","material":"steel-steel-dry","appliedForce":"100"}},"imperial_direct_normal_force_on_a_wet_ramp":{"summary":"Imperial, direct normal force on a wet ramp","value":{"unitSystem":"imperial","normalMode":"direct","mass":"20","normalForce":"15","material":"rubber-concrete-wet","appliedForce":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_kg_steel_block_50_n_push_stays_put":{"summary":"10 kg steel block, 50 N push (stays put)","value":{"tool":"friction-calculator","tool_version":"1.0.2","outputs":{"summary":"Stationary — static friction holds at 50.00 N (max 72.57 N)","forcesTable":[{"quantity":"Normal force (N)","value":"98.07 N"},{"quantity":"Max static friction (μs·N)","value":"72.57 N"},{"quantity":"Kinetic friction (μk·N)","value":"55.90 N"},{"quantity":"Applied force","value":"50.00 N"},{"quantity":"Friction force (actual)","value":"50.00 N"},{"quantity":"Net force","value":"0.00 N"},{"quantity":"Acceleration","value":"0.00 m/s²"},{"quantity":"Angle of repose (atan μs)","value":"36.5°"}],"notes":"The 50.00 N applied force stays under the maximum static friction of 72.57 N, so the object doesn't move — friction exactly cancels the push.\nAngle of repose ≈ 36.5° — the incline angle at which gravity alone (no push) would start this pair sliding, from tan(θ) = μs.\nMass, m = 10.00 kg."},"credits_used":5,"credits_remaining":null}},"same_block_100_n_push_breaks_loose":{"summary":"Same block, 100 N push (breaks loose)","value":{"tool":"friction-calculator","tool_version":"1.0.2","outputs":{"summary":"Sliding — kinetic friction of 55.90 N opposes the 100.00 N push, net 44.10 N → 4.41 m/s²","forcesTable":[{"quantity":"Normal force (N)","value":"98.07 N"},{"quantity":"Max static friction (μs·N)","value":"72.57 N"},{"quantity":"Kinetic friction (μk·N)","value":"55.90 N"},{"quantity":"Applied force","value":"100.00 N"},{"quantity":"Friction force (actual)","value":"55.90 N"},{"quantity":"Net force","value":"44.10 N"},{"quantity":"Acceleration","value":"4.41 m/s²"},{"quantity":"Angle of repose (atan μs)","value":"36.5°"}],"notes":"The 100.00 N applied force exceeds the maximum static friction of 72.57 N, so the object breaks loose and kinetic friction (μk·N = 55.90 N) takes over.\nAngle of repose ≈ 36.5° — the incline angle at which gravity alone (no push) would start this pair sliding, from tan(θ) = μs.\nMass, m = 10.00 kg."},"credits_used":5,"credits_remaining":null}},"imperial_direct_normal_force_on_a_wet_ramp":{"summary":"Imperial, direct normal force on a wet ramp","value":{"tool":"friction-calculator","tool_version":"1.0.2","outputs":{"summary":"Sliding — kinetic friction of 7.500 lbf opposes the 12.000 lbf push, net 4.500 lbf → 7.239 ft/s²","forcesTable":[{"quantity":"Normal force (N)","value":"15.000 lbf"},{"quantity":"Max static friction (μs·N)","value":"10.500 lbf"},{"quantity":"Kinetic friction (μk·N)","value":"7.500 lbf"},{"quantity":"Applied force","value":"12.000 lbf"},{"quantity":"Friction force (actual)","value":"7.500 lbf"},{"quantity":"Net force","value":"4.500 lbf"},{"quantity":"Acceleration","value":"7.239 ft/s²"},{"quantity":"Angle of repose (atan μs)","value":"35.0°"}],"notes":"The 12.000 lbf applied force exceeds the maximum static friction of 10.500 lbf, so the object breaks loose and kinetic friction (μk·N = 7.500 lbf) takes over.\nAngle of repose ≈ 35.0° — the incline angle at which gravity alone (no push) would start this pair sliding, from tan(θ) = μs.\nMass, m = 20.00 lb (used only for acceleration — normal force was entered directly)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"forcesTable":{"type":"array","description":"Force breakdown","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fuel-economy-calculator":{"post":{"operationId":"run_fuel_economy_calculator","summary":"Fuel Economy Calculator","tags":["Calculators"],"description":"Convert fuel economy between MPG (US/UK), L/100km and km/L, then estimate trip fuel cost, compare two vehicles side by side, and project annual fuel spend with a CO₂ emissions estimate.\n\n[Try Fuel Economy Calculator in your browser →](https://iotools.cloud/tool/fuel-economy-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"fuelEconomy":{"type":"number","description":"Fuel Economy","minimum":0},"fuelEconomyUnit":{"enum":["mpg_us","mpg_uk","l100km","kml"],"description":"Unit"},"currency":{"type":"string","description":"Currency Symbol"},"tripDistance":{"type":"number","description":"Distance","minimum":0},"tripDistanceUnit":{"enum":["km","miles"],"description":"Distance Unit"},"tripFuelEconomy":{"type":"number","description":"Fuel Economy","minimum":0},"tripFuelEconomyUnit":{"enum":["mpg_us","mpg_uk","l100km","kml"],"description":"Economy Unit"},"tripFuelPrice":{"type":"number","description":"Fuel Price","minimum":0},"tripFuelPriceUnit":{"enum":["liter","gallon_us","gallon_uk"],"description":"Price Unit"},"compareVehicle1":{"type":"number","description":"Vehicle 1 Economy","minimum":0},"compareVehicle1Unit":{"enum":["mpg_us","mpg_uk","l100km","kml"],"description":"Vehicle 1 Unit"},"compareVehicle2":{"type":"number","description":"Vehicle 2 Economy","minimum":0},"compareVehicle2Unit":{"enum":["mpg_us","mpg_uk","l100km","kml"],"description":"Vehicle 2 Unit"},"compareDistance":{"type":"number","description":"Distance","minimum":0},"compareDistanceUnit":{"enum":["km","miles"],"description":"Distance Unit"},"compareFuelPrice":{"type":"number","description":"Fuel Price (per Liter)","minimum":0},"annualMileage":{"type":"number","description":"Annual Distance","minimum":0},"annualMileageUnit":{"enum":["km","miles"],"description":"Distance Unit"},"annualFuelEconomy":{"type":"number","description":"Fuel Economy","minimum":0},"annualFuelEconomyUnit":{"enum":["mpg_us","mpg_uk","l100km","kml"],"description":"Economy Unit"},"annualFuelPrice":{"type":"number","description":"Fuel Price","minimum":0},"annualFuelPriceUnit":{"enum":["liter","gallon_us","gallon_uk"],"description":"Price Unit"},"annualFuelType":{"enum":["gasoline","diesel"],"description":"Fuel Type"}},"required":[]},"examples":{"30_mpg_us_car_convert_trip_compare_and_annual":{"summary":"30 MPG (US) car — convert, trip, compare and annual","value":{"fuelEconomy":"30","fuelEconomyUnit":"mpg_us","currency":"$","tripDistance":"500","tripDistanceUnit":"km","tripFuelEconomy":"8","tripFuelEconomyUnit":"l100km","tripFuelPrice":"1.50","tripFuelPriceUnit":"liter","compareVehicle1":"30","compareVehicle1Unit":"mpg_us","compareVehicle2":"45","compareVehicle2Unit":"mpg_us","compareDistance":"10000","compareDistanceUnit":"km","compareFuelPrice":"1.50","annualMileage":"15000","annualMileageUnit":"km","annualFuelEconomy":"8","annualFuelEconomyUnit":"l100km","annualFuelPrice":"1.50","annualFuelPriceUnit":"liter","annualFuelType":"gasoline"}},"45_mpg_us_diesel_miles_per_gallon_price":{"summary":"45 MPG (US) diesel, miles + per-gallon price, £","value":{"fuelEconomy":"45","fuelEconomyUnit":"mpg_us","currency":"£","tripDistance":"300","tripDistanceUnit":"miles","tripFuelEconomy":"45","tripFuelEconomyUnit":"mpg_us","tripFuelPrice":"6.50","tripFuelPriceUnit":"gallon_us","compareVehicle1":"25","compareVehicle1Unit":"mpg_us","compareVehicle2":"6","compareVehicle2Unit":"l100km","compareDistance":"12000","compareDistanceUnit":"miles","compareFuelPrice":"1.80","annualMileage":"12000","annualMileageUnit":"miles","annualFuelEconomy":"45","annualFuelEconomyUnit":"mpg_us","annualFuelPrice":"6.50","annualFuelPriceUnit":"gallon_us","annualFuelType":"diesel"}},"km_l_input_other_sections_empty":{"summary":"km/L input, other sections empty","value":{"fuelEconomy":"15","fuelEconomyUnit":"kml","currency":"$","tripDistance":"","tripFuelEconomy":"","tripFuelPrice":"","compareVehicle1":"","compareVehicle2":"","compareDistance":"","compareFuelPrice":"","annualMileage":"","annualFuelEconomy":"","annualFuelPrice":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"30_mpg_us_car_convert_trip_compare_and_annual":{"summary":"30 MPG (US) car — convert, trip, compare and annual","value":{"tool":"fuel-economy-calculator","tool_version":"1.0.2","outputs":{"conversionTable":[{"unit":"MPG (US)","value":"30"},{"unit":"MPG (UK)","value":"36.03"},{"unit":"L/100km","value":"7.84"},{"unit":"km/L","value":"12.75"}],"tripTable":[{"metric":"Distance","value":"500 km (310.69 miles)"},{"metric":"Fuel needed","value":"40 L (10.57 US gal)"},{"metric":"Total cost","value":"$60"},{"metric":"Cost per km","value":"$0.12"},{"metric":"Cost per mile","value":"$0.1931"}],"compareTable":[{"metric":"Distance","value":"10,000 km"},{"metric":"Vehicle 1","value":"7.84 L/100km"},{"metric":"Vehicle 1 fuel","value":"784.05 L"},{"metric":"Vehicle 1 cost","value":"$1,176.07"},{"metric":"Vehicle 2","value":"5.23 L/100km"},{"metric":"Vehicle 2 fuel","value":"522.7 L"},{"metric":"Vehicle 2 cost","value":"$784.05"},{"metric":"Result","value":"Vehicle 2 saves $392.02 (33.3%)"}],"annualTable":[{"metric":"Annual distance","value":"15,000 km (9,320.59 miles)"},{"metric":"Fuel consumed","value":"1,200 L (317.01 US gal)"},{"metric":"Annual cost","value":"$1,800"},{"metric":"Monthly cost","value":"$150"},{"metric":"Fuel type","value":"Gasoline/Petrol"},{"metric":"CO₂ factor","value":"2.31 kg/L"},{"metric":"Annual CO₂","value":"2,772 kg (2.77 tonnes)"}]},"credits_used":5,"credits_remaining":null}},"45_mpg_us_diesel_miles_per_gallon_price":{"summary":"45 MPG (US) diesel, miles + per-gallon price, £","value":{"tool":"fuel-economy-calculator","tool_version":"1.0.2","outputs":{"conversionTable":[{"unit":"MPG (US)","value":"45"},{"unit":"MPG (UK)","value":"54.04"},{"unit":"L/100km","value":"5.23"},{"unit":"km/L","value":"19.13"}],"tripTable":[{"metric":"Distance","value":"482.8 km (300 miles)"},{"metric":"Fuel needed","value":"25.24 L (6.67 US gal)"},{"metric":"Total cost","value":"£43.33"},{"metric":"Cost per km","value":"£0.0898"},{"metric":"Cost per mile","value":"£0.1444"}],"compareTable":[{"metric":"Distance","value":"19,312.08 km"},{"metric":"Vehicle 1","value":"9.41 L/100km"},{"metric":"Vehicle 1 fuel","value":"1,816.99 L"},{"metric":"Vehicle 1 cost","value":"£3,270.59"},{"metric":"Vehicle 2","value":"6 L/100km"},{"metric":"Vehicle 2 fuel","value":"1,158.72 L"},{"metric":"Vehicle 2 cost","value":"£2,085.7"},{"metric":"Result","value":"Vehicle 2 saves £1,184.88 (36.2%)"}],"annualTable":[{"metric":"Annual distance","value":"19,312.08 km (12,000 miles)"},{"metric":"Fuel consumed","value":"1,009.44 L (266.67 US gal)"},{"metric":"Annual cost","value":"£1,733.33"},{"metric":"Monthly cost","value":"£144.44"},{"metric":"Fuel type","value":"Diesel"},{"metric":"CO₂ factor","value":"2.68 kg/L"},{"metric":"Annual CO₂","value":"2,705.3 kg (2.71 tonnes)"}]},"credits_used":5,"credits_remaining":null}},"km_l_input_other_sections_empty":{"summary":"km/L input, other sections empty","value":{"tool":"fuel-economy-calculator","tool_version":"1.0.2","outputs":{"conversionTable":[{"unit":"MPG (US)","value":"35.28"},{"unit":"MPG (UK)","value":"42.37"},{"unit":"L/100km","value":"6.67"},{"unit":"km/L","value":"15"}],"tripTable":[{"metric":"Distance","value":"-"},{"metric":"Fuel needed","value":"-"},{"metric":"Total cost","value":"-"},{"metric":"Cost per km","value":"-"},{"metric":"Cost per mile","value":"-"}],"compareTable":[{"metric":"Distance","value":"-"},{"metric":"Vehicle 1","value":"-"},{"metric":"Vehicle 1 fuel","value":"-"},{"metric":"Vehicle 1 cost","value":"-"},{"metric":"Vehicle 2","value":"-"},{"metric":"Vehicle 2 fuel","value":"-"},{"metric":"Vehicle 2 cost","value":"-"},{"metric":"Result","value":"-"}],"annualTable":[{"metric":"Annual distance","value":"-"},{"metric":"Fuel consumed","value":"-"},{"metric":"Annual cost","value":"-"},{"metric":"Monthly cost","value":"-"},{"metric":"Fuel type","value":"-"},{"metric":"CO₂ factor","value":"-"},{"metric":"Annual CO₂","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"conversionTable":{"type":"array","description":"Fuel Economy Conversion","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]},"tripTable":{"type":"array","description":"Trip Cost","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"compareTable":{"type":"array","description":"Vehicle Comparison","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"annualTable":{"type":"array","description":"Annual Cost & CO₂ Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gamma-function-calculator":{"post":{"operationId":"run_gamma_function_calculator","summary":"Gamma Function Calculator","tags":["Calculators"],"description":"Evaluate the gamma function Γ(x) for any real number, along with its natural logarithm. Γ(x) extends the factorial to non-integers and negative numbers — Γ(n) = (n-1)! for positive integers n.\n\n[Try Gamma Function Calculator in your browser →](https://iotools.cloud/tool/gamma-function-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x":{"type":"number","description":"x","minimum":-50,"maximum":170}},"required":["x"]},"examples":{"x_5_4":{"summary":"x = 5 (= 4!)","value":{"x":"5"}},"x_0_5":{"summary":"x = 0.5 (= √π)","value":{"x":"0.5"}},"x_0_5_2":{"summary":"x = -0.5","value":{"x":"-0.5"}},"x_10_9":{"summary":"x = 10 (= 9!)","value":{"x":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_5_4":{"summary":"x = 5 (= 4!)","value":{"tool":"gamma-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"Γ(5)","value":"24"},{"function":"ln|Γ(5)|","value":"3.178054"}]},"credits_used":5,"credits_remaining":null}},"x_0_5":{"summary":"x = 0.5 (= √π)","value":{"tool":"gamma-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"Γ(0.5)","value":"1.772454"},{"function":"ln|Γ(0.5)|","value":"0.572365"}]},"credits_used":5,"credits_remaining":null}},"x_0_5_2":{"summary":"x = -0.5","value":{"tool":"gamma-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"Γ(-0.5)","value":"-3.544908"},{"function":"ln|Γ(-0.5)|","value":"1.265512"}]},"credits_used":5,"credits_remaining":null}},"x_10_9":{"summary":"x = 10 (= 9!)","value":{"tool":"gamma-function-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"Γ(10)","value":"362880"},{"function":"ln|Γ(10)|","value":"12.801827"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"function":{"type":"string","description":"Function"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["function","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gas-vs-electric-cost-comparison":{"post":{"operationId":"run_gas_vs_electric_cost_comparison","summary":"Gas vs Electric Cost Comparison","tags":["Calculators"],"description":"Compare the annual running cost and CO2 emissions of gas vs electric usage — enter your gas usage (therms or kWh) and electric usage (kWh) with their prices, and see which fuel is cheaper and cleaner.\n\n[Try Gas vs Electric Cost Comparison in your browser →](https://iotools.cloud/tool/gas-vs-electric-cost-comparison/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"gasUsage":{"type":"number","description":"Annual gas usage","minimum":0},"gasUnit":{"enum":["therms","kwh"],"description":"Gas unit"},"gasRateTherm":{"type":"number","description":"Gas price (per therm)","minimum":0},"gasRateKwh":{"type":"number","description":"Gas price (per kWh)","minimum":0},"electricUsage":{"type":"number","description":"Annual electric usage (kWh)","minimum":0},"electricRate":{"type":"number","description":"Electric price (per kWh)","minimum":0}},"required":[]},"examples":{"500_therms_gas_1_20_10_000_kwh_electric_0_16":{"summary":"500 therms gas @ $1.20, 10,000 kWh electric @ $0.16","value":{"gasUsage":"500","gasUnit":"therms","gasRateTherm":"1.20","gasRateKwh":"0.06","electricUsage":"10000","electricRate":"0.16"}},"5_000_kwh_gas_0_06_kwh_3_500_kwh_electric_0_28_kwh":{"summary":"5,000 kWh gas @ 0.06/kWh, 3,500 kWh electric @ 0.28/kWh","value":{"gasUsage":"5000","gasUnit":"kwh","gasRateTherm":"1.20","gasRateKwh":"0.06","electricUsage":"3500","electricRate":"0.28"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"500_therms_gas_1_20_10_000_kwh_electric_0_16":{"summary":"500 therms gas @ $1.20, 10,000 kWh electric @ $0.16","value":{"tool":"gas-vs-electric-cost-comparison","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Annual cost","gas":"$600.00","electric":"$1,600.00"},{"metric":"CO2 emissions (yearly)","gas":"2,651.7 kg CO₂","electric":"4,170.0 kg CO₂"}],"comparison":"Gas costs $1,000.00/year less and produces 1,518.3 kg CO₂/year less than the other option."},"credits_used":5,"credits_remaining":null}},"5_000_kwh_gas_0_06_kwh_3_500_kwh_electric_0_28_kwh":{"summary":"5,000 kWh gas @ 0.06/kWh, 3,500 kWh electric @ 0.28/kWh","value":{"tool":"gas-vs-electric-cost-comparison","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Annual cost","gas":"$300.00","electric":"$980.00"},{"metric":"CO2 emissions (yearly)","gas":"905.0 kg CO₂","electric":"1,459.5 kg CO₂"}],"comparison":"Gas costs $680.00/year less and produces 554.5 kg CO₂/year less than the other option."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Annual cost & CO2","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"gas":{"type":"string","description":"Gas"},"electric":{"type":"string","description":"Electric"}}},"x-iotools-columns":["metric","gas","electric"]},"comparison":{"type":"string","description":"Comparison"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gcd-lcm-calculator":{"post":{"operationId":"run_gcd_lcm_calculator","summary":"GCD & LCM Calculator","tags":["Calculators"],"description":"Find the greatest common divisor (GCD/HCF) and least common multiple (LCM) of a list of integers, with an optional step-by-step Euclidean-algorithm walkthrough.\n\n[Try GCD & LCM Calculator in your browser →](https://iotools.cloud/tool/gcd-lcm-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numbers":{"type":"string","description":"Numbers"},"showSteps":{"type":"boolean","description":"Show calculation steps"}},"required":["numbers"]},"examples":{"gcd_lcm_of_12_18_24":{"summary":"GCD & LCM of 12, 18, 24","value":{"numbers":"12, 18, 24","showSteps":""}},"two_numbers_with_steps":{"summary":"Two numbers with steps","value":{"numbers":"12, 18","showSteps":"true"}},"a_number_and_zero_lcm_is_0":{"summary":"A number and zero (LCM is 0)","value":{"numbers":"0, 5","showSteps":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"gcd_lcm_of_12_18_24":{"summary":"GCD & LCM of 12, 18, 24","value":{"tool":"gcd-lcm-calculator","tool_version":"1.0.2","outputs":{"gcd":"6","lcm":"72","steps":""},"credits_used":5,"credits_remaining":null}},"two_numbers_with_steps":{"summary":"Two numbers with steps","value":{"tool":"gcd-lcm-calculator","tool_version":"1.0.2","outputs":{"gcd":"6","lcm":"36","steps":"=== GCD Calculation (Euclidean Algorithm) ===\n\nGCD(12, 18):\n  12 = 18 × 0 + 12\n  18 = 12 × 1 + 6\n  12 = 6 × 2 + 0\n  GCD = 6\n\n=== LCM Calculation ===\n\nLCM calculation using formula: LCM(a, b) = |a × b| / GCD(a, b)\n\nLCM(12, 18):\n  GCD(12, 18) = 6\n  LCM = |12 × 18| / 6 = 216 / 6 = 36"},"credits_used":5,"credits_remaining":null}},"a_number_and_zero_lcm_is_0":{"summary":"A number and zero (LCM is 0)","value":{"tool":"gcd-lcm-calculator","tool_version":"1.0.2","outputs":{"gcd":"5","lcm":"0","steps":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"gcd":{"type":"string","description":"Greatest Common Divisor (GCD)"},"lcm":{"type":"string","description":"Least Common Multiple (LCM)"},"steps":{"type":"string","description":"Calculation Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gear-ratio-calculator":{"post":{"operationId":"run_gear_ratio_calculator","summary":"Gear Ratio Calculator","tags":["Calculators"],"description":"Calculate gear ratio, output speed and output torque from driver and driven tooth counts. Handles compound multi-stage gear trains with a per-stage breakdown, applies a per-mesh efficiency to the torque, and reports the ratio as a decimal, as N:1 and as a speed change.\n\n[Try Gear Ratio Calculator in your browser →](https://iotools.cloud/tool/gear-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["single","compound"],"description":"Gear Train"},"driverTeeth":{"type":"number","description":"Driver Teeth","minimum":1},"drivenTeeth":{"type":"number","description":"Driven Teeth","minimum":1},"train":{"type":"string","description":"Stages"},"inputSpeed":{"type":"number","description":"Input Speed (rpm)","minimum":0},"inputTorque":{"type":"number","description":"Input Torque (N·m)","minimum":0},"efficiency":{"type":"number","description":"Efficiency per Mesh (%)","minimum":50,"maximum":100}},"required":[]},"examples":{"20_60_teeth_3_1_reduction_at_1750_rpm":{"summary":"20 → 60 teeth, 3:1 reduction at 1750 rpm","value":{"mode":"single","driverTeeth":"20","drivenTeeth":"60","train":"20, 60\n15, 45","inputSpeed":"1750","inputTorque":"50","efficiency":"100"}},"two_stage_compound_train_at_97_per_mesh":{"summary":"Two-stage compound train at 97% per mesh","value":{"mode":"compound","driverTeeth":"20","drivenTeeth":"60","train":"20, 60\n15, 45","inputSpeed":"1750","inputTorque":"50","efficiency":"97"}},"overdrive_40_driver_20_driven":{"summary":"Overdrive — 40 driver, 20 driven","value":{"mode":"single","driverTeeth":"40","drivenTeeth":"20","train":"20, 60\n15, 45","inputSpeed":"1000","inputTorque":"","efficiency":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"20_60_teeth_3_1_reduction_at_1750_rpm":{"summary":"20 → 60 teeth, 3:1 reduction at 1750 rpm","value":{"tool":"gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Total gear ratio","value":"3"},{"quantity":"Ratio notation","value":"3 : 1"},{"quantity":"Drive type","value":"Reduction — output turns slower with more torque"},{"quantity":"Stages","value":"1"},{"quantity":"Mechanical advantage","value":"3×"},{"quantity":"Output speed","value":"583.333 rpm"},{"quantity":"Speed change","value":"-66.6667 %"},{"quantity":"Output torque (ideal)","value":"150 N·m"}],"stageTable":[{"stage":"1","driver-driven":"20 → 60","stage-ratio":"3 : 1","speed-out-rpm":"583.333","torque-out-n-m":"150"}],"breakdown":"Stage ratio = driven teeth ÷ driver teeth\nTotal ratio = 60/20 = 3\nOutput speed = 1750 rpm ÷ 3 = 583.333 rpm\nOutput torque = 50 N·m × 3 = 150 N·m\nIdeal calculation — drop the efficiency below 100% to account for mesh losses."},"credits_used":5,"credits_remaining":null}},"two_stage_compound_train_at_97_per_mesh":{"summary":"Two-stage compound train at 97% per mesh","value":{"tool":"gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Total gear ratio","value":"9"},{"quantity":"Ratio notation","value":"9 : 1"},{"quantity":"Drive type","value":"Reduction — output turns slower with more torque"},{"quantity":"Stages","value":"2"},{"quantity":"Mechanical advantage","value":"9×"},{"quantity":"Output speed","value":"194.444 rpm"},{"quantity":"Speed change","value":"-88.8889 %"},{"quantity":"Output torque (ideal)","value":"450 N·m"},{"quantity":"Output torque at 97% per mesh","value":"423.405 N·m"},{"quantity":"Train efficiency","value":"94.09 %"}],"stageTable":[{"stage":"1","driver-driven":"20 → 60","stage-ratio":"3 : 1","speed-out-rpm":"583.333","torque-out-n-m":"145.5"},{"stage":"2","driver-driven":"15 → 45","stage-ratio":"3 : 1","speed-out-rpm":"194.444","torque-out-n-m":"423.405"}],"breakdown":"Stage ratio = driven teeth ÷ driver teeth\nTotal ratio = 60/20 × 45/15 = 9\nOutput speed = 1750 rpm ÷ 9 = 194.444 rpm\nOutput torque = 50 N·m × 9 × 97%^2 = 423.405 N·m\nTrain efficiency = 97%^2 = 94.09%"},"credits_used":5,"credits_remaining":null}},"overdrive_40_driver_20_driven":{"summary":"Overdrive — 40 driver, 20 driven","value":{"tool":"gear-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Total gear ratio","value":"0.5"},{"quantity":"Ratio notation","value":"1 : 2"},{"quantity":"Drive type","value":"Overdrive — output turns faster with less torque"},{"quantity":"Stages","value":"1"},{"quantity":"Mechanical advantage","value":"0.5×"},{"quantity":"Output speed","value":"2000 rpm"},{"quantity":"Speed change","value":"100 %"}],"stageTable":[{"stage":"1","driver-driven":"40 → 20","stage-ratio":"1 : 2","speed-out-rpm":"2000","torque-out-n-m":"—"}],"breakdown":"Stage ratio = driven teeth ÷ driver teeth\nTotal ratio = 20/40 = 0.5\nOutput speed = 1000 rpm ÷ 0.5 = 2000 rpm\nEnter an input torque to get the output torque.\nIdeal calculation — drop the efficiency below 100% to account for mesh losses."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Gear Ratio & Output","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"stageTable":{"type":"array","description":"Stage by Stage","items":{"type":"object","properties":{"stage":{"type":"string","description":"Stage"},"driver-driven":{"type":"string","description":"Driver → Driven"},"stage-ratio":{"type":"string","description":"Stage ratio"},"speed-out-rpm":{"type":"string","description":"Speed out (rpm)"},"torque-out-n-m":{"type":"string","description":"Torque out (N·m)"}}},"x-iotools-columns":["stage","driver-driven","stage-ratio","speed-out-rpm","torque-out-n-m"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/generator-sizing-calculator":{"post":{"operationId":"run_generator_sizing_calculator","summary":"Generator Sizing Calculator","tags":["Calculators"],"description":"Size a portable or standby generator from your actual appliance list, not one flat number. Enter each load's running watts and (for motors) starting watts, add a safety margin, and get the total running load, the worst-case starting surge, a recommended generator size, and the amp draw at 120V/240V. Runs entirely in your browser.\n\n[Try Generator Sizing Calculator in your browser →](https://iotools.cloud/tool/generator-sizing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"loads":{"type":"string","description":"Appliances / loads"},"safetyMargin":{"type":"number","description":"Safety margin (headroom)","minimum":0,"maximum":30}},"required":["loads"]},"examples":{"small_home_backup_fridge_sump_pump_lights_microwave":{"summary":"Small home backup: fridge, sump pump, lights, microwave","value":{"loads":"Refrigerator, 700, 2200\nSump Pump, 800, 2000\nLights, 400\nMicrowave, 1200","safetyMargin":"20"}},"window_ac_well_pump_freezer_outlets_25_margin":{"summary":"Window AC, well pump, freezer, outlets — 25% margin","value":{"loads":"Window AC, 1200, 3600\nWell Pump, 1000, 3000\nFreezer, 300, 900\nOutlets, 500","safetyMargin":"25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"small_home_backup_fridge_sump_pump_lights_microwave":{"summary":"Small home backup: fridge, sump pump, lights, microwave","value":{"tool":"generator-sizing-calculator","tool_version":"1.0.2","outputs":{"totalRunningWatts":"3,100 W (3.10 kW)","peakStartingWatts":"4,600 W (4.60 kW)","recommendedGeneratorSize":"6,000 W (6.0 kW) — covers 5,520 W required with a 20% margin","amperageTable":[{"voltage":"120V","amps":"25.8 A"},{"voltage":"240V","amps":"12.9 A"}],"loadBreakdown":[{"appliance":"Refrigerator","running-w":"700","starting-w":"2,200","extra-surge-w":"1,500"},{"appliance":"Sump Pump","running-w":"800","starting-w":"2,000","extra-surge-w":"1,200"},{"appliance":"Lights","running-w":"400","starting-w":"400","extra-surge-w":"0"},{"appliance":"Microwave","running-w":"1,200","starting-w":"1,200","extra-surge-w":"0"}],"notes":"Sizing is driven by the largest motor's starting surge (+1,500 W above its running watts). This assumes only one large motor starts at a time — if two big motors could start together, size for their combined surge instead.\nThis is a rule-of-thumb estimate for choosing a generator, not a substitute for a licensed electrician's load calculation — especially before permanently wiring a standby unit through a transfer switch."},"credits_used":5,"credits_remaining":null}},"window_ac_well_pump_freezer_outlets_25_margin":{"summary":"Window AC, well pump, freezer, outlets — 25% margin","value":{"tool":"generator-sizing-calculator","tool_version":"1.0.2","outputs":{"totalRunningWatts":"3,000 W (3.00 kW)","peakStartingWatts":"5,400 W (5.40 kW)","recommendedGeneratorSize":"7,000 W (7.0 kW) — covers 6,750 W required with a 25% margin","amperageTable":[{"voltage":"120V","amps":"25.0 A"},{"voltage":"240V","amps":"12.5 A"}],"loadBreakdown":[{"appliance":"Window AC","running-w":"1,200","starting-w":"3,600","extra-surge-w":"2,400"},{"appliance":"Well Pump","running-w":"1,000","starting-w":"3,000","extra-surge-w":"2,000"},{"appliance":"Freezer","running-w":"300","starting-w":"900","extra-surge-w":"600"},{"appliance":"Outlets","running-w":"500","starting-w":"500","extra-surge-w":"0"}],"notes":"Sizing is driven by the largest motor's starting surge (+2,400 W above its running watts). This assumes only one large motor starts at a time — if two big motors could start together, size for their combined surge instead.\nThis is a rule-of-thumb estimate for choosing a generator, not a substitute for a licensed electrician's load calculation — especially before permanently wiring a standby unit through a transfer switch."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"totalRunningWatts":{"type":"string","description":"Total running load"},"peakStartingWatts":{"type":"string","description":"Peak starting load"},"recommendedGeneratorSize":{"type":"string","description":"Recommended generator size"},"amperageTable":{"type":"array","description":"Amp draw at common voltages","items":{"type":"object","properties":{"voltage":{"type":"string","description":"Voltage"},"amps":{"type":"string","description":"Amps"}}},"x-iotools-columns":["voltage","amps"]},"loadBreakdown":{"type":"array","description":"Load breakdown","items":{"type":"object","properties":{"appliance":{"type":"string","description":"Appliance"},"running-w":{"type":"string","description":"Running (W)"},"starting-w":{"type":"string","description":"Starting (W)"},"extra-surge-w":{"type":"string","description":"Extra surge (W)"}}},"x-iotools-columns":["appliance","running-w","starting-w","extra-surge-w"]},"notes":{"type":"string","description":"Notes & warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/geo-distance-calculator":{"post":{"operationId":"run_geo_distance_calculator","summary":"Geo Distance Calculator","tags":["Calculators"],"description":"Calculate the great-circle distance between two latitude/longitude points in kilometers, miles, nautical miles, meters and feet, plus the initial compass bearing. Choose the Haversine (spherical) or Vincenty (WGS-84 ellipsoid) formula; coordinates accept decimal degrees or DMS.\n\n[Try Geo Distance Calculator in your browser →](https://iotools.cloud/tool/geo-distance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latA":{"type":"string","description":"Point A — Latitude"},"lonA":{"type":"string","description":"Point A — Longitude"},"latB":{"type":"string","description":"Point B — Latitude"},"lonB":{"type":"string","description":"Point B — Longitude"},"formula":{"enum":["haversine","vincenty"],"description":"Formula"}},"required":["latA","lonA","latB","lonB"]},"examples":{"new_york_london_haversine":{"summary":"New York → London (Haversine)","value":{"latA":"40.7128","lonA":"-74.0060","latB":"51.5074","lonB":"-0.1278","formula":"haversine"}},"new_york_london_vincenty_ellipsoidal_slightly_longer":{"summary":"New York → London (Vincenty — ellipsoidal, slightly longer)","value":{"latA":"40.7128","lonA":"-74.0060","latB":"51.5074","lonB":"-0.1278","formula":"vincenty"}},"dms_input_new_york_los_angeles_haversine":{"summary":"DMS input: New York → Los Angeles (Haversine)","value":{"latA":"40°42'46\"N","lonA":"74°0'21.6\"W","latB":"34.0522","lonB":"-118.2437","formula":"haversine"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"new_york_london_haversine":{"summary":"New York → London (Haversine)","value":{"tool":"geo-distance-calculator","tool_version":"1.0.2","outputs":{"result":[{"unit":"Kilometers","value":"5570.222 km"},{"unit":"Miles","value":"3461.175 mi"},{"unit":"Nautical miles","value":"3007.680 nmi"},{"unit":"Meters","value":"5570222.2 m"},{"unit":"Feet","value":"18275007.7 ft"},{"unit":"Initial bearing","value":"51.21° (NE)"}]},"credits_used":5,"credits_remaining":null}},"new_york_london_vincenty_ellipsoidal_slightly_longer":{"summary":"New York → London (Vincenty — ellipsoidal, slightly longer)","value":{"tool":"geo-distance-calculator","tool_version":"1.0.2","outputs":{"result":[{"unit":"Kilometers","value":"5585.234 km"},{"unit":"Miles","value":"3470.502 mi"},{"unit":"Nautical miles","value":"3015.786 nmi"},{"unit":"Meters","value":"5585233.6 m"},{"unit":"Feet","value":"18324257.7 ft"},{"unit":"Initial bearing","value":"51.21° (NE)"}]},"credits_used":5,"credits_remaining":null}},"dms_input_new_york_los_angeles_haversine":{"summary":"DMS input: New York → Los Angeles (Haversine)","value":{"tool":"geo-distance-calculator","tool_version":"1.0.2","outputs":{"result":[{"unit":"Kilometers","value":"3935.746 km"},{"unit":"Miles","value":"2445.559 mi"},{"unit":"Nautical miles","value":"2125.134 nmi"},{"unit":"Meters","value":"3935746.4 m"},{"unit":"Feet","value":"12912554.3 ft"},{"unit":"Initial bearing","value":"273.69° (W)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Distance","items":{"type":"object","properties":{"unit":{"type":"string","description":"Unit"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["unit","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/geo-polygon-area-calculator":{"post":{"operationId":"run_geo_polygon_area_calculator","summary":"Geo Polygon Area Calculator","tags":["Calculators"],"description":"Calculate the area of a polygon from latitude/longitude vertices — land parcels, GPS survey boundaries, mapped regions. Uses the exact geodesic (great-circle) formula, not a flat-plane approximation, and reports area in m², km², hectares and acres plus the boundary perimeter. Accepts decimal degrees or DMS coordinates.\n\n[Try Geo Polygon Area Calculator in your browser →](https://iotools.cloud/tool/geo-polygon-area-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vertices":{"type":"string","description":"Vertex Coordinates (lat, lon)"}},"required":["vertices"]},"examples":{"rectangle_in_central_park_nyc":{"summary":"Rectangle in Central Park, NYC","value":{"vertices":"40.800,-73.958\n40.800,-73.949\n40.764,-73.949\n40.764,-73.958"}},"1_1_square_on_the_equator":{"summary":"1° × 1° square on the equator","value":{"vertices":"0,0\n0,1\n1,1\n1,0"}},"small_triangle_dms_input":{"summary":"Small triangle (DMS input)","value":{"vertices":"0°0'0\"N,0°0'0\"E\n0°0'0\"N,0°0'36\"E\n0°0'36\"N,0°0'0\"E"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_in_central_park_nyc":{"summary":"Rectangle in Central Park, NYC","value":{"tool":"geo-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"4"},{"metric":"Area (m²)","value":"3033380.73"},{"metric":"Area (km²)","value":"3.0334"},{"metric":"Area (hectares)","value":"303.3381"},{"metric":"Area (acres)","value":"749.5647"},{"metric":"Perimeter (km)","value":"9.522"}]},"credits_used":5,"credits_remaining":null}},"1_1_square_on_the_equator":{"summary":"1° × 1° square on the equator","value":{"tool":"geo-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"4"},{"metric":"Area (m²)","value":"12364031909.47"},{"metric":"Area (km²)","value":"12364.0319"},{"metric":"Area (hectares)","value":"1236403.1909"},{"metric":"Area (acres)","value":"3055218.8215"},{"metric":"Perimeter (km)","value":"444.763"}]},"credits_used":5,"credits_remaining":null}},"small_triangle_dms_input":{"summary":"Small triangle (DMS input)","value":{"tool":"geo-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"3"},{"metric":"Area (m²)","value":"618217.30"},{"metric":"Area (km²)","value":"0.6182"},{"metric":"Area (hectares)","value":"61.8217"},{"metric":"Area (acres)","value":"152.7648"},{"metric":"Perimeter (km)","value":"3.796"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/golden-ratio-calculator":{"post":{"operationId":"run_golden_ratio_calculator","summary":"Golden Ratio Calculator","tags":["Calculators"],"description":"Split a length into golden-ratio segments from its total, larger part, or smaller part — a/b = (a+b)/a = φ ≈ 1.618. Solve for whichever one value you know and get the other two, plus the ratio itself, at your chosen decimal precision.\n\n[Try Golden Ratio Calculator in your browser →](https://iotools.cloud/tool/golden-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFrom":{"enum":["total","larger","smaller"],"description":"Solve from"},"total":{"type":"number","description":"Total length (a + b)","minimum":0},"larger":{"type":"number","description":"Larger segment (a)","minimum":0},"smaller":{"type":"number","description":"Smaller segment (b)","minimum":0},"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"total_length_of_10":{"summary":"Total length of 10","value":{"solveFrom":"total","total":"10","precision":"4"}},"larger_segment_of_10":{"summary":"Larger segment of 10","value":{"solveFrom":"larger","larger":"10","precision":"4"}},"smaller_segment_of_10":{"summary":"Smaller segment of 10","value":{"solveFrom":"smaller","smaller":"10","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"total_length_of_10":{"summary":"Total length of 10","value":{"tool":"golden-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total length (a + b)","value":"10"},{"metric":"Larger segment (a)","value":"6.1803"},{"metric":"Smaller segment (b)","value":"3.8197"},{"metric":"Golden ratio (a ÷ b)","value":"1.618"}]},"credits_used":5,"credits_remaining":null}},"larger_segment_of_10":{"summary":"Larger segment of 10","value":{"tool":"golden-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total length (a + b)","value":"16.1803"},{"metric":"Larger segment (a)","value":"10"},{"metric":"Smaller segment (b)","value":"6.1803"},{"metric":"Golden ratio (a ÷ b)","value":"1.618"}]},"credits_used":5,"credits_remaining":null}},"smaller_segment_of_10":{"summary":"Smaller segment of 10","value":{"tool":"golden-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total length (a + b)","value":"26.1803"},{"metric":"Larger segment (a)","value":"16.1803"},{"metric":"Smaller segment (b)","value":"10"},{"metric":"Golden ratio (a ÷ b)","value":"1.618"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/golden-rectangle-calculator":{"post":{"operationId":"run_golden_rectangle_calculator","summary":"Golden Rectangle Calculator","tags":["Calculators"],"description":"Calculate a golden rectangle's short side, long side, area, perimeter, and diagonal from any single known measurement — the short side, the long side, or the diagonal. A golden rectangle's sides are always in the golden ratio, φ ≈ 1.618.\n\n[Try Golden Rectangle Calculator in your browser →](https://iotools.cloud/tool/golden-rectangle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFrom":{"enum":["short","long","diagonal"],"description":"Solve from"},"shortSide":{"type":"number","description":"Short side","minimum":0},"longSide":{"type":"number","description":"Long side","minimum":0},"diagonal":{"type":"number","description":"Diagonal","minimum":0},"unit":{"enum":["none","mm","cm","m","km","in","ft","yd","mi"],"description":"Unit"},"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"short_side_of_10":{"summary":"Short side of 10","value":{"solveFrom":"short","shortSide":"10","unit":"cm","precision":"4"}},"long_side_of_10":{"summary":"Long side of 10","value":{"solveFrom":"long","longSide":"10","unit":"none","precision":"4"}},"diagonal_of_10":{"summary":"Diagonal of 10","value":{"solveFrom":"diagonal","diagonal":"10","unit":"none","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"short_side_of_10":{"summary":"Short side of 10","value":{"tool":"golden-rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Short side","value":"10 cm"},{"metric":"Long side","value":"16.1803 cm"},{"metric":"Area","value":"161.8034 cm²"},{"metric":"Perimeter","value":"52.3607 cm"},{"metric":"Diagonal","value":"19.0211 cm"},{"metric":"Aspect ratio (long ÷ short)","value":"1.618:1"}]},"credits_used":5,"credits_remaining":null}},"long_side_of_10":{"summary":"Long side of 10","value":{"tool":"golden-rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Short side","value":"6.1803"},{"metric":"Long side","value":"10"},{"metric":"Area","value":"61.8034"},{"metric":"Perimeter","value":"32.3607"},{"metric":"Diagonal","value":"11.7557"},{"metric":"Aspect ratio (long ÷ short)","value":"1.618:1"}]},"credits_used":5,"credits_remaining":null}},"diagonal_of_10":{"summary":"Diagonal of 10","value":{"tool":"golden-rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Short side","value":"5.2573"},{"metric":"Long side","value":"8.5065"},{"metric":"Area","value":"44.7214"},{"metric":"Perimeter","value":"27.5276"},{"metric":"Diagonal","value":"10"},{"metric":"Aspect ratio (long ÷ short)","value":"1.618:1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gpa-calculator":{"post":{"operationId":"run_gpa_calculator","summary":"GPA Calculator","tags":["Calculators"],"description":"Calculate your weighted grade point average (GPA) from a list of courses. Enter each course's letter grade and credit hours, one per line, and get your GPA, total credit hours and total quality points on the standard 4.0 (or 4.3) scale.\n\n[Try GPA Calculator in your browser →](https://iotools.cloud/tool/gpa-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"courses":{"type":"string","description":"Courses"},"scale":{"enum":["4.0","4.3"],"description":"Grading Scale"}},"required":[]},"examples":{"simple_3_course_gpa":{"summary":"Simple 3-course GPA","value":{"courses":"Biology, A, 4\nCalculus, B+, 3\nHistory, C, 3","scale":"4.0"}},"all_a_s_perfect_4_0":{"summary":"All A's (perfect 4.0)","value":{"courses":"Physics, A, 4\nChemistry, A, 3\nLiterature, A, 3","scale":"4.0"}},"plus_minus_grades_on_the_4_3_scale":{"summary":"Plus/minus grades on the 4.3 scale","value":{"courses":"Seminar, A+, 3\nStatistics, B-, 3\nEthics, A-, 4","scale":"4.3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_3_course_gpa":{"summary":"Simple 3-course GPA","value":{"tool":"gpa-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Weighted GPA","value":"3.19"},{"metric":"Total Credit Hours","value":"10"},{"metric":"Total Quality Points","value":"31.90"},{"metric":"Courses Counted","value":"3"}]},"credits_used":5,"credits_remaining":null}},"all_a_s_perfect_4_0":{"summary":"All A's (perfect 4.0)","value":{"tool":"gpa-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Weighted GPA","value":"4.00"},{"metric":"Total Credit Hours","value":"10"},{"metric":"Total Quality Points","value":"40.00"},{"metric":"Courses Counted","value":"3"}]},"credits_used":5,"credits_remaining":null}},"plus_minus_grades_on_the_4_3_scale":{"summary":"Plus/minus grades on the 4.3 scale","value":{"tool":"gpa-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Weighted GPA","value":"3.58"},{"metric":"Total Credit Hours","value":"10"},{"metric":"Total Quality Points","value":"35.80"},{"metric":"Courses Counted","value":"3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gpu-vram-calculator":{"post":{"operationId":"run_gpu_vram_calculator","summary":"GPU VRAM Calculator","tags":["Calculators"],"description":"Estimate the GPU VRAM needed to run or train a transformer / large language model. Enter parameter count, precision (fp16, int8, int4…), context length and batch size to break down weights, KV cache, activations, gradients and optimizer state, and check which GPUs it fits on.\n\n[Try GPU VRAM Calculator in your browser →](https://iotools.cloud/tool/gpu-vram-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"modelPreset":{"enum":["custom","gpt2-124m","llama-3-2-1b","llama-3-2-3b","mistral-7b","llama-3-8b","llama-2-13b","mixtral-8x7b","llama-3-70b","llama-3-1-405b"],"description":"Model Preset"},"params":{"type":"number","description":"Parameters (B)","minimum":0.001,"maximum":2000},"hiddenDim":{"type":"number","description":"Hidden Dim","minimum":64,"maximum":65536},"layers":{"type":"number","description":"Layers","minimum":1,"maximum":256},"mode":{"enum":["inference","training"],"description":"Workload"},"precision":{"enum":["fp32","fp16","int8","int4"],"description":"Precision"},"batchSize":{"type":"number","description":"Batch Size","minimum":1,"maximum":4096},"seqLen":{"type":"number","description":"Sequence Length","minimum":1,"maximum":1048576},"optimizer":{"enum":["adam","sgd-momentum","sgd"],"description":"Optimizer"},"mixedPrecision":{"type":"boolean","description":"Mixed precision (fp32 master weights + grads)"},"gradCheckpoint":{"type":"boolean","description":"Gradient checkpointing (recompute activations)"}},"required":[]},"examples":{"mistral_7b_fp16_inference_4k_context":{"summary":"Mistral 7B, fp16 inference, 4K context","value":{"modelPreset":"mistral-7b","mode":"inference","precision":"fp16","batchSize":"1","seqLen":"4096"}},"70b_model_int4_quantized_inference_4k_context":{"summary":"70B model, int4 quantized inference, 4K context","value":{"modelPreset":"custom","params":"70","hiddenDim":"8192","layers":"80","mode":"inference","precision":"int4","batchSize":"1","seqLen":"4096"}},"7b_model_mixed_precision_adam_training_2k_context":{"summary":"7B model, mixed-precision Adam training, 2K context","value":{"modelPreset":"custom","params":"7","hiddenDim":"4096","layers":"32","mode":"training","precision":"fp16","batchSize":"1","seqLen":"2048","optimizer":"adam","mixedPrecision":"true","gradCheckpoint":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mistral_7b_fp16_inference_4k_context":{"summary":"Mistral 7B, fp16 inference, 4K context","value":{"tool":"gpu-vram-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"component":"Model weights","memory":"13.49 GB","share":"78.4%"},{"component":"KV cache","memory":"2.00 GB","share":"11.6%"},{"component":"Activations","memory":"0.16 GB","share":"0.9%"},{"component":"Framework overhead","memory":"1.56 GB","share":"9.1%"},{"component":"Total VRAM","memory":"17.21 GB","share":"100%"}],"gpuFit":[{"gpu":"RTX 4060 Ti 16GB","vram":"16 GB","fit":"Over (108%)","gpus-needed":"2 GPUs"},{"gpu":"RTX 4090 24GB","vram":"24 GB","fit":"Fits (72%)","gpus-needed":"1 GPU"},{"gpu":"RTX 5090 32GB","vram":"32 GB","fit":"Fits (54%)","gpus-needed":"1 GPU"},{"gpu":"A100 40GB","vram":"40 GB","fit":"Fits (43%)","gpus-needed":"1 GPU"},{"gpu":"A100 / H100 80GB","vram":"80 GB","fit":"Fits (22%)","gpus-needed":"1 GPU"},{"gpu":"H200 141GB","vram":"141 GB","fit":"Fits (12%)","gpus-needed":"1 GPU"}]},"credits_used":5,"credits_remaining":null}},"70b_model_int4_quantized_inference_4k_context":{"summary":"70B model, int4 quantized inference, 4K context","value":{"tool":"gpu-vram-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"component":"Model weights","memory":"32.60 GB","share":"69.4%"},{"component":"KV cache","memory":"10.00 GB","share":"21.3%"},{"component":"Activations","memory":"0.08 GB","share":"0.2%"},{"component":"Framework overhead","memory":"4.27 GB","share":"9.1%"},{"component":"Total VRAM","memory":"46.94 GB","share":"100%"}],"gpuFit":[{"gpu":"RTX 4060 Ti 16GB","vram":"16 GB","fit":"Over (293%)","gpus-needed":"3 GPUs"},{"gpu":"RTX 4090 24GB","vram":"24 GB","fit":"Over (196%)","gpus-needed":"2 GPUs"},{"gpu":"RTX 5090 32GB","vram":"32 GB","fit":"Over (147%)","gpus-needed":"2 GPUs"},{"gpu":"A100 40GB","vram":"40 GB","fit":"Over (117%)","gpus-needed":"2 GPUs"},{"gpu":"A100 / H100 80GB","vram":"80 GB","fit":"Fits (59%)","gpus-needed":"1 GPU"},{"gpu":"H200 141GB","vram":"141 GB","fit":"Fits (33%)","gpus-needed":"1 GPU"}]},"credits_used":5,"credits_remaining":null}},"7b_model_mixed_precision_adam_training_2k_context":{"summary":"7B model, mixed-precision Adam training, 2K context","value":{"tool":"gpu-vram-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"component":"Model weights","memory":"13.04 GB","share":"10.6%"},{"component":"Gradients","memory":"13.04 GB","share":"10.6%"},{"component":"Optimizer state (Adam / AdamW)","memory":"52.15 GB","share":"42.2%"},{"component":"fp32 master weights","memory":"26.08 GB","share":"21.1%"},{"component":"Activations","memory":"8.00 GB","share":"6.5%"},{"component":"Framework overhead","memory":"11.23 GB","share":"9.1%"},{"component":"Total VRAM","memory":"123.54 GB","share":"100%"}],"gpuFit":[{"gpu":"RTX 4060 Ti 16GB","vram":"16 GB","fit":"Over (772%)","gpus-needed":"8 GPUs"},{"gpu":"RTX 4090 24GB","vram":"24 GB","fit":"Over (515%)","gpus-needed":"6 GPUs"},{"gpu":"RTX 5090 32GB","vram":"32 GB","fit":"Over (386%)","gpus-needed":"4 GPUs"},{"gpu":"A100 40GB","vram":"40 GB","fit":"Over (309%)","gpus-needed":"4 GPUs"},{"gpu":"A100 / H100 80GB","vram":"80 GB","fit":"Over (154%)","gpus-needed":"2 GPUs"},{"gpu":"H200 141GB","vram":"141 GB","fit":"Tight (88%)","gpus-needed":"1 GPU"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"breakdown":{"type":"array","description":"Memory Breakdown","items":{"type":"object","properties":{"component":{"type":"string","description":"Component"},"memory":{"type":"string","description":"Memory"},"share":{"type":"string","description":"Share"}}},"x-iotools-columns":["component","memory","share"]},"gpuFit":{"type":"array","description":"GPU Fit Check","items":{"type":"object","properties":{"gpu":{"type":"string","description":"GPU"},"vram":{"type":"string","description":"VRAM"},"fit":{"type":"string","description":"Fit"},"gpus-needed":{"type":"string","description":"GPUs Needed"}}},"x-iotools-columns":["gpu","vram","fit","gpus-needed"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/harmonic-distortion-thd-calculator":{"post":{"operationId":"run_harmonic_distortion_thd_calculator","summary":"Harmonic Distortion (THD) Calculator","tags":["Calculators"],"description":"Calculate Total Harmonic Distortion from a fundamental amplitude and any number of harmonic amplitudes. Reports both THD-F (relative to the fundamental) and THD-R (relative to total RMS), plus each harmonic's individual contribution.\n\n[Try Harmonic Distortion (THD) Calculator in your browser →](https://iotools.cloud/tool/harmonic-distortion-thd-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"fundamental":{"type":"number","description":"Fundamental Amplitude (V₁)","minimum":0},"harmonics":{"type":"string","description":"Harmonic Amplitudes (h₂, h₃, h₄, …)"}},"required":[]},"examples":{"120_v_fundamental_with_5_harmonics":{"summary":"120 V fundamental with 5 harmonics","value":{"fundamental":"120","harmonics":"12, 8, 5, 3, 2"}},"single_dominant_2nd_harmonic":{"summary":"Single dominant 2nd harmonic","value":{"fundamental":"230","harmonics":"45"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"120_v_fundamental_with_5_harmonics":{"summary":"120 V fundamental with 5 harmonics","value":{"tool":"harmonic-distortion-thd-calculator","tool_version":"1.0.2","outputs":{"harmonics":[{"harmonic":"Harmonic 2 (h2)","amplitude":"12","of-fundamental":"10%"},{"harmonic":"Harmonic 3 (h3)","amplitude":"8","of-fundamental":"6.66667%"},{"harmonic":"Harmonic 4 (h4)","amplitude":"5","of-fundamental":"4.16667%"},{"harmonic":"Harmonic 5 (h5)","amplitude":"3","of-fundamental":"2.5%"},{"harmonic":"Harmonic 6 (h6)","amplitude":"2","of-fundamental":"1.66667%"}],"summary":[{"quantity":"Fundamental (V₁)","value":"120"},{"quantity":"Harmonics counted","value":"5"},{"quantity":"RMS of harmonics (√Σhₙ²)","value":"15.6844"},{"quantity":"Total RMS (√(V₁²+Σhₙ²))","value":"121.021"},{"quantity":"THD-F (relative to fundamental)","value":"13.0703%"},{"quantity":"THD-R (relative to total RMS)","value":"12.9601%"}],"breakdown":"Σhₙ² = 12² + 8² + 5² + 3² + 2² = 246\n√Σhₙ² = 15.6844\nTHD-F = √Σhₙ² ÷ V₁ × 100 = 15.6844 ÷ 120 × 100 = 13.0703%\nTHD-R = √Σhₙ² ÷ √(V₁²+Σhₙ²) × 100 = 15.6844 ÷ 121.021 × 100 = 12.9601%"},"credits_used":5,"credits_remaining":null}},"single_dominant_2nd_harmonic":{"summary":"Single dominant 2nd harmonic","value":{"tool":"harmonic-distortion-thd-calculator","tool_version":"1.0.2","outputs":{"harmonics":[{"harmonic":"Harmonic 2 (h2)","amplitude":"45","of-fundamental":"19.5652%"}],"summary":[{"quantity":"Fundamental (V₁)","value":"230"},{"quantity":"Harmonics counted","value":"1"},{"quantity":"RMS of harmonics (√Σhₙ²)","value":"45"},{"quantity":"Total RMS (√(V₁²+Σhₙ²))","value":"234.361"},{"quantity":"THD-F (relative to fundamental)","value":"19.5652%"},{"quantity":"THD-R (relative to total RMS)","value":"19.2012%"}],"breakdown":"Σhₙ² = 45² = 2025\n√Σhₙ² = 45\nTHD-F = √Σhₙ² ÷ V₁ × 100 = 45 ÷ 230 × 100 = 19.5652%\nTHD-R = √Σhₙ² ÷ √(V₁²+Σhₙ²) × 100 = 45 ÷ 234.361 × 100 = 19.2012%"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"harmonics":{"type":"array","description":"Individual Harmonics","items":{"type":"object","properties":{"harmonic":{"type":"string","description":"Harmonic"},"amplitude":{"type":"string","description":"Amplitude"},"of-fundamental":{"type":"string","description":"% of Fundamental"}}},"x-iotools-columns":["harmonic","amplitude","of-fundamental"]},"summary":{"type":"array","description":"THD Summary","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hash-collision-probability-calculator":{"post":{"operationId":"run_hash_collision_probability_calculator","summary":"Hash Collision Probability Calculator (Birthday Problem)","tags":["Calculators"],"description":"Calculate the probability of at least one hash or ID collision for a given hash size and number of items, using the birthday-paradox formula — plus how many items it takes to reach a 50%, 1%, 0.01% or custom collision risk.\n\n[Try Hash Collision Probability Calculator (Birthday Problem) in your browser →](https://iotools.cloud/tool/hash-collision-probability-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hashSize":{"enum":["32","122","128","160","256","512","custom"],"description":"Hash / ID space"},"customBits":{"type":"number","description":"Custom hash size (bits)","minimum":1,"maximum":1024},"items":{"type":"string","description":"Number of items generated (n)"},"targetProbability":{"type":"number","description":"Target collision probability for custom lookup (%)","minimum":0.01,"maximum":99.99}},"required":[]},"examples":{"sha_256_1_000_000_items":{"summary":"SHA-256, 1,000,000 items","value":{"hashSize":"256","items":"1000000","targetProbability":"50"}},"uuid_v4_1_billion_items_1_custom_target":{"summary":"UUID v4, 1 billion items, 1% custom target","value":{"hashSize":"122","items":"1e9","targetProbability":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sha_256_1_000_000_items":{"summary":"SHA-256, 1,000,000 items","value":{"tool":"hash-collision-probability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Hash / ID space","value":"2^256 (≈ 1.16 × 10^77 possible values)"},{"metric":"Items entered (n)","value":"≈ 1.00 × 10^6 (≈ 2^19.9)"},{"metric":"Probability of ≥1 collision","value":"4.32e-64%"},{"metric":"Items for 50% collision risk","value":"≈ 4.01 × 10^38 (≈ 2^128.2)"},{"metric":"Items for 1% collision risk","value":"≈ 4.82 × 10^37 (≈ 2^125.2)"},{"metric":"Items for 0.01% collision risk","value":"≈ 4.81 × 10^36 (≈ 2^121.9)"},{"metric":"Items for 50% collision risk (custom target)","value":"≈ 4.01 × 10^38 (≈ 2^128.2)"}]},"credits_used":5,"credits_remaining":null}},"uuid_v4_1_billion_items_1_custom_target":{"summary":"UUID v4, 1 billion items, 1% custom target","value":{"tool":"hash-collision-probability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Hash / ID space","value":"2^122 (≈ 5.32 × 10^36 possible values)"},{"metric":"Items entered (n)","value":"≈ 1.00 × 10^9 (≈ 2^29.9)"},{"metric":"Probability of ≥1 collision","value":"9.40e-18%"},{"metric":"Items for 50% collision risk","value":"≈ 2.71 × 10^18 (≈ 2^61.2)"},{"metric":"Items for 1% collision risk","value":"≈ 3.27 × 10^17 (≈ 2^58.2)"},{"metric":"Items for 0.01% collision risk","value":"≈ 3.26 × 10^16 (≈ 2^54.9)"},{"metric":"Items for 1% collision risk (custom target)","value":"≈ 3.27 × 10^17 (≈ 2^58.2)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/heart-rate-zone-calculator":{"post":{"operationId":"run_heart_rate_zone_calculator","summary":"Heart Rate Zone Calculator","tags":["Calculators"],"description":"Calculate your five heart rate training zones (Zone 1 to Zone 5) from your age, using the Haskell-Fox, Tanaka or Gellish maximum-heart-rate formula, plus the optional Karvonen heart-rate-reserve method for personalized zones from your resting heart rate.\n\n[Try Heart Rate Zone Calculator in your browser →](https://iotools.cloud/tool/heart-rate-zone-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"age":{"type":"number","description":"Age (years)","minimum":1,"maximum":120},"maxHrFormula":{"enum":["haskell","tanaka","gellish","manual"],"description":"Max HR formula"},"maxHrManual":{"type":"number","description":"Manual max HR (BPM)","minimum":60,"maximum":250},"useKarvonen":{"type":"boolean","description":"Use Karvonen method (more personalized)"},"restingHr":{"type":"number","description":"Resting HR (BPM)","minimum":30,"maximum":120},"targetIntensity":{"type":"number","description":"Target intensity (%)","minimum":1,"maximum":100}},"required":["age"]},"examples":{"age_30_haskell_fox_formula_75_target":{"summary":"Age 30, Haskell-Fox formula, 75% target","value":{"age":"30","maxHrFormula":"haskell","useKarvonen":"","targetIntensity":"75"}},"age_45_tanaka_formula_80_target_fractional_max_hr":{"summary":"Age 45, Tanaka formula, 80% target (fractional max HR)","value":{"age":"45","maxHrFormula":"tanaka","useKarvonen":"","targetIntensity":"80"}},"age_30_karvonen_method_resting_hr_60_75_target":{"summary":"Age 30, Karvonen method, resting HR 60, 75% target","value":{"age":"30","maxHrFormula":"haskell","useKarvonen":"true","restingHr":"60","targetIntensity":"75"}},"manual_max_hr_200_85_target":{"summary":"Manual max HR 200, 85% target","value":{"age":"30","maxHrFormula":"manual","maxHrManual":"200","useKarvonen":"","targetIntensity":"85"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"age_30_haskell_fox_formula_75_target":{"summary":"Age 30, Haskell-Fox formula, 75% target","value":{"tool":"heart-rate-zone-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Max Heart Rate","value":"190 BPM"},{"metric":"Formula","value":"Haskell-Fox (220 - age)"},{"metric":"Target Heart Rate (75%)","value":"143 BPM"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"95–114 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"114–133 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"133–152 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"152–171 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"171–190 BPM","training-purpose":"VO₂ max, peak power"}]},"credits_used":5,"credits_remaining":null}},"age_45_tanaka_formula_80_target_fractional_max_hr":{"summary":"Age 45, Tanaka formula, 80% target (fractional max HR)","value":{"tool":"heart-rate-zone-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Max Heart Rate","value":"177 BPM"},{"metric":"Formula","value":"Tanaka (208 - 0.7 × age)"},{"metric":"Target Heart Rate (80%)","value":"141 BPM"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"88–106 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"106–124 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"124–141 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"141–159 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"159–177 BPM","training-purpose":"VO₂ max, peak power"}]},"credits_used":5,"credits_remaining":null}},"age_30_karvonen_method_resting_hr_60_75_target":{"summary":"Age 30, Karvonen method, resting HR 60, 75% target","value":{"tool":"heart-rate-zone-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Max Heart Rate","value":"190 BPM"},{"metric":"Formula","value":"Haskell-Fox (220 - age)"},{"metric":"Resting Heart Rate","value":"60 BPM"},{"metric":"Heart Rate Reserve","value":"130 BPM"},{"metric":"Target Heart Rate (75%)","value":"158 BPM"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"125–138 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"138–151 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"151–164 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"164–177 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"177–190 BPM","training-purpose":"VO₂ max, peak power"}]},"credits_used":5,"credits_remaining":null}},"manual_max_hr_200_85_target":{"summary":"Manual max HR 200, 85% target","value":{"tool":"heart-rate-zone-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Max Heart Rate","value":"200 BPM"},{"metric":"Formula","value":"Manual entry"},{"metric":"Target Heart Rate (85%)","value":"170 BPM"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"100–120 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"120–140 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"140–160 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"160–180 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"180–200 BPM","training-purpose":"VO₂ max, peak power"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"zones":{"type":"array","description":"Training Zones","items":{"type":"object","properties":{"zone":{"type":"string","description":"Zone"},"intensity-of-max-hr":{"type":"string","description":"Intensity (% of Max HR)"},"bpm-range":{"type":"string","description":"BPM Range"},"training-purpose":{"type":"string","description":"Training Purpose"}}},"x-iotools-columns":["zone","intensity-of-max-hr","bpm-range","training-purpose"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/heat-exchanger-lmtd-calculator":{"post":{"operationId":"run_heat_exchanger_lmtd_calculator","summary":"Heat Exchanger LMTD Calculator","tags":["Calculators"],"description":"Calculate the log mean temperature difference (LMTD) for a parallel-flow or counter-flow heat exchanger from its four terminal temperatures, apply a correction factor for multi-pass/cross-flow arrangements, and optionally estimate the required heat-transfer area from a duty and overall heat-transfer coefficient.\n\n[Try Heat Exchanger LMTD Calculator in your browser →](https://iotools.cloud/tool/heat-exchanger-lmtd-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"arrangement":{"enum":["counter","parallel","other"],"description":"Flow Arrangement"},"correctionFactor":{"type":"number","description":"Correction Factor (F)","minimum":0,"maximum":1},"temperatureUnit":{"enum":["c","f","k"],"description":"Temperature Unit"},"hotIn":{"type":"number","description":"Hot Fluid Inlet (Th,in)"},"hotOut":{"type":"number","description":"Hot Fluid Outlet (Th,out)"},"coldIn":{"type":"number","description":"Cold Fluid Inlet (Tc,in)"},"coldOut":{"type":"number","description":"Cold Fluid Outlet (Tc,out)"},"overallCoefficient":{"type":"number","description":"Overall Heat Transfer Coefficient (U)","minimum":0},"duty":{"type":"number","description":"Heat Duty (Q)","minimum":0}},"required":["hotIn","hotOut","coldIn","coldOut"]},"examples":{"counter_flow_with_area_estimate":{"summary":"Counter-flow, with area estimate","value":{"arrangement":"counter","temperatureUnit":"c","hotIn":"150","hotOut":"100","coldIn":"20","coldOut":"80","overallCoefficient":"500","duty":"250"}},"parallel_flow_no_area_estimate":{"summary":"Parallel flow, no area estimate","value":{"arrangement":"parallel","temperatureUnit":"c","hotIn":"200","hotOut":"100","coldIn":"30","coldOut":"90","overallCoefficient":"","duty":""}},"multi_pass_shell_and_tube_correction_factor_applied":{"summary":"Multi-pass shell-and-tube, correction factor applied","value":{"arrangement":"other","correctionFactor":"0.85","temperatureUnit":"f","hotIn":"300","hotOut":"220","coldIn":"80","coldOut":"180","overallCoefficient":"","duty":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"counter_flow_with_area_estimate":{"summary":"Counter-flow, with area estimate","value":{"tool":"heat-exchanger-lmtd-calculator","tool_version":"1.0.2","outputs":{"status":"LMTD = 74.89 °C. Required area ≈ 6.677 m².","results":[{"property":"Flow Arrangement","value":"Counter-flow (counter-current)"},{"property":"ΔT1 (larger end)","value":"80.00 °C"},{"property":"ΔT2 (smaller end)","value":"70.00 °C"},{"property":"LMTD (uncorrected)","value":"74.89 °C"},{"property":"Overall Heat Transfer Coefficient (U)","value":"500.0 W/(m²·K)"},{"property":"Heat Duty (Q)","value":"250.0 kW"},{"property":"Required Heat Transfer Area (A = Q / (U × LMTD))","value":"6.677 m²"},{"property":"Note","value":"Assumes constant specific heats and an overall U — a preliminary sizing estimate, not a detailed rating calculation."}]},"credits_used":5,"credits_remaining":null}},"parallel_flow_no_area_estimate":{"summary":"Parallel flow, no area estimate","value":{"tool":"heat-exchanger-lmtd-calculator","tool_version":"1.0.2","outputs":{"status":"LMTD = 56.47 °C.","results":[{"property":"Flow Arrangement","value":"Parallel flow (co-current)"},{"property":"ΔT1 (larger end)","value":"170.0 °C"},{"property":"ΔT2 (smaller end)","value":"10.00 °C"},{"property":"LMTD (uncorrected)","value":"56.47 °C"},{"property":"Note","value":"Assumes constant specific heats and an overall U — a preliminary sizing estimate, not a detailed rating calculation."}]},"credits_used":5,"credits_remaining":null}},"multi_pass_shell_and_tube_correction_factor_applied":{"summary":"Multi-pass shell-and-tube, correction factor applied","value":{"tool":"heat-exchanger-lmtd-calculator","tool_version":"1.0.2","outputs":{"status":"LMTD = 110.3 °F (F = 0.8500 × 129.7 °F).","results":[{"property":"Flow Arrangement","value":"Other (correction factor applied)"},{"property":"ΔT1 (larger end)","value":"140.0 °F"},{"property":"ΔT2 (smaller end)","value":"120.0 °F"},{"property":"LMTD (uncorrected)","value":"129.7 °F"},{"property":"Correction Factor (F)","value":"0.8500"},{"property":"Corrected LMTD (F × LMTD)","value":"110.3 °F"},{"property":"Note","value":"Assumes constant specific heats and an overall U — a preliminary sizing estimate, not a detailed rating calculation."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"results":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/heat-index-wind-chill-calculator":{"post":{"operationId":"run_heat_index_wind_chill_calculator","summary":"Heat Index & Wind Chill Calculator","tags":["Calculators"],"description":"Calculate the 'feels-like' temperature from air temperature plus humidity (NWS heat index) or plus wind speed (NWS wind chill), in °F or °C, with a safety category and guidance.\n\n[Try Heat Index & Wind Chill Calculator in your browser →](https://iotools.cloud/tool/heat-index-wind-chill-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["heat","wind"],"description":"Calculation"},"tempUnit":{"enum":["f","c"],"description":"Temperature unit"},"temperature":{"type":"number","description":"Air temperature"},"humidity":{"type":"number","description":"Relative humidity (%)","minimum":0,"maximum":100},"windUnit":{"enum":["mph","kph","mps","kn"],"description":"Wind speed unit"},"windSpeed":{"type":"number","description":"Wind speed","minimum":0}},"required":["temperature"]},"examples":{"90_f_70_rh_heat_index":{"summary":"90°F, 70% RH (heat index)","value":{"mode":"heat","tempUnit":"f","temperature":"90","humidity":"70"}},"30_f_15_mph_wind_chill":{"summary":"30°F, 15 mph (wind chill)","value":{"mode":"wind","tempUnit":"f","temperature":"30","windUnit":"mph","windSpeed":"15"}},"15_c_40_km_h_wind_chill_celsius":{"summary":"-15°C, 40 km/h (wind chill, Celsius)","value":{"mode":"wind","tempUnit":"c","temperature":"-15","windUnit":"kph","windSpeed":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"90_f_70_rh_heat_index":{"summary":"90°F, 70% RH (heat index)","value":{"tool":"heat-index-wind-chill-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Feels-like heat index (°F)","value":"105.9 °F"},{"metric":"Feels-like heat index (°C)","value":"41.1 °C"},{"metric":"Actual temperature","value":"90.0 °F"},{"metric":"Relative humidity","value":"70%"},{"metric":"Difference from actual","value":"+15.9 °F / +8.8 °C"},{"metric":"Safety category","value":"Danger"},{"metric":"Safety guidance","value":"Heat cramps and heat exhaustion are likely; heat stroke is possible. Limit outdoor activity, hydrate aggressively, and watch vulnerable people closely."},{"metric":"Formula","value":"NWS Rothfusz regression"}]},"credits_used":5,"credits_remaining":null}},"30_f_15_mph_wind_chill":{"summary":"30°F, 15 mph (wind chill)","value":{"tool":"heat-index-wind-chill-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Feels-like wind chill (°F)","value":"19.0 °F"},{"metric":"Feels-like wind chill (°C)","value":"-7.2 °C"},{"metric":"Actual temperature","value":"30.0 °F"},{"metric":"Wind speed","value":"15.0 mph"},{"metric":"Difference from actual","value":"-11.0 °F / -6.1 °C"},{"metric":"Safety category","value":"Cool"},{"metric":"Safety guidance","value":"Dress in warm layers. Frostbite risk is low for short exposure, but prolonged exposure can be uncomfortable."},{"metric":"Formula","value":"NWS / Environment Canada (2001)"}]},"credits_used":5,"credits_remaining":null}},"15_c_40_km_h_wind_chill_celsius":{"summary":"-15°C, 40 km/h (wind chill, Celsius)","value":{"tool":"heat-index-wind-chill-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Feels-like wind chill (°F)","value":"-17.4 °F"},{"metric":"Feels-like wind chill (°C)","value":"-27.4 °C"},{"metric":"Actual temperature","value":"-15.0 °C"},{"metric":"Wind speed","value":"40.0 km/h (24.9 mph)"},{"metric":"Difference from actual","value":"-22.4 °F / -12.4 °C"},{"metric":"Safety category","value":"Cold"},{"metric":"Safety guidance","value":"Frostbite on exposed skin is possible within about 30 minutes. Cover exposed skin and limit time outdoors."},{"metric":"Formula","value":"NWS / Environment Canada (2001)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hours-calculator":{"post":{"operationId":"run_hours_calculator","summary":"Hours Calculator","tags":["Calculators"],"description":"Calculate the duration between a start time and an end time — as hours and minutes, total minutes, and decimal hours. Handles overnight shifts that cross midnight.\n\n[Try Hours Calculator in your browser →](https://iotools.cloud/tool/hours-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startTime":{"type":"string","description":"Start time"},"endTime":{"type":"string","description":"End time"},"overnight":{"type":"boolean","description":"End time is on the next day (overnight shift)"}},"required":["startTime","endTime"]},"examples":{"standard_workday_09_00_17_30":{"summary":"Standard workday (09:00 → 17:30)","value":{"startTime":"09:00","endTime":"17:30","overnight":""}},"overnight_shift_auto_detected_22_00_06_00":{"summary":"Overnight shift, auto-detected (22:00 → 06:00)","value":{"startTime":"22:00","endTime":"06:00","overnight":""}},"full_24_hours_forced_overnight_08_00_08_00_next_day":{"summary":"Full 24 hours, forced overnight (08:00 → 08:00 next day)","value":{"startTime":"08:00","endTime":"08:00","overnight":"true"}},"partial_hour_09_15_17_35":{"summary":"Partial hour (09:15 → 17:35)","value":{"startTime":"09:15","endTime":"17:35","overnight":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_workday_09_00_17_30":{"summary":"Standard workday (09:00 → 17:30)","value":{"tool":"hours-calculator","tool_version":"1.0.2","outputs":{"duration":"8h 30m","totalMinutes":"510","decimalHours":"8.5"},"credits_used":5,"credits_remaining":null}},"overnight_shift_auto_detected_22_00_06_00":{"summary":"Overnight shift, auto-detected (22:00 → 06:00)","value":{"tool":"hours-calculator","tool_version":"1.0.2","outputs":{"duration":"8h 0m","totalMinutes":"480","decimalHours":"8"},"credits_used":5,"credits_remaining":null}},"full_24_hours_forced_overnight_08_00_08_00_next_day":{"summary":"Full 24 hours, forced overnight (08:00 → 08:00 next day)","value":{"tool":"hours-calculator","tool_version":"1.0.2","outputs":{"duration":"24h 0m","totalMinutes":"1440","decimalHours":"24"},"credits_used":5,"credits_remaining":null}},"partial_hour_09_15_17_35":{"summary":"Partial hour (09:15 → 17:35)","value":{"tool":"hours-calculator","tool_version":"1.0.2","outputs":{"duration":"8h 20m","totalMinutes":"500","decimalHours":"8.33"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"duration":{"type":"string","description":"Duration"},"totalMinutes":{"type":"string","description":"Total minutes"},"decimalHours":{"type":"string","description":"Decimal hours"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hvac-btu-load-calculator":{"post":{"operationId":"run_hvac_btu_load_calculator","summary":"HVAC BTU Load Calculator","tags":["Calculators"],"description":"Calculate the air conditioning BTU/hr load a room needs from its dimensions, climate zone, insulation quality, windows and sun exposure, then get a recommended AC size (BTU rating and tonnage) rounded to a real purchasable unit. Runs entirely in your browser.\n\n[Try HVAC BTU Load Calculator in your browser →](https://iotools.cloud/tool/hvac-btu-load-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"Room length (ft)","minimum":5,"maximum":60},"width":{"type":"number","description":"Room width (ft)","minimum":5,"maximum":60},"ceilingHeight":{"type":"number","description":"Ceiling height (ft)","minimum":7,"maximum":20},"climateZone":{"enum":["cool","moderate","hot"],"description":"Climate zone"},"insulationQuality":{"enum":["poor","average","good","excellent"],"description":"Insulation quality"},"windowCount":{"type":"number","description":"Number of windows","minimum":0,"maximum":12},"sunExposure":{"enum":["shaded","moderate","full-sun"],"description":"Window sun exposure"},"occupants":{"type":"number","description":"Regular occupants","minimum":1,"maximum":12}},"required":[]},"examples":{"180_sq_ft_bedroom_moderate_climate_average_insulation_2_windows":{"summary":"180 sq ft bedroom, moderate climate, average insulation, 2 windows","value":{"length":"15","width":"12","ceilingHeight":"8","climateZone":"moderate","insulationQuality":"average","windowCount":"2","sunExposure":"moderate","occupants":"2"}},"300_sq_ft_sunroom_hot_climate_poor_insulation_4_full_sun_windows_4_occupants":{"summary":"300 sq ft sunroom, hot climate, poor insulation, 4 full-sun windows, 4 occupants","value":{"length":"20","width":"15","ceilingHeight":"9","climateZone":"hot","insulationQuality":"poor","windowCount":"4","sunExposure":"full-sun","occupants":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"180_sq_ft_bedroom_moderate_climate_average_insulation_2_windows":{"summary":"180 sq ft bedroom, moderate climate, average insulation, 2 windows","value":{"tool":"hvac-btu-load-calculator","tool_version":"1.0.2","outputs":{"floorArea":"180 sq ft","btuRequired":"6,500 BTU/hr","acTonnage":"0.54 tons (nearest standard: 0.75 ton)","recommendedUnitSize":"8,000 BTU/hr window/portable unit, or a 0.75-ton central/mini-split system","breakdown":[{"factor":"Floor area","detail":"15 ft × 12 ft","contribution":"180 sq ft"},{"factor":"Base cooling rate","detail":"25 BTU/sq ft (moderate climate)","contribution":"4,500 BTU/hr"},{"factor":"Ceiling height adjustment","detail":"8.0 ft ceiling","contribution":"×1.00"},{"factor":"Insulation adjustment","detail":"Average","contribution":"×1.00"},{"factor":"Window heat gain","detail":"2 window(s), moderate sun, 1,000 BTU/window","contribution":"+2,000 BTU/hr"},{"factor":"Occupant load","detail":"2 occupant(s), +600 BTU per person beyond 2","contribution":"+0 BTU/hr"},{"factor":"Total cooling load","detail":"","contribution":"6,500 BTU/hr"}],"notes":"This is a rule-of-thumb estimate for a single room or zone, not a substitute for a professional Manual J load calculation — especially for whole-house or multi-room HVAC design. Oversizing an AC unit causes short-cycling and poor humidity control; undersizing leaves it unable to keep up on the hottest days."},"credits_used":5,"credits_remaining":null}},"300_sq_ft_sunroom_hot_climate_poor_insulation_4_full_sun_windows_4_occupants":{"summary":"300 sq ft sunroom, hot climate, poor insulation, 4 full-sun windows, 4 occupants","value":{"tool":"hvac-btu-load-calculator","tool_version":"1.0.2","outputs":{"floorArea":"300 sq ft","btuRequired":"19,400 BTU/hr","acTonnage":"1.61 tons (nearest standard: 2.00 ton)","recommendedUnitSize":"21,000 BTU/hr window/portable unit, or a 2.00-ton central/mini-split system","breakdown":[{"factor":"Floor area","detail":"20 ft × 15 ft","contribution":"300 sq ft"},{"factor":"Base cooling rate","detail":"30 BTU/sq ft (hot climate)","contribution":"9,000 BTU/hr"},{"factor":"Ceiling height adjustment","detail":"9.0 ft ceiling","contribution":"×1.13"},{"factor":"Insulation adjustment","detail":"Poor","contribution":"×1.20"},{"factor":"Window heat gain","detail":"4 window(s), full sun, 1,500 BTU/window","contribution":"+6,000 BTU/hr"},{"factor":"Occupant load","detail":"4 occupant(s), +600 BTU per person beyond 2","contribution":"+1,200 BTU/hr"},{"factor":"Total cooling load","detail":"","contribution":"19,400 BTU/hr"}],"notes":"This is a rule-of-thumb estimate for a single room or zone, not a substitute for a professional Manual J load calculation — especially for whole-house or multi-room HVAC design. Oversizing an AC unit causes short-cycling and poor humidity control; undersizing leaves it unable to keep up on the hottest days."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"floorArea":{"type":"string","description":"Floor area"},"btuRequired":{"type":"string","description":"Cooling load required"},"acTonnage":{"type":"string","description":"AC tonnage"},"recommendedUnitSize":{"type":"string","description":"Recommended unit size"},"breakdown":{"type":"array","description":"Load breakdown","items":{"type":"object","properties":{"factor":{"type":"string","description":"Factor"},"detail":{"type":"string","description":"Detail"},"contribution":{"type":"string","description":"Contribution"}}},"x-iotools-columns":["factor","detail","contribution"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hyperbola-calculator":{"post":{"operationId":"run_hyperbola_calculator","summary":"Hyperbola Calculator","tags":["Calculators"],"description":"Analyze a hyperbola in standard form: center, vertices, co-vertices, foci, eccentricity, and asymptotes, with a plotted diagram of both branches and step-by-step math.\n\n[Try Hyperbola Calculator in your browser →](https://iotools.cloud/tool/hyperbola-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orientation":{"enum":["horizontal","vertical"],"description":"Orientation"},"a":{"type":"number","description":"a"},"b":{"type":"number","description":"b"},"h":{"type":"number","description":"Center x (h)"},"k":{"type":"number","description":"Center y (k)"}},"required":["a","b","h","k"]},"examples":{"horizontal_centered_at_the_origin_a_3_b_2":{"summary":"Horizontal, centered at the origin (a = 3, b = 2)","value":{"orientation":"horizontal","a":"3","b":"2","h":"0","k":"0"}},"vertical_off_center_a_2_b_4_center_1_2":{"summary":"Vertical, off-center (a = 2, b = 4, center (1, -2))","value":{"orientation":"vertical","a":"2","b":"4","h":"1","k":"-2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"horizontal_centered_at_the_origin_a_3_b_2":{"summary":"Horizontal, centered at the origin (a = 3, b = 2)","value":{"tool":"hyperbola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"hyperbola-svg\" viewBox=\"-14.00 -8.99 27.99 17.99\"><line x1=\"-14.00\" y1=\"0\" x2=\"14.00\" y2=\"0\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"0\" y1=\"-8.99\" x2=\"0\" y2=\"8.99\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-14.00\" y1=\"9.33\" x2=\"14.00\" y2=\"-9.33\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"-14.00\" y1=\"-9.33\" x2=\"14.00\" y2=\"9.33\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><path d=\"M 11.29 7.25 L 10.59 6.77 L 9.93 6.31 L 9.32 5.88 L 8.75 5.48 L 8.23 5.11 L 7.73 4.75 L 7.27 4.42 L 6.85 4.10 L 6.45 3.81 L 6.09 3.53 L 5.75 3.27 L 5.43 3.02 L 5.14 2.78 L 4.87 2.56 L 4.63 2.35 L 4.40 2.15 L 4.20 1.96 L 4.01 1.78 L 3.84 1.60 L 3.69 1.43 L 3.56 1.27 L 3.44 1.12 L 3.33 0.97 L 3.24 0.82 L 3.17 0.68 L 3.11 0.54 L 3.06 0.40 L 3.03 0.27 L 3.01 0.13 L 3.00 0.00 L 3.01 -0.13 L 3.03 -0.27 L 3.06 -0.40 L 3.11 -0.54 L 3.17 -0.68 L 3.24 -0.82 L 3.33 -0.97 L 3.44 -1.12 L 3.56 -1.27 L 3.69 -1.43 L 3.84 -1.60 L 4.01 -1.78 L 4.20 -1.96 L 4.40 -2.15 L 4.63 -2.35 L 4.87 -2.56 L 5.14 -2.78 L 5.43 -3.02 L 5.75 -3.27 L 6.09 -3.53 L 6.45 -3.81 L 6.85 -4.10 L 7.27 -4.42 L 7.73 -4.75 L 8.23 -5.11 L 8.75 -5.48 L 9.32 -5.88 L 9.93 -6.31 L 10.59 -6.77 L 11.29 -7.25\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><path d=\"M -11.29 7.25 L -10.59 6.77 L -9.93 6.31 L -9.32 5.88 L -8.75 5.48 L -8.23 5.11 L -7.73 4.75 L -7.27 4.42 L -6.85 4.10 L -6.45 3.81 L -6.09 3.53 L -5.75 3.27 L -5.43 3.02 L -5.14 2.78 L -4.87 2.56 L -4.63 2.35 L -4.40 2.15 L -4.20 1.96 L -4.01 1.78 L -3.84 1.60 L -3.69 1.43 L -3.56 1.27 L -3.44 1.12 L -3.33 0.97 L -3.24 0.82 L -3.17 0.68 L -3.11 0.54 L -3.06 0.40 L -3.03 0.27 L -3.01 0.13 L -3.00 0.00 L -3.01 -0.13 L -3.03 -0.27 L -3.06 -0.40 L -3.11 -0.54 L -3.17 -0.68 L -3.24 -0.82 L -3.33 -0.97 L -3.44 -1.12 L -3.56 -1.27 L -3.69 -1.43 L -3.84 -1.60 L -4.01 -1.78 L -4.20 -1.96 L -4.40 -2.15 L -4.63 -2.35 L -4.87 -2.56 L -5.14 -2.78 L -5.43 -3.02 L -5.75 -3.27 L -6.09 -3.53 L -6.45 -3.81 L -6.85 -4.10 L -7.27 -4.42 L -7.73 -4.75 L -8.23 -5.11 L -8.75 -5.48 L -9.32 -5.88 L -9.93 -6.31 L -10.59 -6.77 L -11.29 -7.25\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"0.00\" cy=\"0.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"3.00\" cy=\"0.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"-3.00\" cy=\"0.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"3.61\" cy=\"0.00\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"-3.61\" cy=\"0.00\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/></svg>","summary":[{"property":"Orientation","value":"Horizontal (opens left/right)"},{"property":"Center (h, k)","value":"(0, 0)"},{"property":"a (transverse semi-axis)","value":"3"},{"property":"b (conjugate semi-axis)","value":"2"},{"property":"c (focal distance)","value":"3.60555"},{"property":"Eccentricity (e)","value":"1.20185"},{"property":"Vertices","value":"(3, 0) and (-3, 0)"},{"property":"Co-vertices","value":"(0, 2) and (0, -2)"},{"property":"Foci","value":"(3.60555, 0) and (-3.60555, 0)"},{"property":"Asymptotes","value":"y = 0.666667x; y = -0.666667x"},{"property":"Transverse axis length","value":"6"},{"property":"Conjugate axis length","value":"4"}],"steps":"Standard form: x² / 9 − y² / 4 = 1\nCenter: (h, k) = (0, 0)\nOpens left/right (a = 3, b = 2)\nc = √(a² + b²) = √(9 + 4) = 3.60555\nEccentricity: e = c / a = 3.60555 / 3 = 1.20185\nVertices: (3, 0) and (-3, 0)\nCo-vertices: (0, 2) and (0, -2)\nFoci: (3.60555, 0) and (-3.60555, 0)\nAsymptotes: y = 0.666667x  and  y = -0.666667x"},"credits_used":5,"credits_remaining":null}},"vertical_off_center_a_2_b_4_center_1_2":{"summary":"Vertical, off-center (a = 2, b = 4, center (1, -2))","value":{"tool":"hyperbola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"hyperbola-svg\" viewBox=\"-16.99 -7.33 35.98 18.66\"><line x1=\"-16.99\" y1=\"0\" x2=\"18.99\" y2=\"0\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"0\" y1=\"-7.33\" x2=\"0\" y2=\"11.33\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-16.99\" y1=\"10.99\" x2=\"18.99\" y2=\"-6.99\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"-16.99\" y1=\"-6.99\" x2=\"18.99\" y2=\"10.99\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><path d=\"M -13.51 -5.52 L -12.54 -5.06 L -11.62 -4.62 L -10.77 -4.21 L -9.97 -3.84 L -9.21 -3.48 L -8.50 -3.15 L -7.84 -2.85 L -7.21 -2.57 L -6.62 -2.30 L -6.06 -2.06 L -5.53 -1.83 L -5.04 -1.62 L -4.57 -1.43 L -4.12 -1.25 L -3.70 -1.09 L -3.30 -0.94 L -2.92 -0.80 L -2.55 -0.67 L -2.20 -0.56 L -1.87 -0.46 L -1.55 -0.37 L -1.24 -0.29 L -0.94 -0.22 L -0.64 -0.16 L -0.36 -0.11 L -0.08 -0.07 L 0.19 -0.04 L 0.47 -0.02 L 0.73 -0.00 L 1.00 0.00 L 1.27 -0.00 L 1.53 -0.02 L 1.81 -0.04 L 2.08 -0.07 L 2.36 -0.11 L 2.64 -0.16 L 2.94 -0.22 L 3.24 -0.29 L 3.55 -0.37 L 3.87 -0.46 L 4.20 -0.56 L 4.55 -0.67 L 4.92 -0.80 L 5.30 -0.94 L 5.70 -1.09 L 6.12 -1.25 L 6.57 -1.43 L 7.04 -1.62 L 7.53 -1.83 L 8.06 -2.06 L 8.62 -2.30 L 9.21 -2.57 L 9.84 -2.85 L 10.50 -3.15 L 11.21 -3.48 L 11.97 -3.84 L 12.77 -4.21 L 13.62 -4.62 L 14.54 -5.06 L 15.51 -5.52\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><path d=\"M -13.51 9.52 L -12.54 9.06 L -11.62 8.62 L -10.77 8.21 L -9.97 7.84 L -9.21 7.48 L -8.50 7.15 L -7.84 6.85 L -7.21 6.57 L -6.62 6.30 L -6.06 6.06 L -5.53 5.83 L -5.04 5.62 L -4.57 5.43 L -4.12 5.25 L -3.70 5.09 L -3.30 4.94 L -2.92 4.80 L -2.55 4.67 L -2.20 4.56 L -1.87 4.46 L -1.55 4.37 L -1.24 4.29 L -0.94 4.22 L -0.64 4.16 L -0.36 4.11 L -0.08 4.07 L 0.19 4.04 L 0.47 4.02 L 0.73 4.00 L 1.00 4.00 L 1.27 4.00 L 1.53 4.02 L 1.81 4.04 L 2.08 4.07 L 2.36 4.11 L 2.64 4.16 L 2.94 4.22 L 3.24 4.29 L 3.55 4.37 L 3.87 4.46 L 4.20 4.56 L 4.55 4.67 L 4.92 4.80 L 5.30 4.94 L 5.70 5.09 L 6.12 5.25 L 6.57 5.43 L 7.04 5.62 L 7.53 5.83 L 8.06 6.06 L 8.62 6.30 L 9.21 6.57 L 9.84 6.85 L 10.50 7.15 L 11.21 7.48 L 11.97 7.84 L 12.77 8.21 L 13.62 8.62 L 14.54 9.06 L 15.51 9.52\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"1.00\" cy=\"2.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"0.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"4.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"-2.47\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"6.47\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/></svg>","summary":[{"property":"Orientation","value":"Vertical (opens up/down)"},{"property":"Center (h, k)","value":"(1, -2)"},{"property":"a (transverse semi-axis)","value":"2"},{"property":"b (conjugate semi-axis)","value":"4"},{"property":"c (focal distance)","value":"4.47214"},{"property":"Eccentricity (e)","value":"2.23607"},{"property":"Vertices","value":"(1, 0) and (1, -4)"},{"property":"Co-vertices","value":"(5, -2) and (-3, -2)"},{"property":"Foci","value":"(1, 2.47214) and (1, -6.47214)"},{"property":"Asymptotes","value":"y = 0.5x - 2.5; y = -0.5x - 1.5"},{"property":"Transverse axis length","value":"4"},{"property":"Conjugate axis length","value":"8"}],"steps":"Standard form: (y + 2)² / 4 − (x − 1)² / 16 = 1\nCenter: (h, k) = (1, -2)\nOpens up/down (a = 2, b = 4)\nc = √(a² + b²) = √(4 + 16) = 4.47214\nEccentricity: e = c / a = 4.47214 / 2 = 2.23607\nVertices: (1, 0) and (1, -4)\nCo-vertices: (5, -2) and (-3, -2)\nFoci: (1, 2.47214) and (1, -6.47214)\nAsymptotes: y = 0.5x - 2.5  and  y = -0.5x - 1.5"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svgSource":{"type":"string","description":"Diagram (SVG source)"},"summary":{"type":"array","description":"Analysis","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hyperbolic-functions-calculator":{"post":{"operationId":"run_hyperbolic_functions_calculator","summary":"Hyperbolic Functions Calculator","tags":["Calculators"],"description":"Calculate sinh(x), cosh(x), tanh(x) and their reciprocals — csch(x), sech(x), coth(x) — for any real number x, the hyperbolic analogues of the circular trig functions.\n\n[Try Hyperbolic Functions Calculator in your browser →](https://iotools.cloud/tool/hyperbolic-functions-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x":{"type":"number","description":"x"}},"required":["x"]},"examples":{"x_0":{"summary":"x = 0","value":{"x":"0"}},"x_1":{"summary":"x = 1","value":{"x":"1"}},"x_2":{"summary":"x = -2","value":{"x":"-2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_0":{"summary":"x = 0","value":{"tool":"hyperbolic-functions-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"sinh(0)","value":"0"},{"function":"cosh(0)","value":"1"},{"function":"tanh(0)","value":"0"},{"function":"csch(0) = 1/sinh(0)","value":"Undefined at x = 0"},{"function":"sech(0) = 1/cosh(0)","value":"1"},{"function":"coth(0) = 1/tanh(0)","value":"Undefined at x = 0"}]},"credits_used":5,"credits_remaining":null}},"x_1":{"summary":"x = 1","value":{"tool":"hyperbolic-functions-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"sinh(1)","value":"1.175201"},{"function":"cosh(1)","value":"1.543081"},{"function":"tanh(1)","value":"0.761594"},{"function":"csch(1) = 1/sinh(1)","value":"0.850918"},{"function":"sech(1) = 1/cosh(1)","value":"0.648054"},{"function":"coth(1) = 1/tanh(1)","value":"1.313035"}]},"credits_used":5,"credits_remaining":null}},"x_2":{"summary":"x = -2","value":{"tool":"hyperbolic-functions-calculator","tool_version":"1.0.2","outputs":{"result":[{"function":"sinh(-2)","value":"-3.62686"},{"function":"cosh(-2)","value":"3.762196"},{"function":"tanh(-2)","value":"-0.964028"},{"function":"csch(-2) = 1/sinh(-2)","value":"-0.275721"},{"function":"sech(-2) = 1/cosh(-2)","value":"0.265802"},{"function":"coth(-2) = 1/tanh(-2)","value":"-1.037315"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"function":{"type":"string","description":"Function"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["function","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ideal-body-weight-calculator":{"post":{"operationId":"run_ideal_body_weight_calculator","summary":"Ideal Body Weight Calculator","tags":["Calculators"],"description":"Calculate ideal body weight (IBW) from height and sex using the Devine, Hamwi, Robinson, Miller and Peterson formulas side by side, with body-frame adjustment, a range and midpoint, and a healthy BMI weight range.\n\n[Try Ideal Body Weight Calculator in your browser →](https://iotools.cloud/tool/ideal-body-weight-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sex":{"enum":["male","female"],"description":"Sex"},"units":{"enum":["metric","imperial"],"description":"Units"},"height":{"type":"number","description":"Height","minimum":0.1},"frame":{"enum":["small","medium","large"],"description":"Body frame"}},"required":["height"]},"examples":{"male_180_cm_medium_frame":{"summary":"Male, 180 cm, medium frame","value":{"sex":"male","units":"metric","height":"180","frame":"medium"}},"female_5_ft_5_in_small_frame":{"summary":"Female, 5 ft 5 in, small frame","value":{"sex":"female","units":"imperial","height":"65","frame":"small"}},"male_150_cm_below_the_fitted_range":{"summary":"Male, 150 cm — below the fitted range","value":{"sex":"male","units":"metric","height":"150","frame":"large"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"male_180_cm_medium_frame":{"summary":"Male, 180 cm, medium frame","value":{"tool":"ideal-body-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"method":"Hamwi (1964)","ideal-weight":"77.3 kg (170.5 lb)"},{"method":"Devine (1974)","ideal-weight":"75.0 kg (165.3 lb)"},{"method":"Robinson (1983)","ideal-weight":"72.6 kg (160.2 lb)"},{"method":"Miller (1983)","ideal-weight":"71.5 kg (157.7 lb)"},{"method":"Peterson (2016)","ideal-weight":"71.5 kg (157.6 lb)"},{"method":"Healthy BMI range (18.5–25)","ideal-weight":"59.9 – 81.0 kg (132.1 – 178.6 lb)"}],"range":"71.5 – 77.3 kg (157.6 – 170.5 lb)","midpoint":"74.4 kg (164.1 lb)","notes":""},"credits_used":5,"credits_remaining":null}},"female_5_ft_5_in_small_frame":{"summary":"Female, 5 ft 5 in, small frame","value":{"tool":"ideal-body-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"method":"Hamwi (1964)","ideal-weight":"112.1 lb (50.8 kg)"},{"method":"Devine (1974)","ideal-weight":"113.1 lb (51.3 kg)"},{"method":"Robinson (1983)","ideal-weight":"114.1 lb (51.7 kg)"},{"method":"Miller (1983)","ideal-weight":"118.9 lb (53.9 kg)"},{"method":"Peterson (2016)","ideal-weight":"119.1 lb (54.0 kg)"},{"method":"Healthy BMI range (18.5–25)","ideal-weight":"111.2 – 150.2 lb (50.4 – 68.1 kg)"}],"range":"112.1 – 119.1 lb (50.8 – 54.0 kg)","midpoint":"115.6 lb (52.4 kg)","notes":"Body frame small: every formula result was reduced by 10%. The healthy BMI range is not frame-adjusted."},"credits_used":5,"credits_remaining":null}},"male_150_cm_below_the_fitted_range":{"summary":"Male, 150 cm — below the fitted range","value":{"tool":"ideal-body-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"method":"Hamwi (1964)","ideal-weight":"50.0 kg (110.2 lb)"},{"method":"Devine (1974)","ideal-weight":"52.6 kg (116.0 lb)"},{"method":"Robinson (1983)","ideal-weight":"55.2 kg (121.8 lb)"},{"method":"Miller (1983)","ideal-weight":"60.4 kg (133.1 lb)"},{"method":"Peterson (2016)","ideal-weight":"53.2 kg (117.4 lb)"},{"method":"Healthy BMI range (18.5–25)","ideal-weight":"41.6 – 56.3 kg (91.8 – 124.0 lb)"}],"range":"50.0 – 60.4 kg (110.2 – 133.1 lb)","midpoint":"55.2 kg (121.6 lb)","notes":"Body frame large: every formula result was increased by 10%. The healthy BMI range is not frame-adjusted.\nUnder 5 ft (152.4 cm) the four linear formulas extrapolate below the range they were fitted on — treat those figures with extra caution."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"method":{"type":"string","description":"Method"},"ideal-weight":{"type":"string","description":"Ideal weight"}}},"x-iotools-columns":["method","ideal-weight"]},"range":{"type":"string","description":"Range across formulas"},"midpoint":{"type":"string","description":"Midpoint"},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-print-size-calculator":{"post":{"operationId":"run_image_print_size_calculator","summary":"Image Print Size Calculator","tags":["Calculators"],"description":"Work out how big an image prints at a given DPI (print size = pixels / DPI, in inches, cm and mm), or reverse it to find the pixel dimensions needed for a target print size. Exact math from raw pixels and DPI.\n\n[Try Image Print Size Calculator in your browser →](https://iotools.cloud/tool/image-print-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["pixels-to-print","print-to-pixels"],"description":"Mode"},"widthPx":{"type":"number","description":"Image Width (px)","minimum":1},"heightPx":{"type":"number","description":"Image Height (px)","minimum":1},"printWidth":{"type":"number","description":"Print Width","minimum":0.01},"printHeight":{"type":"number","description":"Print Height","minimum":0.01},"printUnit":{"enum":["in","cm","mm"],"description":"Print Unit"},"dpi":{"type":"number","description":"DPI / PPI","minimum":1,"maximum":9999}},"required":[]},"examples":{"3000_2000_px_at_300_dpi":{"summary":"3000 × 2000 px at 300 DPI","value":{"mode":"pixels-to-print","widthPx":"3000","heightPx":"2000","dpi":"300"}},"1920_1080_px_at_72_dpi":{"summary":"1920 × 1080 px at 72 DPI","value":{"mode":"pixels-to-print","widthPx":"1920","heightPx":"1080","dpi":"72"}},"8_10_in_print_at_300_dpi":{"summary":"8 × 10 in print at 300 DPI","value":{"mode":"print-to-pixels","printWidth":"8","printHeight":"10","printUnit":"in","dpi":"300"}},"a4_21_29_7_cm_print_at_300_dpi":{"summary":"A4 (21 × 29.7 cm) print at 300 DPI","value":{"mode":"print-to-pixels","printWidth":"21","printHeight":"29.7","printUnit":"cm","dpi":"300"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3000_2000_px_at_300_dpi":{"summary":"3000 × 2000 px at 300 DPI","value":{"tool":"image-print-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Print Size (in)","value":"10 × 6.67"},{"property":"Print Size (cm)","value":"25.4 × 16.93"},{"property":"Print Size (mm)","value":"254 × 169.33"},{"property":"Megapixels","value":"6 MP"},{"property":"Orientation","value":"Landscape"},{"property":"Total Pixels","value":"6000000"}]},"credits_used":5,"credits_remaining":null}},"1920_1080_px_at_72_dpi":{"summary":"1920 × 1080 px at 72 DPI","value":{"tool":"image-print-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Print Size (in)","value":"26.67 × 15"},{"property":"Print Size (cm)","value":"67.73 × 38.1"},{"property":"Print Size (mm)","value":"677.33 × 381"},{"property":"Megapixels","value":"2.07 MP"},{"property":"Orientation","value":"Landscape"},{"property":"Total Pixels","value":"2073600"}]},"credits_used":5,"credits_remaining":null}},"8_10_in_print_at_300_dpi":{"summary":"8 × 10 in print at 300 DPI","value":{"tool":"image-print-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Pixels Needed","value":"2400 × 3000"},{"property":"Width","value":"2400 px"},{"property":"Height","value":"3000 px"},{"property":"Megapixels","value":"7.2 MP"},{"property":"Print Size (in)","value":"8 × 10"},{"property":"Total Pixels","value":"7200000"}]},"credits_used":5,"credits_remaining":null}},"a4_21_29_7_cm_print_at_300_dpi":{"summary":"A4 (21 × 29.7 cm) print at 300 DPI","value":{"tool":"image-print-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Pixels Needed","value":"2481 × 3508"},{"property":"Width","value":"2481 px"},{"property":"Height","value":"3508 px"},{"property":"Megapixels","value":"8.7 MP"},{"property":"Print Size (in)","value":"8.27 × 11.69"},{"property":"Total Pixels","value":"8703348"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/implicit-derivative-calculator":{"post":{"operationId":"run_implicit_derivative_calculator","summary":"Implicit Derivative Calculator","tags":["Calculators"],"description":"Differentiate an implicit equation in x and y to the 1st, 2nd, or 3rd order without solving for y first, with every partial derivative shown and an optional evaluation at a point.\n\n[Try Implicit Derivative Calculator in your browser →](https://iotools.cloud/tool/implicit-derivative-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lhs":{"type":"string","description":"Left side (in x, y)"},"rhs":{"type":"string","description":"Right side (in x, y)"},"order":{"enum":["1","2","3"],"description":"Differentiate to order"},"x0":{"type":"number","description":"x₀"},"y0":{"type":"number","description":"y₀"}},"required":["lhs","rhs"]},"examples":{"circle_x_y_25_1st_derivative":{"summary":"Circle x² + y² = 25 — 1st derivative","value":{"lhs":"x^2 + y^2","rhs":"25","order":"1","x0":"3","y0":"4"}},"circle_x_y_25_2nd_derivative":{"summary":"Circle x² + y² = 25 — 2nd derivative","value":{"lhs":"x^2 + y^2","rhs":"25","order":"2","x0":"3","y0":"4"}},"circle_x_y_25_3rd_derivative":{"summary":"Circle x² + y² = 25 — 3rd derivative","value":{"lhs":"x^2 + y^2","rhs":"25","order":"3","x0":"3","y0":"4"}},"folium_of_descartes_x_y_9xy_1st_derivative_symbolic_only":{"summary":"Folium of Descartes x³ + y³ = 9xy — 1st derivative, symbolic only","value":{"lhs":"x^3 + y^3","rhs":"9*x*y","order":"1","x0":"","y0":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"circle_x_y_25_1st_derivative":{"summary":"Circle x² + y² = 25 — 1st derivative","value":{"tool":"implicit-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"-(x / y)","value":"-0.75","steps":"Implicit equation: x^2 + y^2 = 25\nH(x, y) = (x^2 + y^2) - (25)\n∂H/∂x = 2 * x\n∂H/∂y = 2 * y\ndy/dx = -(∂H/∂x) / (∂H/∂y) = -(x / y)\nAt (x, y) = (3, 4): dy/dx = -0.75"},"credits_used":5,"credits_remaining":null}},"circle_x_y_25_2nd_derivative":{"summary":"Circle x² + y² = 25 — 2nd derivative","value":{"tool":"implicit-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"-(x ^ 2 / y ^ 3 + 1 / y)","value":"-0.390625","steps":"Implicit equation: x^2 + y^2 = 25\nH(x, y) = (x^2 + y^2) - (25)\n∂H/∂x = 2 * x\n∂H/∂y = 2 * y\ndy/dx = -(∂H/∂x) / (∂H/∂y) = -(x / y)\n∂²H/∂x² = 2\n∂²H/∂x∂y = 0\n∂²H/∂y² = 2\nd²y/dx² = -(Hxx + 2·Hxy·y′ + Hyy·y′²) / Hy = -(x ^ 2 / y ^ 3 + 1 / y)\nAt (x, y) = (3, 4): d²y/dx² = -0.390625"},"credits_used":5,"credits_remaining":null}},"circle_x_y_25_3rd_derivative":{"summary":"Circle x² + y² = 25 — 3rd derivative","value":{"tool":"implicit-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"-(3 * (x ^ 3 + y ^ 2 * x) / y ^ 5)","value":"-0.219727","steps":"Implicit equation: x^2 + y^2 = 25\nH(x, y) = (x^2 + y^2) - (25)\n∂H/∂x = 2 * x\n∂H/∂y = 2 * y\ndy/dx = -(∂H/∂x) / (∂H/∂y) = -(x / y)\n∂²H/∂x² = 2\n∂²H/∂x∂y = 0\n∂²H/∂y² = 2\nd²y/dx² = -(Hxx + 2·Hxy·y′ + Hyy·y′²) / Hy = -(x ^ 2 / y ^ 3 + 1 / y)\n∂³H/∂x³ = 0\n∂³H/∂x²∂y = 0\n∂³H/∂x∂y² = 0\n∂³H/∂y³ = 0\nd³y/dx³ = -(Hxxx + 3·Hxxy·y′ + 3·Hxyy·y′² + Hyyy·y′³ + 3·Hxy·y″ + 3·Hyy·y′·y″) / Hy = -(3 * (x ^ 3 + y ^ 2 * x) / y ^ 5)\nAt (x, y) = (3, 4): d³y/dx³ = -0.219727"},"credits_used":5,"credits_remaining":null}},"folium_of_descartes_x_y_9xy_1st_derivative_symbolic_only":{"summary":"Folium of Descartes x³ + y³ = 9xy — 1st derivative, symbolic only","value":{"tool":"implicit-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"(9 * y - 3 * x ^ 2) / (3 * y ^ 2 - 9 * x)","value":"","steps":"Implicit equation: x^3 + y^3 = 9*x*y\nH(x, y) = (x^3 + y^3) - (9*x*y)\n∂H/∂x = 3 * x ^ 2 - 9 * y\n∂H/∂y = 3 * y ^ 2 - 9 * x\ndy/dx = -(∂H/∂x) / (∂H/∂y) = (9 * y - 3 * x ^ 2) / (3 * y ^ 2 - 9 * x)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"derivative":{"type":"string","description":"Implicit Derivative"},"value":{"type":"string","description":"Value at the Point"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/inflation-calculator":{"post":{"operationId":"run_inflation_calculator","summary":"Inflation Calculator","tags":["Calculators"],"description":"Calculate how inflation changes the value of money over time. Enter an amount, a start and end year, and an average annual inflation rate to see the equivalent value, cumulative inflation and lost purchasing power, with a year-by-year breakdown. Works backward in time and models deflation with a negative rate.\n\n[Try Inflation Calculator in your browser →](https://iotools.cloud/tool/inflation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","description":"Amount ($)","minimum":0.01},"startYear":{"type":"number","description":"Start Year","minimum":1900,"maximum":2100},"endYear":{"type":"number","description":"End Year","minimum":1900,"maximum":2100},"inflationRate":{"type":"number","description":"Annual Inflation Rate (%)","minimum":-50,"maximum":1000}},"required":["amount","startYear","endYear","inflationRate"]},"examples":{"1_000_from_2015_to_2025_at_3":{"summary":"$1,000 from 2015 to 2025 at 3%","value":{"amount":"1000","startYear":"2015","endYear":"2025","inflationRate":"3"}},"look_backward_2_000_from_2025_to_2015_at_3":{"summary":"Look backward: $2,000 from 2025 to 2015 at 3%","value":{"amount":"2000","startYear":"2025","endYear":"2015","inflationRate":"3"}},"short_span_500_from_2020_to_2023_at_6":{"summary":"Short span: $500 from 2020 to 2023 at 6%","value":{"amount":"500","startYear":"2020","endYear":"2023","inflationRate":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_000_from_2015_to_2025_at_3":{"summary":"$1,000 from 2015 to 2025 at 3%","value":{"tool":"inflation-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Inflation Result ===\n\n  $1,000.00 in 2015 has the same buying power as $1,343.92 in 2025.\n\n  Amount:                   $1,000.00\n  Equivalent Value:         $1,343.92\n  Cumulative Inflation:     34.39%\n  Purchasing Power:         0.7441\n  Period:                   10 years forward (2015 → 2025)\n  Average Annual Rate:      3.00%\n\n=== Formula ===\n  equivalent = amount x (1 + rate/100) ^ years\n  = $1,000.00 x (1 + 3/100) ^ 10","table":[{"year":"2015","equivalent-value":"$1,000.00","cumulative-inflation":"0.00%","purchasing-power":"1.0000"},{"year":"2016","equivalent-value":"$1,030.00","cumulative-inflation":"3.00%","purchasing-power":"0.9709"},{"year":"2017","equivalent-value":"$1,060.90","cumulative-inflation":"6.09%","purchasing-power":"0.9426"},{"year":"2018","equivalent-value":"$1,092.73","cumulative-inflation":"9.27%","purchasing-power":"0.9151"},{"year":"2019","equivalent-value":"$1,125.51","cumulative-inflation":"12.55%","purchasing-power":"0.8885"},{"year":"2020","equivalent-value":"$1,159.27","cumulative-inflation":"15.93%","purchasing-power":"0.8626"},{"year":"2021","equivalent-value":"$1,194.05","cumulative-inflation":"19.41%","purchasing-power":"0.8375"},{"year":"2022","equivalent-value":"$1,229.87","cumulative-inflation":"22.99%","purchasing-power":"0.8131"},{"year":"2023","equivalent-value":"$1,266.77","cumulative-inflation":"26.68%","purchasing-power":"0.7894"},{"year":"2024","equivalent-value":"$1,304.77","cumulative-inflation":"30.48%","purchasing-power":"0.7664"},{"year":"2025","equivalent-value":"$1,343.92","cumulative-inflation":"34.39%","purchasing-power":"0.7441"}]},"credits_used":5,"credits_remaining":null}},"look_backward_2_000_from_2025_to_2015_at_3":{"summary":"Look backward: $2,000 from 2025 to 2015 at 3%","value":{"tool":"inflation-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Inflation Result ===\n\n  $2,000.00 in 2025 has the same buying power as $1,488.19 in 2015.\n\n  Amount:                   $2,000.00\n  Equivalent Value:         $1,488.19\n  Cumulative Inflation:     -25.59%\n  Purchasing Power:         1.3439\n  Period:                   10 years backward (2025 → 2015)\n  Average Annual Rate:      3.00%\n\n=== Formula ===\n  equivalent = amount x (1 + rate/100) ^ years\n  = $2,000.00 x (1 + 3/100) ^ -10","table":[{"year":"2025","equivalent-value":"$2,000.00","cumulative-inflation":"0.00%","purchasing-power":"1.0000"},{"year":"2024","equivalent-value":"$1,941.75","cumulative-inflation":"-2.91%","purchasing-power":"1.0300"},{"year":"2023","equivalent-value":"$1,885.19","cumulative-inflation":"-5.74%","purchasing-power":"1.0609"},{"year":"2022","equivalent-value":"$1,830.28","cumulative-inflation":"-8.49%","purchasing-power":"1.0927"},{"year":"2021","equivalent-value":"$1,776.97","cumulative-inflation":"-11.15%","purchasing-power":"1.1255"},{"year":"2020","equivalent-value":"$1,725.22","cumulative-inflation":"-13.74%","purchasing-power":"1.1593"},{"year":"2019","equivalent-value":"$1,674.97","cumulative-inflation":"-16.25%","purchasing-power":"1.1941"},{"year":"2018","equivalent-value":"$1,626.18","cumulative-inflation":"-18.69%","purchasing-power":"1.2299"},{"year":"2017","equivalent-value":"$1,578.82","cumulative-inflation":"-21.06%","purchasing-power":"1.2668"},{"year":"2016","equivalent-value":"$1,532.83","cumulative-inflation":"-23.36%","purchasing-power":"1.3048"},{"year":"2015","equivalent-value":"$1,488.19","cumulative-inflation":"-25.59%","purchasing-power":"1.3439"}]},"credits_used":5,"credits_remaining":null}},"short_span_500_from_2020_to_2023_at_6":{"summary":"Short span: $500 from 2020 to 2023 at 6%","value":{"tool":"inflation-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Inflation Result ===\n\n  $500.00 in 2020 has the same buying power as $595.51 in 2023.\n\n  Amount:                   $500.00\n  Equivalent Value:         $595.51\n  Cumulative Inflation:     19.10%\n  Purchasing Power:         0.8396\n  Period:                   3 years forward (2020 → 2023)\n  Average Annual Rate:      6.00%\n\n=== Formula ===\n  equivalent = amount x (1 + rate/100) ^ years\n  = $500.00 x (1 + 6/100) ^ 3","table":[{"year":"2020","equivalent-value":"$500.00","cumulative-inflation":"0.00%","purchasing-power":"1.0000"},{"year":"2021","equivalent-value":"$530.00","cumulative-inflation":"6.00%","purchasing-power":"0.9434"},{"year":"2022","equivalent-value":"$561.80","cumulative-inflation":"12.36%","purchasing-power":"0.8900"},{"year":"2023","equivalent-value":"$595.51","cumulative-inflation":"19.10%","purchasing-power":"0.8396"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"table":{"type":"array","description":"Year-by-Year Breakdown","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"equivalent-value":{"type":"string","description":"Equivalent Value"},"cumulative-inflation":{"type":"string","description":"Cumulative Inflation"},"purchasing-power":{"type":"string","description":"Purchasing Power"}}},"x-iotools-columns":["year","equivalent-value","cumulative-inflation","purchasing-power"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/insulation-calculator":{"post":{"operationId":"run_insulation_calculator","summary":"Insulation Calculator","tags":["Calculators"],"description":"Estimate the target R-value, required thickness, material volume, and cost range for insulating an attic, wall, floor, or basement — using DOE climate-zone recommendations you can also override.\n\n[Try Insulation Calculator in your browser →](https://iotools.cloud/tool/insulation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"zone":{"enum":["1","2","3","4","5","6","7","8"],"description":"Climate zone"},"application":{"enum":["attic","wall","floor","basement"],"description":"Where you're insulating"},"area":{"type":"number","description":"Area to insulate (sq ft)","minimum":0},"material":{"enum":["fiberglass-batt","mineral-wool-batt","blown-cellulose","open-cell-spray-foam","closed-cell-spray-foam","rigid-foam-board"],"description":"Insulation material"},"targetROverride":{"type":"number","description":"Target R-value (optional override)","minimum":0}},"required":["area"]},"examples":{"zone_5_attic_1200_sq_ft_fiberglass_batt":{"summary":"Zone 5 attic, 1200 sq ft, fiberglass batt","value":{"zone":"5","application":"attic","area":"1200","material":"fiberglass-batt","targetROverride":""}},"zone_3_wall_cavity_800_sq_ft_closed_cell_spray_foam":{"summary":"Zone 3 wall cavity, 800 sq ft, closed-cell spray foam","value":{"zone":"3","application":"wall","area":"800","material":"closed-cell-spray-foam","targetROverride":""}},"manual_r_value_override_500_sq_ft_blown_cellulose":{"summary":"Manual R-value override, 500 sq ft, blown cellulose","value":{"zone":"6","application":"floor","area":"500","material":"blown-cellulose","targetROverride":"30"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"zone_5_attic_1200_sq_ft_fiberglass_batt":{"summary":"Zone 5 attic, 1200 sq ft, fiberglass batt","value":{"tool":"insulation-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Target R-value","value":"R-49"},{"metric":"Required thickness","value":"15.3 in"},{"metric":"Insulation volume needed","value":"1531.3 cu ft"},{"metric":"Estimated cost (low)","value":"$1176.00"},{"metric":"Estimated cost (high)","value":"$2352.00"}],"summary":"R-49 · 15.3 in Fiberglass Batt · $1176–$2352"},"credits_used":5,"credits_remaining":null}},"zone_3_wall_cavity_800_sq_ft_closed_cell_spray_foam":{"summary":"Zone 3 wall cavity, 800 sq ft, closed-cell spray foam","value":{"tool":"insulation-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Target R-value","value":"R-15"},{"metric":"Required thickness","value":"2.3 in"},{"metric":"Insulation volume needed","value":"153.8 cu ft"},{"metric":"Estimated cost (low)","value":"$1800.00"},{"metric":"Estimated cost (high)","value":"$2400.00"}],"summary":"R-15 · 2.3 in Closed-Cell Spray Foam · $1800–$2400"},"credits_used":5,"credits_remaining":null}},"manual_r_value_override_500_sq_ft_blown_cellulose":{"summary":"Manual R-value override, 500 sq ft, blown cellulose","value":{"tool":"insulation-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Target R-value","value":"R-30"},{"metric":"Required thickness","value":"8.6 in"},{"metric":"Insulation volume needed","value":"357.1 cu ft"},{"metric":"Estimated cost (low)","value":"$450.00"},{"metric":"Estimated cost (high)","value":"$750.00"}],"summary":"R-30 · 8.6 in Blown-In Cellulose · $450–$750"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/invoice-total-calculator":{"post":{"operationId":"run_invoice_total_calculator","summary":"Invoice Total Calculator","tags":["Calculators"],"description":"Calculate an invoice's grand total from a subtotal, discount, tax and shipping. Choose whether the discount applies before or after tax to see exactly how the total is built up.\n\n[Try Invoice Total Calculator in your browser →](https://iotools.cloud/tool/invoice-total-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subtotal":{"type":"number","description":"Subtotal ($)","minimum":0,"maximum":999999999},"discountPercent":{"type":"number","description":"Discount (%)","minimum":0,"maximum":100},"discountTiming":{"enum":["before","after"],"description":"Discount Applied"},"taxPercent":{"type":"number","description":"Tax (%)","minimum":0,"maximum":100},"shipping":{"type":"number","description":"Shipping / Handling ($)","minimum":0,"maximum":999999999}},"required":["subtotal"]},"examples":{"discount_before_tax_1_000_subtotal_10_off_8_tax_50_shipping":{"summary":"Discount before tax: $1,000 subtotal, 10% off, 8% tax, $50 shipping","value":{"subtotal":"1000","discountPercent":"10","discountTiming":"before","taxPercent":"8","shipping":"50"}},"discount_after_tax_same_numbers_different_breakdown":{"summary":"Discount after tax: same numbers, different breakdown","value":{"subtotal":"1000","discountPercent":"10","discountTiming":"after","taxPercent":"8","shipping":"50"}},"no_discount_or_tax_shipping_only":{"summary":"No discount or tax, shipping only","value":{"subtotal":"250","discountPercent":"0","taxPercent":"0","shipping":"15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"discount_before_tax_1_000_subtotal_10_off_8_tax_50_shipping":{"summary":"Discount before tax: $1,000 subtotal, 10% off, 8% tax, $50 shipping","value":{"tool":"invoice-total-calculator","tool_version":"1.0.2","outputs":{"summary":[{"line":"Subtotal","amount":"$1,000.00"},{"line":"Discount (before tax)","amount":"-$100.00"},{"line":"Taxable Amount","amount":"$900.00"},{"line":"Tax","amount":"$72.00"},{"line":"Shipping / Handling","amount":"$50.00"},{"line":"Grand Total","amount":"$1,022.00"}]},"credits_used":5,"credits_remaining":null}},"discount_after_tax_same_numbers_different_breakdown":{"summary":"Discount after tax: same numbers, different breakdown","value":{"tool":"invoice-total-calculator","tool_version":"1.0.2","outputs":{"summary":[{"line":"Subtotal","amount":"$1,000.00"},{"line":"Discount (after tax)","amount":"-$108.00"},{"line":"Taxable Amount","amount":"$1,000.00"},{"line":"Tax","amount":"$80.00"},{"line":"Shipping / Handling","amount":"$50.00"},{"line":"Grand Total","amount":"$1,022.00"}]},"credits_used":5,"credits_remaining":null}},"no_discount_or_tax_shipping_only":{"summary":"No discount or tax, shipping only","value":{"tool":"invoice-total-calculator","tool_version":"1.0.2","outputs":{"summary":[{"line":"Subtotal","amount":"$250.00"},{"line":"Discount (before tax)","amount":"-$0.00"},{"line":"Taxable Amount","amount":"$250.00"},{"line":"Tax","amount":"$0.00"},{"line":"Shipping / Handling","amount":"$15.00"},{"line":"Grand Total","amount":"$265.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Invoice Breakdown","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["line","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv4-subnet-calculator":{"post":{"operationId":"run_ipv4_subnet_calculator","summary":"IPv4 Subnet Calculator","tags":["Calculators"],"description":"Calculate an IPv4 subnet from an address and CIDR prefix (or dotted subnet mask). Returns the network and broadcast addresses, subnet and wildcard masks, CIDR notation, usable host range, total addresses and usable host count — with correct /31 point-to-point and /32 single-host handling.\n\n[Try IPv4 Subnet Calculator in your browser →](https://iotools.cloud/tool/ipv4-subnet-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"IPv4 Address"},"prefix":{"enum":["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"],"description":"Network Size (CIDR prefix / subnet mask)"}},"required":[]},"examples":{"192_168_1_100_24_typical_lan_254_hosts":{"summary":"192.168.1.100/24 (typical LAN, 254 hosts)","value":{"address":"192.168.1.100","prefix":"24"}},"10_0_0_0_31_point_to_point_link_rfc_3021":{"summary":"10.0.0.0/31 (point-to-point link, RFC 3021)","value":{"address":"10.0.0.0","prefix":"31"}},"192_168_1_100_32_single_host":{"summary":"192.168.1.100/32 (single host)","value":{"address":"192.168.1.100","prefix":"32"}},"172_16_5_23_20_inline_cidr_4094_hosts":{"summary":"172.16.5.23/20 (inline CIDR, 4094 hosts)","value":{"address":"172.16.5.23/20","prefix":"24"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"192_168_1_100_24_typical_lan_254_hosts":{"summary":"192.168.1.100/24 (typical LAN, 254 hosts)","value":{"tool":"ipv4-subnet-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"192.168.1.0"},{"property":"Broadcast Address","value":"192.168.1.255"},{"property":"Subnet Mask","value":"255.255.255.0"},{"property":"Wildcard Mask","value":"0.0.0.255"},{"property":"CIDR Notation","value":"192.168.1.0/24"},{"property":"Usable Host Range","value":"192.168.1.1 - 192.168.1.254"},{"property":"Total Addresses","value":"256"},{"property":"Usable Hosts","value":"254"}]},"credits_used":5,"credits_remaining":null}},"10_0_0_0_31_point_to_point_link_rfc_3021":{"summary":"10.0.0.0/31 (point-to-point link, RFC 3021)","value":{"tool":"ipv4-subnet-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"10.0.0.0"},{"property":"Broadcast Address","value":"10.0.0.1"},{"property":"Subnet Mask","value":"255.255.255.254"},{"property":"Wildcard Mask","value":"0.0.0.1"},{"property":"CIDR Notation","value":"10.0.0.0/31"},{"property":"Usable Host Range","value":"10.0.0.0 - 10.0.0.1"},{"property":"Total Addresses","value":"2"},{"property":"Usable Hosts","value":"2"}]},"credits_used":5,"credits_remaining":null}},"192_168_1_100_32_single_host":{"summary":"192.168.1.100/32 (single host)","value":{"tool":"ipv4-subnet-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"192.168.1.100"},{"property":"Broadcast Address","value":"192.168.1.100"},{"property":"Subnet Mask","value":"255.255.255.255"},{"property":"Wildcard Mask","value":"0.0.0.0"},{"property":"CIDR Notation","value":"192.168.1.100/32"},{"property":"Usable Host Range","value":"192.168.1.100 - 192.168.1.100"},{"property":"Total Addresses","value":"1"},{"property":"Usable Hosts","value":"1"}]},"credits_used":5,"credits_remaining":null}},"172_16_5_23_20_inline_cidr_4094_hosts":{"summary":"172.16.5.23/20 (inline CIDR, 4094 hosts)","value":{"tool":"ipv4-subnet-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"172.16.0.0"},{"property":"Broadcast Address","value":"172.16.15.255"},{"property":"Subnet Mask","value":"255.255.240.0"},{"property":"Wildcard Mask","value":"0.0.15.255"},{"property":"CIDR Notation","value":"172.16.0.0/20"},{"property":"Usable Host Range","value":"172.16.0.1 - 172.16.15.254"},{"property":"Total Addresses","value":"4,096"},{"property":"Usable Hosts","value":"4,094"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Subnet Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ipv6-subnet-calculator":{"post":{"operationId":"run_ipv6_subnet_calculator","summary":"IPv6 Subnet Calculator","tags":["Calculators"],"description":"Calculate an IPv6 subnet from an address and prefix length: the network (prefix) address, first and last addresses, CIDR notation, and the exact total number of addresses — computed with BigInt so even a /0 count is precise.\n\n[Try IPv6 Subnet Calculator in your browser →](https://iotools.cloud/tool/ipv6-subnet-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"IPv6 Address"},"prefix":{"type":"number","description":"Prefix length (/n)","minimum":0,"maximum":128}},"required":[]},"examples":{"documentation_prefix_2001_db8_32":{"summary":"Documentation prefix 2001:db8::/32","value":{"address":"2001:db8::","prefix":"32"}},"link_local_64_fe80_1":{"summary":"Link-local /64 fe80::1","value":{"address":"fe80::1","prefix":"64"}},"single_host_128":{"summary":"Single host /128","value":{"address":"2001:db8::dead:beef","prefix":"128"}},"whole_ipv6_space_0":{"summary":"Whole IPv6 space /0","value":{"address":"::","prefix":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"documentation_prefix_2001_db8_32":{"summary":"Documentation prefix 2001:db8::/32","value":{"tool":"ipv6-subnet-calculator","tool_version":"1.0.2","outputs":{"table":[{"property":"Network / Prefix Address","value":"2001:db8::"},{"property":"First Usable Address","value":"2001:db8::1"},{"property":"Last Address","value":"2001:db8:ffff:ffff:ffff:ffff:ffff:ffff"},{"property":"Total Addresses","value":"79,228,162,514,264,337,593,543,950,336 (2^96)"},{"property":"CIDR Notation","value":"2001:db8::/32"}]},"credits_used":5,"credits_remaining":null}},"link_local_64_fe80_1":{"summary":"Link-local /64 fe80::1","value":{"tool":"ipv6-subnet-calculator","tool_version":"1.0.2","outputs":{"table":[{"property":"Network / Prefix Address","value":"fe80::"},{"property":"First Usable Address","value":"fe80::1"},{"property":"Last Address","value":"fe80::ffff:ffff:ffff:ffff"},{"property":"Total Addresses","value":"18,446,744,073,709,551,616 (2^64)"},{"property":"CIDR Notation","value":"fe80::/64"}]},"credits_used":5,"credits_remaining":null}},"single_host_128":{"summary":"Single host /128","value":{"tool":"ipv6-subnet-calculator","tool_version":"1.0.2","outputs":{"table":[{"property":"Network / Prefix Address","value":"2001:db8::dead:beef"},{"property":"First Usable Address","value":"2001:db8::dead:beef"},{"property":"Last Address","value":"2001:db8::dead:beef"},{"property":"Total Addresses","value":"1 (2^0)"},{"property":"CIDR Notation","value":"2001:db8::dead:beef/128"}]},"credits_used":5,"credits_remaining":null}},"whole_ipv6_space_0":{"summary":"Whole IPv6 space /0","value":{"tool":"ipv6-subnet-calculator","tool_version":"1.0.2","outputs":{"table":[{"property":"Network / Prefix Address","value":"::"},{"property":"First Usable Address","value":"::1"},{"property":"Last Address","value":"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"},{"property":"Total Addresses","value":"340,282,366,920,938,463,463,374,607,431,768,211,456 (2^128)"},{"property":"CIDR Notation","value":"::/0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"Subnet details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/irregular-polygon-area-calculator":{"post":{"operationId":"run_irregular_polygon_area_calculator","summary":"Irregular Polygon Area Calculator","tags":["Calculators"],"description":"Calculate the area and perimeter of any irregular polygon from its (x, y) vertex coordinates using the Shoelace formula. Enter one vertex per line as an x,y pair — supports any number of vertices (3+).\n\n[Try Irregular Polygon Area Calculator in your browser →](https://iotools.cloud/tool/irregular-polygon-area-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vertices":{"type":"string","description":"Vertex Coordinates"}},"required":["vertices"]},"examples":{"rectangle_4_3":{"summary":"Rectangle (4 × 3)","value":{"vertices":"0,0\n4,0\n4,3\n0,3"}},"right_triangle_3_4_5":{"summary":"Right triangle (3-4-5)","value":{"vertices":"0,0\n4,0\n0,3"}},"isosceles_right_triangle_decimal_perimeter":{"summary":"Isosceles right triangle (decimal perimeter)","value":{"vertices":"0,0\n5,0\n0,5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_4_3":{"summary":"Rectangle (4 × 3)","value":{"tool":"irregular-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"4"},{"metric":"Area","value":"12"},{"metric":"Perimeter","value":"14"}]},"credits_used":5,"credits_remaining":null}},"right_triangle_3_4_5":{"summary":"Right triangle (3-4-5)","value":{"tool":"irregular-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"3"},{"metric":"Area","value":"6"},{"metric":"Perimeter","value":"12"}]},"credits_used":5,"credits_remaining":null}},"isosceles_right_triangle_decimal_perimeter":{"summary":"Isosceles right triangle (decimal perimeter)","value":{"tool":"irregular-polygon-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Vertices","value":"3"},{"metric":"Area","value":"12.5"},{"metric":"Perimeter","value":"17.0711"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/iso-week-number-calculator":{"post":{"operationId":"run_iso_week_number_calculator","summary":"ISO Week Number Calculator","tags":["Calculators"],"description":"Find the ISO 8601 week number (1–53) and ISO week-year for any calendar date, plus the Monday–Sunday span of that week. Correctly handles year-boundary dates where the ISO week-year differs from the calendar year.\n\n[Try ISO Week Number Calculator in your browser →](https://iotools.cloud/tool/iso-week-number-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"Date"}},"required":["date"]},"examples":{"mid_year_date_2020_06_15":{"summary":"Mid-year date (2020-06-15)","value":{"date":"2020-06-15"}},"new_year_in_the_previous_iso_year_2017_01_01_2016_w52":{"summary":"New Year in the previous ISO year (2017-01-01 → 2016-W52)","value":{"date":"2017-01-01"}},"year_end_date_in_the_next_iso_year_2018_12_31_2019_w01":{"summary":"Year-end date in the next ISO year (2018-12-31 → 2019-W01)","value":{"date":"2018-12-31"}},"leap_year_week_53_2020_12_31":{"summary":"Leap-year week 53 (2020-12-31)","value":{"date":"2020-12-31"}},"new_year_in_a_53_week_previous_year_2016_01_01_2015_w53":{"summary":"New Year in a 53-week previous year (2016-01-01 → 2015-W53)","value":{"date":"2016-01-01"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mid_year_date_2020_06_15":{"summary":"Mid-year date (2020-06-15)","value":{"tool":"iso-week-number-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"ISO week number","value":"25"},{"property":"ISO week-year","value":"2020"},{"property":"ISO week","value":"2020-W25"},{"property":"Day of week","value":"Monday (ISO day 1)"},{"property":"Week starts (Monday)","value":"2020-06-15"},{"property":"Week ends (Sunday)","value":"2020-06-21"},{"property":"Weeks in ISO year","value":"53 (long year)"}]},"credits_used":5,"credits_remaining":null}},"new_year_in_the_previous_iso_year_2017_01_01_2016_w52":{"summary":"New Year in the previous ISO year (2017-01-01 → 2016-W52)","value":{"tool":"iso-week-number-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"ISO week number","value":"52"},{"property":"ISO week-year","value":"2016"},{"property":"ISO week","value":"2016-W52"},{"property":"Day of week","value":"Sunday (ISO day 7)"},{"property":"Week starts (Monday)","value":"2016-12-26"},{"property":"Week ends (Sunday)","value":"2017-01-01"},{"property":"Weeks in ISO year","value":"52"}]},"credits_used":5,"credits_remaining":null}},"year_end_date_in_the_next_iso_year_2018_12_31_2019_w01":{"summary":"Year-end date in the next ISO year (2018-12-31 → 2019-W01)","value":{"tool":"iso-week-number-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"ISO week number","value":"1"},{"property":"ISO week-year","value":"2019"},{"property":"ISO week","value":"2019-W01"},{"property":"Day of week","value":"Monday (ISO day 1)"},{"property":"Week starts (Monday)","value":"2018-12-31"},{"property":"Week ends (Sunday)","value":"2019-01-06"},{"property":"Weeks in ISO year","value":"52"}]},"credits_used":5,"credits_remaining":null}},"leap_year_week_53_2020_12_31":{"summary":"Leap-year week 53 (2020-12-31)","value":{"tool":"iso-week-number-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"ISO week number","value":"53"},{"property":"ISO week-year","value":"2020"},{"property":"ISO week","value":"2020-W53"},{"property":"Day of week","value":"Thursday (ISO day 4)"},{"property":"Week starts (Monday)","value":"2020-12-28"},{"property":"Week ends (Sunday)","value":"2021-01-03"},{"property":"Weeks in ISO year","value":"53 (long year)"}]},"credits_used":5,"credits_remaining":null}},"new_year_in_a_53_week_previous_year_2016_01_01_2015_w53":{"summary":"New Year in a 53-week previous year (2016-01-01 → 2015-W53)","value":{"tool":"iso-week-number-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"ISO week number","value":"53"},{"property":"ISO week-year","value":"2015"},{"property":"ISO week","value":"2015-W53"},{"property":"Day of week","value":"Friday (ISO day 5)"},{"property":"Week starts (Monday)","value":"2015-12-28"},{"property":"Week ends (Sunday)","value":"2016-01-03"},{"property":"Weeks in ISO year","value":"53 (long year)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jacobian-matrix-calculator":{"post":{"operationId":"run_jacobian_matrix_calculator","summary":"Jacobian Matrix Calculator","tags":["Calculators"],"description":"Build the Jacobian matrix of first-order partial derivatives for a vector-valued function, with the symbolic determinant when it's square, an invertibility verdict, and a numeric evaluation at any point.\n\n[Try Jacobian Matrix Calculator in your browser →](https://iotools.cloud/tool/jacobian-matrix-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"functions":{"type":"string","description":"Functions f₁, f₂, … (one per line, or separated by ;)"},"variables":{"type":"string","description":"Variables (comma-separated)"},"point":{"type":"string","description":"Evaluate at point (optional)"}},"required":["functions","variables"]},"examples":{"f_x_y_x_z_2_3_non_square":{"summary":"F = (x²y, x+z), 2×3 (non-square)","value":{"functions":"x^2*y\nx + z","variables":"x, y, z","point":"1, 2, 3"}},"f_xy_x_y_2_2_square_invertible_at_2_3":{"summary":"F = (xy, x+y), 2×2 (square), invertible at (2, 3)","value":{"functions":"x*y\nx + y","variables":"x, y","point":"2, 3"}},"f_xy_yz_x_z_3_3_square_symbolic_only":{"summary":"F = (xy, yz, x+z), 3×3 (square), symbolic only","value":{"functions":"x*y\ny*z\nx + z","variables":"x, y, z","point":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_y_x_z_2_3_non_square":{"summary":"F = (x²y, x+z), 2×3 (non-square)","value":{"tool":"jacobian-matrix-calculator","tool_version":"1.0.2","outputs":{"jacobian":[["2 * y * x","x ^ 2","0"],["1","0","1"]],"shape":"2×3","determinant":"N/A — the matrix isn't square (shape 2×3).","evaluated":"At (x = 1, y = 2, z = 3):\n  [ 4, 1, 0 ]\n  [ 1, 0, 1 ]","steps":"F(x, y, z) = (x^2*y, x + z)\n∂f1/∂x = 2 * y * x\n∂f1/∂y = x ^ 2\n∂f1/∂z = 0\n∂f2/∂x = 1\n∂f2/∂y = 0\n∂f2/∂z = 1\n\nJacobian J (2×3):\n  [ 2 * y * x, x ^ 2, 0 ]\n  [ 1, 0, 1 ]\n\nAt (x = 1, y = 2, z = 3):\n  [ 4, 1, 0 ]\n  [ 1, 0, 1 ]"},"credits_used":5,"credits_remaining":null}},"f_xy_x_y_2_2_square_invertible_at_2_3":{"summary":"F = (xy, x+y), 2×2 (square), invertible at (2, 3)","value":{"tool":"jacobian-matrix-calculator","tool_version":"1.0.2","outputs":{"jacobian":[["y","x"],["1","1"]],"shape":"2×2","determinant":"y - x","evaluated":"At (x = 2, y = 3):\n  [ 3, 2 ]\n  [ 1, 1 ]\n|J| at that point = 1\nInvertible at this point (|J| = 1).","steps":"F(x, y) = (x*y, x + y)\n∂f1/∂x = y\n∂f1/∂y = x\n∂f2/∂x = 1\n∂f2/∂y = 1\n\nJacobian J (2×2):\n  [ y, x ]\n  [ 1, 1 ]\n\nThe matrix is square, so its determinant is defined:\n|J| = y - x\n\nAt (x = 2, y = 3):\n  [ 3, 2 ]\n  [ 1, 1 ]\n|J| at that point = 1\nInvertible at this point (|J| = 1)."},"credits_used":5,"credits_remaining":null}},"f_xy_yz_x_z_3_3_square_symbolic_only":{"summary":"F = (xy, yz, x+z), 3×3 (square), symbolic only","value":{"tool":"jacobian-matrix-calculator","tool_version":"1.0.2","outputs":{"jacobian":[["y","x","0"],["0","z","y"],["1","0","1"]],"shape":"3×3","determinant":"y * (z + x)","evaluated":"— enter a point to evaluate the Jacobian numerically.","steps":"F(x, y, z) = (x*y, y*z, x + z)\n∂f1/∂x = y\n∂f1/∂y = x\n∂f1/∂z = 0\n∂f2/∂x = 0\n∂f2/∂y = z\n∂f2/∂z = y\n∂f3/∂x = 1\n∂f3/∂y = 0\n∂f3/∂z = 1\n\nJacobian J (3×3):\n  [ y, x, 0 ]\n  [ 0, z, y ]\n  [ 1, 0, 1 ]\n\nThe matrix is square, so its determinant is defined:\n|J| = y * (z + x)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"jacobian":{"type":"array","description":"Jacobian Matrix J (∂fᵢ/∂xⱼ)","items":{"type":"array","items":{"type":"string"}}},"shape":{"type":"string","description":"Shape"},"determinant":{"type":"string","description":"Determinant |J|"},"evaluated":{"type":"string","description":"Evaluated at the Point"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/keyboard-mileage-calculator":{"post":{"operationId":"run_keyboard_mileage_calculator","summary":"Keyboard Mileage Calculator","tags":["Calculators"],"description":"Estimate how far your fingers travel while typing — daily, weekly, yearly and over any number of years — from your typing speed, hours per day and keyboard type. Includes keystroke, word and typing-time totals, plus fun distance comparisons (marathons, 5Ks, times around the equator). Runs entirely in your browser.\n\n[Try Keyboard Mileage Calculator in your browser →](https://iotools.cloud/tool/keyboard-mileage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"keyboardType":{"enum":["compact","laptop","standard","mechanical","custom"],"description":"Keyboard type"},"customTravel":{"type":"number","description":"Distance per keystroke (cm)","minimum":0.1,"maximum":20},"typingSpeed":{"type":"number","description":"Typing speed (WPM)","minimum":1,"maximum":300},"hoursPerDay":{"type":"number","description":"Hours spent typing per day","minimum":0.1,"maximum":24},"daysPerWeek":{"type":"number","description":"Days typing per week","minimum":1,"maximum":7},"years":{"type":"number","description":"Time span (years)","minimum":0.1,"maximum":100}},"required":[]},"examples":{"standard_keyboard_50_wpm_4h_day_5_days_week_10_years":{"summary":"Standard keyboard, 50 WPM, 4h/day, 5 days/week, 10 years","value":{"keyboardType":"standard","typingSpeed":"50","hoursPerDay":"4","daysPerWeek":"5","years":"10"}},"mechanical_keyboard_fast_typist_one_year":{"summary":"Mechanical keyboard, fast typist, one year","value":{"keyboardType":"mechanical","typingSpeed":"80","hoursPerDay":"6","daysPerWeek":"5","years":"1"}},"custom_compact_keyboard_light_typing_5_years":{"summary":"Custom compact keyboard, light typing, 5 years","value":{"keyboardType":"custom","customTravel":"1.2","typingSpeed":"40","hoursPerDay":"2","daysPerWeek":"3","years":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_keyboard_50_wpm_4h_day_5_days_week_10_years":{"summary":"Standard keyboard, 50 WPM, 4h/day, 5 days/week, 10 years","value":{"tool":"keyboard-mileage-calculator","tool_version":"1.0.2","outputs":{"summary":"Over 10 years, your fingers travel an estimated 2,964 km (1,842 mi) while typing.","distanceTable":[{"period":"Daily","distance":"1.140 km (0.708 mi)"},{"period":"Weekly","distance":"5.700 km (3.542 mi)"},{"period":"Yearly","distance":"296.4 km (184.2 mi)"},{"period":"Total (10 years)","distance":"2,964 km (1,842 mi)"}],"statsTable":[{"metric":"Total keystrokes","value":"156,000,000"},{"metric":"Keystrokes per day","value":"60,000"},{"metric":"Total words typed","value":"31,200,000"},{"metric":"≈ novels (80,000 words each)","value":"390.0"},{"metric":"Total hours spent typing","value":"10,400"},{"metric":"Finger speed while typing","value":"7.92 cm/s (0.285 km/h)"}],"comparisonsTable":[{"equivalent-to":"Marathons (42.195 km)","count":"70.25"},{"equivalent-to":"5K races","count":"592.8"},{"equivalent-to":"Trips around Earth's equator","count":"0.0740"}],"notes":"Assumes 1.9 cm of finger travel per keystroke and the standard \"1 word = 5 characters\" convention, so 50 WPM = 250 keystrokes/min.\nThis is a fun order-of-magnitude estimate, not measured biomechanics — actual finger travel varies with typing technique, keyboard layout and how close your fingers stay to the home row.\n52 weeks/year and even key distribution are assumed; leap years and typing-free vacations aren't modeled."},"credits_used":5,"credits_remaining":null}},"mechanical_keyboard_fast_typist_one_year":{"summary":"Mechanical keyboard, fast typist, one year","value":{"tool":"keyboard-mileage-calculator","tool_version":"1.0.2","outputs":{"summary":"Over 1 year, your fingers travel an estimated 823.7 km (511.8 mi) while typing.","distanceTable":[{"period":"Daily","distance":"3.168 km (1.969 mi)"},{"period":"Weekly","distance":"15.8 km (9.8 mi)"},{"period":"Yearly","distance":"823.7 km (511.8 mi)"},{"period":"Total (1 year)","distance":"823.7 km (511.8 mi)"}],"statsTable":[{"metric":"Total keystrokes","value":"37,440,000"},{"metric":"Keystrokes per day","value":"144,000"},{"metric":"Total words typed","value":"7,488,000"},{"metric":"≈ novels (80,000 words each)","value":"93.6"},{"metric":"Total hours spent typing","value":"1,560"},{"metric":"Finger speed while typing","value":"14.67 cm/s (0.528 km/h)"}],"comparisonsTable":[{"equivalent-to":"Marathons (42.195 km)","count":"19.52"},{"equivalent-to":"5K races","count":"164.7"},{"equivalent-to":"Trips around Earth's equator","count":"0.0206"}],"notes":"Assumes 2.2 cm of finger travel per keystroke and the standard \"1 word = 5 characters\" convention, so 80 WPM = 400 keystrokes/min.\nThis is a fun order-of-magnitude estimate, not measured biomechanics — actual finger travel varies with typing technique, keyboard layout and how close your fingers stay to the home row.\n52 weeks/year and even key distribution are assumed; leap years and typing-free vacations aren't modeled."},"credits_used":5,"credits_remaining":null}},"custom_compact_keyboard_light_typing_5_years":{"summary":"Custom compact keyboard, light typing, 5 years","value":{"tool":"keyboard-mileage-calculator","tool_version":"1.0.2","outputs":{"summary":"Over 5 years, your fingers travel an estimated 224.6 km (139.6 mi) while typing.","distanceTable":[{"period":"Daily","distance":"0.288 km (0.179 mi)"},{"period":"Weekly","distance":"0.864 km (0.537 mi)"},{"period":"Yearly","distance":"44.9 km (27.9 mi)"},{"period":"Total (5 years)","distance":"224.6 km (139.6 mi)"}],"statsTable":[{"metric":"Total keystrokes","value":"18,720,000"},{"metric":"Keystrokes per day","value":"24,000"},{"metric":"Total words typed","value":"3,744,000"},{"metric":"≈ novels (80,000 words each)","value":"46.8"},{"metric":"Total hours spent typing","value":"1,560"},{"metric":"Finger speed while typing","value":"4.00 cm/s (0.144 km/h)"}],"comparisonsTable":[{"equivalent-to":"Marathons (42.195 km)","count":"5.32"},{"equivalent-to":"5K races","count":"44.9"},{"equivalent-to":"Trips around Earth's equator","count":"0.0056"}],"notes":"Assumes 1.2 cm of finger travel per keystroke and the standard \"1 word = 5 characters\" convention, so 40 WPM = 200 keystrokes/min.\nThis is a fun order-of-magnitude estimate, not measured biomechanics — actual finger travel varies with typing technique, keyboard layout and how close your fingers stay to the home row.\n52 weeks/year and even key distribution are assumed; leap years and typing-free vacations aren't modeled."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"distanceTable":{"type":"array","description":"Estimated finger-travel distance","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"distance":{"type":"string","description":"Distance"}}},"x-iotools-columns":["period","distance"]},"statsTable":{"type":"array","description":"Keystrokes, words & time","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"comparisonsTable":{"type":"array","description":"Distance comparisons","items":{"type":"object","properties":{"equivalent-to":{"type":"string","description":"Equivalent to"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["equivalent-to","count"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lemonade-stand-calculator":{"post":{"operationId":"run_lemonade_stand_calculator","summary":"Lemonade Stand Calculator","tags":["Calculators"],"description":"Cost out a lemonade stand — batch cost, cost per cup, profit per cup, break-even cups, and daily/weekly/monthly profit — from your ingredient costs, sale price, and cups sold per day.\n\n[Try Lemonade Stand Calculator in your browser →](https://iotools.cloud/tool/lemonade-stand-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"costLemons":{"type":"number","description":"Lemons Cost (per batch)","minimum":0},"costSugar":{"type":"number","description":"Sugar Cost (per batch)","minimum":0},"costCups":{"type":"number","description":"Cups Cost (per batch)","minimum":0},"costIce":{"type":"number","description":"Ice Cost (per batch)","minimum":0},"cupsPerBatch":{"type":"number","description":"Cups Per Batch","minimum":1},"salePricePerCup":{"type":"number","description":"Sale Price Per Cup","minimum":0.01},"cupsSoldPerDay":{"type":"number","description":"Cups Sold Per Day","minimum":0},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":[]},"examples":{"default_11_50_batch_20_cups_1_50_cup_50_sold_day":{"summary":"Default: $11.50 batch, 20 cups, $1.50/cup, 50 sold/day","value":{"costLemons":"5.00","costSugar":"2.00","costCups":"3.00","costIce":"1.50","cupsPerBatch":"20","salePricePerCup":"1.50","cupsSoldPerDay":"50","currency":"USD"}},"bigger_stand_17_batch_30_cups_2_cup_80_sold_day":{"summary":"Bigger stand: $17 batch, 30 cups, $2/cup, 80 sold/day","value":{"costLemons":"8.00","costSugar":"3.00","costCups":"4.00","costIce":"2.00","cupsPerBatch":"30","salePricePerCup":"2.00","cupsSoldPerDay":"80","currency":"USD"}},"small_slow_selling_stand_9_batch_15_cups_1_25_cup_10_sold_day":{"summary":"Small, slow-selling stand: $9 batch, 15 cups, $1.25/cup, 10 sold/day","value":{"costLemons":"4.00","costSugar":"1.50","costCups":"2.50","costIce":"1.00","cupsPerBatch":"15","salePricePerCup":"1.25","cupsSoldPerDay":"10","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_11_50_batch_20_cups_1_50_cup_50_sold_day":{"summary":"Default: $11.50 batch, 20 cups, $1.50/cup, 50 sold/day","value":{"tool":"lemonade-stand-calculator","tool_version":"1.0.2","outputs":{"costBreakdownTable":[{"ingredient":"Lemons","cost":"$5.00","of-batch":"43.5%"},{"ingredient":"Sugar","cost":"$2.00","of-batch":"17.4%"},{"ingredient":"Cups","cost":"$3.00","of-batch":"26.1%"},{"ingredient":"Ice","cost":"$1.50","of-batch":"13.0%"},{"ingredient":"Total Batch Cost","cost":"$11.50","of-batch":"100.0%"}],"profitTable":[{"metric":"Cost Per Cup","value":"$0.58"},{"metric":"Sale Price Per Cup","value":"$1.50"},{"metric":"Profit Per Cup","value":"$0.93"},{"metric":"Profit Margin","value":"61.7%"},{"metric":"Break-Even Cups","value":"8"},{"metric":"Batches Needed / Day","value":"3"}],"dailyTable":[{"period":"Daily","revenue":"$75.00","cost":"$34.50","profit":"$40.50"},{"period":"Weekly","revenue":"$525.00","cost":"$241.50","profit":"$283.50"},{"period":"Monthly","revenue":"$2,250.00","cost":"$1,035.00","profit":"$1,215.00"}],"verdict":"Profitable — about $40.50/day at this price and volume."},"credits_used":5,"credits_remaining":null}},"bigger_stand_17_batch_30_cups_2_cup_80_sold_day":{"summary":"Bigger stand: $17 batch, 30 cups, $2/cup, 80 sold/day","value":{"tool":"lemonade-stand-calculator","tool_version":"1.0.2","outputs":{"costBreakdownTable":[{"ingredient":"Lemons","cost":"$8.00","of-batch":"47.1%"},{"ingredient":"Sugar","cost":"$3.00","of-batch":"17.6%"},{"ingredient":"Cups","cost":"$4.00","of-batch":"23.5%"},{"ingredient":"Ice","cost":"$2.00","of-batch":"11.8%"},{"ingredient":"Total Batch Cost","cost":"$17.00","of-batch":"100.0%"}],"profitTable":[{"metric":"Cost Per Cup","value":"$0.57"},{"metric":"Sale Price Per Cup","value":"$2.00"},{"metric":"Profit Per Cup","value":"$1.43"},{"metric":"Profit Margin","value":"71.7%"},{"metric":"Break-Even Cups","value":"9"},{"metric":"Batches Needed / Day","value":"3"}],"dailyTable":[{"period":"Daily","revenue":"$160.00","cost":"$51.00","profit":"$109.00"},{"period":"Weekly","revenue":"$1,120.00","cost":"$357.00","profit":"$763.00"},{"period":"Monthly","revenue":"$4,800.00","cost":"$1,530.00","profit":"$3,270.00"}],"verdict":"Profitable — about $109.00/day at this price and volume."},"credits_used":5,"credits_remaining":null}},"small_slow_selling_stand_9_batch_15_cups_1_25_cup_10_sold_day":{"summary":"Small, slow-selling stand: $9 batch, 15 cups, $1.25/cup, 10 sold/day","value":{"tool":"lemonade-stand-calculator","tool_version":"1.0.2","outputs":{"costBreakdownTable":[{"ingredient":"Lemons","cost":"$4.00","of-batch":"44.4%"},{"ingredient":"Sugar","cost":"$1.50","of-batch":"16.7%"},{"ingredient":"Cups","cost":"$2.50","of-batch":"27.8%"},{"ingredient":"Ice","cost":"$1.00","of-batch":"11.1%"},{"ingredient":"Total Batch Cost","cost":"$9.00","of-batch":"100.0%"}],"profitTable":[{"metric":"Cost Per Cup","value":"$0.60"},{"metric":"Sale Price Per Cup","value":"$1.25"},{"metric":"Profit Per Cup","value":"$0.65"},{"metric":"Profit Margin","value":"52.0%"},{"metric":"Break-Even Cups","value":"8"},{"metric":"Batches Needed / Day","value":"1"}],"dailyTable":[{"period":"Daily","revenue":"$12.50","cost":"$9.00","profit":"$3.50"},{"period":"Weekly","revenue":"$87.50","cost":"$63.00","profit":"$24.50"},{"period":"Monthly","revenue":"$375.00","cost":"$270.00","profit":"$105.00"}],"verdict":"Profitable — about $3.50/day at this price and volume."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"costBreakdownTable":{"type":"array","description":"Batch Cost Breakdown","items":{"type":"object","properties":{"ingredient":{"type":"string","description":"Ingredient"},"cost":{"type":"string","description":"Cost"},"of-batch":{"type":"string","description":"% of Batch"}}},"x-iotools-columns":["ingredient","cost","of-batch"]},"profitTable":{"type":"array","description":"Cost, Price & Break-Even","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"dailyTable":{"type":"array","description":"Daily, Weekly & Monthly","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"revenue":{"type":"string","description":"Revenue"},"cost":{"type":"string","description":"Cost"},"profit":{"type":"string","description":"Profit"}}},"x-iotools-columns":["period","revenue","cost","profit"]},"verdict":{"type":"string","description":"Verdict"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/leveling-rise-fall-calculator":{"post":{"operationId":"run_leveling_rise_fall_calculator","summary":"Leveling Rise & Fall Calculator","tags":["Calculators"],"description":"Reduce a differential level run to rise/fall and reduced levels using the surveying Rise-and-Fall method — enter a starting benchmark RL plus BS/FS readings per setup and get every point's reduced level, the standard arithmetic check, and an optional closing-error check against a known final RL.\n\n[Try Leveling Rise & Fall Calculator in your browser →](https://iotools.cloud/tool/leveling-rise-fall-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startingRL":{"type":"number","description":"Starting reduced level (RL)"},"readings":{"type":"string","description":"Level readings (BS, FS per setup)"},"finalKnownRL":{"type":"number","description":"Known RL of the final point (optional)"}},"required":["startingRL","readings"]},"examples":{"3_setups_all_rising_no_closure_check":{"summary":"3 setups, all rising, no closure check","value":{"startingRL":"100.000","readings":"BM to CP1, 1.505, 0.845\nCP1 to CP2, 2.315, 1.865\nCP2 to B, 1.030, 0.675","finalKnownRL":""}},"fall_then_rise_with_a_closure_check":{"summary":"Fall then rise, with a closure check","value":{"startingRL":"50.000","readings":"A to B, 0.995, 1.850\nB to C, 1.205, 0.560","finalKnownRL":"49.800"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3_setups_all_rising_no_closure_check":{"summary":"3 setups, all rising, no closure check","value":{"tool":"leveling-rise-fall-calculator","tool_version":"1.0.2","outputs":{"results":[{"setup":"BM to CP1","bs":"1.505","fs":"0.845","rise":"0.660","fall":"-","reduced-level":"100.660"},{"setup":"CP1 to CP2","bs":"2.315","fs":"1.865","rise":"0.450","fall":"-","reduced-level":"101.110"},{"setup":"CP2 to B","bs":"1.030","fs":"0.675","rise":"0.355","fall":"-","reduced-level":"101.465"}],"summary":"Starting RL 100.000 → Final RL 101.465 (net rise 1.465)\nTotal rise 1.465 · Total fall 0.000\nArithmetic check: ΣBS − ΣFS = 1.465 = ΣRise − ΣFall = 1.465 — OK"},"credits_used":5,"credits_remaining":null}},"fall_then_rise_with_a_closure_check":{"summary":"Fall then rise, with a closure check","value":{"tool":"leveling-rise-fall-calculator","tool_version":"1.0.2","outputs":{"results":[{"setup":"A to B","bs":"0.995","fs":"1.850","rise":"-","fall":"0.855","reduced-level":"49.145"},{"setup":"B to C","bs":"1.205","fs":"0.560","rise":"0.645","fall":"-","reduced-level":"49.790"}],"summary":"Starting RL 50.000 → Final RL 49.790 (net fall 0.210)\nTotal rise 0.645 · Total fall 0.855\nArithmetic check: ΣBS − ΣFS = -0.210 = ΣRise − ΣFall = -0.210 — OK\nClosing error vs known final RL 49.800: -0.010"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"setup":{"type":"string","description":"Setup"},"bs":{"type":"string","description":"BS"},"fs":{"type":"string","description":"FS"},"rise":{"type":"string","description":"Rise"},"fall":{"type":"string","description":"Fall"},"reduced-level":{"type":"string","description":"Reduced Level"}}},"x-iotools-columns":["setup","bs","fs","rise","fall","reduced-level"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lhopitals-rule-calculator":{"post":{"operationId":"run_lhopitals_rule_calculator","summary":"L'Hôpital's Rule Calculator","tags":["Calculators"],"description":"Resolve a 0/0 or ∞/∞ limit of f(x)/g(x) by repeated differentiation, showing the indeterminate form found at each pass and the full chain of derivatives down to the final answer.\n\n[Try L'Hôpital's Rule Calculator in your browser →](https://iotools.cloud/tool/lhopitals-rule-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"f":{"type":"string","description":"Numerator f(x)"},"g":{"type":"string","description":"Denominator g(x)"},"variable":{"enum":["x","y","z","t"],"description":"Variable"},"point":{"type":"string","description":"Limit point (a)"}},"required":["f","g","point"]},"examples":{"sin_x_x_as_x_0":{"summary":"sin(x)/x as x → 0","value":{"f":"sin(x)","g":"x","variable":"x","point":"0"}},"x_1_x_1_as_x_1":{"summary":"(x² − 1)/(x − 1) as x → 1","value":{"f":"x^2-1","g":"x-1","variable":"x","point":"1"}},"ln_x_x_as_x":{"summary":"ln(x)/x as x → ∞","value":{"f":"log(x)","g":"x","variable":"x","point":"Infinity"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sin_x_x_as_x_0":{"summary":"sin(x)/x as x → 0","value":{"tool":"lhopitals-rule-calculator","tool_version":"1.0.2","outputs":{"limit":"1","initialForm":"0/0","applications":"1","steps":"f(x) = sin(x)\ng(x) = x\nLimit as x → 0\nf(0) = 0, g(0) = 0 → 0/0 form — apply l'Hôpital's rule\nDifferentiate (pass 1): f'(x) = cos(x), g'(x) = 1\nNo longer indeterminate — limit = f'(0)/g'(0) = 1/1 = 1"},"credits_used":5,"credits_remaining":null}},"x_1_x_1_as_x_1":{"summary":"(x² − 1)/(x − 1) as x → 1","value":{"tool":"lhopitals-rule-calculator","tool_version":"1.0.2","outputs":{"limit":"2","initialForm":"0/0","applications":"1","steps":"f(x) = x^2-1\ng(x) = x-1\nLimit as x → 1\nf(1) = 0, g(1) = 0 → 0/0 form — apply l'Hôpital's rule\nDifferentiate (pass 1): f'(x) = 2 * x, g'(x) = 1\nNo longer indeterminate — limit = f'(1)/g'(1) = 2/1 = 2"},"credits_used":5,"credits_remaining":null}},"ln_x_x_as_x":{"summary":"ln(x)/x as x → ∞","value":{"tool":"lhopitals-rule-calculator","tool_version":"1.0.2","outputs":{"limit":"0","initialForm":"∞/∞","applications":"1","steps":"f(x) = log(x)\ng(x) = x\nLimit as x → ∞\nf(∞) = ∞, g(∞) = ∞ → ∞/∞ form — apply l'Hôpital's rule\nDifferentiate (pass 1): f'(x) = 1 / x, g'(x) = 1\nNo longer indeterminate — limit = f'(∞)/g'(∞) = 0/1 = 0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"limit":{"type":"string","description":"Limit"},"initialForm":{"type":"string","description":"Indeterminate Form"},"applications":{"type":"string","description":"Rule Applications"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lumber-calculator":{"post":{"operationId":"run_lumber_calculator","summary":"Lumber Calculator","tags":["Calculators"],"description":"Calculate board feet, linear feet, coverage area, waste allowance, and total cost for a lumber order from board thickness, width, length, and quantity.\n\n[Try Lumber Calculator in your browser →](https://iotools.cloud/tool/lumber-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"thickness":{"type":"number","description":"Thickness (inches)","minimum":0},"width":{"type":"number","description":"Width (inches)","minimum":0},"length":{"type":"number","description":"Length (feet)","minimum":0},"quantity":{"type":"number","description":"Quantity (boards)","minimum":0},"wastePercent":{"type":"number","description":"Waste allowance (%)","minimum":0,"maximum":30},"pricePerBoardFoot":{"type":"number","description":"Price per board foot ($, optional)","minimum":0}},"required":[]},"examples":{"10_boards_1x6x8_10_waste_4_50_bf":{"summary":"10 boards, 1x6x8, 10% waste, $4.50/bf","value":{"thickness":"1","width":"6","length":"8","quantity":"10","wastePercent":"10","pricePerBoardFoot":"4.50"}},"24_studs_2x4x8_15_waste_no_price":{"summary":"24 studs, 2x4x8, 15% waste, no price","value":{"thickness":"2","width":"4","length":"8","quantity":"24","wastePercent":"15","pricePerBoardFoot":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_boards_1x6x8_10_waste_4_50_bf":{"summary":"10 boards, 1x6x8, 10% waste, $4.50/bf","value":{"tool":"lumber-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Board Feet per Board","value":"4.000"},{"metric":"Total Board Feet","value":"40.00"},{"metric":"Waste Allowance","value":"4.00 bf (10%)"},{"metric":"Total Board Feet (with waste)","value":"44.00"},{"metric":"Total Linear Feet","value":"80.00"},{"metric":"Coverage Area (sq ft)","value":"40.00"},{"metric":"Estimated Cost","value":"$198.00"}]},"credits_used":5,"credits_remaining":null}},"24_studs_2x4x8_15_waste_no_price":{"summary":"24 studs, 2x4x8, 15% waste, no price","value":{"tool":"lumber-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Board Feet per Board","value":"5.333"},{"metric":"Total Board Feet","value":"128.00"},{"metric":"Waste Allowance","value":"19.20 bf (15%)"},{"metric":"Total Board Feet (with waste)","value":"147.20"},{"metric":"Total Linear Feet","value":"192.00"},{"metric":"Coverage Area (sq ft)","value":"64.00"},{"metric":"Estimated Cost","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/labor-cost-estimator":{"post":{"operationId":"run_labor_cost_estimator","summary":"Labor Cost Estimator","tags":["Calculators"],"description":"Estimate total crew labor cost from worker count, daily wage, working days, and an overtime uplift — with base cost, overtime, and per-worker and per-day breakdowns.\n\n[Try Labor Cost Estimator in your browser →](https://iotools.cloud/tool/labor-cost-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workers":{"type":"number","description":"Workers","minimum":0},"dailyWage":{"type":"number","description":"Daily wage ($)","minimum":0},"workingDays":{"type":"number","description":"Working days","minimum":0},"overtimeFactor":{"type":"number","description":"Overtime factor (%)","minimum":0,"maximum":100}},"required":["workers","dailyWage","workingDays"]},"examples":{"6_workers_220_day_10_days_15_overtime":{"summary":"6 workers, $220/day, 10 days, 15% overtime","value":{"workers":"6","dailyWage":"220","workingDays":"10","overtimeFactor":"15"}},"no_overtime":{"summary":"No overtime","value":{"workers":"4","dailyWage":"150","workingDays":"5","overtimeFactor":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_workers_220_day_10_days_15_overtime":{"summary":"6 workers, $220/day, 10 days, 15% overtime","value":{"tool":"labor-cost-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Base Crew Cost","value":"$13,200.00"},{"metric":"Overtime","value":"$1,980.00 (15%)"},{"metric":"Total Labor Cost","value":"$15,180.00"},{"metric":"Cost per Worker","value":"$2,530.00"},{"metric":"Cost per Day","value":"$1,518.00"}]},"credits_used":5,"credits_remaining":null}},"no_overtime":{"summary":"No overtime","value":{"tool":"labor-cost-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Base Crew Cost","value":"$3,000.00"},{"metric":"Overtime","value":"$0.00 (0%)"},{"metric":"Total Labor Cost","value":"$3,000.00"},{"metric":"Cost per Worker","value":"$750.00"},{"metric":"Cost per Day","value":"$600.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lean-six-sigma-dpmo-calculator":{"post":{"operationId":"run_lean_six_sigma_dpmo_calculator","summary":"Lean Six Sigma DPMO & Sigma Level Calculator","tags":["Calculators"],"description":"Calculate DPU, DPO, DPMO, process yield and Six Sigma quality level from a defect count, unit count and opportunities per unit — with both long-term and 1.5σ-shifted short-term sigma levels.\n\n[Try Lean Six Sigma DPMO & Sigma Level Calculator in your browser →](https://iotools.cloud/tool/lean-six-sigma-dpmo-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"defects":{"type":"number","description":"Defects found","minimum":0},"units":{"type":"number","description":"Units inspected","minimum":1},"opportunities":{"type":"number","description":"Opportunities per unit","minimum":1}},"required":["defects","units"]},"examples":{"typical_process_4_opportunities_unit":{"summary":"Typical process (4 opportunities/unit)","value":{"defects":"12","units":"500","opportunities":"4"}},"zero_defects":{"summary":"Zero defects","value":{"defects":"0","units":"1000","opportunities":"1"}},"high_defect_rate_1_opportunity_unit":{"summary":"High defect rate (1 opportunity/unit)","value":{"defects":"300","units":"1000","opportunities":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"typical_process_4_opportunities_unit":{"summary":"Typical process (4 opportunities/unit)","value":{"tool":"lean-six-sigma-dpmo-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Defects per unit (DPU)","value":"0.0240"},{"metric":"Defects per opportunity (DPO)","value":"0.006000"},{"metric":"Defects per million opportunities (DPMO)","value":"6,000"},{"metric":"Process yield","value":"99.4000%"},{"metric":"PPM defective (defects per million units)","value":"24,000"},{"metric":"Sigma level — long-term (no shift)","value":"2.51σ"},{"metric":"Sigma level — short-term (with 1.5σ shift)","value":"4.01σ"}],"referenceTable":[{"sigma-level":"1σ","dpmo":"691,462","yield":"30.8538%"},{"sigma-level":"2σ","dpmo":"308,538","yield":"69.1462%"},{"sigma-level":"3σ","dpmo":"66,807","yield":"93.3193%"},{"sigma-level":"4σ","dpmo":"6,210","yield":"99.3790%"},{"sigma-level":"5σ","dpmo":"233","yield":"99.9767%"},{"sigma-level":"6σ","dpmo":"3.40","yield":"99.9997%"}]},"credits_used":5,"credits_remaining":null}},"zero_defects":{"summary":"Zero defects","value":{"tool":"lean-six-sigma-dpmo-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Defects per unit (DPU)","value":"0.0000"},{"metric":"Defects per opportunity (DPO)","value":"0.000000"},{"metric":"Defects per million opportunities (DPMO)","value":"0"},{"metric":"Process yield","value":"100.0000%"},{"metric":"PPM defective (defects per million units)","value":"0"},{"metric":"Sigma level — long-term (no shift)","value":"> 6.00σ (no defects observed)"},{"metric":"Sigma level — short-term (with 1.5σ shift)","value":"> 6.00σ (no defects observed)"}],"referenceTable":[{"sigma-level":"1σ","dpmo":"691,462","yield":"30.8538%"},{"sigma-level":"2σ","dpmo":"308,538","yield":"69.1462%"},{"sigma-level":"3σ","dpmo":"66,807","yield":"93.3193%"},{"sigma-level":"4σ","dpmo":"6,210","yield":"99.3790%"},{"sigma-level":"5σ","dpmo":"233","yield":"99.9767%"},{"sigma-level":"6σ","dpmo":"3.40","yield":"99.9997%"}]},"credits_used":5,"credits_remaining":null}},"high_defect_rate_1_opportunity_unit":{"summary":"High defect rate (1 opportunity/unit)","value":{"tool":"lean-six-sigma-dpmo-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Defects per unit (DPU)","value":"0.3000"},{"metric":"Defects per opportunity (DPO)","value":"0.300000"},{"metric":"Defects per million opportunities (DPMO)","value":"300,000"},{"metric":"Process yield","value":"70.0000%"},{"metric":"PPM defective (defects per million units)","value":"300,000"},{"metric":"Sigma level — long-term (no shift)","value":"0.52σ"},{"metric":"Sigma level — short-term (with 1.5σ shift)","value":"2.02σ"}],"referenceTable":[{"sigma-level":"1σ","dpmo":"691,462","yield":"30.8538%"},{"sigma-level":"2σ","dpmo":"308,538","yield":"69.1462%"},{"sigma-level":"3σ","dpmo":"66,807","yield":"93.3193%"},{"sigma-level":"4σ","dpmo":"6,210","yield":"99.3790%"},{"sigma-level":"5σ","dpmo":"233","yield":"99.9767%"},{"sigma-level":"6σ","dpmo":"3.40","yield":"99.9997%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"referenceTable":{"type":"array","description":"Sigma level reference (1σ–6σ, short-term)","items":{"type":"object","properties":{"sigma-level":{"type":"string","description":"Sigma level"},"dpmo":{"type":"string","description":"DPMO"},"yield":{"type":"string","description":"Yield %"}}},"x-iotools-columns":["sigma-level","dpmo","yield"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/led-resistor-value-calculator":{"post":{"operationId":"run_led_resistor_value_calculator","summary":"LED Resistor Value Calculator","tags":["Calculators"],"description":"Calculate the current-limiting resistor for an LED from supply voltage, LED forward voltage, and forward current. Returns the exact resistance, the nearest standard E12/E24 value (rounded up), power dissipation, and a safe resistor wattage rating. Supports LED colour presets and multiple LEDs in series or parallel.\n\n[Try LED Resistor Value Calculator in your browser →](https://iotools.cloud/tool/led-resistor-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"supplyVoltage":{"type":"number","description":"Supply Voltage (V)","minimum":0.01},"ledPreset":{"enum":["custom","red","orange","yellow","green","blue","white","uv","ir"],"description":"LED Colour Preset"},"forwardVoltage":{"type":"number","description":"LED Forward Voltage (Vf)","minimum":0},"forwardCurrent":{"type":"number","description":"LED Forward Current","minimum":0.001},"currentUnit":{"enum":["mA","A"],"description":"Current Unit"},"ledCount":{"type":"number","description":"Number of LEDs","minimum":1,"maximum":20},"configuration":{"enum":["series","parallel"],"description":"Configuration"}},"required":[]},"examples":{"9v_supply_2v_led_20_ma":{"summary":"9V supply, 2V LED, 20 mA","value":{"supplyVoltage":"9","ledPreset":"custom","forwardVoltage":"2","forwardCurrent":"20","currentUnit":"mA","ledCount":"1","configuration":"series"}},"12v_3_blue_leds_in_series":{"summary":"12V, 3 blue LEDs in series","value":{"supplyVoltage":"12","ledPreset":"blue","forwardVoltage":"2","forwardCurrent":"20","currentUnit":"mA","ledCount":"3","configuration":"series"}},"5v_4_red_leds_in_parallel":{"summary":"5V, 4 red LEDs in parallel","value":{"supplyVoltage":"5","ledPreset":"red","forwardVoltage":"2","forwardCurrent":"20","currentUnit":"mA","ledCount":"4","configuration":"parallel"}},"supply_too_low_guarded":{"summary":"Supply too low (guarded)","value":{"supplyVoltage":"3","ledPreset":"custom","forwardVoltage":"2","forwardCurrent":"20","currentUnit":"mA","ledCount":"2","configuration":"series"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"9v_supply_2v_led_20_ma":{"summary":"9V supply, 2V LED, 20 mA","value":{"tool":"led-resistor-value-calculator","tool_version":"1.0.2","outputs":{"recommended":"360 Ω (nearest E24 ≥ required)","resultTable":[{"property":"Required Resistance","value":"350 Ω"},{"property":"Nearest E12 Value (≥)","value":"390 Ω"},{"property":"Nearest E24 Value (≥)","value":"360 Ω"},{"property":"Power Dissipation","value":"140 mW"},{"property":"Min. Resistor Power Rating","value":"1/2 W"},{"property":"Resistors Needed","value":"1 resistor"}],"notes":""},"credits_used":5,"credits_remaining":null}},"12v_3_blue_leds_in_series":{"summary":"12V, 3 blue LEDs in series","value":{"tool":"led-resistor-value-calculator","tool_version":"1.0.2","outputs":{"recommended":"91 Ω (nearest E24 ≥ required)","resultTable":[{"property":"Required Resistance","value":"90 Ω"},{"property":"Nearest E12 Value (≥)","value":"100 Ω"},{"property":"Nearest E24 Value (≥)","value":"91 Ω"},{"property":"Power Dissipation","value":"36 mW"},{"property":"Min. Resistor Power Rating","value":"1/8 W"},{"property":"Resistors Needed","value":"1 resistor"}],"notes":"Headroom is under 20% of the supply — brightness will drift as the battery drains."},"credits_used":5,"credits_remaining":null}},"5v_4_red_leds_in_parallel":{"summary":"5V, 4 red LEDs in parallel","value":{"tool":"led-resistor-value-calculator","tool_version":"1.0.2","outputs":{"recommended":"160 Ω (nearest E24 ≥ required)","resultTable":[{"property":"Required Resistance","value":"160 Ω"},{"property":"Nearest E12 Value (≥)","value":"180 Ω"},{"property":"Nearest E24 Value (≥)","value":"160 Ω"},{"property":"Power Dissipation","value":"64 mW"},{"property":"Min. Resistor Power Rating","value":"1/4 W"},{"property":"Resistors Needed","value":"4 resistors (one per LED)"}],"notes":"Parallel LEDs need one resistor per LED; sharing a single resistor lets Vf mismatch pull uneven current."},"credits_used":5,"credits_remaining":null}},"supply_too_low_guarded":{"summary":"Supply too low (guarded)","value":{"tool":"led-resistor-value-calculator","tool_version":"1.0.2","outputs":{"recommended":"Supply voltage (3 V) is too low for 2 LEDs in series (need more than 4 V).","resultTable":[{"property":"Required Resistance","value":"—"},{"property":"Nearest E12 Value (≥)","value":"—"},{"property":"Nearest E24 Value (≥)","value":"—"},{"property":"Power Dissipation","value":"—"},{"property":"Min. Resistor Power Rating","value":"—"},{"property":"Resistors Needed","value":"—"}],"notes":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"recommended":{"type":"string","description":"Recommended Resistor"},"resultTable":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"notes":{"type":"string","description":"Notes & Warnings"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/light-bulb-savings-calculator":{"post":{"operationId":"run_light_bulb_savings_calculator","summary":"Light Bulb Savings Calculator","tags":["Calculators"],"description":"Compare an old bulb against a replacement (e.g. incandescent vs LED) on energy use, cost, and CO2 — annual and total savings, replacement cost over time, and the payback period for the upgrade, plus a year-by-year cost breakdown.\n\n[Try Light Bulb Savings Calculator in your browser →](https://iotools.cloud/tool/light-bulb-savings-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"oldWatts":{"type":"number","description":"Old Bulb Wattage (W)","minimum":0.1},"newWatts":{"type":"number","description":"New Bulb Wattage (W)","minimum":0.1},"oldBulbCost":{"type":"number","description":"Old Bulb Price ($)","minimum":0},"newBulbCost":{"type":"number","description":"New Bulb Price ($)","minimum":0},"oldLifespanHours":{"type":"number","description":"Old Bulb Lifespan (hours)","minimum":1},"newLifespanHours":{"type":"number","description":"New Bulb Lifespan (hours)","minimum":1},"hoursPerDay":{"type":"number","description":"Hours Used Per Day","minimum":0.01,"maximum":24},"numberOfBulbs":{"type":"number","description":"Number of Bulbs","minimum":1,"maximum":100},"electricityRate":{"type":"number","description":"Electricity Rate ($/kWh)","minimum":0.001},"years":{"type":"number","description":"Analysis Period (years)","minimum":1,"maximum":50},"co2PerKwh":{"type":"number","description":"Grid CO2 Factor (lbs/kWh)","minimum":0}},"required":[]},"examples":{"60w_incandescent_8w_led_default_rates":{"summary":"60W incandescent → 8W LED, default rates","value":{"oldWatts":"60","newWatts":"8","oldBulbCost":"1.00","newBulbCost":"3.50","oldLifespanHours":"1000","newLifespanHours":"25000","hoursPerDay":"5","numberOfBulbs":"1","electricityRate":"0.13","years":"10","co2PerKwh":"0.92"}},"10_bulbs_100w_15w_5_year_period":{"summary":"10 bulbs, 100W → 15W, 5-year period","value":{"oldWatts":"100","newWatts":"15","oldBulbCost":"0.75","newBulbCost":"4","oldLifespanHours":"1200","newLifespanHours":"15000","hoursPerDay":"8","numberOfBulbs":"10","electricityRate":"0.20","years":"5","co2PerKwh":"0.92"}},"new_bulb_uses_more_power_than_old_no_savings":{"summary":"New bulb uses more power than old (no savings)","value":{"oldWatts":"10","newWatts":"15","oldBulbCost":"1","newBulbCost":"2","oldLifespanHours":"1000","newLifespanHours":"1000","hoursPerDay":"5","numberOfBulbs":"1","electricityRate":"0.13","years":"1","co2PerKwh":"0.92"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"60w_incandescent_8w_led_default_rates":{"summary":"60W incandescent → 8W LED, default rates","value":{"tool":"light-bulb-savings-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Old Bulb Annual Energy Use","value":"109.5 kWh"},{"metric":"New Bulb Annual Energy Use","value":"14.6 kWh"},{"metric":"Annual Energy Saved","value":"94.9 kWh (86.7%)"},{"metric":"Annual Energy Cost Savings","value":"$12.34"},{"metric":"10-Year Total Savings","value":"$139.07"},{"metric":"Payback Period","value":"2.4 months"},{"metric":"CO2 Savings","value":"87.3 lbs/year"},{"metric":"Old Bulbs Needed (10y)","value":"18.3"},{"metric":"New Bulbs Needed (10y)","value":"0.7"}],"yearly":[{"year":"1","old-bulb-cost":"$16.06","new-bulb-cost":"$2.15","cumulative-savings":"$13.91"},{"year":"2","old-bulb-cost":"$32.12","new-bulb-cost":"$4.31","cumulative-savings":"$27.81"},{"year":"3","old-bulb-cost":"$48.18","new-bulb-cost":"$6.46","cumulative-savings":"$41.72"},{"year":"4","old-bulb-cost":"$64.24","new-bulb-cost":"$8.61","cumulative-savings":"$55.63"},{"year":"5","old-bulb-cost":"$80.30","new-bulb-cost":"$10.77","cumulative-savings":"$69.53"},{"year":"6","old-bulb-cost":"$96.36","new-bulb-cost":"$12.92","cumulative-savings":"$83.44"},{"year":"7","old-bulb-cost":"$112.42","new-bulb-cost":"$15.07","cumulative-savings":"$97.35"},{"year":"8","old-bulb-cost":"$128.48","new-bulb-cost":"$17.23","cumulative-savings":"$111.25"},{"year":"9","old-bulb-cost":"$144.54","new-bulb-cost":"$19.38","cumulative-savings":"$125.16"},{"year":"10","old-bulb-cost":"$160.60","new-bulb-cost":"$21.54","cumulative-savings":"$139.07"}]},"credits_used":5,"credits_remaining":null}},"10_bulbs_100w_15w_5_year_period":{"summary":"10 bulbs, 100W → 15W, 5-year period","value":{"tool":"light-bulb-savings-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Old Bulb Annual Energy Use","value":"2920.0 kWh"},{"metric":"New Bulb Annual Energy Use","value":"438.0 kWh"},{"metric":"Annual Energy Saved","value":"2482.0 kWh (85.0%)"},{"metric":"Annual Energy Cost Savings","value":"$496.40"},{"metric":"5-Year Total Savings","value":"$2,534.32"},{"metric":"Payback Period","value":"0.8 months"},{"metric":"CO2 Savings","value":"2283.4 lbs/year"},{"metric":"Old Bulbs Needed (5y)","value":"121.7"},{"metric":"New Bulbs Needed (5y)","value":"9.7"}],"yearly":[{"year":"1","old-bulb-cost":"$602.25","new-bulb-cost":"$95.39","cumulative-savings":"$506.86"},{"year":"2","old-bulb-cost":"$1,204.50","new-bulb-cost":"$190.77","cumulative-savings":"$1,013.73"},{"year":"3","old-bulb-cost":"$1,806.75","new-bulb-cost":"$286.16","cumulative-savings":"$1,520.59"},{"year":"4","old-bulb-cost":"$2,409.00","new-bulb-cost":"$381.55","cumulative-savings":"$2,027.45"},{"year":"5","old-bulb-cost":"$3,011.25","new-bulb-cost":"$476.93","cumulative-savings":"$2,534.32"}]},"credits_used":5,"credits_remaining":null}},"new_bulb_uses_more_power_than_old_no_savings":{"summary":"New bulb uses more power than old (no savings)","value":{"tool":"light-bulb-savings-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Old Bulb Annual Energy Use","value":"18.3 kWh"},{"metric":"New Bulb Annual Energy Use","value":"27.4 kWh"},{"metric":"Annual Energy Saved","value":"-9.1 kWh (-50.0%)"},{"metric":"Annual Energy Cost Savings","value":"-$1.19"},{"metric":"1-Year Total Savings","value":"-$3.01"},{"metric":"Payback Period","value":"N/A — energy cost doesn't decrease"},{"metric":"CO2 Savings","value":"-8.4 lbs/year"},{"metric":"Old Bulbs Needed (1y)","value":"1.8"},{"metric":"New Bulbs Needed (1y)","value":"1.8"}],"yearly":[{"year":"1","old-bulb-cost":"$4.20","new-bulb-cost":"$7.21","cumulative-savings":"-$3.01"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Savings Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"yearly":{"type":"array","description":"Cumulative Cost by Year","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"old-bulb-cost":{"type":"string","description":"Old Bulb Cost"},"new-bulb-cost":{"type":"string","description":"New Bulb Cost"},"cumulative-savings":{"type":"string","description":"Cumulative Savings"}}},"x-iotools-columns":["year","old-bulb-cost","new-bulb-cost","cumulative-savings"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/limiting-reactant-calculator":{"post":{"operationId":"run_limiting_reactant_calculator","summary":"Limiting Reactant Calculator","tags":["Calculators"],"description":"Find the limiting reactant from a chemical equation and the amount of each reactant in grams or moles. Auto-balances the equation, then reports theoretical yield for every product, how much of each excess reactant is left over, and percent yield from your actual yield.\n\n[Try Limiting Reactant Calculator in your browser →](https://iotools.cloud/tool/limiting-reactant-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"equation":{"type":"string","description":"Chemical Equation"},"amounts":{"type":"string","description":"Reactant Amounts"},"unit":{"enum":["g","mol"],"description":"Amount Unit"},"actualYield":{"type":"number","description":"Actual Yield (g, optional)"},"yieldProduct":{"type":"number","description":"Product for Percent Yield","minimum":1}},"required":["equation","amounts"]},"examples":{"water_from_hydrogen_and_oxygen_grams_with_percent_yield":{"summary":"Water from hydrogen and oxygen (grams, with percent yield)","value":{"equation":"H2 + O2 -> H2O","amounts":"10, 64","unit":"g","actualYield":"65","yieldProduct":"1"}},"iron_ore_reduction_fe2o3_co":{"summary":"Iron ore reduction — Fe2O3 + CO","value":{"equation":"Fe2O3 + CO -> Fe + CO2","amounts":"100, 50","unit":"g","actualYield":"","yieldProduct":"1"}},"propane_combustion_moles":{"summary":"Propane combustion (moles)","value":{"equation":"C3H8 + O2 -> CO2 + H2O","amounts":"1, 4","unit":"mol","actualYield":"","yieldProduct":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"water_from_hydrogen_and_oxygen_grams_with_percent_yield":{"summary":"Water from hydrogen and oxygen (grams, with percent yield)","value":{"tool":"limiting-reactant-calculator","tool_version":"1.0.2","outputs":{"balancedEquation":"2H2 + O2 → 2H2O","limitingReactant":"O2","reactantTable":[{"reactant":"H2","coef":"2","molar-mass-g-mol":"2.016","moles-given":"4.96032","moles-coef":"2.48016","status":"Excess","left-over-mol":"0.960067","left-over-g":"1.9355"},{"reactant":"O2","coef":"1","molar-mass-g-mol":"31.998","moles-given":"2.00013","moles-coef":"2.00013","status":"Limiting","left-over-mol":"0","left-over-g":"0"}],"productTable":[{"product":"H2O","coef":"2","molar-mass-g-mol":"18.015","yield-mol":"4.00025","yield-g":"72.0645"}],"percentYield":"90.197% of H2O (65 g of 72.0645 g)","steps":"1. Balance: 2H2 + O2 → 2H2O (coefficients recalculated)\n2. Convert each reactant to moles and divide by its coefficient:\n   H2: 10 g ÷ 2.016 g/mol = 4.96032 mol ÷ 2 = 2.48016\n   O2: 64 g ÷ 31.998 g/mol = 2.00013 mol ÷ 1 = 2.00013\n3. Smallest ratio → O2 is limiting (reaction extent 2.00013 mol).\n4. Theoretical yield = extent × product coefficient × molar mass:\n   H2O: 2.00013 × 2 × 18.015 = 72.0645 g"},"credits_used":5,"credits_remaining":null}},"iron_ore_reduction_fe2o3_co":{"summary":"Iron ore reduction — Fe2O3 + CO","value":{"tool":"limiting-reactant-calculator","tool_version":"1.0.2","outputs":{"balancedEquation":"Fe2O3 + 3CO → 2Fe + 3CO2","limitingReactant":"CO","reactantTable":[{"reactant":"Fe2O3","coef":"1","molar-mass-g-mol":"159.687","moles-given":"0.626225","moles-coef":"0.626225","status":"Excess","left-over-mol":"0.0311995","left-over-g":"4.98215"},{"reactant":"CO","coef":"3","molar-mass-g-mol":"28.01","moles-given":"1.78508","moles-coef":"0.595026","status":"Limiting","left-over-mol":"0","left-over-g":"0"}],"productTable":[{"product":"Fe","coef":"2","molar-mass-g-mol":"55.845","yield-mol":"1.19005","yield-g":"66.4584"},{"product":"CO2","coef":"3","molar-mass-g-mol":"44.009","yield-mol":"1.78508","yield-g":"78.5594"}],"percentYield":"","steps":"1. Balance: Fe2O3 + 3CO → 2Fe + 3CO2 (coefficients recalculated)\n2. Convert each reactant to moles and divide by its coefficient:\n   Fe2O3: 100 g ÷ 159.687 g/mol = 0.626225 mol ÷ 1 = 0.626225\n   CO: 50 g ÷ 28.01 g/mol = 1.78508 mol ÷ 3 = 0.595026\n3. Smallest ratio → CO is limiting (reaction extent 0.595026 mol).\n4. Theoretical yield = extent × product coefficient × molar mass:\n   Fe: 0.595026 × 2 × 55.845 = 66.4584 g\n   CO2: 0.595026 × 3 × 44.009 = 78.5594 g"},"credits_used":5,"credits_remaining":null}},"propane_combustion_moles":{"summary":"Propane combustion (moles)","value":{"tool":"limiting-reactant-calculator","tool_version":"1.0.2","outputs":{"balancedEquation":"C3H8 + 5O2 → 3CO2 + 4H2O","limitingReactant":"O2","reactantTable":[{"reactant":"C3H8","coef":"1","molar-mass-g-mol":"44.097","moles-given":"1","moles-coef":"1","status":"Excess","left-over-mol":"0.2","left-over-g":"8.8194"},{"reactant":"O2","coef":"5","molar-mass-g-mol":"31.998","moles-given":"4","moles-coef":"0.8","status":"Limiting","left-over-mol":"0","left-over-g":"0"}],"productTable":[{"product":"CO2","coef":"3","molar-mass-g-mol":"44.009","yield-mol":"2.4","yield-g":"105.622"},{"product":"H2O","coef":"4","molar-mass-g-mol":"18.015","yield-mol":"3.2","yield-g":"57.648"}],"percentYield":"","steps":"1. Balance: C3H8 + 5O2 → 3CO2 + 4H2O (coefficients recalculated)\n2. Convert each reactant to moles and divide by its coefficient:\n   C3H8: 1 mol ÷ 1 = 1\n   O2: 4 mol ÷ 5 = 0.8\n3. Smallest ratio → O2 is limiting (reaction extent 0.8 mol).\n4. Theoretical yield = extent × product coefficient × molar mass:\n   CO2: 0.8 × 3 × 44.009 = 105.622 g\n   H2O: 0.8 × 4 × 18.015 = 57.648 g"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"balancedEquation":{"type":"string","description":"Balanced Equation"},"limitingReactant":{"type":"string","description":"Limiting Reactant"},"reactantTable":{"type":"array","description":"Reactants","items":{"type":"object","properties":{"reactant":{"type":"string","description":"Reactant"},"coef":{"type":"string","description":"Coef."},"molar-mass-g-mol":{"type":"string","description":"Molar Mass (g/mol)"},"moles-given":{"type":"string","description":"Moles Given"},"moles-coef":{"type":"string","description":"Moles ÷ Coef."},"status":{"type":"string","description":"Status"},"left-over-mol":{"type":"string","description":"Left Over (mol)"},"left-over-g":{"type":"string","description":"Left Over (g)"}}},"x-iotools-columns":["reactant","coef","molar-mass-g-mol","moles-given","moles-coef","status","left-over-mol","left-over-g"]},"productTable":{"type":"array","description":"Theoretical Yield","items":{"type":"object","properties":{"product":{"type":"string","description":"Product"},"coef":{"type":"string","description":"Coef."},"molar-mass-g-mol":{"type":"string","description":"Molar Mass (g/mol)"},"yield-mol":{"type":"string","description":"Yield (mol)"},"yield-g":{"type":"string","description":"Yield (g)"}}},"x-iotools-columns":["product","coef","molar-mass-g-mol","yield-mol","yield-g"]},"percentYield":{"type":"string","description":"Percent Yield"},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/line-integral-calculator":{"post":{"operationId":"run_line_integral_calculator","summary":"Line Integral Calculator","tags":["Calculators"],"description":"Numerically evaluate a scalar or vector line integral along a parametric curve, with the curve's arc length and a conservative-field (curl) check for vector fields.\n\n[Try Line Integral Calculator in your browser →](https://iotools.cloud/tool/line-integral-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["scalar","vector"],"description":"Integral type"},"dimension":{"enum":["2d","3d"],"description":"Curve dimension"},"xt":{"type":"string","description":"x(t)"},"yt":{"type":"string","description":"y(t)"},"zt":{"type":"string","description":"z(t)"},"t0":{"type":"string","description":"t lower bound (t0)"},"t1":{"type":"string","description":"t upper bound (t1)"},"f":{"type":"string","description":"f(x, y[, z])"},"p":{"type":"string","description":"P(x, y[, z])"},"q":{"type":"string","description":"Q(x, y[, z])"},"r":{"type":"string","description":"R(x, y, z)"}},"required":["xt","yt","t0","t1"]},"examples":{"scalar_f_x_y_over_the_unit_circle":{"summary":"Scalar: f = x² + y² over the unit circle","value":{"mode":"scalar","dimension":"2d","xt":"cos(t)","yt":"sin(t)","zt":"0","t0":"0","t1":"2*pi","f":"x^2 + y^2","p":"-y","q":"x","r":"0"}},"vector_rotation_field_f_y_x_around_the_unit_circle_not_conservative":{"summary":"Vector: rotation field F = (-y, x) around the unit circle — not conservative","value":{"mode":"vector","dimension":"2d","xt":"cos(t)","yt":"sin(t)","zt":"0","t0":"0","t1":"2*pi","f":"x^2 + y^2","p":"-y","q":"x","r":"0"}},"vector_3d_conservative_field_f_yz_xz_xy_along_a_straight_line":{"summary":"Vector 3D: conservative field F = (yz, xz, xy) along a straight line","value":{"mode":"vector","dimension":"3d","xt":"t","yt":"t","zt":"t","t0":"0","t1":"1","f":"x^2 + y^2","p":"y*z","q":"x*z","r":"x*y"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"scalar_f_x_y_over_the_unit_circle":{"summary":"Scalar: f = x² + y² over the unit circle","value":{"tool":"line-integral-calculator","tool_version":"1.0.2","outputs":{"scalarValue":"6.28319","vectorValue":"","arcLengthValue":"6.28319","conservativeVerdict":"","setup":"r(t) = (cos(t), sin(t)), t ∈ [0, 6.28319]; ∫_C f ds, f(x, y) = x^2 + y^2","steps":"Curve: r(t) = (cos(t), sin(t)), t ∈ [0, 6.28319]\ndx/dt = -sin(t)\ndy/dt = cos(t)\nds/dt = sqrt((dx/dt)^2 + (dy/dt)^2)\nArc length = ∫ ds/dt dt = 6.28319\nf(x, y) = x^2 + y^2\n∫_C f ds = ∫ f(r(t)) · ds/dt dt = 6.28319\nMethod: composite Simpson's rule over t (1000 subdivisions); dx/dt, dy/dt computed via symbolic differentiation (mathjs derivative())."},"credits_used":5,"credits_remaining":null}},"vector_rotation_field_f_y_x_around_the_unit_circle_not_conservative":{"summary":"Vector: rotation field F = (-y, x) around the unit circle — not conservative","value":{"tool":"line-integral-calculator","tool_version":"1.0.2","outputs":{"scalarValue":"","vectorValue":"6.28319","arcLengthValue":"6.28319","conservativeVerdict":"No — ∂Q/∂x − ∂P/∂y = 2 ≠ 0, so F is not conservative; the line integral is path-dependent.","setup":"r(t) = (cos(t), sin(t)), t ∈ [0, 6.28319]; ∫_C F · dr, F = (-y, x)","steps":"Curve: r(t) = (cos(t), sin(t)), t ∈ [0, 6.28319]\ndx/dt = -sin(t)\ndy/dt = cos(t)\nds/dt = sqrt((dx/dt)^2 + (dy/dt)^2)\nArc length = ∫ ds/dt dt = 6.28319\nP(x, y) = -y\nQ(x, y) = x\n∫_C F · dr = ∫ [P dx/dt + Q dy/dt] dt = 6.28319\nConservative field check — 2D curl (∂Q/∂x − ∂P/∂y):\n∂Q/∂x − ∂P/∂y = 2\nVerdict: No — ∂Q/∂x − ∂P/∂y = 2 ≠ 0, so F is not conservative; the line integral is path-dependent.\nMethod: composite Simpson's rule over t (1000 subdivisions); dx/dt, dy/dt computed via symbolic differentiation (mathjs derivative())."},"credits_used":5,"credits_remaining":null}},"vector_3d_conservative_field_f_yz_xz_xy_along_a_straight_line":{"summary":"Vector 3D: conservative field F = (yz, xz, xy) along a straight line","value":{"tool":"line-integral-calculator","tool_version":"1.0.2","outputs":{"scalarValue":"","vectorValue":"1","arcLengthValue":"1.73205","conservativeVerdict":"Yes — curl F = (0, 0, 0) everywhere, so F appears conservative (path-independent). This partial-derivative test is necessary but not sufficient on domains with a hole or singularity.","setup":"r(t) = (t, t, t), t ∈ [0, 1]; ∫_C F · dr, F = (y*z, x*z, x*y)","steps":"Curve: r(t) = (t, t, t), t ∈ [0, 1]\ndx/dt = 1\ndy/dt = 1\ndz/dt = 1\nds/dt = sqrt((dx/dt)^2 + (dy/dt)^2 + (dz/dt)^2)\nArc length = ∫ ds/dt dt = 1.73205\nP(x, y, z) = y*z\nQ(x, y, z) = x*z\nR(x, y, z) = x*y\n∫_C F · dr = ∫ [P dx/dt + Q dy/dt + R dz/dt] dt = 1\nConservative field check — curl F = (∂R/∂y − ∂Q/∂z, ∂P/∂z − ∂R/∂x, ∂Q/∂x − ∂P/∂y):\ncurl F = (0, 0, 0)\nVerdict: Yes — curl F = (0, 0, 0) everywhere, so F appears conservative (path-independent). This partial-derivative test is necessary but not sufficient on domains with a hole or singularity.\nMethod: composite Simpson's rule over t (1000 subdivisions); dx/dt, dy/dt, dz/dt computed via symbolic differentiation (mathjs derivative())."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"scalarValue":{"type":"string","description":"∫_C f ds"},"vectorValue":{"type":"string","description":"∫_C F · dr"},"arcLengthValue":{"type":"string","description":"Arc Length ∫ |r′(t)| dt"},"conservativeVerdict":{"type":"string","description":"Conservative Field?"},"setup":{"type":"string","description":"Integral Setup"},"steps":{"type":"string","description":"Step-by-Step Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/linear-equation-solver":{"post":{"operationId":"run_linear_equation_solver","summary":"Linear Equation Solver","tags":["Calculators"],"description":"Solve a linear equation of the form ax + b = c for x. Returns the decimal solution, the exact reduced fraction, and a step-by-step derivation — including the no-solution and infinite-solutions edge cases.\n\n[Try Linear Equation Solver in your browser →](https://iotools.cloud/tool/linear-equation-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"a"},"b":{"type":"number","description":"b"},"c":{"type":"number","description":"c"}},"required":["a","b","c"]},"examples":{"2x_3_11":{"summary":"2x + 3 = 11","value":{"a":"2","b":"3","c":"11"}},"3x_2_5_non_integer_coefficient_result":{"summary":"3x + 2 = 5 (non-integer coefficient result)","value":{"a":"3","b":"2","c":"5"}},"0x_5_5_infinite_solutions":{"summary":"0x + 5 = 5 (infinite solutions)","value":{"a":"0","b":"5","c":"5"}},"0x_3_7_no_solution":{"summary":"0x + 3 = 7 (no solution)","value":{"a":"0","b":"3","c":"7"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3_11":{"summary":"2x + 3 = 11","value":{"tool":"linear-equation-solver","tool_version":"1.0.2","outputs":{"status":"one_solution","solution":"x = 4","exactFraction":"4","steps":"Equation: 2x + 3 = 11\nSubtract b from both sides: 2x = 11 - 3 = 8\nDivide both sides by a: x = 8 / 2 = 4"},"credits_used":5,"credits_remaining":null}},"3x_2_5_non_integer_coefficient_result":{"summary":"3x + 2 = 5 (non-integer coefficient result)","value":{"tool":"linear-equation-solver","tool_version":"1.0.2","outputs":{"status":"one_solution","solution":"x = 1","exactFraction":"1","steps":"Equation: 3x + 2 = 5\nSubtract b from both sides: 3x = 5 - 2 = 3\nDivide both sides by a: x = 3 / 3 = 1"},"credits_used":5,"credits_remaining":null}},"0x_5_5_infinite_solutions":{"summary":"0x + 5 = 5 (infinite solutions)","value":{"tool":"linear-equation-solver","tool_version":"1.0.2","outputs":{"status":"infinite_solutions","solution":"Infinitely many solutions — every real number satisfies this equation.","exactFraction":"","steps":"Equation: 0x + 5 = 5\na = 0, and b = c (5 = 5) → the equation holds for every x."},"credits_used":5,"credits_remaining":null}},"0x_3_7_no_solution":{"summary":"0x + 3 = 7 (no solution)","value":{"tool":"linear-equation-solver","tool_version":"1.0.2","outputs":{"status":"no_solution","solution":"No solution — this equation is a contradiction (3 = 7 is false).","exactFraction":"","steps":"Equation: 0x + 3 = 7\na = 0, and b ≠ c (3 ≠ 7) → the equation reduces to a false statement."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"solution":{"type":"string","description":"Solution"},"status":{"type":"string","description":"Status"},"exactFraction":{"type":"string","description":"Exact Fraction"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/llm-api-cost-calculator":{"post":{"operationId":"run_llm_api_cost_calculator","summary":"LLM API Cost Calculator","tags":["Calculators"],"description":"Estimate the USD cost of an LLM API workload from input/output token counts and daily call volume, using published per-model list prices — with per-call, per-day, per-month and per-year projections and a side-by-side model comparison.\n\n[Try LLM API Cost Calculator in your browser →](https://iotools.cloud/tool/llm-api-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputTokens":{"type":"number","description":"Input Tokens","minimum":0,"maximum":10000000},"outputTokens":{"type":"number","description":"Output Tokens","minimum":0,"maximum":10000000},"callsPerDay":{"type":"number","description":"Calls / Day","minimum":0,"maximum":10000000},"model":{"enum":["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-3.5-turbo","o1","o1-mini","claude-3-5-sonnet","claude-3-opus","claude-3-haiku","gemini-1-5-pro","gemini-1-5-flash","llama-3-1-405b","llama-3-1-70b","llama-3-1-8b"],"description":"Model"},"pricingMode":{"enum":["realtime","batch"],"description":"Pricing Mode"}},"required":[]},"examples":{"gpt_4o_1000_in_500_out_1000_calls_day_real_time":{"summary":"GPT-4o · 1000 in / 500 out · 1000 calls/day (real-time)","value":{"inputTokens":"1000","outputTokens":"500","callsPerDay":"1000","model":"gpt-4o","pricingMode":"realtime"}},"gpt_4o_batch_pricing_50_off":{"summary":"GPT-4o · batch pricing (50% off)","value":{"inputTokens":"1000","outputTokens":"500","callsPerDay":"1000","model":"gpt-4o","pricingMode":"batch"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"gpt_4o_1000_in_500_out_1000_calls_day_real_time":{"summary":"GPT-4o · 1000 in / 500 out · 1000 calls/day (real-time)","value":{"tool":"llm-api-cost-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Input cost / call","value":"$0.002500"},{"metric":"Output cost / call","value":"$0.005000"},{"metric":"Cost / call","value":"$0.007500"},{"metric":"Cost / day","value":"$7.50"},{"metric":"Cost / month","value":"$228.28"},{"metric":"Cost / year","value":"$2,739"}],"comparison":[{"model":"GPT-4o","provider":"OpenAI","in-out-1m":"$2.50 / $10.00","per-call":"$0.007500","per-day":"$7.50","per-month":"$228.28"},{"model":"GPT-4o mini","provider":"OpenAI","in-out-1m":"$0.1500 / $0.6000","per-call":"$0.000450","per-day":"$0.4500","per-month":"$13.70"},{"model":"GPT-4 Turbo","provider":"OpenAI","in-out-1m":"$10.00 / $30.00","per-call":"$0.0250","per-day":"$25.00","per-month":"$760.94"},{"model":"GPT-4","provider":"OpenAI","in-out-1m":"$30.00 / $60.00","per-call":"$0.0600","per-day":"$60.00","per-month":"$1,826"},{"model":"GPT-3.5 Turbo","provider":"OpenAI","in-out-1m":"$0.5000 / $1.50","per-call":"$0.001250","per-day":"$1.25","per-month":"$38.05"},{"model":"o1","provider":"OpenAI","in-out-1m":"$15.00 / $60.00","per-call":"$0.0450","per-day":"$45.00","per-month":"$1,370"},{"model":"o1-mini","provider":"OpenAI","in-out-1m":"$3.00 / $12.00","per-call":"$0.009000","per-day":"$9.00","per-month":"$273.94"},{"model":"Claude 3.5 Sonnet","provider":"Anthropic","in-out-1m":"$3.00 / $15.00","per-call":"$0.0105","per-day":"$10.50","per-month":"$319.59"},{"model":"Claude 3 Opus","provider":"Anthropic","in-out-1m":"$15.00 / $75.00","per-call":"$0.0525","per-day":"$52.50","per-month":"$1,598"},{"model":"Claude 3 Haiku","provider":"Anthropic","in-out-1m":"$0.2500 / $1.25","per-call":"$0.000875","per-day":"$0.8750","per-month":"$26.63"},{"model":"Gemini 1.5 Pro","provider":"Google","in-out-1m":"$1.25 / $5.00","per-call":"$0.003750","per-day":"$3.75","per-month":"$114.14"},{"model":"Gemini 1.5 Flash","provider":"Google","in-out-1m":"$0.0750 / $0.3000","per-call":"$0.000225","per-day":"$0.2250","per-month":"$6.85"},{"model":"Llama 3.1 405B","provider":"Meta","in-out-1m":"$3.00 / $3.00","per-call":"$0.004500","per-day":"$4.50","per-month":"$136.97"},{"model":"Llama 3.1 70B","provider":"Meta","in-out-1m":"$0.8800 / $0.8800","per-call":"$0.001320","per-day":"$1.32","per-month":"$40.18"},{"model":"Llama 3.1 8B","provider":"Meta","in-out-1m":"$0.1800 / $0.1800","per-call":"$0.000270","per-day":"$0.2700","per-month":"$8.22"}]},"credits_used":5,"credits_remaining":null}},"gpt_4o_batch_pricing_50_off":{"summary":"GPT-4o · batch pricing (50% off)","value":{"tool":"llm-api-cost-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Input cost / call","value":"$0.001250"},{"metric":"Output cost / call","value":"$0.002500"},{"metric":"Cost / call","value":"$0.003750"},{"metric":"Cost / day","value":"$3.75"},{"metric":"Cost / month","value":"$114.14"},{"metric":"Cost / year","value":"$1,370"}],"comparison":[{"model":"GPT-4o","provider":"OpenAI","in-out-1m":"$1.25 / $5.00","per-call":"$0.003750","per-day":"$3.75","per-month":"$114.14"},{"model":"GPT-4o mini","provider":"OpenAI","in-out-1m":"$0.0750 / $0.3000","per-call":"$0.000225","per-day":"$0.2250","per-month":"$6.85"},{"model":"GPT-4 Turbo","provider":"OpenAI","in-out-1m":"$5.00 / $15.00","per-call":"$0.0125","per-day":"$12.50","per-month":"$380.47"},{"model":"GPT-4","provider":"OpenAI","in-out-1m":"$15.00 / $30.00","per-call":"$0.0300","per-day":"$30.00","per-month":"$913.13"},{"model":"GPT-3.5 Turbo","provider":"OpenAI","in-out-1m":"$0.2500 / $0.7500","per-call":"$0.000625","per-day":"$0.6250","per-month":"$19.02"},{"model":"o1","provider":"OpenAI","in-out-1m":"$7.50 / $30.00","per-call":"$0.0225","per-day":"$22.50","per-month":"$684.84"},{"model":"o1-mini","provider":"OpenAI","in-out-1m":"$1.50 / $6.00","per-call":"$0.004500","per-day":"$4.50","per-month":"$136.97"},{"model":"Claude 3.5 Sonnet","provider":"Anthropic","in-out-1m":"$1.50 / $7.50","per-call":"$0.005250","per-day":"$5.25","per-month":"$159.80"},{"model":"Claude 3 Opus","provider":"Anthropic","in-out-1m":"$7.50 / $37.50","per-call":"$0.0262","per-day":"$26.25","per-month":"$798.98"},{"model":"Claude 3 Haiku","provider":"Anthropic","in-out-1m":"$0.1250 / $0.6250","per-call":"$0.000438","per-day":"$0.4375","per-month":"$13.32"},{"model":"Gemini 1.5 Pro","provider":"Google","in-out-1m":"$0.6250 / $2.50","per-call":"$0.001875","per-day":"$1.88","per-month":"$57.07"},{"model":"Gemini 1.5 Flash","provider":"Google","in-out-1m":"$0.0375 / $0.1500","per-call":"$0.000112","per-day":"$0.1125","per-month":"$3.42"},{"model":"Llama 3.1 405B","provider":"Meta","in-out-1m":"$3.00 / $3.00","per-call":"$0.004500","per-day":"$4.50","per-month":"$136.97"},{"model":"Llama 3.1 70B","provider":"Meta","in-out-1m":"$0.8800 / $0.8800","per-call":"$0.001320","per-day":"$1.32","per-month":"$40.18"},{"model":"Llama 3.1 8B","provider":"Meta","in-out-1m":"$0.1800 / $0.1800","per-call":"$0.000270","per-day":"$0.2700","per-month":"$8.22"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"breakdown":{"type":"array","description":"Cost breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"comparison":{"type":"array","description":"Model comparison","items":{"type":"object","properties":{"model":{"type":"string","description":"Model"},"provider":{"type":"string","description":"Provider"},"in-out-1m":{"type":"string","description":"In / Out ($/1M)"},"per-call":{"type":"string","description":"Per Call"},"per-day":{"type":"string","description":"Per Day"},"per-month":{"type":"string","description":"Per Month"}}},"x-iotools-columns":["model","provider","in-out-1m","per-call","per-day","per-month"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/loan-affordability-calculator":{"post":{"operationId":"run_loan_affordability_calculator","summary":"Loan Affordability Calculator","tags":["Calculators"],"description":"Estimate how large a loan you can afford. Enter your gross monthly income, existing debts, interest rate and term, and get the maximum loan amount, monthly payment and purchase price your debt-to-income (DTI) limits allow.\n\n[Try Loan Affordability Calculator in your browser →](https://iotools.cloud/tool/loan-affordability-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grossIncome":{"type":"number","description":"Monthly Gross Income ($)","minimum":0,"maximum":99999999},"existingDebts":{"type":"number","description":"Existing Monthly Debts ($)","minimum":0,"maximum":99999999},"interestRate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0,"maximum":50},"loanTerm":{"type":"number","description":"Loan Term (years)","minimum":1,"maximum":50},"downPayment":{"type":"number","description":"Down Payment ($)","minimum":0,"maximum":99999999},"loanType":{"enum":["mortgage","personal","auto","custom"],"description":"DTI Preset"},"frontEndDti":{"type":"number","description":"Front-End DTI Limit (%)","minimum":10,"maximum":60},"backEndDti":{"type":"number","description":"Back-End DTI Limit (%)","minimum":10,"maximum":70}},"required":["grossIncome","interestRate","loanTerm"]},"examples":{"6_000_mo_income_500_debts_6_30yr_mortgage_28_36":{"summary":"$6,000/mo income, $500 debts, 6% / 30yr (mortgage 28/36)","value":{"grossIncome":"6000","existingDebts":"500","interestRate":"6","loanTerm":"30","downPayment":"0","loanType":"mortgage"}},"personal_loan_with_down_payment_40_43_9_5yr":{"summary":"Personal loan with down payment (40/43, 9% / 5yr)","value":{"grossIncome":"8000","existingDebts":"1000","interestRate":"9","loanTerm":"5","downPayment":"2000","loanType":"personal"}},"custom_dti_front_end_limited_income_rich_no_debts":{"summary":"Custom DTI, front-end limited (income-rich, no debts)","value":{"grossIncome":"10000","existingDebts":"0","interestRate":"7","loanTerm":"30","downPayment":"50000","loanType":"custom","frontEndDti":"30","backEndDti":"45"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_000_mo_income_500_debts_6_30yr_mortgage_28_36":{"summary":"$6,000/mo income, $500 debts, 6% / 30yr (mortgage 28/36)","value":{"tool":"loan-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Max Affordable Loan Amount","value":"$276,874"},{"metric":"Max Monthly Payment","value":"$1,660"},{"metric":"Down Payment","value":"$0"},{"metric":"Max Purchase Price","value":"$276,874"},{"metric":"Total of Payments","value":"$597,600"},{"metric":"Total Interest Paid","value":"$320,726"},{"metric":"Front-End DTI Limit","value":"28%"},{"metric":"Back-End DTI Limit","value":"36%"},{"metric":"Limiting Factor","value":"Back-End DTI (existing debts)"}]},"credits_used":5,"credits_remaining":null}},"personal_loan_with_down_payment_40_43_9_5yr":{"summary":"Personal loan with down payment (40/43, 9% / 5yr)","value":{"tool":"loan-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Max Affordable Loan Amount","value":"$117,543"},{"metric":"Max Monthly Payment","value":"$2,440"},{"metric":"Down Payment","value":"$2,000"},{"metric":"Max Purchase Price","value":"$119,543"},{"metric":"Total of Payments","value":"$146,400"},{"metric":"Total Interest Paid","value":"$28,857"},{"metric":"Front-End DTI Limit","value":"40%"},{"metric":"Back-End DTI Limit","value":"43%"},{"metric":"Limiting Factor","value":"Back-End DTI (existing debts)"}]},"credits_used":5,"credits_remaining":null}},"custom_dti_front_end_limited_income_rich_no_debts":{"summary":"Custom DTI, front-end limited (income-rich, no debts)","value":{"tool":"loan-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Max Affordable Loan Amount","value":"$450,923"},{"metric":"Max Monthly Payment","value":"$3,000"},{"metric":"Down Payment","value":"$50,000"},{"metric":"Max Purchase Price","value":"$500,923"},{"metric":"Total of Payments","value":"$1,080,000"},{"metric":"Total Interest Paid","value":"$629,077"},{"metric":"Front-End DTI Limit","value":"30%"},{"metric":"Back-End DTI Limit","value":"45%"},{"metric":"Limiting Factor","value":"Front-End DTI (housing)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/loan-to-value-ratio-calculator":{"post":{"operationId":"run_loan_to_value_ratio_calculator","summary":"Loan-to-Value (LTV) Ratio Calculator","tags":["Calculators"],"description":"Calculate a loan-to-value (LTV) ratio from a loan amount and property value — LTV = loan ÷ value × 100. Shows down payment percent, home equity, PMI-required status (above 80% LTV) and a lender risk tier.\n\n[Try Loan-to-Value (LTV) Ratio Calculator in your browser →](https://iotools.cloud/tool/loan-to-value-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"loanAmount":{"type":"number","description":"Loan amount","minimum":0},"propertyValue":{"type":"number","description":"Property value","minimum":0}},"required":["loanAmount","propertyValue"]},"examples":{"180_000_loan_on_a_225_000_home_80_ltv":{"summary":"$180,000 loan on a $225,000 home (80% LTV)","value":{"loanAmount":"180000","propertyValue":"225000"}},"190_000_loan_on_a_200_000_home_95_ltv_pmi":{"summary":"$190,000 loan on a $200,000 home (95% LTV — PMI)","value":{"loanAmount":"190000","propertyValue":"200000"}},"100_000_loan_on_a_250_000_home_40_ltv_excellent":{"summary":"$100,000 loan on a $250,000 home (40% LTV — excellent)","value":{"loanAmount":"100000","propertyValue":"250000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"180_000_loan_on_a_225_000_home_80_ltv":{"summary":"$180,000 loan on a $225,000 home (80% LTV)","value":{"tool":"loan-to-value-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"LTV Ratio","value":"80.00%"},{"metric":"Down Payment","value":"20.00%"},{"metric":"PMI Required","value":"No (LTV ≤ 80%)"},{"metric":"Risk Tier","value":"Strong — no PMI required"}]},"credits_used":5,"credits_remaining":null}},"190_000_loan_on_a_200_000_home_95_ltv_pmi":{"summary":"$190,000 loan on a $200,000 home (95% LTV — PMI)","value":{"tool":"loan-to-value-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"LTV Ratio","value":"95.00%"},{"metric":"Down Payment","value":"5.00%"},{"metric":"PMI Required","value":"Yes (LTV > 80%)"},{"metric":"Risk Tier","value":"Higher risk — PMI + higher rate"}]},"credits_used":5,"credits_remaining":null}},"100_000_loan_on_a_250_000_home_40_ltv_excellent":{"summary":"$100,000 loan on a $250,000 home (40% LTV — excellent)","value":{"tool":"loan-to-value-ratio-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"LTV Ratio","value":"40.00%"},{"metric":"Down Payment","value":"60.00%"},{"metric":"PMI Required","value":"No (LTV ≤ 80%)"},{"metric":"Risk Tier","value":"Excellent — best rates, no PMI"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/loot-drop-probability-calculator":{"post":{"operationId":"run_loot_drop_probability_calculator","summary":"Loot Drop Probability Calculator","tags":["Calculators"],"description":"Calculate the odds of landing at least K loot drops across N independent attempts, plus expected drops, the number of attempts needed for 50%/90%/99% confidence, and a full attempt-by-attempt probability curve.\n\n[Try Loot Drop Probability Calculator in your browser →](https://iotools.cloud/tool/loot-drop-probability-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dropRate":{"type":"number","description":"Drop Rate (%)","minimum":0.0001,"maximum":100},"attempts":{"type":"number","description":"Number of Attempts","minimum":1,"maximum":200},"targetDrops":{"type":"number","description":"Target Number of Drops","minimum":1,"maximum":50}},"required":["dropRate"]},"examples":{"10_drop_rate_20_attempts_at_least_1":{"summary":"10% drop rate, 20 attempts, at least 1","value":{"dropRate":"10","attempts":"20","targetDrops":"1"}},"5_drop_rate_50_attempts_at_least_3":{"summary":"5% drop rate, 50 attempts, at least 3","value":{"dropRate":"5","attempts":"50","targetDrops":"3"}},"99_drop_rate_200_attempts_at_least_1_numerical_stability_edge_case":{"summary":"99% drop rate, 200 attempts, at least 1 (numerical-stability edge case)","value":{"dropRate":"99","attempts":"200","targetDrops":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_drop_rate_20_attempts_at_least_1":{"summary":"10% drop rate, 20 attempts, at least 1","value":{"tool":"loot-drop-probability-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Drop Rate","value":"10%"},{"metric":"Number of Attempts","value":"20"},{"metric":"Target Number of Drops","value":"1"},{"metric":"Probability of At Least 1 Drop(s)","value":"87.8423%"},{"metric":"Probability of Fewer Than 1 Drop(s)","value":"12.1577%"},{"metric":"Expected Number of Drops","value":"2"},{"metric":"Attempts for 50% Confidence (at least one drop)","value":"7"},{"metric":"Attempts for 90% Confidence (at least one drop)","value":"22"},{"metric":"Attempts for 99% Confidence (at least one drop)","value":"44"}],"curve":[{"attempt":"1","cumulative-probability":"10%"},{"attempt":"2","cumulative-probability":"19%"},{"attempt":"3","cumulative-probability":"27.1%"},{"attempt":"4","cumulative-probability":"34.39%"},{"attempt":"5","cumulative-probability":"40.951%"},{"attempt":"6","cumulative-probability":"46.8559%"},{"attempt":"7","cumulative-probability":"52.1703%"},{"attempt":"8","cumulative-probability":"56.9533%"},{"attempt":"9","cumulative-probability":"61.258%"},{"attempt":"10","cumulative-probability":"65.1322%"},{"attempt":"11","cumulative-probability":"68.6189%"},{"attempt":"12","cumulative-probability":"71.757%"},{"attempt":"13","cumulative-probability":"74.5813%"},{"attempt":"14","cumulative-probability":"77.1232%"},{"attempt":"15","cumulative-probability":"79.4109%"},{"attempt":"16","cumulative-probability":"81.4698%"},{"attempt":"17","cumulative-probability":"83.3228%"},{"attempt":"18","cumulative-probability":"84.9905%"},{"attempt":"19","cumulative-probability":"86.4915%"},{"attempt":"20","cumulative-probability":"87.8423%"}]},"credits_used":5,"credits_remaining":null}},"5_drop_rate_50_attempts_at_least_3":{"summary":"5% drop rate, 50 attempts, at least 3","value":{"tool":"loot-drop-probability-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Drop Rate","value":"5%"},{"metric":"Number of Attempts","value":"50"},{"metric":"Target Number of Drops","value":"3"},{"metric":"Probability of At Least 3 Drop(s)","value":"45.9467%"},{"metric":"Probability of Fewer Than 3 Drop(s)","value":"54.0533%"},{"metric":"Expected Number of Drops","value":"2.5"},{"metric":"Attempts for 50% Confidence (at least one drop)","value":"14"},{"metric":"Attempts for 90% Confidence (at least one drop)","value":"45"},{"metric":"Attempts for 99% Confidence (at least one drop)","value":"90"}],"curve":[{"attempt":"1","cumulative-probability":"5%"},{"attempt":"2","cumulative-probability":"9.75%"},{"attempt":"3","cumulative-probability":"14.2625%"},{"attempt":"4","cumulative-probability":"18.5494%"},{"attempt":"5","cumulative-probability":"22.6219%"},{"attempt":"6","cumulative-probability":"26.4908%"},{"attempt":"7","cumulative-probability":"30.1663%"},{"attempt":"8","cumulative-probability":"33.658%"},{"attempt":"9","cumulative-probability":"36.9751%"},{"attempt":"10","cumulative-probability":"40.1263%"},{"attempt":"11","cumulative-probability":"43.12%"},{"attempt":"12","cumulative-probability":"45.964%"},{"attempt":"13","cumulative-probability":"48.6658%"},{"attempt":"14","cumulative-probability":"51.2325%"},{"attempt":"15","cumulative-probability":"53.6709%"},{"attempt":"16","cumulative-probability":"55.9873%"},{"attempt":"17","cumulative-probability":"58.188%"},{"attempt":"18","cumulative-probability":"60.2786%"},{"attempt":"19","cumulative-probability":"62.2646%"},{"attempt":"20","cumulative-probability":"64.1514%"},{"attempt":"21","cumulative-probability":"65.9438%"},{"attempt":"22","cumulative-probability":"67.6466%"},{"attempt":"23","cumulative-probability":"69.2643%"},{"attempt":"24","cumulative-probability":"70.8011%"},{"attempt":"25","cumulative-probability":"72.261%"},{"attempt":"26","cumulative-probability":"73.648%"},{"attempt":"27","cumulative-probability":"74.9656%"},{"attempt":"28","cumulative-probability":"76.2173%"},{"attempt":"29","cumulative-probability":"77.4064%"},{"attempt":"30","cumulative-probability":"78.5361%"},{"attempt":"31","cumulative-probability":"79.6093%"},{"attempt":"32","cumulative-probability":"80.6289%"},{"attempt":"33","cumulative-probability":"81.5974%"},{"attempt":"34","cumulative-probability":"82.5175%"},{"attempt":"35","cumulative-probability":"83.3917%"},{"attempt":"36","cumulative-probability":"84.2221%"},{"attempt":"37","cumulative-probability":"85.011%"},{"attempt":"38","cumulative-probability":"85.7604%"},{"attempt":"39","cumulative-probability":"86.4724%"},{"attempt":"40","cumulative-probability":"87.1488%"},{"attempt":"41","cumulative-probability":"87.7913%"},{"attempt":"42","cumulative-probability":"88.4018%"},{"attempt":"43","cumulative-probability":"88.9817%"},{"attempt":"44","cumulative-probability":"89.5326%"},{"attempt":"45","cumulative-probability":"90.056%"},{"attempt":"46","cumulative-probability":"90.5532%"},{"attempt":"47","cumulative-probability":"91.0255%"},{"attempt":"48","cumulative-probability":"91.4742%"},{"attempt":"49","cumulative-probability":"91.9005%"},{"attempt":"50","cumulative-probability":"92.3055%"}]},"credits_used":5,"credits_remaining":null}},"99_drop_rate_200_attempts_at_least_1_numerical_stability_edge_case":{"summary":"99% drop rate, 200 attempts, at least 1 (numerical-stability edge case)","value":{"tool":"loot-drop-probability-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Drop Rate","value":"99%"},{"metric":"Number of Attempts","value":"200"},{"metric":"Target Number of Drops","value":"1"},{"metric":"Probability of At Least 1 Drop(s)","value":"100%"},{"metric":"Probability of Fewer Than 1 Drop(s)","value":"3.9e-10%"},{"metric":"Expected Number of Drops","value":"198"},{"metric":"Attempts for 50% Confidence (at least one drop)","value":"1"},{"metric":"Attempts for 90% Confidence (at least one drop)","value":"1"},{"metric":"Attempts for 99% Confidence (at least one drop)","value":"1"}],"curve":[{"attempt":"1","cumulative-probability":"99%"},{"attempt":"2","cumulative-probability":"99.99%"},{"attempt":"3","cumulative-probability":"99.9999%"},{"attempt":"4","cumulative-probability":"100%"},{"attempt":"5","cumulative-probability":"100%"},{"attempt":"6","cumulative-probability":"100%"},{"attempt":"7","cumulative-probability":"100%"},{"attempt":"8","cumulative-probability":"100%"},{"attempt":"9","cumulative-probability":"100%"},{"attempt":"10","cumulative-probability":"100%"},{"attempt":"11","cumulative-probability":"100%"},{"attempt":"12","cumulative-probability":"100%"},{"attempt":"13","cumulative-probability":"100%"},{"attempt":"14","cumulative-probability":"100%"},{"attempt":"15","cumulative-probability":"100%"},{"attempt":"16","cumulative-probability":"100%"},{"attempt":"17","cumulative-probability":"100%"},{"attempt":"18","cumulative-probability":"100%"},{"attempt":"19","cumulative-probability":"100%"},{"attempt":"20","cumulative-probability":"100%"},{"attempt":"21","cumulative-probability":"100%"},{"attempt":"22","cumulative-probability":"100%"},{"attempt":"23","cumulative-probability":"100%"},{"attempt":"24","cumulative-probability":"100%"},{"attempt":"25","cumulative-probability":"100%"},{"attempt":"26","cumulative-probability":"100%"},{"attempt":"27","cumulative-probability":"100%"},{"attempt":"28","cumulative-probability":"100%"},{"attempt":"29","cumulative-probability":"100%"},{"attempt":"30","cumulative-probability":"100%"},{"attempt":"31","cumulative-probability":"100%"},{"attempt":"32","cumulative-probability":"100%"},{"attempt":"33","cumulative-probability":"100%"},{"attempt":"34","cumulative-probability":"100%"},{"attempt":"35","cumulative-probability":"100%"},{"attempt":"36","cumulative-probability":"100%"},{"attempt":"37","cumulative-probability":"100%"},{"attempt":"38","cumulative-probability":"100%"},{"attempt":"39","cumulative-probability":"100%"},{"attempt":"40","cumulative-probability":"100%"},{"attempt":"41","cumulative-probability":"100%"},{"attempt":"42","cumulative-probability":"100%"},{"attempt":"43","cumulative-probability":"100%"},{"attempt":"44","cumulative-probability":"100%"},{"attempt":"45","cumulative-probability":"100%"},{"attempt":"46","cumulative-probability":"100%"},{"attempt":"47","cumulative-probability":"100%"},{"attempt":"48","cumulative-probability":"100%"},{"attempt":"49","cumulative-probability":"100%"},{"attempt":"50","cumulative-probability":"100%"},{"attempt":"51","cumulative-probability":"100%"},{"attempt":"52","cumulative-probability":"100%"},{"attempt":"53","cumulative-probability":"100%"},{"attempt":"54","cumulative-probability":"100%"},{"attempt":"55","cumulative-probability":"100%"},{"attempt":"56","cumulative-probability":"100%"},{"attempt":"57","cumulative-probability":"100%"},{"attempt":"58","cumulative-probability":"100%"},{"attempt":"59","cumulative-probability":"100%"},{"attempt":"60","cumulative-probability":"100%"},{"attempt":"61","cumulative-probability":"100%"},{"attempt":"62","cumulative-probability":"100%"},{"attempt":"63","cumulative-probability":"100%"},{"attempt":"64","cumulative-probability":"100%"},{"attempt":"65","cumulative-probability":"100%"},{"attempt":"66","cumulative-probability":"100%"},{"attempt":"67","cumulative-probability":"100%"},{"attempt":"68","cumulative-probability":"100%"},{"attempt":"69","cumulative-probability":"100%"},{"attempt":"70","cumulative-probability":"100%"},{"attempt":"71","cumulative-probability":"100%"},{"attempt":"72","cumulative-probability":"100%"},{"attempt":"73","cumulative-probability":"100%"},{"attempt":"74","cumulative-probability":"100%"},{"attempt":"75","cumulative-probability":"100%"},{"attempt":"76","cumulative-probability":"100%"},{"attempt":"77","cumulative-probability":"100%"},{"attempt":"78","cumulative-probability":"100%"},{"attempt":"79","cumulative-probability":"100%"},{"attempt":"80","cumulative-probability":"100%"},{"attempt":"81","cumulative-probability":"100%"},{"attempt":"82","cumulative-probability":"100%"},{"attempt":"83","cumulative-probability":"100%"},{"attempt":"84","cumulative-probability":"100%"},{"attempt":"85","cumulative-probability":"100%"},{"attempt":"86","cumulative-probability":"100%"},{"attempt":"87","cumulative-probability":"100%"},{"attempt":"88","cumulative-probability":"100%"},{"attempt":"89","cumulative-probability":"100%"},{"attempt":"90","cumulative-probability":"100%"},{"attempt":"91","cumulative-probability":"100%"},{"attempt":"92","cumulative-probability":"100%"},{"attempt":"93","cumulative-probability":"100%"},{"attempt":"94","cumulative-probability":"100%"},{"attempt":"95","cumulative-probability":"100%"},{"attempt":"96","cumulative-probability":"100%"},{"attempt":"97","cumulative-probability":"100%"},{"attempt":"98","cumulative-probability":"100%"},{"attempt":"99","cumulative-probability":"100%"},{"attempt":"100","cumulative-probability":"100%"},{"attempt":"101","cumulative-probability":"100%"},{"attempt":"102","cumulative-probability":"100%"},{"attempt":"103","cumulative-probability":"100%"},{"attempt":"104","cumulative-probability":"100%"},{"attempt":"105","cumulative-probability":"100%"},{"attempt":"106","cumulative-probability":"100%"},{"attempt":"107","cumulative-probability":"100%"},{"attempt":"108","cumulative-probability":"100%"},{"attempt":"109","cumulative-probability":"100%"},{"attempt":"110","cumulative-probability":"100%"},{"attempt":"111","cumulative-probability":"100%"},{"attempt":"112","cumulative-probability":"100%"},{"attempt":"113","cumulative-probability":"100%"},{"attempt":"114","cumulative-probability":"100%"},{"attempt":"115","cumulative-probability":"100%"},{"attempt":"116","cumulative-probability":"100%"},{"attempt":"117","cumulative-probability":"100%"},{"attempt":"118","cumulative-probability":"100%"},{"attempt":"119","cumulative-probability":"100%"},{"attempt":"120","cumulative-probability":"100%"},{"attempt":"121","cumulative-probability":"100%"},{"attempt":"122","cumulative-probability":"100%"},{"attempt":"123","cumulative-probability":"100%"},{"attempt":"124","cumulative-probability":"100%"},{"attempt":"125","cumulative-probability":"100%"},{"attempt":"126","cumulative-probability":"100%"},{"attempt":"127","cumulative-probability":"100%"},{"attempt":"128","cumulative-probability":"100%"},{"attempt":"129","cumulative-probability":"100%"},{"attempt":"130","cumulative-probability":"100%"},{"attempt":"131","cumulative-probability":"100%"},{"attempt":"132","cumulative-probability":"100%"},{"attempt":"133","cumulative-probability":"100%"},{"attempt":"134","cumulative-probability":"100%"},{"attempt":"135","cumulative-probability":"100%"},{"attempt":"136","cumulative-probability":"100%"},{"attempt":"137","cumulative-probability":"100%"},{"attempt":"138","cumulative-probability":"100%"},{"attempt":"139","cumulative-probability":"100%"},{"attempt":"140","cumulative-probability":"100%"},{"attempt":"141","cumulative-probability":"100%"},{"attempt":"142","cumulative-probability":"100%"},{"attempt":"143","cumulative-probability":"100%"},{"attempt":"144","cumulative-probability":"100%"},{"attempt":"145","cumulative-probability":"100%"},{"attempt":"146","cumulative-probability":"100%"},{"attempt":"147","cumulative-probability":"100%"},{"attempt":"148","cumulative-probability":"100%"},{"attempt":"149","cumulative-probability":"100%"},{"attempt":"150","cumulative-probability":"100%"},{"attempt":"151","cumulative-probability":"100%"},{"attempt":"152","cumulative-probability":"100%"},{"attempt":"153","cumulative-probability":"100%"},{"attempt":"154","cumulative-probability":"100%"},{"attempt":"155","cumulative-probability":"100%"},{"attempt":"156","cumulative-probability":"100%"},{"attempt":"157","cumulative-probability":"100%"},{"attempt":"158","cumulative-probability":"100%"},{"attempt":"159","cumulative-probability":"100%"},{"attempt":"160","cumulative-probability":"100%"},{"attempt":"161","cumulative-probability":"100%"},{"attempt":"162","cumulative-probability":"100%"},{"attempt":"163","cumulative-probability":"100%"},{"attempt":"164","cumulative-probability":"100%"},{"attempt":"165","cumulative-probability":"100%"},{"attempt":"166","cumulative-probability":"100%"},{"attempt":"167","cumulative-probability":"100%"},{"attempt":"168","cumulative-probability":"100%"},{"attempt":"169","cumulative-probability":"100%"},{"attempt":"170","cumulative-probability":"100%"},{"attempt":"171","cumulative-probability":"100%"},{"attempt":"172","cumulative-probability":"100%"},{"attempt":"173","cumulative-probability":"100%"},{"attempt":"174","cumulative-probability":"100%"},{"attempt":"175","cumulative-probability":"100%"},{"attempt":"176","cumulative-probability":"100%"},{"attempt":"177","cumulative-probability":"100%"},{"attempt":"178","cumulative-probability":"100%"},{"attempt":"179","cumulative-probability":"100%"},{"attempt":"180","cumulative-probability":"100%"},{"attempt":"181","cumulative-probability":"100%"},{"attempt":"182","cumulative-probability":"100%"},{"attempt":"183","cumulative-probability":"100%"},{"attempt":"184","cumulative-probability":"100%"},{"attempt":"185","cumulative-probability":"100%"},{"attempt":"186","cumulative-probability":"100%"},{"attempt":"187","cumulative-probability":"100%"},{"attempt":"188","cumulative-probability":"100%"},{"attempt":"189","cumulative-probability":"100%"},{"attempt":"190","cumulative-probability":"100%"},{"attempt":"191","cumulative-probability":"100%"},{"attempt":"192","cumulative-probability":"100%"},{"attempt":"193","cumulative-probability":"100%"},{"attempt":"194","cumulative-probability":"100%"},{"attempt":"195","cumulative-probability":"100%"},{"attempt":"196","cumulative-probability":"100%"},{"attempt":"197","cumulative-probability":"100%"},{"attempt":"198","cumulative-probability":"100%"},{"attempt":"199","cumulative-probability":"100%"},{"attempt":"200","cumulative-probability":"100%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"curve":{"type":"array","description":"Attempt-by-Attempt Odds (At Least One Drop)","items":{"type":"object","properties":{"attempt":{"type":"string","description":"Attempt #"},"cumulative-probability":{"type":"string","description":"Cumulative Probability"}}},"x-iotools-columns":["attempt","cumulative-probability"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/macronutrient-calculator":{"post":{"operationId":"run_macronutrient_calculator","summary":"Macronutrient Calculator","tags":["Calculators"],"description":"Split a daily calorie target into grams and calories of protein, carbs and fat using a diet preset (balanced, high-protein, keto, endurance or zone) or a custom macro ratio, with an optional per-meal breakdown.\n\n[Try Macronutrient Calculator in your browser →](https://iotools.cloud/tool/macronutrient-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calories":{"type":"number","description":"Daily calorie goal","minimum":800,"maximum":8000},"preset":{"enum":["balanced","highProtein","keto","endurance","zone","custom"],"description":"Diet preset"},"proteinPercent":{"type":"number","description":"Protein %","minimum":0,"maximum":100},"carbsPercent":{"type":"number","description":"Carbs %","minimum":0,"maximum":100},"fatPercent":{"type":"number","description":"Fat %","minimum":0,"maximum":100},"meals":{"type":"number","description":"Meals per day","minimum":1,"maximum":8}},"required":["calories"]},"examples":{"balanced_2000_kcal_3_meals":{"summary":"Balanced 2000 kcal, 3 meals","value":{"calories":"2000","preset":"balanced","proteinPercent":"30","carbsPercent":"40","fatPercent":"30","meals":"3"}},"keto_1800_kcal_4_meals":{"summary":"Keto 1800 kcal, 4 meals","value":{"calories":"1800","preset":"keto","proteinPercent":"30","carbsPercent":"40","fatPercent":"30","meals":"4"}},"custom_35p_45c_20f_2200_kcal_5_meals":{"summary":"Custom 35P / 45C / 20F, 2200 kcal, 5 meals","value":{"calories":"2200","preset":"custom","proteinPercent":"35","carbsPercent":"45","fatPercent":"20","meals":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"balanced_2000_kcal_3_meals":{"summary":"Balanced 2000 kcal, 3 meals","value":{"tool":"macronutrient-calculator","tool_version":"1.0.2","outputs":{"dailyTable":[{"macro":"Protein","grams-day":"150 g","calories":"600 kcal","of-calories":"30%"},{"macro":"Carbs","grams-day":"200 g","calories":"800 kcal","of-calories":"40%"},{"macro":"Fat","grams-day":"67 g","calories":"600 kcal","of-calories":"30%"},{"macro":"Total","grams-day":"417 g","calories":"2000 kcal","of-calories":"100%"}],"mealTable":[{"macro":"Protein","grams-meal":"50 g","calories-meal":"200 kcal"},{"macro":"Carbs","grams-meal":"67 g","calories-meal":"267 kcal"},{"macro":"Fat","grams-meal":"22 g","calories-meal":"200 kcal"},{"macro":"Total","grams-meal":"139 g","calories-meal":"667 kcal"}]},"credits_used":5,"credits_remaining":null}},"keto_1800_kcal_4_meals":{"summary":"Keto 1800 kcal, 4 meals","value":{"tool":"macronutrient-calculator","tool_version":"1.0.2","outputs":{"dailyTable":[{"macro":"Protein","grams-day":"113 g","calories":"450 kcal","of-calories":"25%"},{"macro":"Carbs","grams-day":"23 g","calories":"90 kcal","of-calories":"5%"},{"macro":"Fat","grams-day":"140 g","calories":"1260 kcal","of-calories":"70%"},{"macro":"Total","grams-day":"276 g","calories":"1800 kcal","of-calories":"100%"}],"mealTable":[{"macro":"Protein","grams-meal":"28 g","calories-meal":"113 kcal"},{"macro":"Carbs","grams-meal":"6 g","calories-meal":"23 kcal"},{"macro":"Fat","grams-meal":"35 g","calories-meal":"315 kcal"},{"macro":"Total","grams-meal":"69 g","calories-meal":"451 kcal"}]},"credits_used":5,"credits_remaining":null}},"custom_35p_45c_20f_2200_kcal_5_meals":{"summary":"Custom 35P / 45C / 20F, 2200 kcal, 5 meals","value":{"tool":"macronutrient-calculator","tool_version":"1.0.2","outputs":{"dailyTable":[{"macro":"Protein","grams-day":"193 g","calories":"770 kcal","of-calories":"35%"},{"macro":"Carbs","grams-day":"248 g","calories":"990 kcal","of-calories":"45%"},{"macro":"Fat","grams-day":"49 g","calories":"440 kcal","of-calories":"20%"},{"macro":"Total","grams-day":"490 g","calories":"2200 kcal","of-calories":"100%"}],"mealTable":[{"macro":"Protein","grams-meal":"39 g","calories-meal":"154 kcal"},{"macro":"Carbs","grams-meal":"50 g","calories-meal":"198 kcal"},{"macro":"Fat","grams-meal":"10 g","calories-meal":"88 kcal"},{"macro":"Total","grams-meal":"99 g","calories-meal":"440 kcal"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"dailyTable":{"type":"array","description":"Daily Macronutrients","items":{"type":"object","properties":{"macro":{"type":"string","description":"Macro"},"grams-day":{"type":"string","description":"Grams / day"},"calories":{"type":"string","description":"Calories"},"of-calories":{"type":"string","description":"% of Calories"}}},"x-iotools-columns":["macro","grams-day","calories","of-calories"]},"mealTable":{"type":"array","description":"Per-Meal Breakdown","items":{"type":"object","properties":{"macro":{"type":"string","description":"Macro"},"grams-meal":{"type":"string","description":"Grams / meal"},"calories-meal":{"type":"string","description":"Calories / meal"}}},"x-iotools-columns":["macro","grams-meal","calories-meal"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/machining-speed-feed-calculator":{"post":{"operationId":"run_machining_speed_feed_calculator","summary":"Machining Speed & Feed Calculator","tags":["Calculators"],"description":"Calculate spindle speed (RPM), feed rate, feed per revolution and material removal rate for milling, in metric or imperial units — with starting cutting speeds and chip loads built in for 13 workpiece materials, and an optional machine RPM ceiling.\n\n[Try Machining Speed & Feed Calculator in your browser →](https://iotools.cloud/tool/machining-speed-feed-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"diameter":{"type":"number","description":"Tool diameter","minimum":0},"teeth":{"type":"number","description":"Number of teeth / flutes (Z)","minimum":1},"material":{"enum":["aluminium","brass","bronze","copper","cast-iron","mild-steel","alloy-steel","stainless-304","tool-steel","titanium","inconel","plastic","wood"],"description":"Workpiece material"},"toolMaterial":{"enum":["carbide","hss"],"description":"Tool material"},"cuttingSpeed":{"type":"number","description":"Cutting speed Vc (optional)","minimum":0},"feedPerTooth":{"type":"number","description":"Feed per tooth fz (optional)","minimum":0},"depthOfCut":{"type":"number","description":"Axial depth of cut ap (optional)","minimum":0},"widthOfCut":{"type":"number","description":"Radial width of cut ae (optional)","minimum":0},"maxRpm":{"type":"number","description":"Machine max spindle RPM (optional)","minimum":0}},"required":[]},"examples":{"10_mm_4_flute_carbide_in_aluminium_recommended_speeds":{"summary":"10 mm 4-flute carbide in aluminium (recommended speeds)","value":{"unitSystem":"metric","diameter":"10","teeth":"4","material":"aluminium","toolMaterial":"carbide","cuttingSpeed":"","feedPerTooth":"","depthOfCut":"5","widthOfCut":"3","maxRpm":""}},"1_2_2_flute_hss_in_mild_steel_imperial":{"summary":"1/2\" 2-flute HSS in mild steel, imperial","value":{"unitSystem":"imperial","diameter":"0.5","teeth":"2","material":"mild-steel","toolMaterial":"hss","cuttingSpeed":"","feedPerTooth":"","depthOfCut":"0.25","widthOfCut":"0.125","maxRpm":""}},"6_mm_3_flute_carbide_in_stainless_manual_vc_and_fz":{"summary":"6 mm 3-flute carbide in stainless, manual Vc and fz","value":{"unitSystem":"metric","diameter":"6","teeth":"3","material":"stainless-304","toolMaterial":"carbide","cuttingSpeed":"80","feedPerTooth":"0.04","depthOfCut":"","widthOfCut":"","maxRpm":""}},"10_mm_4_flute_carbide_in_aluminium_machine_capped_at_8000_rpm":{"summary":"10 mm 4-flute carbide in aluminium, machine capped at 8000 RPM","value":{"unitSystem":"metric","diameter":"10","teeth":"4","material":"aluminium","toolMaterial":"carbide","cuttingSpeed":"","feedPerTooth":"","depthOfCut":"5","widthOfCut":"3","maxRpm":"8000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_mm_4_flute_carbide_in_aluminium_recommended_speeds":{"summary":"10 mm 4-flute carbide in aluminium (recommended speeds)","value":{"tool":"machining-speed-feed-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spindle speed","value":"12732 RPM"},{"metric":"Feed rate","value":"10185.9 mm/min"},{"metric":"Feed per revolution","value":"0.8 mm/rev"},{"metric":"Cutting speed Vc used","value":"400 m/min"},{"metric":"Feed per tooth fz used","value":"0.2 mm/tooth"},{"metric":"Material removal rate","value":"152.79 cm³/min"},{"metric":"Recommended Vc — Aluminium (6061 / 7075), carbide","value":"400 m/min"},{"metric":"Recommended feed per tooth","value":"0.2 mm/tooth (2% of diameter)"}]},"credits_used":5,"credits_remaining":null}},"1_2_2_flute_hss_in_mild_steel_imperial":{"summary":"1/2\" 2-flute HSS in mild steel, imperial","value":{"tool":"machining-speed-feed-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spindle speed","value":"752 RPM"},{"metric":"Feed rate","value":"7.52 in/min"},{"metric":"Feed per revolution","value":"0.01 in/rev"},{"metric":"Cutting speed Vc used","value":"98 SFM"},{"metric":"Feed per tooth fz used","value":"0.005 in/tooth"},{"metric":"Material removal rate","value":"0.23 in³/min"},{"metric":"Recommended Vc — Mild steel (1018 / A36), HSS","value":"98 SFM"},{"metric":"Recommended feed per tooth","value":"0.005 in/tooth (1% of diameter)"}]},"credits_used":5,"credits_remaining":null}},"6_mm_3_flute_carbide_in_stainless_manual_vc_and_fz":{"summary":"6 mm 3-flute carbide in stainless, manual Vc and fz","value":{"tool":"machining-speed-feed-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spindle speed","value":"4244 RPM"},{"metric":"Feed rate","value":"509.3 mm/min"},{"metric":"Feed per revolution","value":"0.12 mm/rev"},{"metric":"Cutting speed Vc used","value":"80 m/min"},{"metric":"Feed per tooth fz used","value":"0.04 mm/tooth"},{"metric":"Material removal rate","value":"- (enter ap and ae)"},{"metric":"Recommended Vc — Stainless steel (304 / 316), carbide","value":"70 m/min"},{"metric":"Recommended feed per tooth","value":"0.042 mm/tooth (0.7% of diameter)"}]},"credits_used":5,"credits_remaining":null}},"10_mm_4_flute_carbide_in_aluminium_machine_capped_at_8000_rpm":{"summary":"10 mm 4-flute carbide in aluminium, machine capped at 8000 RPM","value":{"tool":"machining-speed-feed-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spindle speed","value":"8000 RPM"},{"metric":"Feed rate","value":"6400 mm/min"},{"metric":"Feed per revolution","value":"0.8 mm/rev"},{"metric":"Cutting speed Vc used","value":"400 m/min"},{"metric":"Feed per tooth fz used","value":"0.2 mm/tooth"},{"metric":"Material removal rate","value":"96 cm³/min"},{"metric":"Machine RPM limit applied","value":"Clamped to 8000 RPM (ideal was 12732 RPM) — achieves 251 m/min instead of 400 m/min"},{"metric":"Recommended Vc — Aluminium (6061 / 7075), carbide","value":"400 m/min"},{"metric":"Recommended feed per tooth","value":"0.2 mm/tooth (2% of diameter)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/map-scale-calculator":{"post":{"operationId":"run_map_scale_calculator","summary":"Map Scale Calculator","tags":["Calculators"],"description":"Calculate a map's scale ratio (1:N) from a measured map distance and the real-world ground distance it represents, or the other way around — find the ground distance from a map measurement and a known scale.\n\n[Try Map Scale Calculator in your browser →](https://iotools.cloud/tool/map-scale-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["ratio","distance"],"description":"Find"},"mapDistance":{"type":"number","description":"Map distance"},"mapUnit":{"enum":["mm","cm","in"],"description":"Map distance unit"},"groundDistance":{"type":"number","description":"Ground distance"},"groundUnit":{"enum":["m","km","ft","mi"],"description":"Ground distance unit"},"scaleDenominator":{"type":"number","description":"Scale denominator (N in 1:N)"},"outputGroundUnit":{"enum":["m","km","ft","mi"],"description":"Show ground distance in"}},"required":["mapDistance"]},"examples":{"find_scale_5_cm_on_map_1_2_km_on_ground":{"summary":"Find scale: 5 cm on map = 1.2 km on ground","value":{"mode":"ratio","mapDistance":"5","mapUnit":"cm","groundDistance":"1.2","groundUnit":"km"}},"find_ground_distance_3_5_cm_at_1_50_000":{"summary":"Find ground distance: 3.5 cm at 1:50,000","value":{"mode":"distance","mapDistance":"3.5","mapUnit":"cm","scaleDenominator":"50000","outputGroundUnit":"km"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"find_scale_5_cm_on_map_1_2_km_on_ground":{"summary":"Find scale: 5 cm on map = 1.2 km on ground","value":{"tool":"map-scale-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Scale ratio","value":"1 : 24,000"},{"metric":"Representative fraction","value":"1/24,000"},{"metric":"Verbal","value":"1 cm on the map = 240.000 m in reality"}]},"credits_used":5,"credits_remaining":null}},"find_ground_distance_3_5_cm_at_1_50_000":{"summary":"Find ground distance: 3.5 cm at 1:50,000","value":{"tool":"map-scale-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Ground distance","value":"1.75 km"},{"metric":"Scale ratio","value":"1 : 50,000"},{"metric":"In meters","value":"1,750 m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/marginal-income-tax-bracket-calculator":{"post":{"operationId":"run_marginal_income_tax_bracket_calculator","summary":"Marginal Income Tax Bracket Calculator","tags":["Calculators"],"description":"Break down US federal income tax bracket by bracket — see exactly how much of your income is taxed at each progressive rate, your marginal vs. effective tax rate, and your take-home pay for 2024 or 2025.\n\n[Try Marginal Income Tax Bracket Calculator in your browser →](https://iotools.cloud/tool/marginal-income-tax-bracket-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grossIncome":{"type":"number","description":"Gross Annual Income ($)","minimum":0,"maximum":99999999},"filingStatus":{"enum":["single","mfj","mfs","hoh"],"description":"Filing Status"},"taxYear":{"enum":["2025","2024"],"description":"Tax Year"}},"required":["grossIncome"]},"examples":{"85_000_single_2025":{"summary":"$85,000, single, 2025","value":{"grossIncome":"85000","filingStatus":"single","taxYear":"2025"}},"120_000_married_filing_jointly_2024":{"summary":"$120,000, married filing jointly, 2024","value":{"grossIncome":"120000","filingStatus":"mfj","taxYear":"2024"}},"no_income_entered":{"summary":"No income entered","value":{"grossIncome":"","filingStatus":"single","taxYear":"2025"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"85_000_single_2025":{"summary":"$85,000, single, 2025","value":{"tool":"marginal-income-tax-bracket-calculator","tool_version":"1.0.2","outputs":{"bracketBreakdown":[{"rate":"10%","income-range":"$0.00 – $11,925.00","taxed-in-bracket":"$11,925.00","tax-owed":"$1,192.50"},{"rate":"12%","income-range":"$11,925.00 – $48,475.00","taxed-in-bracket":"$36,550.00","tax-owed":"$4,386.00"},{"rate":"22%","income-range":"$48,475.00 – $103,350.00","taxed-in-bracket":"$21,525.00","tax-owed":"$4,735.50"}],"summary":[{"description":"Gross Income","amount":"$85,000.00"},{"description":"Standard Deduction","amount":"$15,000.00"},{"description":"Taxable Income","amount":"$70,000.00"},{"description":"Total Federal Tax","amount":"$10,314.00"},{"description":"Marginal Tax Rate","amount":"22%"},{"description":"Effective Tax Rate","amount":"12.1%"},{"description":"Take-Home Pay","amount":"$74,686.00"}]},"credits_used":5,"credits_remaining":null}},"120_000_married_filing_jointly_2024":{"summary":"$120,000, married filing jointly, 2024","value":{"tool":"marginal-income-tax-bracket-calculator","tool_version":"1.0.2","outputs":{"bracketBreakdown":[{"rate":"10%","income-range":"$0.00 – $23,200.00","taxed-in-bracket":"$23,200.00","tax-owed":"$2,320.00"},{"rate":"12%","income-range":"$23,200.00 – $94,300.00","taxed-in-bracket":"$67,600.00","tax-owed":"$8,112.00"}],"summary":[{"description":"Gross Income","amount":"$120,000.00"},{"description":"Standard Deduction","amount":"$29,200.00"},{"description":"Taxable Income","amount":"$90,800.00"},{"description":"Total Federal Tax","amount":"$10,432.00"},{"description":"Marginal Tax Rate","amount":"12%"},{"description":"Effective Tax Rate","amount":"8.7%"},{"description":"Take-Home Pay","amount":"$109,568.00"}]},"credits_used":5,"credits_remaining":null}},"no_income_entered":{"summary":"No income entered","value":{"tool":"marginal-income-tax-bracket-calculator","tool_version":"1.0.2","outputs":{"bracketBreakdown":[{"rate":"—","income-range":"—","taxed-in-bracket":"—","tax-owed":"—"}],"summary":[{"description":"Gross Income","amount":"—"},{"description":"Standard Deduction","amount":"—"},{"description":"Taxable Income","amount":"—"},{"description":"Total Federal Tax","amount":"—"},{"description":"Marginal Tax Rate","amount":"—"},{"description":"Effective Tax Rate","amount":"—"},{"description":"Take-Home Pay","amount":"—"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"bracketBreakdown":{"type":"array","description":"Bracket-by-Bracket Breakdown","items":{"type":"object","properties":{"rate":{"type":"string","description":"Rate"},"income-range":{"type":"string","description":"Income Range"},"taxed-in-bracket":{"type":"string","description":"Taxed in Bracket"},"tax-owed":{"type":"string","description":"Tax Owed"}}},"x-iotools-columns":["rate","income-range","taxed-in-bracket","tax-owed"]},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"description":{"type":"string","description":"Description"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["description","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/material-cost-estimator":{"post":{"operationId":"run_material_cost_estimator","summary":"Material Cost Estimator","tags":["Calculators"],"description":"Estimate total material procurement cost from quantity, unit rate, tax, and transport — with a subtotal, tax, and landed cost-per-unit breakdown for quick budget checks and purchase planning.\n\n[Try Material Cost Estimator in your browser →](https://iotools.cloud/tool/material-cost-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quantity":{"type":"number","description":"Quantity","minimum":0},"unitRate":{"type":"number","description":"Unit rate ($)","minimum":0},"taxPercent":{"type":"number","description":"Tax (%)","minimum":0,"maximum":30},"transportCost":{"type":"number","description":"Transport cost ($)","minimum":0}},"required":["quantity","unitRate"]},"examples":{"250_units_18_50_7_tax_150_transport":{"summary":"250 units @ $18.50, 7% tax, $150 transport","value":{"quantity":"250","unitRate":"18.5","taxPercent":"7","transportCost":"150"}},"no_tax_no_transport":{"summary":"No tax, no transport","value":{"quantity":"100","unitRate":"5","taxPercent":"0","transportCost":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"250_units_18_50_7_tax_150_transport":{"summary":"250 units @ $18.50, 7% tax, $150 transport","value":{"tool":"material-cost-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Subtotal","value":"$4,625.00"},{"metric":"Tax","value":"$323.75 (7%)"},{"metric":"Transport","value":"$150.00"},{"metric":"Total Material Cost","value":"$5,098.75"},{"metric":"Landed Cost per Unit","value":"$20.40"}]},"credits_used":5,"credits_remaining":null}},"no_tax_no_transport":{"summary":"No tax, no transport","value":{"tool":"material-cost-estimator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Subtotal","value":"$500.00"},{"metric":"Tax","value":"$0.00 (0%)"},{"metric":"Transport","value":"$0.00"},{"metric":"Total Material Cost","value":"$500.00"},{"metric":"Landed Cost per Unit","value":"$5.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/math-evaluator":{"post":{"operationId":"run_math_evaluator","summary":"Math Evaluator","tags":["Calculators"],"description":"Evaluate one or more mathematical expressions, one per line. Supports arithmetic, functions (sqrt, sin, cos, log), units (deg), and matrices via mathjs. Each line is evaluated independently and errors are reported per line.\n\n[Try Math Evaluator in your browser →](https://iotools.cloud/tool/math-evaluator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mathExpression":{"type":"string","description":"Math Expression"}},"required":["mathExpression"]},"examples":{"mixed_expressions":{"summary":"Mixed expressions","value":{"mathExpression":"2*sqrt(6)\nsin(45 deg) + cos(45 deg)\nlog(10, 100)\n3^2 + 4^2\nmatrix([[1,2],[3,4]]) * [5,6]"}},"basic_arithmetic":{"summary":"Basic arithmetic","value":{"mathExpression":"3^2 + 4^2"}},"trigonometry_with_degrees":{"summary":"Trigonometry with degrees","value":{"mathExpression":"sin(45 deg)"}},"logarithm_with_base":{"summary":"Logarithm with base","value":{"mathExpression":"log(10, 100)"}},"matrix_multiplication":{"summary":"Matrix multiplication","value":{"mathExpression":"matrix([[1,2],[3,4]]) * [5,6]"}},"per_line_error_reporting":{"summary":"Per-line error reporting","value":{"mathExpression":"2 + 2\nfoo(bar)\n10 / 2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_expressions":{"summary":"Mixed expressions","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"2*sqrt(6) = 4.898979486\nsin(45 deg) + cos(45 deg) = 1.414213562\nlog(10, 100) = 0.5\n3^2 + 4^2 = 25\nmatrix([[1,2],[3,4]]) * [5,6] = [17, 39]"},"credits_used":5,"credits_remaining":null}},"basic_arithmetic":{"summary":"Basic arithmetic","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"3^2 + 4^2 = 25"},"credits_used":5,"credits_remaining":null}},"trigonometry_with_degrees":{"summary":"Trigonometry with degrees","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"sin(45 deg) = 0.7071067812"},"credits_used":5,"credits_remaining":null}},"logarithm_with_base":{"summary":"Logarithm with base","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"log(10, 100) = 0.5"},"credits_used":5,"credits_remaining":null}},"matrix_multiplication":{"summary":"Matrix multiplication","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"matrix([[1,2],[3,4]]) * [5,6] = [17, 39]"},"credits_used":5,"credits_remaining":null}},"per_line_error_reporting":{"summary":"Per-line error reporting","value":{"tool":"math-evaluator","tool_version":"1.0.2","outputs":{"mathResult":"2 + 2 = 4\nfoo(bar) = Error: Undefined function foo\n10 / 2 = 5"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mathResult":{"type":"string","description":"Result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/matrix-calculator":{"post":{"operationId":"run_matrix_calculator","summary":"Matrix Calculator","tags":["Calculators"],"description":"Add, subtract, multiply, transpose, and find the determinant or inverse of 2×2 and 3×3 matrices — with exact fraction (rational) results or decimals rounded to 6 places.\n\n[Try Matrix Calculator in your browser →](https://iotools.cloud/tool/matrix-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"matrixSize":{"enum":["2","3"],"description":"Matrix Size"},"operation":{"enum":["add","subtract","multiply","transpose","determinant","inverse"],"description":"Operation"},"outputFormat":{"enum":["fraction","decimal"],"description":"Output As"},"A11":{"type":"string","description":"A[1,1]"},"A12":{"type":"string","description":"A[1,2]"},"A13":{"type":"string","description":"A[1,3]"},"A21":{"type":"string","description":"A[2,1]"},"A22":{"type":"string","description":"A[2,2]"},"A23":{"type":"string","description":"A[2,3]"},"A31":{"type":"string","description":"A[3,1]"},"A32":{"type":"string","description":"A[3,2]"},"A33":{"type":"string","description":"A[3,3]"},"B11":{"type":"string","description":"B[1,1]"},"B12":{"type":"string","description":"B[1,2]"},"B13":{"type":"string","description":"B[1,3]"},"B21":{"type":"string","description":"B[2,1]"},"B22":{"type":"string","description":"B[2,2]"},"B23":{"type":"string","description":"B[2,3]"},"B31":{"type":"string","description":"B[3,1]"},"B32":{"type":"string","description":"B[3,2]"},"B33":{"type":"string","description":"B[3,3]"}},"required":[]},"examples":{"2_2_addition_a_b":{"summary":"2×2 addition (A + B)","value":{"matrixSize":"2","operation":"add","outputFormat":"fraction","A11":"2","A12":"1","A21":"0","A22":"3","B11":"1","B12":"2","B21":"3","B22":"4"}},"2_2_multiplication_a_b":{"summary":"2×2 multiplication (A × B)","value":{"matrixSize":"2","operation":"multiply","outputFormat":"fraction","A11":"2","A12":"1","A21":"0","A22":"3","B11":"1","B12":"2","B21":"3","B22":"4"}},"2_2_determinant_a":{"summary":"2×2 determinant |A|","value":{"matrixSize":"2","operation":"determinant","outputFormat":"fraction","A11":"2","A12":"1","A21":"0","A22":"3"}},"2_2_inverse_exact_fractions":{"summary":"2×2 inverse (exact fractions)","value":{"matrixSize":"2","operation":"inverse","outputFormat":"fraction","A11":"2","A12":"1","A21":"0","A22":"3"}},"3_3_inverse":{"summary":"3×3 inverse","value":{"matrixSize":"3","operation":"inverse","outputFormat":"fraction","A11":"1","A12":"2","A13":"3","A21":"0","A22":"1","A23":"4","A31":"5","A32":"6","A33":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_2_addition_a_b":{"summary":"2×2 addition (A + B)","value":{"tool":"matrix-calculator","tool_version":"1.0.2","outputs":{"result":[["3","3"],["3","7"]],"steps":""},"credits_used":5,"credits_remaining":null}},"2_2_multiplication_a_b":{"summary":"2×2 multiplication (A × B)","value":{"tool":"matrix-calculator","tool_version":"1.0.2","outputs":{"result":[["5","8"],["9","12"]],"steps":""},"credits_used":5,"credits_remaining":null}},"2_2_determinant_a":{"summary":"2×2 determinant |A|","value":{"tool":"matrix-calculator","tool_version":"1.0.2","outputs":{"result":[["Determinant |A|","6"]],"steps":"Determinant of a 2×2 matrix:\n|A| = (a·d) − (b·c)\n    = (2 · 3) − (1 · 0)\n    = 6 − 0\n    = 6"},"credits_used":5,"credits_remaining":null}},"2_2_inverse_exact_fractions":{"summary":"2×2 inverse (exact fractions)","value":{"tool":"matrix-calculator","tool_version":"1.0.2","outputs":{"result":[["1/2","-1/6"],["0","1/3"]],"steps":"A⁻¹ = (1 / |A|) × adjugate(A)\n\nDeterminant of a 2×2 matrix:\n|A| = (a·d) − (b·c)\n    = (2 · 3) − (1 · 0)\n    = 6 − 0\n    = 6\n\nCofactor matrix:\n  [ 3, 0 ]\n  [ -1, 2 ]\n\nAdjugate (transpose of cofactors):\n  [ 3, -1 ]\n  [ 0, 2 ]\n\nA⁻¹ = (1 / 6) × adjugate:\n  [ 1/2, -1/6 ]\n  [ 0, 1/3 ]"},"credits_used":5,"credits_remaining":null}},"3_3_inverse":{"summary":"3×3 inverse","value":{"tool":"matrix-calculator","tool_version":"1.0.2","outputs":{"result":[["-24","18","5"],["20","-15","-4"],["-5","4","1"]],"steps":"A⁻¹ = (1 / |A|) × adjugate(A)\n\nDeterminant by cofactor expansion along the first row:\n|A| = a·(e·i − f·h) − b·(d·i − f·g) + c·(d·h − e·g)\n    = 1·(-24) − 2·(-20) + 3·(-5)\n    = -24 − -40 + -15\n    = 1\n\nCofactor matrix:\n  [ -24, 20, -5 ]\n  [ 18, -15, 4 ]\n  [ 5, -4, 1 ]\n\nAdjugate (transpose of cofactors):\n  [ -24, 18, 5 ]\n  [ 20, -15, -4 ]\n  [ -5, 4, 1 ]\n\nA⁻¹ = (1 / 1) × adjugate:\n  [ -24, 18, 5 ]\n  [ 20, -15, -4 ]\n  [ -5, 4, 1 ]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"array","items":{"type":"string"}}},"steps":{"type":"string","description":"Step-by-step Working"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/meeting-cost-calculator":{"post":{"operationId":"run_meeting_cost_calculator","summary":"Meeting Cost Calculator","tags":["Calculators"],"description":"Calculate the true cost of a meeting from the number of attendees, their average hourly rate, and the meeting length. Shows the total cost plus per-minute and per-hour burn rates and annual projections, in your chosen currency.\n\n[Try Meeting Cost Calculator in your browser →](https://iotools.cloud/tool/meeting-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attendees":{"type":"number","description":"Attendees","minimum":1,"maximum":1000},"hourlyRate":{"type":"number","description":"Avg Hourly Rate","minimum":0.01},"currency":{"enum":["USD","EUR","GBP","CAD","AUD","JPY","INR"],"description":"Currency"},"durationMinutes":{"type":"number","description":"Duration (minutes)","minimum":1,"maximum":1440}},"required":["attendees","hourlyRate","durationMinutes"]},"examples":{"8_people_75_hr_30_minute_meeting":{"summary":"8 people, $75/hr, 30-minute meeting","value":{"attendees":"8","hourlyRate":"75","currency":"USD","durationMinutes":"30"}},"jpy_zero_decimal_formatting_5_people_8000_hr_60_min":{"summary":"JPY, zero-decimal formatting (5 people, ¥8000/hr, 60 min)","value":{"attendees":"5","hourlyRate":"8000","currency":"JPY","durationMinutes":"60"}},"eur_fractional_rate_12_people_95_50_hr_45_min":{"summary":"EUR, fractional rate (12 people, €95.50/hr, 45 min)","value":{"attendees":"12","hourlyRate":"95.50","currency":"EUR","durationMinutes":"45"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"8_people_75_hr_30_minute_meeting":{"summary":"8 people, $75/hr, 30-minute meeting","value":{"tool":"meeting-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Total Meeting Cost","amount":"$300.00"},{"metric":"Hourly Burn Rate","amount":"$600/hr"},{"metric":"Cost per Minute","amount":"$10.00"},{"metric":"Cost per Second","amount":"$0.17"},{"metric":"Annual Cost if Held Weekly","amount":"$15,600.00"},{"metric":"Continuous Cost (2080 h/yr)","amount":"$1,248,000.00"}]},"credits_used":5,"credits_remaining":null}},"jpy_zero_decimal_formatting_5_people_8000_hr_60_min":{"summary":"JPY, zero-decimal formatting (5 people, ¥8000/hr, 60 min)","value":{"tool":"meeting-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Total Meeting Cost","amount":"¥40,000"},{"metric":"Hourly Burn Rate","amount":"¥40,000/hr"},{"metric":"Cost per Minute","amount":"¥667"},{"metric":"Cost per Second","amount":"¥11"},{"metric":"Annual Cost if Held Weekly","amount":"¥2,080,000"},{"metric":"Continuous Cost (2080 h/yr)","amount":"¥83,200,000"}]},"credits_used":5,"credits_remaining":null}},"eur_fractional_rate_12_people_95_50_hr_45_min":{"summary":"EUR, fractional rate (12 people, €95.50/hr, 45 min)","value":{"tool":"meeting-cost-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Total Meeting Cost","amount":"€859.50"},{"metric":"Hourly Burn Rate","amount":"€1,146/hr"},{"metric":"Cost per Minute","amount":"€19.10"},{"metric":"Cost per Second","amount":"€0.32"},{"metric":"Annual Cost if Held Weekly","amount":"€44,694.00"},{"metric":"Continuous Cost (2080 h/yr)","amount":"€2,383,680.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Meeting Cost Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["metric","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/median-absolute-deviation-calculator":{"post":{"operationId":"run_median_absolute_deviation_calculator","summary":"Median Absolute Deviation Calculator","tags":["Calculators"],"description":"Calculate the raw and scaled median absolute deviation (MAD) for a list of numbers — a robust, outlier-resistant measure of spread — plus a per-value modified z-score table flagging likely outliers.\n\n[Try Median Absolute Deviation Calculator in your browser →](https://iotools.cloud/tool/median-absolute-deviation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dataInput":{"type":"string","description":"Data"}},"required":[]},"examples":{"15_value_sample_set":{"summary":"15-value sample set","value":{"dataInput":"12, 15, 18, 22, 22, 25, 28, 30, 30, 30, 35, 40, 42, 45, 50"}},"set_with_an_extreme_outlier":{"summary":"Set with an extreme outlier","value":{"dataInput":"10, 11, 12, 11, 10, 12, 13, 11, 12, 95"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"15_value_sample_set":{"summary":"15-value sample set","value":{"tool":"median-absolute-deviation-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Count","value":"15"},{"metric":"Median","value":"30"},{"metric":"Median Absolute Deviation (MAD)","value":"8"},{"metric":"Scaled MAD (×1.4826, ≈ σ)","value":"11.8608"},{"metric":"Mean Absolute Deviation","value":"8.666667"},{"metric":"Outliers Detected (|modified z| > 3.5)","value":"0"}],"deviations":[{"value":"12","deviation-from-median":"18","modified-z-score":"-1.517625","outlier":"No"},{"value":"15","deviation-from-median":"15","modified-z-score":"-1.264687","outlier":"No"},{"value":"18","deviation-from-median":"12","modified-z-score":"-1.01175","outlier":"No"},{"value":"22","deviation-from-median":"8","modified-z-score":"-0.6745","outlier":"No"},{"value":"22","deviation-from-median":"8","modified-z-score":"-0.6745","outlier":"No"},{"value":"25","deviation-from-median":"5","modified-z-score":"-0.421563","outlier":"No"},{"value":"28","deviation-from-median":"2","modified-z-score":"-0.168625","outlier":"No"},{"value":"30","deviation-from-median":"0","modified-z-score":"0","outlier":"No"},{"value":"30","deviation-from-median":"0","modified-z-score":"0","outlier":"No"},{"value":"30","deviation-from-median":"0","modified-z-score":"0","outlier":"No"},{"value":"35","deviation-from-median":"5","modified-z-score":"0.421563","outlier":"No"},{"value":"40","deviation-from-median":"10","modified-z-score":"0.843125","outlier":"No"},{"value":"42","deviation-from-median":"12","modified-z-score":"1.01175","outlier":"No"},{"value":"45","deviation-from-median":"15","modified-z-score":"1.264687","outlier":"No"},{"value":"50","deviation-from-median":"20","modified-z-score":"1.68625","outlier":"No"}]},"credits_used":5,"credits_remaining":null}},"set_with_an_extreme_outlier":{"summary":"Set with an extreme outlier","value":{"tool":"median-absolute-deviation-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Count","value":"10"},{"metric":"Median","value":"11.5"},{"metric":"Median Absolute Deviation (MAD)","value":"0.5"},{"metric":"Scaled MAD (×1.4826, ≈ σ)","value":"0.7413"},{"metric":"Mean Absolute Deviation","value":"9.1"},{"metric":"Outliers Detected (|modified z| > 3.5)","value":"1"}],"deviations":[{"value":"10","deviation-from-median":"1.5","modified-z-score":"-2.0235","outlier":"No"},{"value":"11","deviation-from-median":"0.5","modified-z-score":"-0.6745","outlier":"No"},{"value":"12","deviation-from-median":"0.5","modified-z-score":"0.6745","outlier":"No"},{"value":"11","deviation-from-median":"0.5","modified-z-score":"-0.6745","outlier":"No"},{"value":"10","deviation-from-median":"1.5","modified-z-score":"-2.0235","outlier":"No"},{"value":"12","deviation-from-median":"0.5","modified-z-score":"0.6745","outlier":"No"},{"value":"13","deviation-from-median":"1.5","modified-z-score":"2.0235","outlier":"No"},{"value":"11","deviation-from-median":"0.5","modified-z-score":"-0.6745","outlier":"No"},{"value":"12","deviation-from-median":"0.5","modified-z-score":"0.6745","outlier":"No"},{"value":"95","deviation-from-median":"83.5","modified-z-score":"112.6415","outlier":"Yes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"deviations":{"type":"array","description":"Per-Value Deviations & Outliers","items":{"type":"object","properties":{"value":{"type":"string","description":"Value"},"deviation-from-median":{"type":"string","description":"|Deviation from Median|"},"modified-z-score":{"type":"string","description":"Modified Z-score"},"outlier":{"type":"string","description":"Outlier?"}}},"x-iotools-columns":["value","deviation-from-median","modified-z-score","outlier"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/midpoint-calculator":{"post":{"operationId":"run_midpoint_calculator","summary":"Midpoint Calculator","tags":["Calculators"],"description":"Find the geographic midpoint — the great-circle halfway point — between two latitude/longitude coordinates. Accepts decimal degrees or DMS/DDM, and shows the distance from each point to the midpoint.\n\n[Try Midpoint Calculator in your browser →](https://iotools.cloud/tool/midpoint-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latA":{"type":"string","description":"Point A — Latitude"},"lonA":{"type":"string","description":"Point A — Longitude"},"latB":{"type":"string","description":"Point B — Latitude"},"lonB":{"type":"string","description":"Point B — Longitude"}},"required":["latA","lonA","latB","lonB"]},"examples":{"new_york_london":{"summary":"New York ↔ London","value":{"latA":"40.7128","lonA":"-74.0060","latB":"51.5074","lonB":"-0.1278"}},"dms_input_new_york_los_angeles":{"summary":"DMS input: New York ↔ Los Angeles","value":{"latA":"40°42'46\"N","lonA":"74°0'21.6\"W","latB":"34.0522","lonB":"-118.2437"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"new_york_london":{"summary":"New York ↔ London","value":{"tool":"midpoint-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Latitude (DD)","value":"52.368440"},{"metric":"Longitude (DD)","value":"-41.290307"},{"metric":"Latitude (DMS)","value":"52°22'6.38\"N"},{"metric":"Longitude (DMS)","value":"41°17'25.11\"W"},{"metric":"Distance from Point A","value":"2785.111 km"},{"metric":"Distance from Point B","value":"2785.111 km"}]},"credits_used":5,"credits_remaining":null}},"dms_input_new_york_los_angeles":{"summary":"DMS input: New York ↔ Los Angeles","value":{"tool":"midpoint-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Latitude (DD)","value":"39.510296"},{"metric":"Longitude (DD)","value":"-97.160128"},{"metric":"Latitude (DMS)","value":"39°30'37.07\"N"},{"metric":"Longitude (DMS)","value":"97°9'36.46\"W"},{"metric":"Distance from Point A","value":"1967.873 km"},{"metric":"Distance from Point B","value":"1967.873 km"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Midpoint","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/modulo-calculator":{"post":{"operationId":"run_modulo_calculator","summary":"Modulo Calculator","tags":["Calculators"],"description":"Compute modular arithmetic on integers: simple modulo (a mod n), modular addition, subtraction, multiplication, fast modular exponentiation (a^b mod n), and congruence checks (a ≡ b mod n), with a step-by-step breakdown. Uses the true mathematical modulo (always non-negative for a positive modulus).\n\n[Try Modulo Calculator in your browser →](https://iotools.cloud/tool/modulo-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operation":{"enum":["mod","add","sub","mul","exp","cong"],"description":"Operation"},"valueA":{"type":"string","description":"a"},"valueB":{"type":"string","description":"b"},"modulus":{"type":"string","description":"n (modulus)"}},"required":["valueA","modulus"]},"examples":{"simple_modulo_17_mod_5":{"summary":"Simple modulo (17 mod 5)","value":{"operation":"mod","valueA":"17","valueB":"5","modulus":"5"}},"negative_dividend_7_mod_3_2_not_1":{"summary":"Negative dividend (−7 mod 3 = 2, not −1)","value":{"operation":"mod","valueA":"-7","valueB":"5","modulus":"3"}},"modular_addition_25_19_mod_12":{"summary":"Modular addition ((25 + 19) mod 12)","value":{"operation":"add","valueA":"25","valueB":"19","modulus":"12"}},"modular_multiplication_123_456_mod_100":{"summary":"Modular multiplication ((123 × 456) mod 100)","value":{"operation":"mul","valueA":"123","valueB":"456","modulus":"100"}},"modular_exponentiation_7_128_mod_13":{"summary":"Modular exponentiation (7^128 mod 13)","value":{"operation":"exp","valueA":"7","valueB":"128","modulus":"13"}},"congruence_check_17_5_mod_3":{"summary":"Congruence check (17 ≡ 5 (mod 3)?)","value":{"operation":"cong","valueA":"17","valueB":"5","modulus":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_modulo_17_mod_5":{"summary":"Simple modulo (17 mod 5)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"2","truncated":"2","euclidean":"2","steps":"Computing: 17 mod 5\n\nDivision:\n  17 ÷ 5 = 3 remainder 2\n\nVerification:\n  5 × 3 + 2 = 17\n\nTruncated result (JS %):  17 mod 5 = 2\nEuclidean result (≥ 0):   17 mod 5 = 2"},"credits_used":5,"credits_remaining":null}},"negative_dividend_7_mod_3_2_not_1":{"summary":"Negative dividend (−7 mod 3 = 2, not −1)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"2","truncated":"-1","euclidean":"2","steps":"Computing: -7 mod 3\n\nDivision:\n  -7 ÷ 3 = -2 remainder -1\n\nVerification:\n  3 × -2 + -1 = -7\n\nTruncated result (JS %):  -7 mod 3 = -1\nEuclidean result (≥ 0):   -7 mod 3 = 2\n\nNote: Results differ because a or n is negative.\nEuclidean: -1 + 3 = 2"},"credits_used":5,"credits_remaining":null}},"modular_addition_25_19_mod_12":{"summary":"Modular addition ((25 + 19) mod 12)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"8","truncated":"8","euclidean":"8","steps":"Computing: (25 + 19) mod 12\n\nStep 1: Addition\n  25 + 19 = 44\n\nStep 2: Modulo\n  44 mod 12 = 8\n\nResult: (25 + 19) mod 12 = 8"},"credits_used":5,"credits_remaining":null}},"modular_multiplication_123_456_mod_100":{"summary":"Modular multiplication ((123 × 456) mod 100)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"88","truncated":"88","euclidean":"88","steps":"Computing: (123 × 456) mod 100\n\nStep 1: Multiplication\n  123 × 456 = 56088\n\nStep 2: Modulo\n  56088 mod 100 = 88\n\nModular shortcut:\n  (123 mod 100) × (456 mod 100) mod 100\n  = 23 × 56 mod 100\n  = 88\n\nResult: (123 × 456) mod 100 = 88"},"credits_used":5,"credits_remaining":null}},"modular_exponentiation_7_128_mod_13":{"summary":"Modular exponentiation (7^128 mod 13)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"3","truncated":"3","euclidean":"3","steps":"Computing: (7 ^ 128) mod 13\n\nMethod: Binary exponentiation (square-and-multiply)\n\nExponent in binary: 128 = 10000000₂\n\nSteps:\n  Start: base = 7, result = 1\n  Step 1: Multiply (bit=1) → result = 7\n  Step 2: Square → result = 10\n  Step 3: Square → result = 9\n  Step 4: Square → result = 3\n  Step 5: Square → result = 9\n  Step 6: Square → result = 3\n  Step 7: Square → result = 9\n  Step 8: Square → result = 3\n\nResult: (7 ^ 128) mod 13 = 3"},"credits_used":5,"credits_remaining":null}},"congruence_check_17_5_mod_3":{"summary":"Congruence check (17 ≡ 5 (mod 3)?)","value":{"tool":"modulo-calculator","tool_version":"1.0.2","outputs":{"result":"Yes ✓","truncated":"17 mod 3 = 2","euclidean":"5 mod 3 = 2","steps":"Checking: 17 ≡ 5 (mod 3)?\n\nMethod 1: Compare remainders\n  17 mod 3 = 2\n  5 mod 3 = 2\n  2 = 2 → Congruent ✓\n\nMethod 2: Check divisibility of difference\n  17 − 5 = 12\n  12 mod 3 = 0\n  3 divides 12 → Congruent ✓\n\nAnswer: 17 ≡ 5 (mod 3)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"truncated":{"type":"string","description":"Truncated Division (JS %)"},"euclidean":{"type":"string","description":"Euclidean Modulo (always ≥ 0)"},"steps":{"type":"string","description":"Step-by-Step Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/molality-calculator":{"post":{"operationId":"run_molality_calculator","summary":"Molality Calculator","tags":["Calculators"],"description":"Calculate molality (mol/kg) from moles of solute and solvent mass, or from solute mass and molar mass. Optionally derive the freezing point depression and boiling point elevation it causes, for water or a custom solvent.\n\n[Try Molality Calculator in your browser →](https://iotools.cloud/tool/molality-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"soluteInputMode":{"enum":["moles","mass"],"description":"Solute Amount"},"moles":{"type":"number","description":"Moles of Solute (mol)","minimum":0},"soluteMass":{"type":"number","description":"Solute Mass (g)","minimum":0},"molarMass":{"type":"number","description":"Molar Mass (g/mol)","minimum":0},"solventMass":{"type":"number","description":"Solvent Mass","minimum":0},"solventMassUnit":{"enum":["kg","g"],"description":"Solvent Mass Unit"},"includeColligative":{"type":"boolean","description":"Also calculate freezing & boiling point shifts"},"solventPreset":{"enum":["water","custom"],"description":"Solvent"},"kf":{"type":"number","description":"Freezing Point Depression Constant Kf (°C·kg/mol)","minimum":0},"kb":{"type":"number","description":"Boiling Point Elevation Constant Kb (°C·kg/mol)","minimum":0},"vantHoff":{"type":"number","description":"Van't Hoff Factor (i)","minimum":0}},"required":[]},"examples":{"1_mol_solute_in_2_kg_water_nacl_like_i_2":{"summary":"1 mol solute in 2 kg water, NaCl-like (i = 2)","value":{"soluteInputMode":"moles","moles":"1","solventMass":"2","solventMassUnit":"kg","includeColligative":"true","solventPreset":"water","kf":"1.86","kb":"0.512","vantHoff":"2"}},"58_44_g_nacl_molar_mass_58_44_in_500_g_water_molality_only":{"summary":"58.44 g NaCl (molar mass 58.44) in 500 g water, molality only","value":{"soluteInputMode":"mass","soluteMass":"58.44","molarMass":"58.44","solventMass":"500","solventMassUnit":"g","includeColligative":"","solventPreset":"water","kf":"1.86","kb":"0.512","vantHoff":"1"}},"custom_solvent_benzene_like_kf_kb_0_75_mol_kg":{"summary":"Custom solvent (benzene-like Kf/Kb), 0.75 mol/kg","value":{"soluteInputMode":"moles","moles":"0.3","solventMass":"0.4","solventMassUnit":"kg","includeColligative":"true","solventPreset":"custom","kf":"5.12","kb":"2.53","vantHoff":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_mol_solute_in_2_kg_water_nacl_like_i_2":{"summary":"1 mol solute in 2 kg water, NaCl-like (i = 2)","value":{"tool":"molality-calculator","tool_version":"1.0.2","outputs":{"molality":"0.5 mol/kg","result":[{"metric":"Moles of Solute","value":"1 mol"},{"metric":"Solvent Mass","value":"2 kg"},{"metric":"Molality","value":"0.5 mol/kg"},{"metric":"Van't Hoff Factor (i)","value":"2"},{"metric":"Kf (Freezing Point Depression Constant)","value":"1.86 °C·kg/mol"},{"metric":"Freezing Point Depression (ΔTf)","value":"1.86 °C"},{"metric":"Kb (Boiling Point Elevation Constant)","value":"0.512 °C·kg/mol"},{"metric":"Boiling Point Elevation (ΔTb)","value":"0.512 °C"},{"metric":"New Freezing Point","value":"-1.86 °C"},{"metric":"New Boiling Point","value":"100.512 °C"}],"steps":"Formula: Molality (m) = moles of solute ÷ mass of solvent (kg)\nm = 1 mol ÷ 2 kg = 0.5 mol/kg\nΔTf = i × Kf × m = 2 × 1.86 × 0.5 = 1.86 °C\nΔTb = i × Kb × m = 2 × 0.512 × 0.5 = 0.512 °C"},"credits_used":5,"credits_remaining":null}},"58_44_g_nacl_molar_mass_58_44_in_500_g_water_molality_only":{"summary":"58.44 g NaCl (molar mass 58.44) in 500 g water, molality only","value":{"tool":"molality-calculator","tool_version":"1.0.2","outputs":{"molality":"2 mol/kg","result":[{"metric":"Solute Mass","value":"58.44 g"},{"metric":"Molar Mass","value":"58.44 g/mol"},{"metric":"Moles of Solute","value":"1 mol"},{"metric":"Solvent Mass","value":"500 g (0.5 kg)"},{"metric":"Molality","value":"2 mol/kg"}],"steps":"Formula: Molality (m) = moles of solute ÷ mass of solvent (kg)\nmoles = 58.44 g ÷ 58.44 g/mol = 1 mol\nm = 1 mol ÷ 0.5 kg = 2 mol/kg"},"credits_used":5,"credits_remaining":null}},"custom_solvent_benzene_like_kf_kb_0_75_mol_kg":{"summary":"Custom solvent (benzene-like Kf/Kb), 0.75 mol/kg","value":{"tool":"molality-calculator","tool_version":"1.0.2","outputs":{"molality":"0.75 mol/kg","result":[{"metric":"Moles of Solute","value":"0.3 mol"},{"metric":"Solvent Mass","value":"0.4 kg"},{"metric":"Molality","value":"0.75 mol/kg"},{"metric":"Van't Hoff Factor (i)","value":"1"},{"metric":"Kf (Freezing Point Depression Constant)","value":"5.12 °C·kg/mol"},{"metric":"Freezing Point Depression (ΔTf)","value":"3.84 °C"},{"metric":"Kb (Boiling Point Elevation Constant)","value":"2.53 °C·kg/mol"},{"metric":"Boiling Point Elevation (ΔTb)","value":"1.8975 °C"}],"steps":"Formula: Molality (m) = moles of solute ÷ mass of solvent (kg)\nm = 0.3 mol ÷ 0.4 kg = 0.75 mol/kg\nΔTf = i × Kf × m = 1 × 5.12 × 0.75 = 3.84 °C\nΔTb = i × Kb × m = 1 × 2.53 × 0.75 = 1.8975 °C"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"molality":{"type":"string","description":"Molality"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/molar-mass-calculator":{"post":{"operationId":"run_molar_mass_calculator","summary":"Molar Mass Calculator","tags":["Calculators"],"description":"Calculate the molar mass (molecular weight) of any chemical formula. Handles element symbols, parenthesized groups with multipliers like Ca3(PO4)2, and hydrates like CuSO4·5H2O, with a per-element mass breakdown. Uses IUPAC 2021 standard atomic weights.\n\n[Try Molar Mass Calculator in your browser →](https://iotools.cloud/tool/molar-mass-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"formula":{"type":"string","description":"Chemical Formula"},"unit":{"enum":["g/mol","kg/mol","amu"],"description":"Output Unit"},"precision":{"type":"number","description":"Decimal Places","minimum":0,"maximum":8}},"required":["formula"]},"examples":{"water_h2o":{"summary":"Water (H2O)","value":{"formula":"H2O","unit":"g/mol","precision":"4"}},"calcium_phosphate_ca3_po4_2":{"summary":"Calcium phosphate — Ca3(PO4)2","value":{"formula":"Ca3(PO4)2","unit":"g/mol","precision":"4"}},"copper_ii_sulfate_pentahydrate_cuso4_5h2o":{"summary":"Copper(II) sulfate pentahydrate — CuSO4·5H2O","value":{"formula":"CuSO4·5H2O","unit":"g/mol","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"water_h2o":{"summary":"Water (H2O)","value":{"tool":"molar-mass-calculator","tool_version":"1.0.2","outputs":{"molarMass":"18.0150 g/mol","breakdown":[{"element":"O","count":"1","atomic-mass":"15.999","subtotal":"15.999"},{"element":"H","count":"2","atomic-mass":"1.008","subtotal":"2.016"}]},"credits_used":5,"credits_remaining":null}},"calcium_phosphate_ca3_po4_2":{"summary":"Calcium phosphate — Ca3(PO4)2","value":{"tool":"molar-mass-calculator","tool_version":"1.0.2","outputs":{"molarMass":"310.1740 g/mol","breakdown":[{"element":"O","count":"8","atomic-mass":"15.999","subtotal":"127.992"},{"element":"Ca","count":"3","atomic-mass":"40.078","subtotal":"120.234"},{"element":"P","count":"2","atomic-mass":"30.974","subtotal":"61.948"}]},"credits_used":5,"credits_remaining":null}},"copper_ii_sulfate_pentahydrate_cuso4_5h2o":{"summary":"Copper(II) sulfate pentahydrate — CuSO4·5H2O","value":{"tool":"molar-mass-calculator","tool_version":"1.0.2","outputs":{"molarMass":"249.6770 g/mol","breakdown":[{"element":"O","count":"9","atomic-mass":"15.999","subtotal":"143.991"},{"element":"Cu","count":"1","atomic-mass":"63.546","subtotal":"63.546"},{"element":"S","count":"1","atomic-mass":"32.06","subtotal":"32.06"},{"element":"H","count":"10","atomic-mass":"1.008","subtotal":"10.08"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"molarMass":{"type":"string","description":"Molar Mass"},"breakdown":{"type":"array","description":"Per-element breakdown (g/mol)","items":{"type":"object","properties":{"element":{"type":"string","description":"Element"},"count":{"type":"string","description":"Count"},"atomic-mass":{"type":"string","description":"Atomic Mass"},"subtotal":{"type":"string","description":"Subtotal"}}},"x-iotools-columns":["element","count","atomic-mass","subtotal"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/molarity-calculator":{"post":{"operationId":"run_molarity_calculator","summary":"Molarity Calculator","tags":["Calculators"],"description":"Calculate molarity, solute mass, or solution volume — solve M = n/V for whichever quantity you're missing, given a molar mass and the other two values.\n\n[Try Molarity Calculator in your browser →](https://iotools.cloud/tool/molarity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["molarity","mass","volume"],"description":"Solve For"},"mass":{"type":"number","description":"Solute Mass (g)","minimum":0},"molarMass":{"type":"number","description":"Molar Mass (g/mol)","minimum":0},"volume":{"type":"number","description":"Solution Volume (L)","minimum":0},"molarity":{"type":"number","description":"Molarity (mol/L)","minimum":0}},"required":["molarMass"]},"examples":{"solve_molarity_58_44_g_nacl_in_1_l_water":{"summary":"Solve molarity — 58.44 g NaCl in 1 L water","value":{"solveFor":"molarity","mass":"58.44","molarMass":"58.44","volume":"1","molarity":"1"}},"solve_solute_mass_0_5_mol_l_2_l_molar_mass_40":{"summary":"Solve solute mass — 0.5 mol/L, 2 L, molar mass 40","value":{"solveFor":"mass","mass":"58.44","molarMass":"40","volume":"2","molarity":"0.5"}},"solve_solution_volume_20_g_solute_molar_mass_100_target_0_2_mol_l":{"summary":"Solve solution volume — 20 g solute, molar mass 100, target 0.2 mol/L","value":{"solveFor":"volume","mass":"20","molarMass":"100","volume":"1","molarity":"0.2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_molarity_58_44_g_nacl_in_1_l_water":{"summary":"Solve molarity — 58.44 g NaCl in 1 L water","value":{"tool":"molarity-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Molarity"},{"metric":"Molarity","value":"1 mol/L"},{"metric":"Solute Mass","value":"58.44 g"},{"metric":"Molar Mass","value":"58.44 g/mol"},{"metric":"Solution Volume","value":"1 L"},{"metric":"Moles","value":"1 mol"}],"steps":"Formula: Molarity (M) = moles ÷ volume, moles = mass ÷ molar mass\nmoles = 58.44 g ÷ 58.44 g/mol = 1 mol\nM = 1 mol ÷ 1 L = 1 mol/L"},"credits_used":5,"credits_remaining":null}},"solve_solute_mass_0_5_mol_l_2_l_molar_mass_40":{"summary":"Solve solute mass — 0.5 mol/L, 2 L, molar mass 40","value":{"tool":"molarity-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Solute Mass"},{"metric":"Molarity","value":"0.5 mol/L"},{"metric":"Solute Mass","value":"40 g"},{"metric":"Molar Mass","value":"40 g/mol"},{"metric":"Solution Volume","value":"2 L"},{"metric":"Moles","value":"1 mol"}],"steps":"Formula: Molarity (M) = moles ÷ volume, moles = mass ÷ molar mass\nmoles = 0.5 mol/L × 2 L = 1 mol\nmass = 1 mol × 40 g/mol = 40 g"},"credits_used":5,"credits_remaining":null}},"solve_solution_volume_20_g_solute_molar_mass_100_target_0_2_mol_l":{"summary":"Solve solution volume — 20 g solute, molar mass 100, target 0.2 mol/L","value":{"tool":"molarity-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Solution Volume"},{"metric":"Molarity","value":"0.2 mol/L"},{"metric":"Solute Mass","value":"20 g"},{"metric":"Molar Mass","value":"100 g/mol"},{"metric":"Solution Volume","value":"1 L"},{"metric":"Moles","value":"0.2 mol"}],"steps":"Formula: Molarity (M) = moles ÷ volume, moles = mass ÷ molar mass\nmoles = 20 g ÷ 100 g/mol = 0.2 mol\nV = 0.2 mol ÷ 0.2 mol/L = 1 L"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/moon-phase-calculator":{"post":{"operationId":"run_moon_phase_calculator","summary":"Moon Phase Calculator","tags":["Calculators"],"description":"Find the moon phase for any date: phase name (New Moon, First Quarter, Full Moon…), illumination percentage, moon age in days, and the next new and full moons — with a rendered moon-disc that flips for the Southern Hemisphere. Runs entirely in your browser.\n\n[Try Moon Phase Calculator in your browser →](https://iotools.cloud/tool/moon-phase-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"string","description":"Date"},"hemisphere":{"enum":["north","south"],"description":"View From"}},"required":["date"]},"examples":{"new_moon_at_the_reference_epoch_2000_01_06":{"summary":"New moon at the reference epoch (2000-01-06)","value":{"date":"2000-01-06","hemisphere":"north"}},"full_moon_2000_01_21":{"summary":"Full moon (2000-01-21)","value":{"date":"2000-01-21","hemisphere":"north"}},"first_quarter_southern_hemisphere_2024_05_15":{"summary":"First quarter, Southern Hemisphere (2024-05-15)","value":{"date":"2024-05-15","hemisphere":"south"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"new_moon_at_the_reference_epoch_2000_01_06":{"summary":"New moon at the reference epoch (2000-01-06)","value":{"tool":"moon-phase-calculator","tool_version":"1.0.2","outputs":{"moonSvg":"<svg class=\"moon-disc\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 220 220\" role=\"img\" aria-label=\"Moon phase visualization\"><defs><radialGradient id=\"moonLit\" cx=\"40%\" cy=\"35%\" r=\"65%\"><stop offset=\"0%\" stop-color=\"#fffbe6\"/><stop offset=\"55%\" stop-color=\"#f4e9c1\"/><stop offset=\"100%\" stop-color=\"#cfbf91\"/></radialGradient><radialGradient id=\"moonDark\" cx=\"50%\" cy=\"50%\" r=\"50%\"><stop offset=\"0%\" stop-color=\"#2a2f55\"/><stop offset=\"100%\" stop-color=\"#15182c\"/></radialGradient><clipPath id=\"moonClip\"><circle cx=\"110\" cy=\"110\" r=\"106\"/></clipPath></defs><rect width=\"220\" height=\"220\" fill=\"#0b1024\"/><g clip-path=\"url(#moonClip)\"><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"url(#moonDark)\"/><path d=\"M 110 4 A 106 106 0 0 0 110 216 A 105.97600752731915 106 0 0 0 110 4 Z\" fill=\"url(#moonLit)\"/><circle cx=\"78.2\" cy=\"83.5\" r=\"8.48\" fill=\"rgba(0,0,0,0.06)\"/><circle cx=\"125.9\" cy=\"141.8\" r=\"10.600000000000001\" fill=\"rgba(0,0,0,0.08)\"/><circle cx=\"152.4\" cy=\"99.4\" r=\"6.359999999999999\" fill=\"rgba(0,0,0,0.05)\"/><circle cx=\"99.4\" cy=\"125.9\" r=\"5.300000000000001\" fill=\"rgba(0,0,0,0.05)\"/></g><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"none\" stroke=\"rgba(255,255,255,0.10)\" stroke-width=\"1\"/></svg>","details":[{"property":"Phase","value":"New Moon"},{"property":"Illumination","value":"0.01%"},{"property":"Moon Age","value":"29.43 days since last new moon"},{"property":"Synodic Cycle","value":"Day 30 of 29.5"},{"property":"Next New Moon","value":"January 6, 2000 (in 2 hours)"},{"property":"Next Full Moon","value":"January 21, 2000 (in 14 days, 21 hours)"},{"property":"Zodiac Constellation","value":"Capricorn"}]},"credits_used":5,"credits_remaining":null}},"full_moon_2000_01_21":{"summary":"Full moon (2000-01-21)","value":{"tool":"moon-phase-calculator","tool_version":"1.0.2","outputs":{"moonSvg":"<svg class=\"moon-disc\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 220 220\" role=\"img\" aria-label=\"Moon phase visualization\"><defs><radialGradient id=\"moonLit\" cx=\"40%\" cy=\"35%\" r=\"65%\"><stop offset=\"0%\" stop-color=\"#fffbe6\"/><stop offset=\"55%\" stop-color=\"#f4e9c1\"/><stop offset=\"100%\" stop-color=\"#cfbf91\"/></radialGradient><radialGradient id=\"moonDark\" cx=\"50%\" cy=\"50%\" r=\"50%\"><stop offset=\"0%\" stop-color=\"#2a2f55\"/><stop offset=\"100%\" stop-color=\"#15182c\"/></radialGradient><clipPath id=\"moonClip\"><circle cx=\"110\" cy=\"110\" r=\"106\"/></clipPath></defs><rect width=\"220\" height=\"220\" fill=\"#0b1024\"/><g clip-path=\"url(#moonClip)\"><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"url(#moonDark)\"/><path d=\"M 110 4 A 106 106 0 0 0 110 216 A 105.95646557706061 106 0 0 1 110 4 Z\" fill=\"url(#moonLit)\"/><circle cx=\"78.2\" cy=\"83.5\" r=\"8.48\" fill=\"rgba(0,0,0,0.06)\"/><circle cx=\"125.9\" cy=\"141.8\" r=\"10.600000000000001\" fill=\"rgba(0,0,0,0.08)\"/><circle cx=\"152.4\" cy=\"99.4\" r=\"6.359999999999999\" fill=\"rgba(0,0,0,0.05)\"/><circle cx=\"99.4\" cy=\"125.9\" r=\"5.300000000000001\" fill=\"rgba(0,0,0,0.05)\"/></g><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"none\" stroke=\"rgba(255,255,255,0.10)\" stroke-width=\"1\"/></svg>","details":[{"property":"Phase","value":"Full Moon"},{"property":"Illumination","value":"99.98%"},{"property":"Moon Age","value":"14.90 days since last new moon"},{"property":"Synodic Cycle","value":"Day 15 of 29.5"},{"property":"Next New Moon","value":"February 5, 2000 (in 14 days, 15 hours)"},{"property":"Next Full Moon","value":"February 19, 2000 (in 29 days, 10 hours)"},{"property":"Zodiac Constellation","value":"Leo"}]},"credits_used":5,"credits_remaining":null}},"first_quarter_southern_hemisphere_2024_05_15":{"summary":"First quarter, Southern Hemisphere (2024-05-15)","value":{"tool":"moon-phase-calculator","tool_version":"1.0.2","outputs":{"moonSvg":"<svg class=\"moon-disc\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 220 220\" role=\"img\" aria-label=\"Moon phase visualization\"><defs><radialGradient id=\"moonLit\" cx=\"40%\" cy=\"35%\" r=\"65%\"><stop offset=\"0%\" stop-color=\"#fffbe6\"/><stop offset=\"55%\" stop-color=\"#f4e9c1\"/><stop offset=\"100%\" stop-color=\"#cfbf91\"/></radialGradient><radialGradient id=\"moonDark\" cx=\"50%\" cy=\"50%\" r=\"50%\"><stop offset=\"0%\" stop-color=\"#2a2f55\"/><stop offset=\"100%\" stop-color=\"#15182c\"/></radialGradient><clipPath id=\"moonClip\"><circle cx=\"110\" cy=\"110\" r=\"106\"/></clipPath></defs><rect width=\"220\" height=\"220\" fill=\"#0b1024\"/><g clip-path=\"url(#moonClip)\"><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"url(#moonDark)\"/><path d=\"M 110 4 A 106 106 0 0 0 110 216 A 4.281560194515288 106 0 0 0 110 4 Z\" fill=\"url(#moonLit)\"/><circle cx=\"78.2\" cy=\"83.5\" r=\"8.48\" fill=\"rgba(0,0,0,0.06)\"/><circle cx=\"125.9\" cy=\"141.8\" r=\"10.600000000000001\" fill=\"rgba(0,0,0,0.08)\"/><circle cx=\"152.4\" cy=\"99.4\" r=\"6.359999999999999\" fill=\"rgba(0,0,0,0.05)\"/><circle cx=\"99.4\" cy=\"125.9\" r=\"5.300000000000001\" fill=\"rgba(0,0,0,0.05)\"/></g><circle cx=\"110\" cy=\"110\" r=\"106\" fill=\"none\" stroke=\"rgba(255,255,255,0.10)\" stroke-width=\"1\"/></svg>","details":[{"property":"Phase","value":"First Quarter"},{"property":"Illumination","value":"47.98%"},{"property":"Moon Age","value":"7.19 days since last new moon"},{"property":"Synodic Cycle","value":"Day 8 of 29.5"},{"property":"Next New Moon","value":"June 6, 2024 (in 22 days, 8 hours)"},{"property":"Next Full Moon","value":"May 23, 2024 (in 7 days, 14 hours)"},{"property":"Zodiac Constellation","value":"Leo"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"moonSvg":{"type":"string","description":"Moon disc (SVG)"},"details":{"type":"array","description":"Phase details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/motor-full-load-current-calculator":{"post":{"operationId":"run_motor_full_load_current_calculator","summary":"Motor Full Load Current Calculator","tags":["Calculators"],"description":"Calculate the full-load (running) current of a single-phase, three-phase or DC motor from its nameplate kW or horsepower rating, voltage, power factor and efficiency. Also reports kVA, kVAR, conductor sizing current and typical starting current.\n\n[Try Motor Full Load Current Calculator in your browser →](https://iotools.cloud/tool/motor-full-load-current-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"power":{"type":"number","description":"Motor Rating (shaft output)","minimum":0},"powerUnit":{"enum":["kw","hp"],"description":"Rating Unit"},"voltage":{"type":"number","description":"Line Voltage (V)","minimum":0},"phase":{"enum":["three","single","dc"],"description":"Supply"},"powerFactor":{"type":"number","description":"Power Factor","minimum":0.1,"maximum":1},"efficiency":{"type":"number","description":"Efficiency (%)","minimum":10,"maximum":100}},"required":["power","voltage","efficiency"]},"examples":{"7_5_kw_three_phase_motor_at_400_v":{"summary":"7.5 kW three-phase motor at 400 V","value":{"power":"7.5","powerUnit":"kw","voltage":"400","phase":"three","powerFactor":"0.85","efficiency":"90"}},"2_hp_single_phase_motor_at_230_v":{"summary":"2 hp single-phase motor at 230 V","value":{"power":"2","powerUnit":"hp","voltage":"230","phase":"single","powerFactor":"0.8","efficiency":"82"}},"1_5_kw_dc_motor_at_48_v":{"summary":"1.5 kW DC motor at 48 V","value":{"power":"1.5","powerUnit":"kw","voltage":"48","phase":"dc","powerFactor":"0.85","efficiency":"88"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"7_5_kw_three_phase_motor_at_400_v":{"summary":"7.5 kW three-phase motor at 400 V","value":{"tool":"motor-full-load-current-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Full-load current (FLC)","value":"14.15 A"},{"metric":"Supply","value":"Three-phase @ 400 V"},{"metric":"Mechanical output","value":"7.50 kW (10.06 hp)"},{"metric":"Electrical input power","value":"8.33 kW"},{"metric":"Apparent power","value":"9.80 kVA"},{"metric":"Reactive power","value":"5.16 kVAR"},{"metric":"Power factor","value":"0.85"},{"metric":"Efficiency","value":"90%"},{"metric":"Losses","value":"0.83 kW"},{"metric":"Conductor sizing current (125% FLC)","value":"17.69 A"},{"metric":"Typical DOL starting current (≈6× FLC)","value":"84.90 A"}]},"credits_used":5,"credits_remaining":null}},"2_hp_single_phase_motor_at_230_v":{"summary":"2 hp single-phase motor at 230 V","value":{"tool":"motor-full-load-current-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Full-load current (FLC)","value":"9.88 A"},{"metric":"Supply","value":"Single-phase @ 230 V"},{"metric":"Mechanical output","value":"1.49 kW (2.00 hp)"},{"metric":"Electrical input power","value":"1.82 kW"},{"metric":"Apparent power","value":"2.27 kVA"},{"metric":"Reactive power","value":"1.36 kVAR"},{"metric":"Power factor","value":"0.80"},{"metric":"Efficiency","value":"82%"},{"metric":"Losses","value":"0.33 kW"},{"metric":"Conductor sizing current (125% FLC)","value":"12.36 A"},{"metric":"Typical DOL starting current (≈6× FLC)","value":"59.31 A"}]},"credits_used":5,"credits_remaining":null}},"1_5_kw_dc_motor_at_48_v":{"summary":"1.5 kW DC motor at 48 V","value":{"tool":"motor-full-load-current-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Full-load current (FLC)","value":"35.51 A"},{"metric":"Supply","value":"DC @ 48 V"},{"metric":"Mechanical output","value":"1.50 kW (2.01 hp)"},{"metric":"Electrical input power","value":"1.70 kW"},{"metric":"Efficiency","value":"88%"},{"metric":"Losses","value":"0.20 kW"},{"metric":"Conductor sizing current (125% FLC)","value":"44.39 A"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mulch-soil-gravel-calculator":{"post":{"operationId":"run_mulch_soil_gravel_calculator","summary":"Mulch, Soil & Gravel Calculator","tags":["Calculators"],"description":"Calculate the volume, weight, bag count, and truck-load estimate for mulch, topsoil, gravel, or sand needed to cover a rectangular area at a given depth — pick imperial or metric units, editable bag size and truck capacity instead of hidden assumptions, and every result shown in both unit systems.\n\n[Try Mulch, Soil & Gravel Calculator in your browser →](https://iotools.cloud/tool/mulch-soil-gravel-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"material":{"enum":["mulch","topsoil","gravel","sand"],"description":"Material"},"unitSystem":{"enum":["imperial","metric"],"description":"Unit System"},"length":{"type":"number","description":"Length","minimum":0.01},"width":{"type":"number","description":"Width","minimum":0.01},"depth":{"type":"number","description":"Depth","minimum":0.01},"wastePct":{"type":"number","description":"Waste / Overage (%)","minimum":0,"maximum":100},"bagSize":{"type":"number","description":"Bag Size","minimum":0.01},"truckCapacity":{"type":"number","description":"Truck / Trailer Capacity","minimum":0.01}},"required":[]},"examples":{"mulch_bed_10_x_20_ft_at_3_inches_deep_imperial":{"summary":"Mulch bed, 10 x 20 ft at 3 inches deep (imperial)","value":{"material":"mulch","unitSystem":"imperial","length":"10","width":"20","depth":"3","wastePct":"10","bagSize":"2","truckCapacity":"2"}},"gravel_driveway_5_x_4_meters_at_10cm_deep_metric":{"summary":"Gravel driveway, 5 x 4 meters at 10cm deep (metric)","value":{"material":"gravel","unitSystem":"metric","length":"5","width":"4","depth":"10","wastePct":"15","bagSize":"50","truckCapacity":"1.5"}},"small_topsoil_bed_6_x_4_ft_at_6_inches_deep_imperial":{"summary":"Small topsoil bed, 6 x 4 ft at 6 inches deep (imperial)","value":{"material":"topsoil","unitSystem":"imperial","length":"6","width":"4","depth":"6","wastePct":"5","bagSize":"1.5","truckCapacity":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mulch_bed_10_x_20_ft_at_3_inches_deep_imperial":{"summary":"Mulch bed, 10 x 20 ft at 3 inches deep (imperial)","value":{"tool":"mulch-soil-gravel-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Material","value":"Mulch"},{"metric":"Coverage Area","value":"200.0 sq ft (18.6 m²)"},{"metric":"Volume Needed","value":"1.85 yd³ (1.42 m³)"},{"metric":"Volume With 10% Waste","value":"2.04 yd³ (1.56 m³)"},{"metric":"Estimated Weight","value":"1019 lbs (462 kg)"},{"metric":"Bags Needed","value":"28 bags (at 2.00 ft³ ≈ 56.6 L per bag)"},{"metric":"Truck Loads","value":"2 trip(s) (~1.02 loads at 2.00 yd³ ≈ 1.53 m³ per load)"}]},"credits_used":5,"credits_remaining":null}},"gravel_driveway_5_x_4_meters_at_10cm_deep_metric":{"summary":"Gravel driveway, 5 x 4 meters at 10cm deep (metric)","value":{"tool":"mulch-soil-gravel-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Material","value":"Gravel"},{"metric":"Coverage Area","value":"215.3 sq ft (20.0 m²)"},{"metric":"Volume Needed","value":"2.62 yd³ (2.00 m³)"},{"metric":"Volume With 15% Waste","value":"3.01 yd³ (2.30 m³)"},{"metric":"Estimated Weight","value":"8423 lbs (3821 kg)"},{"metric":"Bags Needed","value":"46 bags (at 1.77 ft³ ≈ 50.0 L per bag)"},{"metric":"Truck Loads","value":"2 trip(s) (~1.53 loads at 1.96 yd³ ≈ 1.50 m³ per load)"}]},"credits_used":5,"credits_remaining":null}},"small_topsoil_bed_6_x_4_ft_at_6_inches_deep_imperial":{"summary":"Small topsoil bed, 6 x 4 ft at 6 inches deep (imperial)","value":{"tool":"mulch-soil-gravel-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Material","value":"Topsoil"},{"metric":"Coverage Area","value":"24.0 sq ft (2.2 m²)"},{"metric":"Volume Needed","value":"0.44 yd³ (0.34 m³)"},{"metric":"Volume With 5% Waste","value":"0.47 yd³ (0.36 m³)"},{"metric":"Estimated Weight","value":"933 lbs (423 kg)"},{"metric":"Bags Needed","value":"9 bags (at 1.50 ft³ ≈ 42.5 L per bag)"},{"metric":"Truck Loads","value":"1 trip(s) (~0.23 loads at 2.00 yd³ ≈ 1.53 m³ per load)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Materials Needed","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/multi-base-arithmetic-calculator":{"post":{"operationId":"run_multi_base_arithmetic_calculator","summary":"Multi-Base Arithmetic Calculator","tags":["Calculators"],"description":"Add, subtract, multiply, divide or take the modulo of two numbers written in binary, octal, decimal or hexadecimal — bases auto-detected from a 0x/0b/0o prefix. Uses BigInt for arbitrary precision and shows the result in all four bases at once, with fixed-width overflow reporting and step-by-step working.\n\n[Try Multi-Base Arithmetic Calculator in your browser →](https://iotools.cloud/tool/multi-base-arithmetic-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"firstNumber":{"type":"string","description":"First number"},"operation":{"enum":["add","sub","mul","div","mod"],"description":"Operation"},"secondNumber":{"type":"string","description":"Second number"},"bitWidth":{"enum":["0","8","16","32","64"],"description":"Bit width"}},"required":[]},"examples":{"hex_binary_0xff_0b1010":{"summary":"Hex + binary (0xFF + 0b1010)","value":{"firstNumber":"0xFF","operation":"add","secondNumber":"0b1010","bitWidth":"0"}},"octal_binary_0o17_0b11":{"summary":"Octal - binary (0o17 - 0b11)","value":{"firstNumber":"0o17","operation":"sub","secondNumber":"0b11","bitWidth":"0"}},"negative_result_0b1010_0xff":{"summary":"Negative result (0b1010 - 0xFF)","value":{"firstNumber":"0b1010","operation":"sub","secondNumber":"0xFF","bitWidth":"0"}},"8_bit_overflow_0xff_x_0xff":{"summary":"8-bit overflow (0xFF x 0xFF)","value":{"firstNumber":"0xFF","operation":"mul","secondNumber":"0xFF","bitWidth":"8"}},"division_with_remainder_255_0b1010":{"summary":"Division with remainder (255 / 0b1010)","value":{"firstNumber":"255","operation":"div","secondNumber":"0b1010","bitWidth":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hex_binary_0xff_0b1010":{"summary":"Hex + binary (0xFF + 0b1010)","value":{"tool":"multi-base-arithmetic-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"base":"Binary (2)","value":"0b100001001"},{"base":"Octal (8)","value":"0o411"},{"base":"Decimal (10)","value":"265"},{"base":"Hexadecimal (16)","value":"0x109"}],"status":"Unlimited precision (BigInt) — no overflow possible.","workingSteps":"Inputs:\n  A = 255  (parsed as hexadecimal)\n      bin: 0b1111 1111\n      oct: 0o377\n      hex: 0xFF\n  B = 10  (parsed as binary)\n      bin: 0b1010\n      oct: 0o12\n      hex: 0xA\n\nOperation: A + B = 265\n\nBinary addition with column carries:\n\n    carry  1 1 1 1 1 1 1 0  \n           -----------------\n           0 1 1 1 1 1 1 1 1\n         + 0 0 0 0 0 1 0 1 0\n           -----------------\n       =   1 0 0 0 0 1 0 0 1\n"},"credits_used":5,"credits_remaining":null}},"octal_binary_0o17_0b11":{"summary":"Octal - binary (0o17 - 0b11)","value":{"tool":"multi-base-arithmetic-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"base":"Binary (2)","value":"0b1100"},{"base":"Octal (8)","value":"0o14"},{"base":"Decimal (10)","value":"12"},{"base":"Hexadecimal (16)","value":"0xC"}],"status":"Unlimited precision (BigInt) — no overflow possible.","workingSteps":"Inputs:\n  A = 15  (parsed as octal)\n      bin: 0b1111\n      oct: 0o17\n      hex: 0xF\n  B = 3  (parsed as binary)\n      bin: 0b0011\n      oct: 0o3\n      hex: 0x3\n\nOperation: A - B = 12\n\nBinary subtraction with column borrows:\n\n   borrow         \n           -------\n           1 1 1 1\n         - 0 0 1 1\n           -------\n       =   1 1 0 0\n"},"credits_used":5,"credits_remaining":null}},"negative_result_0b1010_0xff":{"summary":"Negative result (0b1010 - 0xFF)","value":{"tool":"multi-base-arithmetic-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"base":"Binary (2)","value":"-0b11110101"},{"base":"Octal (8)","value":"-0o365"},{"base":"Decimal (10)","value":"-245"},{"base":"Hexadecimal (16)","value":"-0xF5"}],"status":"Unlimited precision (BigInt) — no overflow possible.","workingSteps":"Inputs:\n  A = 10  (parsed as binary)\n      bin: 0b1010\n      oct: 0o12\n      hex: 0xA\n  B = 255  (parsed as hexadecimal)\n      bin: 0b1111 1111\n      oct: 0o377\n      hex: 0xFF\n\nOperation: A - B = -245\n\nBorrow visualization is shown when the minuend is greater than or equal to the subtrahend.\nThe result above uses signed arithmetic."},"credits_used":5,"credits_remaining":null}},"8_bit_overflow_0xff_x_0xff":{"summary":"8-bit overflow (0xFF x 0xFF)","value":{"tool":"multi-base-arithmetic-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"base":"Binary (2)","value":"0b1111111000000001"},{"base":"Octal (8)","value":"0o177001"},{"base":"Decimal (10)","value":"65025"},{"base":"Hexadecimal (16)","value":"0xFE01"}],"status":"Overflow in 8-bit: 65025 fits neither signed (-128 to 127) nor unsigned (0 to 255). Wrapped two's-complement — unsigned: 1, signed: 1.","workingSteps":"Inputs:\n  A = 255  (parsed as hexadecimal)\n      bin: 0b1111 1111\n      oct: 0o377\n      hex: 0xFF\n  B = 255  (parsed as hexadecimal)\n      bin: 0b1111 1111\n      oct: 0o377\n      hex: 0xFF\n\nOperation: A x B = 65025\n\nBinary multiplication (shift-and-add):\n\n           1 1 1 1 1 1 1 1    (multiplicand = 255)\n         x 1 1 1 1 1 1 1 1    (multiplier   = 255)\n           ---------------\n           0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1    (multiplicand << 0)\n           0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0    (multiplicand << 1)\n           0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0    (multiplicand << 2)\n           0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0    (multiplicand << 3)\n           0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0    (multiplicand << 4)\n           0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0    (multiplicand << 5)\n           0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0    (multiplicand << 6)\n           0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0    (multiplicand << 7)\n           -------------------------------\n       =   1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1\n"},"credits_used":5,"credits_remaining":null}},"division_with_remainder_255_0b1010":{"summary":"Division with remainder (255 / 0b1010)","value":{"tool":"multi-base-arithmetic-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"base":"Binary (2)","value":"0b11001"},{"base":"Octal (8)","value":"0o31"},{"base":"Decimal (10)","value":"25"},{"base":"Hexadecimal (16)","value":"0x19"}],"status":"Unlimited precision (BigInt) — no overflow possible.","workingSteps":"Inputs:\n  A = 255  (parsed as decimal)\n      bin: 0b1111 1111\n      oct: 0o377\n      hex: 0xFF\n  B = 10  (parsed as binary)\n      bin: 0b1010\n      oct: 0o12\n      hex: 0xA\n\nOperation: A / B = 25\n\nBinary long division (255 / 10):\n\n  step | bring | running         | qBit\n  -----+-------+-----------------+-----\n     1 |   1   |              1  |  0\n     2 |   1   |             11  |  0\n     3 |   1   |            111  |  0\n     4 |   1   |            101  |  1\n     5 |   1   |              1  |  1\n     6 |   1   |             11  |  0\n     7 |   1   |            111  |  0\n     8 |   1   |            101  |  1\n\n  quotient  = 0b11001 = 25\n  remainder = 0b101 = 5\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Result","items":{"type":"object","properties":{"base":{"type":"string","description":"Base"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["base","value"]},"status":{"type":"string","description":"Overflow status"},"workingSteps":{"type":"string","description":"Working steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nernst-equation-calculator":{"post":{"operationId":"run_nernst_equation_calculator","summary":"Nernst Equation Calculator","tags":["Calculators"],"description":"Calculate cell potential with the Nernst equation from the standard potential E°, electrons transferred, temperature, and the reaction quotient Q (or product and reactant concentrations) — or solve backward for Q from a measured potential. Also returns ΔG, ΔG°, the equilibrium constant K, and the voltage change per tenfold change in Q (59.16/n mV at 25°C).\n\n[Try Nernst Equation Calculator in your browser →](https://iotools.cloud/tool/nernst-equation-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["e","q"],"description":"Solve For"},"standardPotential":{"type":"number","description":"Standard Potential E° (V)"},"electrons":{"type":"number","description":"Electrons Transferred (n)","minimum":1},"temperature":{"type":"number","description":"Temperature"},"temperatureUnit":{"enum":["c","k","f"],"description":"Temperature Unit"},"quotientInput":{"enum":["q","conc"],"description":"Reaction Quotient From"},"qValue":{"type":"number","description":"Reaction Quotient Q"},"productTerm":{"type":"number","description":"Product Term"},"reactantTerm":{"type":"number","description":"Reactant Term"},"cellPotential":{"type":"number","description":"Measured Cell Potential E (V)"}},"required":[]},"examples":{"daniell_cell_zn_cu_at_25_c_q_1000":{"summary":"Daniell cell (Zn/Cu) at 25°C, Q = 1000","value":{"solveFor":"e","standardPotential":"1.10","electrons":"2","temperature":"25","temperatureUnit":"c","quotientInput":"q","qValue":"1000","productTerm":"1","reactantTerm":"0.001","cellPotential":"1.0112"}},"cu_cu_half_cell_at_body_temperature_from_concentrations":{"summary":"Cu²⁺/Cu half-cell at body temperature, from concentrations","value":{"solveFor":"e","standardPotential":"0.34","electrons":"2","temperature":"310.15","temperatureUnit":"k","quotientInput":"conc","qValue":"1000","productTerm":"1","reactantTerm":"0.001","cellPotential":"1.0112"}},"solve_for_q_from_a_measured_1_0112_v":{"summary":"Solve for Q from a measured 1.0112 V","value":{"solveFor":"q","standardPotential":"1.10","electrons":"2","temperature":"25","temperatureUnit":"c","quotientInput":"q","qValue":"1000","productTerm":"1","reactantTerm":"0.001","cellPotential":"1.0112"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"daniell_cell_zn_cu_at_25_c_q_1000":{"summary":"Daniell cell (Zn/Cu) at 25°C, Q = 1000","value":{"tool":"nernst-equation-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Cell potential E (V)","value":"1.01126"},{"metric":"Shift from E° (V)","value":"-0.088739"},{"metric":"Reaction quotient Q","value":"1000"},{"metric":"log10 Q","value":"3"},{"metric":"Temperature (K)","value":"298.15"},{"metric":"RT/nF (V)","value":"0.0128463"},{"metric":"Slope per decade of Q (V)","value":"0.0295797"},{"metric":"ΔG (kJ/mol)","value":"-195.144"},{"metric":"ΔG° (kJ/mol)","value":"-212.268"},{"metric":"Equilibrium constant K","value":"1.5406e+37"},{"metric":"log10 K","value":"37.1877"},{"metric":"Verdict","value":"Spontaneous as written (galvanic, ΔG < 0)"}],"steps":"T = 298.15 K; RT/nF = (8.314462618 × 298.15) ÷ (2 × 96485.33212) = 0.0128463 V\nSlope = 2.302585 × RT/nF = 0.0295797 V per decade of Q (29.5797 mV)\nE = E° − slope × log10 Q = 1.1 − 0.0295797 × 3 = 1.01126 V"},"credits_used":5,"credits_remaining":null}},"cu_cu_half_cell_at_body_temperature_from_concentrations":{"summary":"Cu²⁺/Cu half-cell at body temperature, from concentrations","value":{"tool":"nernst-equation-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Cell potential E (V)","value":"0.247689"},{"metric":"Shift from E° (V)","value":"-0.0923106"},{"metric":"Reaction quotient Q","value":"1000"},{"metric":"log10 Q","value":"3"},{"metric":"Temperature (K)","value":"310.15"},{"metric":"RT/nF (V)","value":"0.0133633"},{"metric":"Slope per decade of Q (V)","value":"0.0307702"},{"metric":"ΔG (kJ/mol)","value":"-47.7968"},{"metric":"ΔG° (kJ/mol)","value":"-65.61"},{"metric":"Equilibrium constant K","value":"1.1211e+11"},{"metric":"log10 K","value":"11.0497"},{"metric":"Verdict","value":"Spontaneous as written (galvanic, ΔG < 0)"}],"steps":"T = 310.15 K; RT/nF = (8.314462618 × 310.15) ÷ (2 × 96485.33212) = 0.0133633 V\nSlope = 2.302585 × RT/nF = 0.0307702 V per decade of Q (30.7702 mV)\nQ = products ÷ reactants = 1 ÷ 0.001 = 1000\nE = E° − slope × log10 Q = 0.34 − 0.0307702 × 3 = 0.247689 V"},"credits_used":5,"credits_remaining":null}},"solve_for_q_from_a_measured_1_0112_v":{"summary":"Solve for Q from a measured 1.0112 V","value":{"tool":"nernst-equation-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Cell potential E (V)","value":"1.0112"},{"metric":"Shift from E° (V)","value":"-0.0888"},{"metric":"Reaction quotient Q","value":"1004.76"},{"metric":"log10 Q","value":"3.00206"},{"metric":"Temperature (K)","value":"298.15"},{"metric":"RT/nF (V)","value":"0.0128463"},{"metric":"Slope per decade of Q (V)","value":"0.0295797"},{"metric":"ΔG (kJ/mol)","value":"-195.132"},{"metric":"ΔG° (kJ/mol)","value":"-212.268"},{"metric":"Equilibrium constant K","value":"1.5406e+37"},{"metric":"log10 K","value":"37.1877"},{"metric":"Verdict","value":"Spontaneous as written (galvanic, ΔG < 0)"}],"steps":"T = 298.15 K; RT/nF = (8.314462618 × 298.15) ÷ (2 × 96485.33212) = 0.0128463 V\nSlope = 2.302585 × RT/nF = 0.0295797 V per decade of Q (29.5797 mV)\nlog10 Q = (E° − E) ÷ slope = (1.1 − 1.0112) ÷ 0.0295797 = 3.00206\nQ = 10^3.00206 = 1004.76"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/net-promoter-score-calculator":{"post":{"operationId":"run_net_promoter_score_calculator","summary":"Net Promoter Score (NPS) Calculator","tags":["Calculators"],"description":"Calculate Net Promoter Score (NPS) from promoter, passive, and detractor survey counts. Get the NPS, the percentage breakdown of each group, and a qualitative benchmark rating.\n\n[Try Net Promoter Score (NPS) Calculator in your browser →](https://iotools.cloud/tool/net-promoter-score-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"promoters":{"type":"number","description":"Promoters (scored 9–10)","minimum":0},"passives":{"type":"number","description":"Passives (scored 7–8)","minimum":0},"detractors":{"type":"number","description":"Detractors (scored 0–6)","minimum":0}},"required":["promoters","passives","detractors"]},"examples":{"520_promoters_300_passives_180_detractors_default":{"summary":"520 promoters / 300 passives / 180 detractors (default)","value":{"promoters":"520","passives":"300","detractors":"180"}},"world_class_score_mostly_promoters":{"summary":"World-class score — mostly promoters","value":{"promoters":"90","passives":"5","detractors":"5"}},"negative_nps_detractors_outnumber_promoters":{"summary":"Negative NPS — detractors outnumber promoters","value":{"promoters":"10","passives":"20","detractors":"70"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"520_promoters_300_passives_180_detractors_default":{"summary":"520 promoters / 300 passives / 180 detractors (default)","value":{"tool":"net-promoter-score-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Responses","value":"1,000"},{"metric":"Promoters","value":"520 (52.0%)"},{"metric":"Passives","value":"300 (30.0%)"},{"metric":"Detractors","value":"180 (18.0%)"},{"metric":"Net Promoter Score","value":"34.0"},{"metric":"Rating","value":"Great"}]},"credits_used":5,"credits_remaining":null}},"world_class_score_mostly_promoters":{"summary":"World-class score — mostly promoters","value":{"tool":"net-promoter-score-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Responses","value":"100"},{"metric":"Promoters","value":"90 (90.0%)"},{"metric":"Passives","value":"5 (5.0%)"},{"metric":"Detractors","value":"5 (5.0%)"},{"metric":"Net Promoter Score","value":"85.0"},{"metric":"Rating","value":"World Class"}]},"credits_used":5,"credits_remaining":null}},"negative_nps_detractors_outnumber_promoters":{"summary":"Negative NPS — detractors outnumber promoters","value":{"tool":"net-promoter-score-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Responses","value":"100"},{"metric":"Promoters","value":"10 (10.0%)"},{"metric":"Passives","value":"20 (20.0%)"},{"metric":"Detractors","value":"70 (70.0%)"},{"metric":"Net Promoter Score","value":"-60.0"},{"metric":"Rating","value":"Needs Improvement"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/network-latency-calculator":{"post":{"operationId":"run_network_latency_calculator","summary":"Network Latency Calculator","tags":["Calculators"],"description":"Analyze ping results to measure network latency. Paste raw ping output or a list of round-trip times to get mean, median, min, max, jitter, standard deviation, packet loss and an overall connection quality grade.\n\n[Try Network Latency Calculator in your browser →](https://iotools.cloud/tool/network-latency-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pingInput":{"type":"string","description":"Ping Data"},"packetsSent":{"type":"number","description":"Packets Sent","minimum":0},"packetsReceived":{"type":"number","description":"Packets Received","minimum":0}},"required":[]},"examples":{"ping_output_google_com_10_packets":{"summary":"Ping output (google.com, 10 packets)","value":{"pingInput":"PING google.com (142.250.80.46): 56 data bytes\n64 bytes from 142.250.80.46: icmp_seq=0 ttl=117 time=12.3 ms\n64 bytes from 142.250.80.46: icmp_seq=1 ttl=117 time=14.1 ms\n64 bytes from 142.250.80.46: icmp_seq=2 ttl=117 time=11.8 ms\n64 bytes from 142.250.80.46: icmp_seq=3 ttl=117 time=45.2 ms\n64 bytes from 142.250.80.46: icmp_seq=4 ttl=117 time=13.5 ms\n64 bytes from 142.250.80.46: icmp_seq=5 ttl=117 time=12.9 ms\n64 bytes from 142.250.80.46: icmp_seq=6 ttl=117 time=18.7 ms\n64 bytes from 142.250.80.46: icmp_seq=7 ttl=117 time=11.2 ms\n64 bytes from 142.250.80.46: icmp_seq=8 ttl=117 time=13.0 ms\n64 bytes from 142.250.80.46: icmp_seq=9 ttl=117 time=12.4 ms\n\n--- google.com ping statistics ---\n10 packets transmitted, 10 packets received, 0.0% packet loss"}},"comma_separated_times_with_20_packet_loss":{"summary":"Comma-separated times with 20% packet loss","value":{"pingInput":"20, 22, 21, 25, 19","packetsSent":"10","packetsReceived":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"ping_output_google_com_10_packets":{"summary":"Ping output (google.com, 10 packets)","value":{"tool":"network-latency-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Ping Count","value":"10"},{"metric":"Mean (Average)","value":"16.51 ms"},{"metric":"Median","value":"12.95 ms"},{"metric":"Min","value":"11.2 ms"},{"metric":"Max","value":"45.2 ms"},{"metric":"Range","value":"34 ms"},{"metric":"Standard Deviation","value":"9.76 ms"},{"metric":"Jitter (Avg Consecutive Diff)","value":"9.5 ms"},{"metric":"Packet Loss","value":"0%"},{"metric":"Quality Grade","value":"Excellent"}]},"credits_used":5,"credits_remaining":null}},"comma_separated_times_with_20_packet_loss":{"summary":"Comma-separated times with 20% packet loss","value":{"tool":"network-latency-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Ping Count","value":"5"},{"metric":"Mean (Average)","value":"21.4 ms"},{"metric":"Median","value":"21 ms"},{"metric":"Min","value":"19 ms"},{"metric":"Max","value":"25 ms"},{"metric":"Range","value":"6 ms"},{"metric":"Standard Deviation","value":"2.06 ms"},{"metric":"Jitter (Avg Consecutive Diff)","value":"3.25 ms"},{"metric":"Packet Loss","value":"20%"},{"metric":"Quality Grade","value":"Poor"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/network-mask-calculator":{"post":{"operationId":"run_network_mask_calculator","summary":"Network Mask Calculator","tags":["Calculators"],"description":"Calculate an IPv4 network from CIDR notation (192.168.1.0/24) or an address plus a dotted subnet mask (192.168.1.0 255.255.255.0). Returns the network and broadcast addresses, subnet and wildcard masks, CIDR notation, usable host range, total and usable host counts, the IP class and the binary subnet mask.\n\n[Try Network Mask Calculator in your browser →](https://iotools.cloud/tool/network-mask-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"IP / CIDR or IP + Subnet Mask"}},"required":[]},"examples":{"192_168_1_0_24_typical_lan_254_hosts":{"summary":"192.168.1.0/24 (typical LAN, 254 hosts)","value":{"input":"192.168.1.0/24"}},"10_0_0_0_255_255_255_0_address_dotted_mask":{"summary":"10.0.0.0 255.255.255.0 (address + dotted mask)","value":{"input":"10.0.0.0 255.255.255.0"}},"10_0_0_0_31_point_to_point_link_rfc_3021":{"summary":"10.0.0.0/31 (point-to-point link, RFC 3021)","value":{"input":"10.0.0.0/31"}},"172_16_5_23_32_single_host":{"summary":"172.16.5.23/32 (single host)","value":{"input":"172.16.5.23/32"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"192_168_1_0_24_typical_lan_254_hosts":{"summary":"192.168.1.0/24 (typical LAN, 254 hosts)","value":{"tool":"network-mask-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"192.168.1.0"},{"property":"Broadcast Address","value":"192.168.1.255"},{"property":"Subnet Mask","value":"255.255.255.0"},{"property":"Wildcard Mask","value":"0.0.0.255"},{"property":"CIDR Notation","value":"192.168.1.0/24"},{"property":"Usable IP Range","value":"192.168.1.1 - 192.168.1.254"},{"property":"Total Addresses","value":"256"},{"property":"Usable Hosts","value":"254"},{"property":"IP Class","value":"C"},{"property":"Binary Mask","value":"11111111.11111111.11111111.00000000"}]},"credits_used":5,"credits_remaining":null}},"10_0_0_0_255_255_255_0_address_dotted_mask":{"summary":"10.0.0.0 255.255.255.0 (address + dotted mask)","value":{"tool":"network-mask-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"10.0.0.0"},{"property":"Broadcast Address","value":"10.0.0.255"},{"property":"Subnet Mask","value":"255.255.255.0"},{"property":"Wildcard Mask","value":"0.0.0.255"},{"property":"CIDR Notation","value":"10.0.0.0/24"},{"property":"Usable IP Range","value":"10.0.0.1 - 10.0.0.254"},{"property":"Total Addresses","value":"256"},{"property":"Usable Hosts","value":"254"},{"property":"IP Class","value":"A"},{"property":"Binary Mask","value":"11111111.11111111.11111111.00000000"}]},"credits_used":5,"credits_remaining":null}},"10_0_0_0_31_point_to_point_link_rfc_3021":{"summary":"10.0.0.0/31 (point-to-point link, RFC 3021)","value":{"tool":"network-mask-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"10.0.0.0"},{"property":"Broadcast Address","value":"10.0.0.1"},{"property":"Subnet Mask","value":"255.255.255.254"},{"property":"Wildcard Mask","value":"0.0.0.1"},{"property":"CIDR Notation","value":"10.0.0.0/31"},{"property":"Usable IP Range","value":"10.0.0.0 - 10.0.0.1"},{"property":"Total Addresses","value":"2"},{"property":"Usable Hosts","value":"2"},{"property":"IP Class","value":"A"},{"property":"Binary Mask","value":"11111111.11111111.11111111.11111110"}]},"credits_used":5,"credits_remaining":null}},"172_16_5_23_32_single_host":{"summary":"172.16.5.23/32 (single host)","value":{"tool":"network-mask-calculator","tool_version":"1.0.2","outputs":{"result":[{"property":"Network Address","value":"172.16.5.23"},{"property":"Broadcast Address","value":"172.16.5.23"},{"property":"Subnet Mask","value":"255.255.255.255"},{"property":"Wildcard Mask","value":"0.0.0.0"},{"property":"CIDR Notation","value":"172.16.5.23/32"},{"property":"Usable IP Range","value":"172.16.5.23 - 172.16.5.23"},{"property":"Total Addresses","value":"1"},{"property":"Usable Hosts","value":"1"},{"property":"IP Class","value":"B"},{"property":"Binary Mask","value":"11111111.11111111.11111111.11111111"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Network Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/net-worth-calculator":{"post":{"operationId":"run_net_worth_calculator","summary":"Net Worth Calculator","tags":["Calculators"],"description":"Calculate your net worth from categorized assets and liabilities. Enter cash, investments, property, vehicles and debts to get your total assets, total liabilities, net worth and a visual breakdown.\n\n[Try Net Worth Calculator in your browser →](https://iotools.cloud/tool/net-worth-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cash":{"type":"number","description":"Cash & Savings","minimum":0,"maximum":999999999999},"investments":{"type":"number","description":"Investments & Retirement","minimum":0,"maximum":999999999999},"realEstate":{"type":"number","description":"Real Estate","minimum":0,"maximum":999999999999},"vehicles":{"type":"number","description":"Vehicles","minimum":0,"maximum":999999999999},"otherAssets":{"type":"number","description":"Other Assets","minimum":0,"maximum":999999999999},"mortgage":{"type":"number","description":"Mortgage","minimum":0,"maximum":999999999999},"autoLoans":{"type":"number","description":"Car Loans","minimum":0,"maximum":999999999999},"studentLoans":{"type":"number","description":"Student Loans","minimum":0,"maximum":999999999999},"creditCards":{"type":"number","description":"Credit Card Debt","minimum":0,"maximum":999999999999},"otherDebts":{"type":"number","description":"Other Debts","minimum":0,"maximum":999999999999},"currency":{"enum":["USD","EUR","GBP","JPY","INR","CAD","AUD","CHF","CNY","BRL","MXN","SGD","ZAR","NONE"],"description":"Currency"}},"required":[]},"examples":{"typical_homeowner_default_figures":{"summary":"Typical homeowner (default figures)","value":{"cash":"15000","investments":"60000","realEstate":"320000","vehicles":"18000","otherAssets":"5000","mortgage":"240000","autoLoans":"12000","studentLoans":"18000","creditCards":"4000","otherDebts":"0","currency":"USD"}},"renter_with_student_debt_negative_net_worth":{"summary":"Renter with student debt (negative net worth)","value":{"cash":"4000","investments":"9000","realEstate":"0","vehicles":"7000","otherAssets":"0","mortgage":"0","autoLoans":"6500","studentLoans":"42000","creditCards":"3200","otherDebts":"1500","currency":"GBP"}},"debt_free_saver_euros":{"summary":"Debt-free saver (euros)","value":{"cash":"28000","investments":"150000","realEstate":"0","vehicles":"0","otherAssets":"12000","mortgage":"0","autoLoans":"0","studentLoans":"0","creditCards":"0","otherDebts":"0","currency":"EUR"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"typical_homeowner_default_figures":{"summary":"Typical homeowner (default figures)","value":{"tool":"net-worth-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Assets","value":"$418,000"},{"metric":"Total Liabilities","value":"$274,000"},{"metric":"Net Worth","value":"$144,000"},{"metric":"Liquid Assets (cash + investments)","value":"$75,000"},{"metric":"Debt-to-Asset Ratio","value":"65.6%"},{"metric":"Largest Asset","value":"Real Estate ($320,000)"},{"metric":"Largest Liability","value":"Mortgage ($240,000)"},{"metric":"Position","value":"Positive"}],"breakdown":[{"category":"Cash & Savings","type":"Asset","amount":"$15,000","share-of-side":"3.6%"},{"category":"Investments & Retirement","type":"Asset","amount":"$60,000","share-of-side":"14.4%"},{"category":"Real Estate","type":"Asset","amount":"$320,000","share-of-side":"76.6%"},{"category":"Vehicles","type":"Asset","amount":"$18,000","share-of-side":"4.3%"},{"category":"Other Assets","type":"Asset","amount":"$5,000","share-of-side":"1.2%"},{"category":"Mortgage","type":"Liability","amount":"$240,000","share-of-side":"87.6%"},{"category":"Car Loans","type":"Liability","amount":"$12,000","share-of-side":"4.4%"},{"category":"Student Loans","type":"Liability","amount":"$18,000","share-of-side":"6.6%"},{"category":"Credit Card Debt","type":"Liability","amount":"$4,000","share-of-side":"1.5%"}],"chartSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"308\" viewBox=\"0 0 640 308\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\"><rect width=\"640\" height=\"308\" fill=\"#ffffff\"/><text x=\"16\" y=\"27\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Assets</text><text x=\"624\" y=\"27\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">$418,000</text><rect x=\"16\" y=\"34\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><rect x=\"16.00\" y=\"34\" width=\"21.82\" height=\"26\" fill=\"#2563eb\"/><rect x=\"37.82\" y=\"34\" width=\"87.27\" height=\"26\" fill=\"#0891b2\"/><rect x=\"125.09\" y=\"34\" width=\"465.45\" height=\"26\" fill=\"#059669\"/><rect x=\"590.55\" y=\"34\" width=\"26.18\" height=\"26\" fill=\"#65a30d\"/><rect x=\"616.73\" y=\"34\" width=\"7.27\" height=\"26\" fill=\"#7c3aed\"/><text x=\"16\" y=\"89\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Liabilities</text><text x=\"624\" y=\"89\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">$274,000</text><rect x=\"16\" y=\"96\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><rect x=\"16.00\" y=\"96\" width=\"349.09\" height=\"26\" fill=\"#dc2626\"/><rect x=\"365.09\" y=\"96\" width=\"17.45\" height=\"26\" fill=\"#ea580c\"/><rect x=\"382.55\" y=\"96\" width=\"26.18\" height=\"26\" fill=\"#d97706\"/><rect x=\"408.73\" y=\"96\" width=\"5.82\" height=\"26\" fill=\"#db2777\"/><line x1=\"16\" y1=\"144\" x2=\"624\" y2=\"144\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"16\" y=\"164\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Net worth</text><text x=\"624\" y=\"166\" font-size=\"19\" font-weight=\"700\" text-anchor=\"end\" fill=\"#15803d\">$144,000</text><rect x=\"16\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#2563eb\"/><text x=\"32\" y=\"192\" font-size=\"11\" fill=\"#374151\">Cash &amp; Savings · $15,000</text><rect x=\"320\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#0891b2\"/><text x=\"336\" y=\"192\" font-size=\"11\" fill=\"#374151\">Investments &amp; Retirement · $60,000</text><rect x=\"16\" y=\"203\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#059669\"/><text x=\"32\" y=\"212\" font-size=\"11\" fill=\"#374151\">Real Estate · $320,000</text><rect x=\"320\" y=\"203\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#65a30d\"/><text x=\"336\" y=\"212\" font-size=\"11\" fill=\"#374151\">Vehicles · $18,000</text><rect x=\"16\" y=\"223\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#7c3aed\"/><text x=\"32\" y=\"232\" font-size=\"11\" fill=\"#374151\">Other Assets · $5,000</text><rect x=\"320\" y=\"223\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#dc2626\"/><text x=\"336\" y=\"232\" font-size=\"11\" fill=\"#374151\">Mortgage · $240,000</text><rect x=\"16\" y=\"243\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#ea580c\"/><text x=\"32\" y=\"252\" font-size=\"11\" fill=\"#374151\">Car Loans · $12,000</text><rect x=\"320\" y=\"243\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#d97706\"/><text x=\"336\" y=\"252\" font-size=\"11\" fill=\"#374151\">Student Loans · $18,000</text><rect x=\"16\" y=\"263\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#db2777\"/><text x=\"32\" y=\"272\" font-size=\"11\" fill=\"#374151\">Credit Card Debt · $4,000</text></svg>"},"credits_used":5,"credits_remaining":null}},"renter_with_student_debt_negative_net_worth":{"summary":"Renter with student debt (negative net worth)","value":{"tool":"net-worth-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Assets","value":"£20,000"},{"metric":"Total Liabilities","value":"£53,200"},{"metric":"Net Worth","value":"-£33,200"},{"metric":"Liquid Assets (cash + investments)","value":"£13,000"},{"metric":"Debt-to-Asset Ratio","value":"266.0%"},{"metric":"Largest Asset","value":"Investments & Retirement (£9,000)"},{"metric":"Largest Liability","value":"Student Loans (£42,000)"},{"metric":"Position","value":"Negative — debts exceed assets"}],"breakdown":[{"category":"Cash & Savings","type":"Asset","amount":"£4,000","share-of-side":"20.0%"},{"category":"Investments & Retirement","type":"Asset","amount":"£9,000","share-of-side":"45.0%"},{"category":"Vehicles","type":"Asset","amount":"£7,000","share-of-side":"35.0%"},{"category":"Car Loans","type":"Liability","amount":"£6,500","share-of-side":"12.2%"},{"category":"Student Loans","type":"Liability","amount":"£42,000","share-of-side":"78.9%"},{"category":"Credit Card Debt","type":"Liability","amount":"£3,200","share-of-side":"6.0%"},{"category":"Other Debts","type":"Liability","amount":"£1,500","share-of-side":"2.8%"}],"chartSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"288\" viewBox=\"0 0 640 288\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\"><rect width=\"640\" height=\"288\" fill=\"#ffffff\"/><text x=\"16\" y=\"27\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Assets</text><text x=\"624\" y=\"27\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">£20,000</text><rect x=\"16\" y=\"34\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><rect x=\"16.00\" y=\"34\" width=\"45.71\" height=\"26\" fill=\"#2563eb\"/><rect x=\"61.71\" y=\"34\" width=\"102.86\" height=\"26\" fill=\"#0891b2\"/><rect x=\"164.57\" y=\"34\" width=\"80.00\" height=\"26\" fill=\"#65a30d\"/><text x=\"16\" y=\"89\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Liabilities</text><text x=\"624\" y=\"89\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">£53,200</text><rect x=\"16\" y=\"96\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><rect x=\"16.00\" y=\"96\" width=\"74.29\" height=\"26\" fill=\"#ea580c\"/><rect x=\"90.29\" y=\"96\" width=\"480.00\" height=\"26\" fill=\"#d97706\"/><rect x=\"570.29\" y=\"96\" width=\"36.57\" height=\"26\" fill=\"#db2777\"/><rect x=\"606.86\" y=\"96\" width=\"17.14\" height=\"26\" fill=\"#9333ea\"/><line x1=\"16\" y1=\"144\" x2=\"624\" y2=\"144\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"16\" y=\"164\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Net worth</text><text x=\"624\" y=\"166\" font-size=\"19\" font-weight=\"700\" text-anchor=\"end\" fill=\"#b91c1c\">-£33,200</text><rect x=\"16\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#2563eb\"/><text x=\"32\" y=\"192\" font-size=\"11\" fill=\"#374151\">Cash &amp; Savings · £4,000</text><rect x=\"320\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#0891b2\"/><text x=\"336\" y=\"192\" font-size=\"11\" fill=\"#374151\">Investments &amp; Retirement · £9,000</text><rect x=\"16\" y=\"203\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#65a30d\"/><text x=\"32\" y=\"212\" font-size=\"11\" fill=\"#374151\">Vehicles · £7,000</text><rect x=\"320\" y=\"203\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#ea580c\"/><text x=\"336\" y=\"212\" font-size=\"11\" fill=\"#374151\">Car Loans · £6,500</text><rect x=\"16\" y=\"223\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#d97706\"/><text x=\"32\" y=\"232\" font-size=\"11\" fill=\"#374151\">Student Loans · £42,000</text><rect x=\"320\" y=\"223\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#db2777\"/><text x=\"336\" y=\"232\" font-size=\"11\" fill=\"#374151\">Credit Card Debt · £3,200</text><rect x=\"16\" y=\"243\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#9333ea\"/><text x=\"32\" y=\"252\" font-size=\"11\" fill=\"#374151\">Other Debts · £1,500</text></svg>"},"credits_used":5,"credits_remaining":null}},"debt_free_saver_euros":{"summary":"Debt-free saver (euros)","value":{"tool":"net-worth-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Assets","value":"€190,000"},{"metric":"Total Liabilities","value":"€0"},{"metric":"Net Worth","value":"€190,000"},{"metric":"Liquid Assets (cash + investments)","value":"€178,000"},{"metric":"Debt-to-Asset Ratio","value":"0.0%"},{"metric":"Largest Asset","value":"Investments & Retirement (€150,000)"},{"metric":"Largest Liability","value":"None"},{"metric":"Position","value":"Positive"}],"breakdown":[{"category":"Cash & Savings","type":"Asset","amount":"€28,000","share-of-side":"14.7%"},{"category":"Investments & Retirement","type":"Asset","amount":"€150,000","share-of-side":"78.9%"},{"category":"Other Assets","type":"Asset","amount":"€12,000","share-of-side":"6.3%"}],"chartSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"640\" height=\"248\" viewBox=\"0 0 640 248\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\"><rect width=\"640\" height=\"248\" fill=\"#ffffff\"/><text x=\"16\" y=\"27\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Assets</text><text x=\"624\" y=\"27\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">€190,000</text><rect x=\"16\" y=\"34\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><rect x=\"16.00\" y=\"34\" width=\"89.60\" height=\"26\" fill=\"#2563eb\"/><rect x=\"105.60\" y=\"34\" width=\"480.00\" height=\"26\" fill=\"#0891b2\"/><rect x=\"585.60\" y=\"34\" width=\"38.40\" height=\"26\" fill=\"#7c3aed\"/><text x=\"16\" y=\"89\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Liabilities</text><text x=\"624\" y=\"89\" font-size=\"13\" text-anchor=\"end\" fill=\"#4b5563\">€0</text><rect x=\"16\" y=\"96\" width=\"608\" height=\"26\" rx=\"4\" fill=\"#f1f5f9\"/><line x1=\"16\" y1=\"144\" x2=\"624\" y2=\"144\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"16\" y=\"164\" font-size=\"13\" font-weight=\"600\" fill=\"#1f2937\">Net worth</text><text x=\"624\" y=\"166\" font-size=\"19\" font-weight=\"700\" text-anchor=\"end\" fill=\"#15803d\">€190,000</text><rect x=\"16\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#2563eb\"/><text x=\"32\" y=\"192\" font-size=\"11\" fill=\"#374151\">Cash &amp; Savings · €28,000</text><rect x=\"320\" y=\"183\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#0891b2\"/><text x=\"336\" y=\"192\" font-size=\"11\" fill=\"#374151\">Investments &amp; Retirement · €150,000</text><rect x=\"16\" y=\"203\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#7c3aed\"/><text x=\"32\" y=\"212\" font-size=\"11\" fill=\"#374151\">Other Assets · €12,000</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Category breakdown","items":{"type":"object","properties":{"category":{"type":"string","description":"Category"},"type":{"type":"string","description":"Type"},"amount":{"type":"string","description":"Amount"},"share-of-side":{"type":"string","description":"Share of side"}}},"x-iotools-columns":["category","type","amount","share-of-side"]},"chartSvg":{"type":"string","description":"Chart (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/npv-irr-calculator":{"post":{"operationId":"run_npv_irr_calculator","summary":"NPV & IRR Calculator","tags":["Calculators"],"description":"Calculate Net Present Value (NPV) and Internal Rate of Return (IRR) from an initial investment and a series of periodic cash flows. Also reports payback period and an accept/reject verdict.\n\n[Try NPV & IRR Calculator in your browser →](https://iotools.cloud/tool/npv-irr-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"initialInvestment":{"type":"number","description":"Initial Investment ($)","minimum":0},"cashFlows":{"type":"string","description":"Cash Flows (one per year)"},"discountRate":{"type":"number","description":"Discount Rate (%)","minimum":0,"maximum":30}},"required":["initialInvestment","cashFlows"]},"examples":{"100_investment_single_110_return_5_discount_rate":{"summary":"$100 investment, single $110 return, 5% discount rate","value":{"initialInvestment":"100","cashFlows":"110","discountRate":"5"}},"no_upfront_investment_irr_undefined":{"summary":"No upfront investment — IRR undefined","value":{"initialInvestment":"0","cashFlows":"5000\n5000","discountRate":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_investment_single_110_return_5_discount_rate":{"summary":"$100 investment, single $110 return, 5% discount rate","value":{"tool":"npv-irr-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Net Present Value","value":"4.76"},{"metric":"Internal Rate of Return","value":"10.00%"},{"metric":"Payback Period","value":"0.91 yrs"},{"metric":"Decision","value":"Accept"}]},"credits_used":5,"credits_remaining":null}},"no_upfront_investment_irr_undefined":{"summary":"No upfront investment — IRR undefined","value":{"tool":"npv-irr-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Net Present Value","value":"8,916.32"},{"metric":"Internal Rate of Return","value":"No real solution (cash flows never change sign)"},{"metric":"Payback Period","value":"0.00 yrs"},{"metric":"Decision","value":"Accept"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/nth-root-calculator":{"post":{"operationId":"run_nth_root_calculator","summary":"Nth Root Calculator","tags":["Calculators"],"description":"Calculate the nth root of any real number to up to 100 decimal places, with automatic exact-root detection and a verification step showing the rounded result raised back to the nth power.\n\n[Try Nth Root Calculator in your browser →](https://iotools.cloud/tool/nth-root-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"string","description":"Number"},"degree":{"type":"string","description":"Root degree (n)"},"precision":{"type":"number","description":"Decimal places","minimum":0,"maximum":100}},"required":["base","degree"]},"examples":{"cube_root_of_27_exact":{"summary":"Cube root of 27 (exact)","value":{"base":"27","degree":"3","precision":"20"}},"square_root_of_2_to_25_decimal_places":{"summary":"Square root of 2 to 25 decimal places","value":{"base":"2","degree":"2","precision":"25"}},"5th_root_of_32_odd_degree_negative_base":{"summary":"5th root of -32 (odd degree, negative base)","value":{"base":"-32","degree":"5","precision":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cube_root_of_27_exact":{"summary":"Cube root of 27 (exact)","value":{"tool":"nth-root-calculator","tool_version":"1.0.2","outputs":{"result":"3.00000000000000000000","exactRoot":"Yes — exact: 3^3 = 27.","verification":"3.00000000000000000000^3 = 27\nOriginal number: 27"},"credits_used":5,"credits_remaining":null}},"square_root_of_2_to_25_decimal_places":{"summary":"Square root of 2 to 25 decimal places","value":{"tool":"nth-root-calculator","tool_version":"1.0.2","outputs":{"result":"1.4142135623730950488016887","exactRoot":"No — irrational or non-terminating at this precision.","verification":"1.4142135623730950488016887^2 = 1.99999999999999999999999993152463327265781997170769\nOriginal number: 2"},"credits_used":5,"credits_remaining":null}},"5th_root_of_32_odd_degree_negative_base":{"summary":"5th root of -32 (odd degree, negative base)","value":{"tool":"nth-root-calculator","tool_version":"1.0.2","outputs":{"result":"-2.0000000000","exactRoot":"Yes — exact: 2^5 = 32.","verification":"-2.0000000000^5 = -32\nOriginal number: -32"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"exactRoot":{"type":"string","description":"Exact root?"},"verification":{"type":"string","description":"Verification"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/number-of-digits-calculator":{"post":{"operationId":"run_number_of_digits_calculator","summary":"Number of Digits Calculator","tags":["Calculators"],"description":"Count the digits of any integer, no matter how large, with a per-digit frequency breakdown, a palindrome check, and a scientific-notation rendering.\n\n[Try Number of Digits Calculator in your browser →](https://iotools.cloud/tool/number-of-digits-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Number"}},"required":["number"]},"examples":{"nine_digit_number":{"summary":"Nine-digit number","value":{"number":"123456789"}},"negative_palindrome":{"summary":"Negative palindrome","value":{"number":"-12321"}},"leading_zeros_are_stripped":{"summary":"Leading zeros are stripped","value":{"number":"000700"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nine_digit_number":{"summary":"Nine-digit number","value":{"tool":"number-of-digits-calculator","tool_version":"1.0.2","outputs":{"digitCount":"9","isPalindrome":"No","scientificNotation":"1.23456789 × 10⁸","frequencyTable":[{"digit":"0","count":"0"},{"digit":"1","count":"1"},{"digit":"2","count":"1"},{"digit":"3","count":"1"},{"digit":"4","count":"1"},{"digit":"5","count":"1"},{"digit":"6","count":"1"},{"digit":"7","count":"1"},{"digit":"8","count":"1"},{"digit":"9","count":"1"}]},"credits_used":5,"credits_remaining":null}},"negative_palindrome":{"summary":"Negative palindrome","value":{"tool":"number-of-digits-calculator","tool_version":"1.0.2","outputs":{"digitCount":"5","isPalindrome":"Yes","scientificNotation":"-1.2321 × 10⁴","frequencyTable":[{"digit":"0","count":"0"},{"digit":"1","count":"2"},{"digit":"2","count":"2"},{"digit":"3","count":"1"},{"digit":"4","count":"0"},{"digit":"5","count":"0"},{"digit":"6","count":"0"},{"digit":"7","count":"0"},{"digit":"8","count":"0"},{"digit":"9","count":"0"}]},"credits_used":5,"credits_remaining":null}},"leading_zeros_are_stripped":{"summary":"Leading zeros are stripped","value":{"tool":"number-of-digits-calculator","tool_version":"1.0.2","outputs":{"digitCount":"3","isPalindrome":"No","scientificNotation":"7 × 10²","frequencyTable":[{"digit":"0","count":"2"},{"digit":"1","count":"0"},{"digit":"2","count":"0"},{"digit":"3","count":"0"},{"digit":"4","count":"0"},{"digit":"5","count":"0"},{"digit":"6","count":"0"},{"digit":"7","count":"1"},{"digit":"8","count":"0"},{"digit":"9","count":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"digitCount":{"type":"string","description":"Digit count"},"isPalindrome":{"type":"string","description":"Palindrome?"},"scientificNotation":{"type":"string","description":"Scientific notation"},"frequencyTable":{"type":"array","description":"Digit frequency","items":{"type":"object","properties":{"digit":{"type":"string","description":"Digit"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["digit","count"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ohms-law-calculator":{"post":{"operationId":"run_ohms_law_calculator","summary":"Ohm's Law Calculator","tags":["Calculators"],"description":"Solve Ohm's Law and the power formulas for Voltage, Current, Resistance and Power. Pick which two you know (V+I, V+R, V+P, I+R, I+P, or R+P) and it computes the other two, with the formulas and calculation steps shown.\n\n[Try Ohm's Law Calculator in your browser →](https://iotools.cloud/tool/ohms-law-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"knownPair":{"enum":["vi","vr","vp","ir","ip","rp"],"description":"Known Values"},"voltage":{"type":"number","description":"Voltage (V)","minimum":0},"current":{"type":"number","description":"Current (I)","minimum":0},"resistance":{"type":"number","description":"Resistance (R)","minimum":0},"power":{"type":"number","description":"Power (P)","minimum":0}},"required":[]},"examples":{"voltage_current_known_12v_2a":{"summary":"Voltage & Current known (12V, 2A)","value":{"knownPair":"vi","voltage":"12","current":"2","resistance":"6","power":"24"}},"voltage_resistance_known_12v_6":{"summary":"Voltage & Resistance known (12V, 6Ω)","value":{"knownPair":"vr","voltage":"12","current":"2","resistance":"6","power":"24"}},"voltage_power_known_12v_24w":{"summary":"Voltage & Power known (12V, 24W)","value":{"knownPair":"vp","voltage":"12","current":"2","resistance":"6","power":"24"}},"current_resistance_known_2a_6":{"summary":"Current & Resistance known (2A, 6Ω)","value":{"knownPair":"ir","voltage":"12","current":"2","resistance":"6","power":"24"}},"current_power_known_2a_24w":{"summary":"Current & Power known (2A, 24W)","value":{"knownPair":"ip","voltage":"12","current":"2","resistance":"6","power":"24"}},"resistance_power_known_6_24w":{"summary":"Resistance & Power known (6Ω, 24W)","value":{"knownPair":"rp","voltage":"12","current":"2","resistance":"6","power":"24"}},"decimal_values_current_resistance_known_0_5a_100":{"summary":"Decimal values — Current & Resistance known (0.5A, 100Ω)","value":{"knownPair":"ir","voltage":"12","current":"0.5","resistance":"100","power":"24"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"voltage_current_known_12v_2a":{"summary":"Voltage & Current known (12V, 2A)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Voltage (V), Current (I)\nSolved: Resistance (R), Power (P)\n\nFormulas:\n  R = V ÷ I\n  P = V × I\n\nSteps:\n  R = 12 V ÷ 2 A = 6 Ω\n  P = 12 V × 2 A = 24 W"},"credits_used":5,"credits_remaining":null}},"voltage_resistance_known_12v_6":{"summary":"Voltage & Resistance known (12V, 6Ω)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Voltage (V), Resistance (R)\nSolved: Current (I), Power (P)\n\nFormulas:\n  I = V ÷ R\n  P = V² ÷ R\n\nSteps:\n  I = 12 V ÷ 6 Ω = 2 A\n  P = 12 V² ÷ 6 Ω = 24 W"},"credits_used":5,"credits_remaining":null}},"voltage_power_known_12v_24w":{"summary":"Voltage & Power known (12V, 24W)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Voltage (V), Power (P)\nSolved: Current (I), Resistance (R)\n\nFormulas:\n  I = P ÷ V\n  R = V² ÷ P\n\nSteps:\n  I = 24 W ÷ 12 V = 2 A\n  R = 12 V² ÷ 24 W = 6 Ω"},"credits_used":5,"credits_remaining":null}},"current_resistance_known_2a_6":{"summary":"Current & Resistance known (2A, 6Ω)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Current (I), Resistance (R)\nSolved: Voltage (V), Power (P)\n\nFormulas:\n  V = I × R\n  P = I² × R\n\nSteps:\n  V = 2 A × 6 Ω = 12 V\n  P = 2 A² × 6 Ω = 24 W"},"credits_used":5,"credits_remaining":null}},"current_power_known_2a_24w":{"summary":"Current & Power known (2A, 24W)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Current (I), Power (P)\nSolved: Voltage (V), Resistance (R)\n\nFormulas:\n  V = P ÷ I\n  R = P ÷ I²\n\nSteps:\n  V = 24 W ÷ 2 A = 12 V\n  R = 24 W ÷ 2 A² = 6 Ω"},"credits_used":5,"credits_remaining":null}},"resistance_power_known_6_24w":{"summary":"Resistance & Power known (6Ω, 24W)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"12 V"},{"quantity":"Current (I)","value":"2 A"},{"quantity":"Resistance (R)","value":"6 Ω"},{"quantity":"Power (P)","value":"24 W"}],"formulas":"Known: Resistance (R), Power (P)\nSolved: Voltage (V), Current (I)\n\nFormulas:\n  V = √(P × R)\n  I = √(P ÷ R)\n\nSteps:\n  V = √(24 W × 6 Ω) = 12 V\n  I = √(24 W ÷ 6 Ω) = 2 A"},"credits_used":5,"credits_remaining":null}},"decimal_values_current_resistance_known_0_5a_100":{"summary":"Decimal values — Current & Resistance known (0.5A, 100Ω)","value":{"tool":"ohms-law-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Voltage (V)","value":"50 V"},{"quantity":"Current (I)","value":"0.5 A"},{"quantity":"Resistance (R)","value":"100 Ω"},{"quantity":"Power (P)","value":"25 W"}],"formulas":"Known: Current (I), Resistance (R)\nSolved: Voltage (V), Power (P)\n\nFormulas:\n  V = I × R\n  P = I² × R\n\nSteps:\n  V = 0.5 A × 100 Ω = 50 V\n  P = 0.5 A² × 100 Ω = 25 W"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"formulas":{"type":"string","description":"Formulas & Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/one-rep-max-calculator":{"post":{"operationId":"run_one_rep_max_calculator","summary":"One-Rep Max Calculator","tags":["Calculators"],"description":"Estimate your one-rep max (1RM) from a submaximal weight and rep count, averaged across five formulas (Epley, Brzycki, Lombardi, O'Conner, Wathan). Includes a percentage-of-1RM training chart and a warm-up set progression.\n\n[Try One-Rep Max Calculator in your browser →](https://iotools.cloud/tool/one-rep-max-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["kg","lb"],"description":"Unit"},"weight":{"type":"number","description":"Weight Lifted","minimum":1,"maximum":2000},"reps":{"type":"number","description":"Reps Performed","minimum":1,"maximum":15}},"required":["weight","reps"]},"examples":{"100_kg_x_5_reps":{"summary":"100 kg x 5 reps","value":{"unit":"kg","weight":"100","reps":"5"}},"225_lb_x_3_reps":{"summary":"225 lb x 3 reps","value":{"unit":"lb","weight":"225","reps":"3"}},"60_kg_x_10_reps":{"summary":"60 kg x 10 reps","value":{"unit":"kg","weight":"60","reps":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_kg_x_5_reps":{"summary":"100 kg x 5 reps","value":{"tool":"one-rep-max-calculator","tool_version":"1.0.2","outputs":{"formulaTable":[{"formula":"Epley","estimated-1rm":"117 kg"},{"formula":"Brzycki","estimated-1rm":"113 kg"},{"formula":"Lombardi","estimated-1rm":"117 kg"},{"formula":"O'Conner","estimated-1rm":"113 kg"},{"formula":"Wathan","estimated-1rm":"117 kg"},{"formula":"Average","estimated-1rm":"115 kg"}],"percentTable":[{"of-1rm":"100%","weight":"115 kg","est-reps":"1"},{"of-1rm":"95%","weight":"109 kg","est-reps":"2"},{"of-1rm":"90%","weight":"104 kg","est-reps":"4"},{"of-1rm":"85%","weight":"98 kg","est-reps":"6"},{"of-1rm":"80%","weight":"92 kg","est-reps":"8"},{"of-1rm":"75%","weight":"86 kg","est-reps":"10"},{"of-1rm":"70%","weight":"81 kg","est-reps":"12"},{"of-1rm":"65%","weight":"75 kg","est-reps":"15"},{"of-1rm":"60%","weight":"69 kg","est-reps":"17"},{"of-1rm":"55%","weight":"63 kg","est-reps":"20"},{"of-1rm":"50%","weight":"58 kg","est-reps":"25"}],"warmupTable":[{"set":"1 (Bar warm-up)","of-1rm":"30%","weight":"35 kg","reps":"8-10"},{"set":"2","of-1rm":"50%","weight":"58 kg","reps":"5"},{"set":"3","of-1rm":"70%","weight":"81 kg","reps":"3"},{"set":"4","of-1rm":"85%","weight":"98 kg","reps":"2"},{"set":"5 (Final primer)","of-1rm":"90%","weight":"104 kg","reps":"1"}]},"credits_used":5,"credits_remaining":null}},"225_lb_x_3_reps":{"summary":"225 lb x 3 reps","value":{"tool":"one-rep-max-calculator","tool_version":"1.0.2","outputs":{"formulaTable":[{"formula":"Epley","estimated-1rm":"247.5 lb"},{"formula":"Brzycki","estimated-1rm":"237.5 lb"},{"formula":"Lombardi","estimated-1rm":"250 lb"},{"formula":"O'Conner","estimated-1rm":"242.5 lb"},{"formula":"Wathan","estimated-1rm":"245 lb"},{"formula":"Average","estimated-1rm":"245 lb"}],"percentTable":[{"of-1rm":"100%","weight":"245 lb","est-reps":"1"},{"of-1rm":"95%","weight":"232.5 lb","est-reps":"2"},{"of-1rm":"90%","weight":"220 lb","est-reps":"4"},{"of-1rm":"85%","weight":"207.5 lb","est-reps":"6"},{"of-1rm":"80%","weight":"195 lb","est-reps":"8"},{"of-1rm":"75%","weight":"182.5 lb","est-reps":"10"},{"of-1rm":"70%","weight":"172.5 lb","est-reps":"12"},{"of-1rm":"65%","weight":"160 lb","est-reps":"15"},{"of-1rm":"60%","weight":"147.5 lb","est-reps":"17"},{"of-1rm":"55%","weight":"135 lb","est-reps":"20"},{"of-1rm":"50%","weight":"122.5 lb","est-reps":"25"}],"warmupTable":[{"set":"1 (Bar warm-up)","of-1rm":"30%","weight":"72.5 lb","reps":"8-10"},{"set":"2","of-1rm":"50%","weight":"122.5 lb","reps":"5"},{"set":"3","of-1rm":"70%","weight":"172.5 lb","reps":"3"},{"set":"4","of-1rm":"85%","weight":"207.5 lb","reps":"2"},{"set":"5 (Final primer)","of-1rm":"90%","weight":"220 lb","reps":"1"}]},"credits_used":5,"credits_remaining":null}},"60_kg_x_10_reps":{"summary":"60 kg x 10 reps","value":{"tool":"one-rep-max-calculator","tool_version":"1.0.2","outputs":{"formulaTable":[{"formula":"Epley","estimated-1rm":"80 kg"},{"formula":"Brzycki","estimated-1rm":"80 kg"},{"formula":"Lombardi","estimated-1rm":"76 kg"},{"formula":"O'Conner","estimated-1rm":"75 kg"},{"formula":"Wathan","estimated-1rm":"81 kg"},{"formula":"Average","estimated-1rm":"78 kg"}],"percentTable":[{"of-1rm":"100%","weight":"78 kg","est-reps":"1"},{"of-1rm":"95%","weight":"74 kg","est-reps":"2"},{"of-1rm":"90%","weight":"70 kg","est-reps":"4"},{"of-1rm":"85%","weight":"67 kg","est-reps":"6"},{"of-1rm":"80%","weight":"63 kg","est-reps":"8"},{"of-1rm":"75%","weight":"59 kg","est-reps":"10"},{"of-1rm":"70%","weight":"55 kg","est-reps":"12"},{"of-1rm":"65%","weight":"51 kg","est-reps":"15"},{"of-1rm":"60%","weight":"47 kg","est-reps":"17"},{"of-1rm":"55%","weight":"43 kg","est-reps":"20"},{"of-1rm":"50%","weight":"39 kg","est-reps":"25"}],"warmupTable":[{"set":"1 (Bar warm-up)","of-1rm":"30%","weight":"23 kg","reps":"8-10"},{"set":"2","of-1rm":"50%","weight":"39 kg","reps":"5"},{"set":"3","of-1rm":"70%","weight":"55 kg","reps":"3"},{"set":"4","of-1rm":"85%","weight":"67 kg","reps":"2"},{"set":"5 (Final primer)","of-1rm":"90%","weight":"70 kg","reps":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"formulaTable":{"type":"array","description":"Estimated 1-Rep Max by Formula","items":{"type":"object","properties":{"formula":{"type":"string","description":"Formula"},"estimated-1rm":{"type":"string","description":"Estimated 1RM"}}},"x-iotools-columns":["formula","estimated-1rm"]},"percentTable":{"type":"array","description":"Percentage of 1RM Rep Chart","items":{"type":"object","properties":{"of-1rm":{"type":"string","description":"% of 1RM"},"weight":{"type":"string","description":"Weight"},"est-reps":{"type":"string","description":"Est. Reps"}}},"x-iotools-columns":["of-1rm","weight","est-reps"]},"warmupTable":{"type":"array","description":"Warm-up Set Progression","items":{"type":"object","properties":{"set":{"type":"string","description":"Set"},"of-1rm":{"type":"string","description":"% of 1RM"},"weight":{"type":"string","description":"Weight"},"reps":{"type":"string","description":"Reps"}}},"x-iotools-columns":["set","of-1rm","weight","reps"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/order-of-operations-calculator-pemdas":{"post":{"operationId":"run_order_of_operations_calculator_pemdas","summary":"Order of Operations Calculator (PEMDAS)","tags":["Calculators"],"description":"Evaluate arithmetic expressions using standard PEMDAS precedence — Parentheses, Exponents, Multiplication/Division, Addition/Subtraction — with a numbered step-by-step breakdown of exactly which operation is resolved at each stage.\n\n[Try Order of Operations Calculator (PEMDAS) in your browser →](https://iotools.cloud/tool/order-of-operations-calculator-pemdas/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string","description":"Expression"},"precision":{"type":"number","description":"Decimal places","minimum":0,"maximum":10}},"required":["expression"]},"examples":{"mixed_operators_and_parentheses":{"summary":"Mixed operators and parentheses","value":{"expression":"3 + 4 * 2 / (1 - 5)^2","precision":"6"}},"right_associative_exponents_with_a_negative_base":{"summary":"Right-associative exponents with a negative base","value":{"expression":"-3^2","precision":"6"}},"single_number_nothing_to_simplify":{"summary":"Single number, nothing to simplify","value":{"expression":"42","precision":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_operators_and_parentheses":{"summary":"Mixed operators and parentheses","value":{"tool":"order-of-operations-calculator-pemdas","tool_version":"1.0.2","outputs":{"result":"3.5","isInteger":"No","steps":"3 + 4 * 2 / (1 - 5)^2 = 3.5\n\nStep 1: 4 × 2 = 8\nStep 2: 1 - 5 = -4\nStep 3: (-4) ^ 2 = 16\nStep 4: 8 ÷ 16 = 0.5\nStep 5: 3 + 0.5 = 3.5"},"credits_used":5,"credits_remaining":null}},"right_associative_exponents_with_a_negative_base":{"summary":"Right-associative exponents with a negative base","value":{"tool":"order-of-operations-calculator-pemdas","tool_version":"1.0.2","outputs":{"result":"-9","isInteger":"Yes","steps":"-3^2 = -9\n\nStep 1: 3 ^ 2 = 9\nStep 2: Negate: -(9) = -9"},"credits_used":5,"credits_remaining":null}},"single_number_nothing_to_simplify":{"summary":"Single number, nothing to simplify","value":{"tool":"order-of-operations-calculator-pemdas","tool_version":"1.0.2","outputs":{"result":"42","isInteger":"Yes","steps":"42 = 42\n\nNothing to simplify — 42 is already a single value."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"isInteger":{"type":"string","description":"Whole Number?"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/paint-coverage-calculator":{"post":{"operationId":"run_paint_coverage_calculator","summary":"Paint Coverage Calculator","tags":["Calculators"],"description":"Estimate how much paint you need to cover a room's walls (and optionally ceiling) — accounting for door/window deductions, number of coats and a waste allowance — in liters or gallons, plus how many cans to buy.\n\n[Try Paint Coverage Calculator in your browser →](https://iotools.cloud/tool/paint-coverage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"roomLength":{"type":"number","description":"Room length","minimum":0},"roomWidth":{"type":"number","description":"Room width","minimum":0},"roomHeight":{"type":"number","description":"Ceiling height","minimum":0},"includeCeiling":{"type":"boolean","description":"Include ceiling in paintable area"},"doorCount":{"type":"number","description":"Doors","minimum":0,"maximum":10},"windowCount":{"type":"number","description":"Windows","minimum":0,"maximum":10},"finishPreset":{"enum":["matte","eggshell","satin","semigloss","gloss","primer","custom"],"description":"Finish"},"coverageRate":{"type":"number","description":"Custom coverage rate","minimum":0},"coats":{"type":"number","description":"Coats","minimum":1,"maximum":10},"canSize":{"type":"number","description":"Can size","minimum":0},"wasteFactor":{"type":"number","description":"Waste factor %","minimum":0,"maximum":30}},"required":["roomLength","roomWidth","roomHeight"]},"examples":{"metric_5m_x_4m_room_matte_finish_2_coats":{"summary":"Metric — 5m x 4m room, matte finish, 2 coats","value":{"unitSystem":"metric","roomLength":"5","roomWidth":"4","roomHeight":"2.5","includeCeiling":"","doorCount":"1","windowCount":"1","finishPreset":"matte","coverageRate":"","coats":"2","canSize":"5","wasteFactor":"10"}},"imperial_16ft_x_13ft_room_with_ceiling_satin_finish":{"summary":"Imperial — 16ft x 13ft room with ceiling, satin finish","value":{"unitSystem":"imperial","roomLength":"16","roomWidth":"13","roomHeight":"8","includeCeiling":"true","doorCount":"2","windowCount":"3","finishPreset":"satin","coverageRate":"","coats":"1","canSize":"","wasteFactor":"5"}},"metric_custom_coverage_rate_3_coats":{"summary":"Metric — custom coverage rate, 3 coats","value":{"unitSystem":"metric","roomLength":"6","roomWidth":"3.5","roomHeight":"2.4","includeCeiling":"true","doorCount":"2","windowCount":"2","finishPreset":"custom","coverageRate":"9","coats":"3","canSize":"4","wasteFactor":"15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_5m_x_4m_room_matte_finish_2_coats":{"summary":"Metric — 5m x 4m room, matte finish, 2 coats","value":{"tool":"paint-coverage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total wall area","value":"45.00 m²"},{"metric":"Ceiling area","value":"Not included"},{"metric":"Door / window deductions","value":"-3.24 m² (1 door, 1 window)"},{"metric":"Net paintable area","value":"41.76 m²"},{"metric":"Total coated area","value":"83.52 m² (2 coats)"},{"metric":"With waste factor","value":"91.87 m² (+10%)"},{"metric":"Paint required","value":"7.66 L"},{"metric":"Cans to buy","value":"2 cans"}],"summary":"41.76 m² net · 2 coats · 7.66 L paint · 2 × 5.00 L cans"},"credits_used":5,"credits_remaining":null}},"imperial_16ft_x_13ft_room_with_ceiling_satin_finish":{"summary":"Imperial — 16ft x 13ft room with ceiling, satin finish","value":{"tool":"paint-coverage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total wall area","value":"464.0 sq ft"},{"metric":"Ceiling area","value":"208.0 sq ft"},{"metric":"Door / window deductions","value":"-85.3 sq ft (2 doors, 3 windows)"},{"metric":"Net paintable area","value":"586.7 sq ft"},{"metric":"Total coated area","value":"586.7 sq ft (1 coat)"},{"metric":"With waste factor","value":"616.1 sq ft (+5%)"},{"metric":"Paint required","value":"1.51 gal"},{"metric":"Cans to buy","value":"2 cans"}],"summary":"586.7 sq ft net · 1 coat · 1.51 gal paint · 2 × 1.00 gal cans"},"credits_used":5,"credits_remaining":null}},"metric_custom_coverage_rate_3_coats":{"summary":"Metric — custom coverage rate, 3 coats","value":{"tool":"paint-coverage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total wall area","value":"45.60 m²"},{"metric":"Ceiling area","value":"21.00 m²"},{"metric":"Door / window deductions","value":"-6.48 m² (2 doors, 2 windows)"},{"metric":"Net paintable area","value":"60.12 m²"},{"metric":"Total coated area","value":"180.36 m² (3 coats)"},{"metric":"With waste factor","value":"207.41 m² (+15%)"},{"metric":"Paint required","value":"23.05 L"},{"metric":"Cans to buy","value":"6 cans"}],"summary":"60.12 m² net · 3 coats · 23.05 L paint · 6 × 4.00 L cans"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/parabola-calculator":{"post":{"operationId":"run_parabola_calculator","summary":"Parabola Calculator","tags":["Calculators"],"description":"Analyze y = ax² + bx + c: vertex, axis of symmetry, opening direction, x/y-intercepts, focus, and directrix, with a plotted diagram and step-by-step math.\n\n[Try Parabola Calculator in your browser →](https://iotools.cloud/tool/parabola-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"a"},"coeffB":{"type":"number","description":"b"},"coeffC":{"type":"number","description":"c"}},"required":["coeffA","coeffB","coeffC"]},"examples":{"opens_upward_two_real_roots_y_x_4x_3":{"summary":"Opens upward, two real roots (y = x² − 4x + 3)","value":{"coeffA":"1","coeffB":"-4","coeffC":"3"}},"repeated_root_vertex_on_the_x_axis_y_x_4x_4":{"summary":"Repeated root — vertex on the x-axis (y = x² − 4x + 4)","value":{"coeffA":"1","coeffB":"-4","coeffC":"4"}},"opens_downward_no_real_roots_y_x_2x_5":{"summary":"Opens downward, no real roots (y = −x² + 2x − 5)","value":{"coeffA":"-1","coeffB":"2","coeffC":"-5"}},"non_unit_leading_coefficient_y_2x_4x_6":{"summary":"Non-unit leading coefficient (y = 2x² + 4x − 6)","value":{"coeffA":"2","coeffB":"4","coeffC":"-6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"opens_upward_two_real_roots_y_x_4x_3":{"summary":"Opens upward, two real roots (y = x² − 4x + 3)","value":{"tool":"parabola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"parabola-svg\" viewBox=\"-0.45 -3.51 4.63 5.27\"><line x1=\"-0.45\" y1=\"0\" x2=\"4.18\" y2=\"0\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"0\" y1=\"-3.51\" x2=\"0\" y2=\"1.76\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-0.45\" y1=\"1.25\" x2=\"4.18\" y2=\"1.25\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"2.00\" y1=\"-3.51\" x2=\"2.00\" y2=\"1.76\" stroke=\"#999999\" stroke-width=\"1\" stroke-dasharray=\"4 3\"/><path d=\"M 0.00 -3.00 L 0.05 -2.82 L 0.09 -2.64 L 0.14 -2.46 L 0.19 -2.29 L 0.23 -2.12 L 0.28 -1.96 L 0.33 -1.80 L 0.37 -1.65 L 0.42 -1.50 L 0.47 -1.35 L 0.51 -1.21 L 0.56 -1.07 L 0.61 -0.94 L 0.65 -0.81 L 0.70 -0.69 L 0.75 -0.57 L 0.79 -0.46 L 0.84 -0.35 L 0.89 -0.24 L 0.93 -0.14 L 0.98 -0.04 L 1.03 0.05 L 1.07 0.14 L 1.12 0.22 L 1.17 0.30 L 1.21 0.38 L 1.26 0.45 L 1.31 0.52 L 1.35 0.58 L 1.40 0.64 L 1.45 0.69 L 1.49 0.74 L 1.54 0.79 L 1.59 0.83 L 1.63 0.87 L 1.68 0.90 L 1.73 0.92 L 1.77 0.95 L 1.82 0.97 L 1.87 0.98 L 1.91 0.99 L 1.96 1.00 L 2.01 1.00 L 2.05 1.00 L 2.10 0.99 L 2.15 0.98 L 2.19 0.96 L 2.24 0.94 L 2.29 0.92 L 2.33 0.89 L 2.38 0.86 L 2.43 0.82 L 2.47 0.78 L 2.52 0.73 L 2.57 0.68 L 2.61 0.62 L 2.66 0.57 L 2.71 0.50 L 2.75 0.43 L 2.80 0.36 L 2.85 0.28 L 2.89 0.20 L 2.94 0.12 L 2.99 0.03 L 3.03 -0.07 L 3.08 -0.16 L 3.13 -0.27 L 3.17 -0.37 L 3.22 -0.49 L 3.27 -0.60 L 3.31 -0.72 L 3.36 -0.85 L 3.41 -0.98 L 3.45 -1.11 L 3.50 -1.25 L 3.55 -1.39 L 3.59 -1.53 L 3.64 -1.69 L 3.69 -1.84 L 3.73 -2.00\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"2.00\" cy=\"1.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"2.00\" y=\"0.76\" font-size=\"10.0\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">Vertex</text><circle cx=\"3.00\" cy=\"0\" r=\"4\" fill=\"#ff6b6b\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"0\" r=\"4\" fill=\"#ff6b6b\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"0\" cy=\"-3.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"2.00\" cy=\"0.75\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"2.14\" y=\"0.75\" font-size=\"10.0\" fill=\"#8b5cf6\" font-weight=\"600\">Focus</text></svg>","summary":[{"property":"Opens","value":"Upward (a > 0)"},{"property":"Vertex (h, k)","value":"(2, -1)"},{"property":"Axis of symmetry","value":"x = 2"},{"property":"Y-intercept","value":"(0, 3)"},{"property":"X-intercepts","value":"(3, 0) and (1, 0)"},{"property":"Discriminant (Δ)","value":"4"},{"property":"Focus","value":"(2, -0.75)"},{"property":"Directrix","value":"y = -1.25"}],"steps":"y = 1x² - 4x + 3  (a = 1, b = -4, c = 3)\nOpens upward (a > 0)\nVertex: h = −b / (2a) = 4 / 2 = 2\n        k = c − b² / (4a) = 3 − 16 / 4 = -1\nVertex (h, k) = (2, -1)\nAxis of symmetry: x = 2\nY-intercept: (0, 3)\nDiscriminant: Δ = b² − 4ac = 4\nΔ > 0 → two x-intercepts: x₁ = 3, x₂ = 1\nFocus: (h, k + 1/(4a)) = (2, -1 + 1/4) = (2, -0.75)\nDirectrix: y = k − 1/(4a) = -1 − 1/4 = -1.25"},"credits_used":5,"credits_remaining":null}},"repeated_root_vertex_on_the_x_axis_y_x_4x_4":{"summary":"Repeated root — vertex on the x-axis (y = x² − 4x + 4)","value":{"tool":"parabola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"parabola-svg\" viewBox=\"-0.45 -4.51 4.63 5.27\"><line x1=\"-0.45\" y1=\"0\" x2=\"4.18\" y2=\"0\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"0\" y1=\"-4.51\" x2=\"0\" y2=\"0.76\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-0.45\" y1=\"0.25\" x2=\"4.18\" y2=\"0.25\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"2.00\" y1=\"-4.51\" x2=\"2.00\" y2=\"0.76\" stroke=\"#999999\" stroke-width=\"1\" stroke-dasharray=\"4 3\"/><path d=\"M 0.00 -4.00 L 0.05 -3.82 L 0.09 -3.64 L 0.14 -3.46 L 0.19 -3.29 L 0.23 -3.12 L 0.28 -2.96 L 0.33 -2.80 L 0.37 -2.65 L 0.42 -2.50 L 0.47 -2.35 L 0.51 -2.21 L 0.56 -2.07 L 0.61 -1.94 L 0.65 -1.81 L 0.70 -1.69 L 0.75 -1.57 L 0.79 -1.46 L 0.84 -1.35 L 0.89 -1.24 L 0.93 -1.14 L 0.98 -1.04 L 1.03 -0.95 L 1.07 -0.86 L 1.12 -0.78 L 1.17 -0.70 L 1.21 -0.62 L 1.26 -0.55 L 1.31 -0.48 L 1.35 -0.42 L 1.40 -0.36 L 1.45 -0.31 L 1.49 -0.26 L 1.54 -0.21 L 1.59 -0.17 L 1.63 -0.13 L 1.68 -0.10 L 1.73 -0.08 L 1.77 -0.05 L 1.82 -0.03 L 1.87 -0.02 L 1.91 -0.01 L 1.96 -0.00 L 2.01 -0.00 L 2.05 -0.00 L 2.10 -0.01 L 2.15 -0.02 L 2.19 -0.04 L 2.24 -0.06 L 2.29 -0.08 L 2.33 -0.11 L 2.38 -0.14 L 2.43 -0.18 L 2.47 -0.22 L 2.52 -0.27 L 2.57 -0.32 L 2.61 -0.38 L 2.66 -0.43 L 2.71 -0.50 L 2.75 -0.57 L 2.80 -0.64 L 2.85 -0.72 L 2.89 -0.80 L 2.94 -0.88 L 2.99 -0.97 L 3.03 -1.07 L 3.08 -1.16 L 3.13 -1.27 L 3.17 -1.37 L 3.22 -1.49 L 3.27 -1.60 L 3.31 -1.72 L 3.36 -1.85 L 3.41 -1.98 L 3.45 -2.11 L 3.50 -2.25 L 3.55 -2.39 L 3.59 -2.53 L 3.64 -2.69 L 3.69 -2.84 L 3.73 -3.00\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"2.00\" cy=\"0.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"2.00\" y=\"-0.24\" font-size=\"10.0\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">Vertex</text><circle cx=\"2.00\" cy=\"0\" r=\"4\" fill=\"#ff6b6b\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"0\" cy=\"-4.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"2.00\" cy=\"-0.25\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"2.14\" y=\"-0.25\" font-size=\"10.0\" fill=\"#8b5cf6\" font-weight=\"600\">Focus</text></svg>","summary":[{"property":"Opens","value":"Upward (a > 0)"},{"property":"Vertex (h, k)","value":"(2, 0)"},{"property":"Axis of symmetry","value":"x = 2"},{"property":"Y-intercept","value":"(0, 4)"},{"property":"X-intercepts","value":"(2, 0) (double root)"},{"property":"Discriminant (Δ)","value":"0"},{"property":"Focus","value":"(2, 0.25)"},{"property":"Directrix","value":"y = -0.25"}],"steps":"y = 1x² - 4x + 4  (a = 1, b = -4, c = 4)\nOpens upward (a > 0)\nVertex: h = −b / (2a) = 4 / 2 = 2\n        k = c − b² / (4a) = 4 − 16 / 4 = 0\nVertex (h, k) = (2, 0)\nAxis of symmetry: x = 2\nY-intercept: (0, 4)\nDiscriminant: Δ = b² − 4ac = 0\nΔ = 0 → the curve touches the x-axis once: x = 2\nFocus: (h, k + 1/(4a)) = (2, 0 + 1/4) = (2, 0.25)\nDirectrix: y = k − 1/(4a) = 0 − 1/4 = -0.25"},"credits_used":5,"credits_remaining":null}},"opens_downward_no_real_roots_y_x_2x_5":{"summary":"Opens downward, no real roots (y = −x² + 2x − 5)","value":{"tool":"parabola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"parabola-svg\" viewBox=\"-3.30 2.28 8.59 15.19\"><line x1=\"0\" y1=\"2.28\" x2=\"0\" y2=\"17.47\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-3.30\" y1=\"3.75\" x2=\"5.30\" y2=\"3.75\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"1.00\" y1=\"2.28\" x2=\"1.00\" y2=\"17.47\" stroke=\"#999999\" stroke-width=\"1\" stroke-dasharray=\"4 3\"/><path d=\"M -2.46 16.00 L -2.38 15.41 L -2.29 14.83 L -2.20 14.27 L -2.12 13.72 L -2.03 13.19 L -1.94 12.67 L -1.86 12.17 L -1.77 11.68 L -1.68 11.21 L -1.60 10.75 L -1.51 10.31 L -1.42 9.88 L -1.34 9.47 L -1.25 9.07 L -1.17 8.69 L -1.08 8.32 L -0.99 7.97 L -0.91 7.63 L -0.82 7.31 L -0.73 7.00 L -0.65 6.71 L -0.56 6.43 L -0.47 6.17 L -0.39 5.92 L -0.30 5.69 L -0.21 5.47 L -0.13 5.27 L -0.04 5.08 L 0.05 4.91 L 0.13 4.75 L 0.22 4.61 L 0.31 4.48 L 0.39 4.37 L 0.48 4.27 L 0.57 4.19 L 0.65 4.12 L 0.74 4.07 L 0.83 4.03 L 0.91 4.01 L 1.00 4.00 L 1.09 4.01 L 1.17 4.03 L 1.26 4.07 L 1.35 4.12 L 1.43 4.19 L 1.52 4.27 L 1.61 4.37 L 1.69 4.48 L 1.78 4.61 L 1.87 4.75 L 1.95 4.91 L 2.04 5.08 L 2.13 5.27 L 2.21 5.47 L 2.30 5.69 L 2.39 5.92 L 2.47 6.17 L 2.56 6.43 L 2.65 6.71 L 2.73 7.00 L 2.82 7.31 L 2.91 7.63 L 2.99 7.97 L 3.08 8.32 L 3.17 8.69 L 3.25 9.07 L 3.34 9.47 L 3.42 9.88 L 3.51 10.31 L 3.60 10.75 L 3.68 11.21 L 3.77 11.68 L 3.86 12.17 L 3.94 12.67 L 4.03 13.19 L 4.12 13.72 L 4.20 14.27 L 4.29 14.83 L 4.38 15.41 L 4.46 16.00\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"1.00\" cy=\"4.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"1.00\" y=\"3.32\" font-size=\"10.0\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">Vertex</text><circle cx=\"0\" cy=\"5.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"1.00\" cy=\"4.25\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"1.26\" y=\"4.25\" font-size=\"10.0\" fill=\"#8b5cf6\" font-weight=\"600\">Focus</text></svg>","summary":[{"property":"Opens","value":"Downward (a < 0)"},{"property":"Vertex (h, k)","value":"(1, -4)"},{"property":"Axis of symmetry","value":"x = 1"},{"property":"Y-intercept","value":"(0, -5)"},{"property":"X-intercepts","value":"None (curve doesn't cross the x-axis)"},{"property":"Discriminant (Δ)","value":"-16"},{"property":"Focus","value":"(1, -4.25)"},{"property":"Directrix","value":"y = -3.75"}],"steps":"y = -1x² + 2x - 5  (a = -1, b = 2, c = -5)\nOpens downward (a < 0)\nVertex: h = −b / (2a) = -2 / -2 = 1\n        k = c − b² / (4a) = -5 − 4 / -4 = -4\nVertex (h, k) = (1, -4)\nAxis of symmetry: x = 1\nY-intercept: (0, -5)\nDiscriminant: Δ = b² − 4ac = -16\nΔ < 0 → no real x-intercepts (complex roots x = 1 + 2i, x = 1 - 2i)\nFocus: (h, k + 1/(4a)) = (1, -4 + 1/-4) = (1, -4.25)\nDirectrix: y = k − 1/(4a) = -4 − 1/-4 = -3.75"},"credits_used":5,"credits_remaining":null}},"non_unit_leading_coefficient_y_2x_4x_6":{"summary":"Non-unit leading coefficient (y = 2x² + 4x − 6)","value":{"tool":"parabola-calculator","tool_version":"1.0.2","outputs":{"svgSource":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"parabola-svg\" viewBox=\"-5.30 -18.89 8.59 29.91\"><line x1=\"-5.30\" y1=\"0\" x2=\"3.30\" y2=\"0\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"0\" y1=\"-18.89\" x2=\"0\" y2=\"11.02\" stroke=\"#cccccc\" stroke-width=\"1\"/><line x1=\"-5.30\" y1=\"8.13\" x2=\"3.30\" y2=\"8.13\" stroke=\"#8b5cf6\" stroke-width=\"1.5\" stroke-dasharray=\"5 4\"/><line x1=\"-1.00\" y1=\"-18.89\" x2=\"-1.00\" y2=\"11.02\" stroke=\"#999999\" stroke-width=\"1\" stroke-dasharray=\"4 3\"/><path d=\"M -4.46 -16.00 L -4.38 -14.81 L -4.29 -13.66 L -4.20 -12.53 L -4.12 -11.44 L -4.03 -10.37 L -3.94 -9.34 L -3.86 -8.33 L -3.77 -7.36 L -3.68 -6.41 L -3.60 -5.50 L -3.51 -4.61 L -3.42 -3.76 L -3.34 -2.93 L -3.25 -2.14 L -3.17 -1.37 L -3.08 -0.64 L -2.99 0.07 L -2.91 0.74 L -2.82 1.39 L -2.73 2.00 L -2.65 2.59 L -2.56 3.14 L -2.47 3.67 L -2.39 4.16 L -2.30 4.63 L -2.21 5.06 L -2.13 5.46 L -2.04 5.84 L -1.95 6.18 L -1.87 6.50 L -1.78 6.79 L -1.69 7.04 L -1.61 7.26 L -1.52 7.46 L -1.43 7.63 L -1.35 7.76 L -1.26 7.87 L -1.17 7.94 L -1.09 7.99 L -1.00 8.00 L -0.91 7.99 L -0.83 7.94 L -0.74 7.87 L -0.65 7.76 L -0.57 7.63 L -0.48 7.46 L -0.39 7.26 L -0.31 7.04 L -0.22 6.78 L -0.13 6.50 L -0.05 6.19 L 0.04 5.84 L 0.13 5.46 L 0.21 5.06 L 0.30 4.63 L 0.39 4.16 L 0.47 3.67 L 0.56 3.14 L 0.65 2.59 L 0.73 2.00 L 0.82 1.39 L 0.91 0.74 L 0.99 0.07 L 1.08 -0.64 L 1.17 -1.37 L 1.25 -2.14 L 1.34 -2.93 L 1.42 -3.76 L 1.51 -4.61 L 1.60 -5.50 L 1.68 -6.42 L 1.77 -7.36 L 1.86 -8.33 L 1.94 -9.34 L 2.03 -10.38 L 2.12 -11.44 L 2.20 -12.53 L 2.29 -13.66 L 2.38 -14.82 L 2.46 -16.00\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2.5\"/><circle cx=\"-1.00\" cy=\"8.00\" r=\"4\" fill=\"#464aff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"-1.00\" y=\"6.65\" font-size=\"10.0\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">Vertex</text><circle cx=\"1.00\" cy=\"0\" r=\"4\" fill=\"#ff6b6b\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"-3.00\" cy=\"0\" r=\"4\" fill=\"#ff6b6b\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"0\" cy=\"6.00\" r=\"4\" fill=\"#666666\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><circle cx=\"-1.00\" cy=\"7.88\" r=\"4\" fill=\"#8b5cf6\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><text x=\"-0.74\" y=\"7.88\" font-size=\"10.0\" fill=\"#8b5cf6\" font-weight=\"600\">Focus</text></svg>","summary":[{"property":"Opens","value":"Upward (a > 0)"},{"property":"Vertex (h, k)","value":"(-1, -8)"},{"property":"Axis of symmetry","value":"x = -1"},{"property":"Y-intercept","value":"(0, -6)"},{"property":"X-intercepts","value":"(1, 0) and (-3, 0)"},{"property":"Discriminant (Δ)","value":"64"},{"property":"Focus","value":"(-1, -7.875)"},{"property":"Directrix","value":"y = -8.125"}],"steps":"y = 2x² + 4x - 6  (a = 2, b = 4, c = -6)\nOpens upward (a > 0)\nVertex: h = −b / (2a) = -4 / 4 = -1\n        k = c − b² / (4a) = -6 − 16 / 8 = -8\nVertex (h, k) = (-1, -8)\nAxis of symmetry: x = -1\nY-intercept: (0, -6)\nDiscriminant: Δ = b² − 4ac = 64\nΔ > 0 → two x-intercepts: x₁ = 1, x₂ = -3\nFocus: (h, k + 1/(4a)) = (-1, -8 + 1/8) = (-1, -7.875)\nDirectrix: y = k − 1/(4a) = -8 − 1/8 = -8.125"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"svgSource":{"type":"string","description":"Diagram (SVG source)"},"summary":{"type":"array","description":"Analysis","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/parallel-and-perpendicular-line-calculator":{"post":{"operationId":"run_parallel_and_perpendicular_line_calculator","summary":"Parallel and Perpendicular Line Calculator","tags":["Calculators"],"description":"Find the equations of the lines parallel and perpendicular to a reference line, through a given point. Returns slope, y-intercept, slope-intercept form, and standard form for both, with a step-by-step derivation.\n\n[Try Parallel and Perpendicular Line Calculator in your browser →](https://iotools.cloud/tool/parallel-and-perpendicular-line-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"slope":{"type":"number","description":"m (reference slope)"}},"required":["x","y","slope"]},"examples":{"point_1_3_reference_slope_2":{"summary":"Point (1, 3), reference slope 2","value":{"x":"1","y":"3","slope":"2"}},"negative_slope_point_2_4_reference_slope_3":{"summary":"Negative slope, point (-2, 4), reference slope -3","value":{"x":"-2","y":"4","slope":"-3"}},"horizontal_reference_line_slope_0_point_5_2":{"summary":"Horizontal reference line (slope 0), point (5, -2)","value":{"x":"5","y":"-2","slope":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"point_1_3_reference_slope_2":{"summary":"Point (1, 3), reference slope 2","value":{"tool":"parallel-and-perpendicular-line-calculator","tool_version":"1.0.2","outputs":{"parallelSlope":"2","parallelYIntercept":"1","parallelSlopeIntercept":"y = 2x + 1","parallelStandardForm":"2x - y = -1","perpendicularSlope":"-0.5","perpendicularYIntercept":"3.5","perpendicularSlopeIntercept":"y = -0.5x + 3.5","perpendicularStandardForm":"0.5x + y = 3.5","steps":"Point: (x, y) = (1, 3), reference slope m = 2\nParallel line: same slope as the reference line, m = 2\n  b = y − m·x = 3 − (2)(1) = 1\n  y = 2x + 1  (standard form: 2x - y = -1)\nPerpendicular line: slope = −1/m = −1/2 = -0.5\n  b = y − m_perp·x = 3 − (-0.5)(1) = 3.5\n  y = -0.5x + 3.5  (standard form: 0.5x + y = 3.5)"},"credits_used":5,"credits_remaining":null}},"negative_slope_point_2_4_reference_slope_3":{"summary":"Negative slope, point (-2, 4), reference slope -3","value":{"tool":"parallel-and-perpendicular-line-calculator","tool_version":"1.0.2","outputs":{"parallelSlope":"-3","parallelYIntercept":"-2","parallelSlopeIntercept":"y = -3x - 2","parallelStandardForm":"3x + y = -2","perpendicularSlope":"0.333333","perpendicularYIntercept":"4.66667","perpendicularSlopeIntercept":"y = 0.333333x + 4.66667","perpendicularStandardForm":"0.333333x - y = -4.66667","steps":"Point: (x, y) = (-2, 4), reference slope m = -3\nParallel line: same slope as the reference line, m = -3\n  b = y − m·x = 4 − (-3)(-2) = -2\n  y = -3x - 2  (standard form: 3x + y = -2)\nPerpendicular line: slope = −1/m = −1/-3 = 0.333333\n  b = y − m_perp·x = 4 − (0.333333)(-2) = 4.66667\n  y = 0.333333x + 4.66667  (standard form: 0.333333x - y = -4.66667)"},"credits_used":5,"credits_remaining":null}},"horizontal_reference_line_slope_0_point_5_2":{"summary":"Horizontal reference line (slope 0), point (5, -2)","value":{"tool":"parallel-and-perpendicular-line-calculator","tool_version":"1.0.2","outputs":{"parallelSlope":"0","parallelYIntercept":"-2","parallelSlopeIntercept":"y = -2","parallelStandardForm":"y = -2","perpendicularSlope":"Undefined (vertical)","perpendicularYIntercept":"N/A (vertical line)","perpendicularSlopeIntercept":"x = 5","perpendicularStandardForm":"x - 5 = 0","steps":"Point: (x, y) = (5, -2), reference slope m = 0\nParallel line: same slope as the reference line, m = 0\n  b = y − m·x = -2 − (0)(5) = -2\n  y = -2  (standard form: y = -2)\nPerpendicular line: the reference slope is 0, so −1/m is undefined — the perpendicular line is vertical: x = 5"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"parallelSlopeIntercept":{"type":"string","description":"Parallel Line"},"parallelStandardForm":{"type":"string","description":"Parallel Line (Standard Form)"},"perpendicularSlopeIntercept":{"type":"string","description":"Perpendicular Line"},"perpendicularStandardForm":{"type":"string","description":"Perpendicular Line (Standard Form)"},"parallelSlope":{"type":"string","description":"Parallel Slope"},"parallelYIntercept":{"type":"string","description":"Parallel Y-Intercept"},"perpendicularSlope":{"type":"string","description":"Perpendicular Slope"},"perpendicularYIntercept":{"type":"string","description":"Perpendicular Y-Intercept"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/parallel-resistor-calculator":{"post":{"operationId":"run_parallel_resistor_calculator","summary":"Parallel Resistor Calculator","tags":["Calculators"],"description":"Calculate the equivalent resistance and per-resistor current share for two or more resistors wired in parallel.\n\n[Try Parallel Resistor Calculator in your browser →](https://iotools.cloud/tool/parallel-resistor-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resistors":{"type":"string","description":"Resistor Values"},"unit":{"enum":["ohm","kilohm","megaohm"],"description":"Unit"}},"required":["resistors"]},"examples":{"three_resistors_100_220_330_in_parallel":{"summary":"Three resistors — 100 Ω, 220 Ω, 330 Ω in parallel","value":{"resistors":"100\n220\n330","unit":"ohm"}},"two_equal_resistors_1_k_each":{"summary":"Two equal resistors — 1 kΩ each","value":{"resistors":"1, 1","unit":"kilohm"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"three_resistors_100_220_330_in_parallel":{"summary":"Three resistors — 100 Ω, 220 Ω, 330 Ω in parallel","value":{"tool":"parallel-resistor-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Resistor Count","value":"3"},{"metric":"Equivalent Resistance","value":"56.8966 Ω"},{"metric":"Total Conductance","value":"0.0175758 S"},{"metric":"Smallest Resistor","value":"100 Ω"},{"metric":"Largest Resistor","value":"330 Ω"},{"metric":"Equivalent < Smallest Resistor","value":"Yes"}],"distribution":[{"resistor":"R1","value":"100 Ω","conductance-s":"0.01","current-share":"56.8966%"},{"resistor":"R2","value":"220 Ω","conductance-s":"0.00454545","current-share":"25.8621%"},{"resistor":"R3","value":"330 Ω","conductance-s":"0.0030303","current-share":"17.2414%"}],"steps":"Formula: 1/R_eq = 1/R1 + 1/R2 + ... + 1/Rn  (equivalently, R_eq = 1 / total conductance)\nG_total = 0.01 + 0.00454545 + 0.0030303 = 0.0175758 S\nR_eq = 1 ÷ 0.0175758 S = 56.8966 Ω"},"credits_used":5,"credits_remaining":null}},"two_equal_resistors_1_k_each":{"summary":"Two equal resistors — 1 kΩ each","value":{"tool":"parallel-resistor-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Resistor Count","value":"2"},{"metric":"Equivalent Resistance","value":"0.5 kΩ (500 Ω)"},{"metric":"Total Conductance","value":"0.002 S"},{"metric":"Smallest Resistor","value":"1 kΩ"},{"metric":"Largest Resistor","value":"1 kΩ"},{"metric":"Equivalent < Smallest Resistor","value":"Yes"}],"distribution":[{"resistor":"R1","value":"1 kΩ","conductance-s":"0.001","current-share":"50%"},{"resistor":"R2","value":"1 kΩ","conductance-s":"0.001","current-share":"50%"}],"steps":"Formula: 1/R_eq = 1/R1 + 1/R2 + ... + 1/Rn  (equivalently, R_eq = 1 / total conductance)\nG_total = 0.001 + 0.001 = 0.002 S\nR_eq = 1 ÷ 0.002 S = 500 Ω"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"distribution":{"type":"array","description":"Current Distribution","items":{"type":"object","properties":{"resistor":{"type":"string","description":"Resistor"},"value":{"type":"string","description":"Value"},"conductance-s":{"type":"string","description":"Conductance (S)"},"current-share":{"type":"string","description":"Current Share"}}},"x-iotools-columns":["resistor","value","conductance-s","current-share"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/partial-derivative-calculator":{"post":{"operationId":"run_partial_derivative_calculator","summary":"Partial Derivative Calculator","tags":["Calculators"],"description":"Find the partial derivative of a multivariable function f(x, y, z, t) with respect to one variable — first, second, or third order — with an optional numeric evaluation at a point and a full step-by-step derivation.\n\n[Try Partial Derivative Calculator in your browser →](https://iotools.cloud/tool/partial-derivative-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"f":{"type":"string","description":"f(x, y, z, t)"},"variable":{"enum":["x","y","z","t"],"description":"Differentiate with respect to"},"order":{"enum":["1","2","3"],"description":"Order"},"x":{"type":"number","description":"x"},"y":{"type":"number","description":"y"},"z":{"type":"number","description":"z"},"t":{"type":"number","description":"t"}},"required":["f"]},"examples":{"f_x_y_sin_xy_f_x":{"summary":"f = x²y + sin(xy), ∂f/∂x","value":{"f":"x^2*y + sin(x*y)","variable":"x","order":"1"}},"f_x_y_sin_xy_f_x_at_1_2":{"summary":"f = x²y + sin(xy), ∂f/∂x at (1, 2)","value":{"f":"x^2*y + sin(x*y)","variable":"x","order":"1","x":"1","y":"2"}},"f_x_y_second_partial_w_r_t_x":{"summary":"f = x³y², second partial w.r.t. x","value":{"f":"x^3*y^2","variable":"x","order":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"f_x_y_sin_xy_f_x":{"summary":"f = x²y + sin(xy), ∂f/∂x","value":{"tool":"partial-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"y * (2 * x + cos(x * y))","evaluated":"— enter x, y to evaluate","steps":"f(x, y) = x^2*y + sin(x*y)\nDifferentiate w.r.t. x (pass 1 of 1): y * (2 * x + cos(x * y))\n∂f/∂x = y * (2 * x + cos(x * y))"},"credits_used":5,"credits_remaining":null}},"f_x_y_sin_xy_f_x_at_1_2":{"summary":"f = x²y + sin(xy), ∂f/∂x at (1, 2)","value":{"tool":"partial-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"y * (2 * x + cos(x * y))","evaluated":"3.16771","steps":"f(x, y) = x^2*y + sin(x*y)\nDifferentiate w.r.t. x (pass 1 of 1): y * (2 * x + cos(x * y))\n∂f/∂x = y * (2 * x + cos(x * y))\nAt x = 1, y = 2: ∂f/∂x = 3.16771"},"credits_used":5,"credits_remaining":null}},"f_x_y_second_partial_w_r_t_x":{"summary":"f = x³y², second partial w.r.t. x","value":{"tool":"partial-derivative-calculator","tool_version":"1.0.2","outputs":{"derivative":"6 * y ^ 2 * x","evaluated":"— enter x, y to evaluate","steps":"f(x, y) = x^3*y^2\nDifferentiate w.r.t. x (pass 1 of 2): 3 * y ^ 2 * x ^ 2\nDifferentiate w.r.t. x (pass 2 of 2): 6 * y ^ 2 * x\n∂²f/∂x² = 6 * y ^ 2 * x"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"derivative":{"type":"string","description":"Partial Derivative"},"evaluated":{"type":"string","description":"Evaluated at Point"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/partial-fraction-decomposition-calculator":{"post":{"operationId":"run_partial_fraction_decomposition_calculator","summary":"Partial Fraction Decomposition Calculator","tags":["Calculators"],"description":"Decompose a rational expression P(x)/Q(x) into a sum of simpler partial fractions — proper or improper, with repeated linear and irreducible quadratic factors — using exact rational arithmetic and a full step-by-step derivation.\n\n[Try Partial Fraction Decomposition Calculator in your browser →](https://iotools.cloud/tool/partial-fraction-decomposition-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"numerator":{"type":"string","description":"Numerator P(x)"},"denominator":{"type":"string","description":"Denominator Q(x) — factored form"}},"required":["numerator","denominator"]},"examples":{"3x_5_x_1_x_2_distinct_linear_factors":{"summary":"(3x + 5)/((x - 1)(x + 2)) — distinct linear factors","value":{"numerator":"3x + 5","denominator":"(x - 1)(x + 2)"}},"x_x_1_2_x_1_repeated_linear_factor":{"summary":"x/((x - 1)^2(x + 1)) — repeated linear factor","value":{"numerator":"x","denominator":"(x - 1)^2(x + 1)"}},"x_1_x_1_x_2_1_irreducible_quadratic_factor":{"summary":"(x + 1)/((x - 1)(x^2 + 1)) — irreducible quadratic factor","value":{"numerator":"x + 1","denominator":"(x - 1)(x^2 + 1)"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3x_5_x_1_x_2_distinct_linear_factors":{"summary":"(3x + 5)/((x - 1)(x + 2)) — distinct linear factors","value":{"tool":"partial-fraction-decomposition-calculator","tool_version":"1.0.2","outputs":{"decomposition":"(1/3)/(x + 2) + (8/3)/(x - 1)","polynomialPart":"None — this is already a proper fraction (degree of the numerator is less than the denominator's).","terms":[{"denominator-factor":"(x + 2)","numerator":"1/3","term":"(1/3)/(x + 2)"},{"denominator-factor":"(x - 1)","numerator":"8/3","term":"(8/3)/(x - 1)"}],"steps":"Numerator: P(x) = 3x + 5\nDenominator (as entered): Q(x) = (x - 1)(x + 2)\nExpanded: Q(x) = x^2 + x - 2\ndeg(P) = 1 < deg(Q) = 2, so P(x)/Q(x) is already a proper fraction — no polynomial part.\nPartial fraction form: R(x)/Q(x) = A1/(x + 2) + A2/(x - 1)\nSolving the resulting linear system (comparing coefficients of each power of x):\n  A1 = 1/3\n  A2 = 8/3\nCover-up (Heaviside) cross-check — cover each (x - r) and evaluate the rest at x = r:\n  A1 = R(-2) / [Q(x)/(x + 2)](-2) = -1 / -3 = 1/3\n  A2 = R(1) / [Q(x)/(x - 1)](1) = 8 / 3 = 8/3\nResult: P(x)/Q(x) = (1/3)/(x + 2) + (8/3)/(x - 1)"},"credits_used":5,"credits_remaining":null}},"x_x_1_2_x_1_repeated_linear_factor":{"summary":"x/((x - 1)^2(x + 1)) — repeated linear factor","value":{"tool":"partial-fraction-decomposition-calculator","tool_version":"1.0.2","outputs":{"decomposition":"-(1/4)/(x + 1) + (1/4)/(x - 1) + (1/2)/(x - 1)^2","polynomialPart":"None — this is already a proper fraction (degree of the numerator is less than the denominator's).","terms":[{"denominator-factor":"(x + 1)","numerator":"-1/4","term":"(-1/4)/(x + 1)"},{"denominator-factor":"(x - 1)","numerator":"1/4","term":"(1/4)/(x - 1)"},{"denominator-factor":"(x - 1)^2","numerator":"1/2","term":"(1/2)/(x - 1)^2"}],"steps":"Numerator: P(x) = x\nDenominator (as entered): Q(x) = (x - 1)^2(x + 1)\nExpanded: Q(x) = x^3 - x^2 - x + 1\ndeg(P) = 1 < deg(Q) = 3, so P(x)/Q(x) is already a proper fraction — no polynomial part.\nPartial fraction form: R(x)/Q(x) = A1/(x + 1) + A2/(x - 1) + A3/(x - 1)^2\nSolving the resulting linear system (comparing coefficients of each power of x):\n  A1 = -1/4\n  A2 = 1/4\n  A3 = 1/2\nResult: P(x)/Q(x) = -(1/4)/(x + 1) + (1/4)/(x - 1) + (1/2)/(x - 1)^2"},"credits_used":5,"credits_remaining":null}},"x_1_x_1_x_2_1_irreducible_quadratic_factor":{"summary":"(x + 1)/((x - 1)(x^2 + 1)) — irreducible quadratic factor","value":{"tool":"partial-fraction-decomposition-calculator","tool_version":"1.0.2","outputs":{"decomposition":"1/(x - 1) - x/(x^2 + 1)","polynomialPart":"None — this is already a proper fraction (degree of the numerator is less than the denominator's).","terms":[{"denominator-factor":"(x - 1)","numerator":"1","term":"1/(x - 1)"},{"denominator-factor":"(x^2 + 1)","numerator":"-x","term":"-x/(x^2 + 1)"}],"steps":"Numerator: P(x) = x + 1\nDenominator (as entered): Q(x) = (x - 1)(x^2 + 1)\nExpanded: Q(x) = x^3 - x^2 + x - 1\ndeg(P) = 1 < deg(Q) = 3, so P(x)/Q(x) is already a proper fraction — no polynomial part.\nPartial fraction form: R(x)/Q(x) = A1/(x - 1) + (B1x + C1)/(x^2 + 1)\nSolving the resulting linear system (comparing coefficients of each power of x):\n  A1 = 1\n  B1 = -1,  C1 = 0\nResult: P(x)/Q(x) = 1/(x - 1) - x/(x^2 + 1)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"decomposition":{"type":"string","description":"Partial fraction decomposition"},"polynomialPart":{"type":"string","description":"Polynomial part"},"terms":{"type":"array","description":"Partial Fraction Terms","items":{"type":"object","properties":{"denominator-factor":{"type":"string","description":"Denominator factor"},"numerator":{"type":"string","description":"Numerator"},"term":{"type":"string","description":"Term"}}},"x-iotools-columns":["denominator-factor","numerator","term"]},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pka-to-ka-converter":{"post":{"operationId":"run_pka_to_ka_converter","summary":"pKa to Ka Converter","tags":["Calculators"],"description":"Convert between pKa, Ka, pKb, and Kb for an acid-base conjugate pair. Enter any one value and get the other three, using pKa + pKb = 14 at 25°C.\n\n[Try pKa to Ka Converter in your browser →](https://iotools.cloud/tool/pka-to-ka-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["pKa","Ka","pKb","Kb"],"description":"I'm entering"},"pKaValue":{"type":"number","description":"pKa"},"kaValue":{"type":"string","description":"Ka"},"pKbValue":{"type":"number","description":"pKb"},"kbValue":{"type":"string","description":"Kb"}},"required":[]},"examples":{"acetic_acid_pka_4_76":{"summary":"Acetic acid, pKa 4.76","value":{"inputMode":"pKa","pKaValue":"4.76","kaValue":"1.8e-5","pKbValue":"9.24","kbValue":"5.6e-10"}},"acetic_acid_ka_1_8e_5":{"summary":"Acetic acid, Ka 1.8e-5","value":{"inputMode":"Ka","pKaValue":"4.76","kaValue":"1.8e-5","pKbValue":"9.24","kbValue":"5.6e-10"}},"ammonia_s_conjugate_acid_pkb_4_75":{"summary":"Ammonia's conjugate acid, pKb 4.75","value":{"inputMode":"pKb","pKaValue":"4.76","kaValue":"1.8e-5","pKbValue":"4.75","kbValue":"5.6e-10"}},"kb_1_8e_5_a_weak_base":{"summary":"Kb 1.8e-5 (a weak base)","value":{"inputMode":"Kb","pKaValue":"4.76","kaValue":"1.8e-5","pKbValue":"9.24","kbValue":"1.8e-5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"acetic_acid_pka_4_76":{"summary":"Acetic acid, pKa 4.76","value":{"tool":"pka-to-ka-converter","tool_version":"1.0.2","outputs":{"result":[{"quantity":"pKa","value":"4.76","source":"Input"},{"quantity":"Ka","value":"1.738 × 10⁻⁵","source":"Derived"},{"quantity":"pKb","value":"9.24","source":"Derived"},{"quantity":"Kb","value":"5.754 × 10⁻¹⁰","source":"Derived"}],"steps":"Conjugate pair in water at 25°C: pKa + pKb = 14 (Ka × Kb = Kw = 1.0e-14).\nKa = 10^(-pKa) = 10^(-4.76) = 1.738 × 10⁻⁵\npKb = 14 - pKa = 14 - 4.76 = 9.24\nKb = 10^(-pKb) = 10^(-9.24) = 5.754 × 10⁻¹⁰"},"credits_used":5,"credits_remaining":null}},"acetic_acid_ka_1_8e_5":{"summary":"Acetic acid, Ka 1.8e-5","value":{"tool":"pka-to-ka-converter","tool_version":"1.0.2","outputs":{"result":[{"quantity":"pKa","value":"4.74473","source":"Derived"},{"quantity":"Ka","value":"1.800 × 10⁻⁵","source":"Input"},{"quantity":"pKb","value":"9.25527","source":"Derived"},{"quantity":"Kb","value":"5.556 × 10⁻¹⁰","source":"Derived"}],"steps":"Conjugate pair in water at 25°C: pKa + pKb = 14 (Ka × Kb = Kw = 1.0e-14).\npKa = -log10(Ka) = -log10(1.800 × 10⁻⁵) = 4.74473\npKb = 14 - pKa = 14 - 4.74473 = 9.25527\nKb = 10^(-pKb) = 10^(-9.25527) = 5.556 × 10⁻¹⁰"},"credits_used":5,"credits_remaining":null}},"ammonia_s_conjugate_acid_pkb_4_75":{"summary":"Ammonia's conjugate acid, pKb 4.75","value":{"tool":"pka-to-ka-converter","tool_version":"1.0.2","outputs":{"result":[{"quantity":"pKa","value":"9.25","source":"Derived"},{"quantity":"Ka","value":"5.623 × 10⁻¹⁰","source":"Derived"},{"quantity":"pKb","value":"4.75","source":"Input"},{"quantity":"Kb","value":"1.778 × 10⁻⁵","source":"Derived"}],"steps":"Conjugate pair in water at 25°C: pKa + pKb = 14 (Ka × Kb = Kw = 1.0e-14).\nKb = 10^(-pKb) = 10^(-4.75) = 1.778 × 10⁻⁵\npKa = 14 - pKb = 14 - 4.75 = 9.25\nKa = 10^(-pKa) = 10^(-9.25) = 5.623 × 10⁻¹⁰"},"credits_used":5,"credits_remaining":null}},"kb_1_8e_5_a_weak_base":{"summary":"Kb 1.8e-5 (a weak base)","value":{"tool":"pka-to-ka-converter","tool_version":"1.0.2","outputs":{"result":[{"quantity":"pKa","value":"9.25527","source":"Derived"},{"quantity":"Ka","value":"5.556 × 10⁻¹⁰","source":"Derived"},{"quantity":"pKb","value":"4.74473","source":"Derived"},{"quantity":"Kb","value":"1.800 × 10⁻⁵","source":"Input"}],"steps":"Conjugate pair in water at 25°C: pKa + pKb = 14 (Ka × Kb = Kw = 1.0e-14).\npKb = -log10(Kb) = -log10(1.800 × 10⁻⁵) = 4.74473\npKa = 14 - pKb = 14 - 4.74473 = 9.25527\nKa = 10^(-pKa) = 10^(-9.25527) = 5.556 × 10⁻¹⁰"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"},"source":{"type":"string","description":"Source"}}},"x-iotools-columns":["quantity","value","source"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/password-hash-crack-time-estimator":{"post":{"operationId":"run_password_hash_crack_time_estimator","summary":"Password Hash Crack Time Estimator","tags":["Calculators"],"description":"Estimate how long it would take an attacker to brute-force a password, based on its character-set entropy and a chosen attacker speed (online rate-limited, online unrestricted, offline slow hash, or offline fast hash). Runs entirely in your browser — the password is never transmitted.\n\n[Try Password Hash Crack Time Estimator in your browser →](https://iotools.cloud/tool/password-hash-crack-time-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password to test"},"scenario":{"enum":["online_throttled","online_unthrottled","offline_slow","offline_fast"],"description":"Attacker scenario"}},"required":["password"]},"examples":{"very_weak_2_lowercase_letters_fast_offline_hash":{"summary":"Very weak — 2 lowercase letters, fast offline hash","value":{"password":"ab","scenario":"offline_fast"}},"weak_6_lowercase_letters_slow_offline_hash":{"summary":"Weak — 6 lowercase letters, slow offline hash","value":{"password":"abcdef","scenario":"offline_slow"}},"strong_mixed_case_digits_and_symbols_rate_limited_online_form":{"summary":"Strong — mixed case, digits and symbols, rate-limited online form","value":{"password":"Tr0ub4dor9!","scenario":"online_throttled"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"very_weak_2_lowercase_letters_fast_offline_hash":{"summary":"Very weak — 2 lowercase letters, fast offline hash","value":{"tool":"password-hash-crack-time-estimator","tool_version":"1.0.2","outputs":{"charset":"26 possible characters (lowercase letters)","entropy":"9.4 bits","crackTime":"instantly"},"credits_used":5,"credits_remaining":null}},"weak_6_lowercase_letters_slow_offline_hash":{"summary":"Weak — 6 lowercase letters, slow offline hash","value":{"tool":"password-hash-crack-time-estimator","tool_version":"1.0.2","outputs":{"charset":"26 possible characters (lowercase letters)","entropy":"28.2 bits","crackTime":"4.3 hours"},"credits_used":5,"credits_remaining":null}},"strong_mixed_case_digits_and_symbols_rate_limited_online_form":{"summary":"Strong — mixed case, digits and symbols, rate-limited online form","value":{"tool":"password-hash-crack-time-estimator","tool_version":"1.0.2","outputs":{"charset":"94 possible characters (lowercase letters, uppercase letters, digits, symbols)","entropy":"72.1 bits","crackTime":"longer than the age of the universe"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"charset":{"type":"string","description":"Detected character set"},"entropy":{"type":"string","description":"Entropy"},"crackTime":{"type":"string","description":"Estimated average crack time"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/payroll-take-home-calculator":{"post":{"operationId":"run_payroll_take_home_calculator","summary":"Payroll Take-Home Calculator","tags":["Calculators"],"description":"Estimate net take-home pay from a gross annual salary, income tax rate, social contribution rate and fixed deductions. See the breakdown across annual, monthly, bi-weekly and weekly pay periods in one table.\n\n[Try Payroll Take-Home Calculator in your browser →](https://iotools.cloud/tool/payroll-take-home-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"grossAnnualSalary":{"type":"number","description":"Gross Annual Salary ($)","minimum":0,"maximum":999999999},"incomeTaxPercent":{"type":"number","description":"Income Tax (%)","minimum":0,"maximum":100},"socialContributionPercent":{"type":"number","description":"Social Contribution (%)","minimum":0,"maximum":100},"fixedDeductions":{"type":"number","description":"Fixed Deductions per Year ($)","minimum":0,"maximum":999999999}},"required":["grossAnnualSalary"]},"examples":{"72_000_yr_20_income_tax_7_65_social_no_fixed_deductions":{"summary":"$72,000/yr, 20% income tax, 7.65% social, no fixed deductions","value":{"grossAnnualSalary":"72000","incomeTaxPercent":"20","socialContributionPercent":"7.65","fixedDeductions":"0"}},"with_a_3_000_yr_fixed_deduction_retirement_contribution":{"summary":"With a $3,000/yr fixed deduction (retirement contribution)","value":{"grossAnnualSalary":"72000","incomeTaxPercent":"20","socialContributionPercent":"7.65","fixedDeductions":"3000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"72_000_yr_20_income_tax_7_65_social_no_fixed_deductions":{"summary":"$72,000/yr, 20% income tax, 7.65% social, no fixed deductions","value":{"tool":"payroll-take-home-calculator","tool_version":"1.0.2","outputs":{"summary":[{"line":"Gross Pay","annual":"$72,000.00","monthly":"$6,000.00","bi-weekly":"$2,769.23","weekly":"$1,384.62"},{"line":"Income Tax","annual":"$14,400.00","monthly":"$1,200.00","bi-weekly":"$553.85","weekly":"$276.92"},{"line":"Social Contribution","annual":"$5,508.00","monthly":"$459.00","bi-weekly":"$211.85","weekly":"$105.92"},{"line":"Fixed Deductions","annual":"$0.00","monthly":"$0.00","bi-weekly":"$0.00","weekly":"$0.00"},{"line":"Take-Home Pay","annual":"$52,092.00","monthly":"$4,341.00","bi-weekly":"$2,003.54","weekly":"$1,001.77"}]},"credits_used":5,"credits_remaining":null}},"with_a_3_000_yr_fixed_deduction_retirement_contribution":{"summary":"With a $3,000/yr fixed deduction (retirement contribution)","value":{"tool":"payroll-take-home-calculator","tool_version":"1.0.2","outputs":{"summary":[{"line":"Gross Pay","annual":"$72,000.00","monthly":"$6,000.00","bi-weekly":"$2,769.23","weekly":"$1,384.62"},{"line":"Income Tax","annual":"$14,400.00","monthly":"$1,200.00","bi-weekly":"$553.85","weekly":"$276.92"},{"line":"Social Contribution","annual":"$5,508.00","monthly":"$459.00","bi-weekly":"$211.85","weekly":"$105.92"},{"line":"Fixed Deductions","annual":"$3,000.00","monthly":"$250.00","bi-weekly":"$115.38","weekly":"$57.69"},{"line":"Take-Home Pay","annual":"$49,092.00","monthly":"$4,091.00","bi-weekly":"$1,888.15","weekly":"$944.08"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Take-Home Pay Breakdown","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"annual":{"type":"string","description":"Annual"},"monthly":{"type":"string","description":"Monthly"},"bi-weekly":{"type":"string","description":"Bi-Weekly"},"weekly":{"type":"string","description":"Weekly"}}},"x-iotools-columns":["line","annual","monthly","bi-weekly","weekly"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pcb-trace-width-calculator":{"post":{"operationId":"run_pcb_trace_width_calculator","summary":"PCB Trace Width Calculator","tags":["Calculators"],"description":"Calculate the minimum PCB copper trace width for a given current and allowable temperature rise using the IPC-2221 formula, plus the trace's resistance, voltage drop, and power loss for a given length.\n\n[Try PCB Trace Width Calculator in your browser →](https://iotools.cloud/tool/pcb-trace-width-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"number","description":"Current (A)","minimum":0},"tempRise":{"type":"number","description":"Allowable temperature rise (°C)","minimum":0.1},"location":{"enum":["external","internal"],"description":"Trace location"},"copperWeight":{"enum":["0.5","1","2","3"],"description":"Copper weight"},"length":{"type":"number","description":"Trace length (mm, optional)","minimum":0}},"required":["current","tempRise"]},"examples":{"2a_10_c_rise_external_1oz_copper_100mm_trace":{"summary":"2A, 10°C rise, external 1oz copper, 100mm trace","value":{"current":"2","tempRise":"10","location":"external","copperWeight":"1","length":"100"}},"5a_20_c_rise_internal_2oz_copper_no_length":{"summary":"5A, 20°C rise, internal 2oz copper, no length","value":{"current":"5","tempRise":"20","location":"internal","copperWeight":"2","length":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2a_10_c_rise_external_1oz_copper_100mm_trace":{"summary":"2A, 10°C rise, external 1oz copper, 100mm trace","value":{"tool":"pcb-trace-width-calculator","tool_version":"1.0.2","outputs":{"crossSectionArea":"42.39 mil²","traceThickness":"1.378 mil","traceWidth":"30.76 mil","traceWidthMm":"0.781 mm","resistance":"62.89 mΩ","voltageDrop":"0.1258 V","powerLoss":"0.2516 W","steps":"I = 2.000 A, ΔT = 10.00 °C, k = 0.048 (external layer)\nA = (I / (k × ΔT^0.44))^(1/0.725) = 42.39 mil²\nCopper thickness = 1 oz/ft² × 1.378 mil/oz = 1.378 mil\nTrace width = A / thickness = 42.39 / 1.378 = 30.76 mil (0.781 mm)\nR = ρ × L / A = 1.72e-8 × 0.1000 / 2.735e-8 = 62.89 mΩ\nVoltage drop = I × R = 0.1258 V, Power loss = I² × R = 0.2516 W"},"credits_used":5,"credits_remaining":null}},"5a_20_c_rise_internal_2oz_copper_no_length":{"summary":"5A, 20°C rise, internal 2oz copper, no length","value":{"tool":"pcb-trace-width-calculator","tool_version":"1.0.2","outputs":{"crossSectionArea":"256.27 mil²","traceThickness":"2.756 mil","traceWidth":"92.99 mil","traceWidthMm":"2.362 mm","resistance":"-","voltageDrop":"-","powerLoss":"-","steps":"I = 5.000 A, ΔT = 20.00 °C, k = 0.024 (internal layer)\nA = (I / (k × ΔT^0.44))^(1/0.725) = 256.27 mil²\nCopper thickness = 2 oz/ft² × 1.378 mil/oz = 2.756 mil\nTrace width = A / thickness = 256.27 / 2.756 = 92.99 mil (2.362 mm)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"traceWidth":{"type":"string","description":"Minimum Trace Width (mil)"},"traceWidthMm":{"type":"string","description":"Minimum Trace Width (mm)"},"crossSectionArea":{"type":"string","description":"Required Cross-Section Area"},"traceThickness":{"type":"string","description":"Copper Thickness"},"resistance":{"type":"string","description":"Trace Resistance"},"voltageDrop":{"type":"string","description":"Voltage Drop"},"powerLoss":{"type":"string","description":"Power Loss"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/percent-off-calculator":{"post":{"operationId":"run_percent_off_calculator","summary":"Percent Off Calculator","tags":["Calculators"],"description":"Calculate the sale price and amount saved after a percentage discount. Enter the original price and the percent off to see the final price, your savings, and the percentage you pay.\n\n[Try Percent Off Calculator in your browser →](https://iotools.cloud/tool/percent-off-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"originalPrice":{"type":"number","description":"Original Price","minimum":0},"discountPercentage":{"type":"number","description":"Discount %","minimum":0,"maximum":100}},"required":[]},"examples":{"25_off_100":{"summary":"25% off $100","value":{"originalPrice":"100","discountPercentage":"25"}},"15_off_49_99":{"summary":"15% off $49.99","value":{"originalPrice":"49.99","discountPercentage":"15"}},"70_off_1_200_clearance":{"summary":"70% off $1,200 clearance","value":{"originalPrice":"1200","discountPercentage":"70"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"25_off_100":{"summary":"25% off $100","value":{"tool":"percent-off-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sale Price","value":"75.00"},{"metric":"You Save","value":"25.00"},{"metric":"Original Price","value":"100.00"},{"metric":"Discount %","value":"25.00%"},{"metric":"You Pay %","value":"75.00%"}]},"credits_used":5,"credits_remaining":null}},"15_off_49_99":{"summary":"15% off $49.99","value":{"tool":"percent-off-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sale Price","value":"42.49"},{"metric":"You Save","value":"7.50"},{"metric":"Original Price","value":"49.99"},{"metric":"Discount %","value":"15.00%"},{"metric":"You Pay %","value":"85.00%"}]},"credits_used":5,"credits_remaining":null}},"70_off_1_200_clearance":{"summary":"70% off $1,200 clearance","value":{"tool":"percent-off-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sale Price","value":"360.00"},{"metric":"You Save","value":"840.00"},{"metric":"Original Price","value":"1,200.00"},{"metric":"Discount %","value":"70.00%"},{"metric":"You Pay %","value":"30.00%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/percent-yield-calculator":{"post":{"operationId":"run_percent_yield_calculator","summary":"Percent Yield Calculator","tags":["Calculators"],"description":"Calculate percent yield, actual yield, or theoretical yield — solve the chemistry yield equation for whichever quantity you're missing.\n\n[Try Percent Yield Calculator in your browser →](https://iotools.cloud/tool/percent-yield-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["percent","actual","theoretical"],"description":"Solve For"},"actualYield":{"type":"number","description":"Actual Yield","minimum":0},"theoreticalYield":{"type":"number","description":"Theoretical Yield","minimum":0},"percentYield":{"type":"number","description":"Percent Yield (%)","minimum":0}},"required":[]},"examples":{"solve_percent_yield_45_g_actual_50_g_theoretical":{"summary":"Solve percent yield — 45 g actual, 50 g theoretical","value":{"solveFor":"percent","actualYield":"45","theoreticalYield":"50","percentYield":"90"}},"solve_actual_yield_90_yield_50_g_theoretical":{"summary":"Solve actual yield — 90% yield, 50 g theoretical","value":{"solveFor":"actual","actualYield":"45","theoreticalYield":"50","percentYield":"90"}},"solve_theoretical_yield_45_g_actual_90_yield":{"summary":"Solve theoretical yield — 45 g actual, 90% yield","value":{"solveFor":"theoretical","actualYield":"45","theoreticalYield":"50","percentYield":"90"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_percent_yield_45_g_actual_50_g_theoretical":{"summary":"Solve percent yield — 45 g actual, 50 g theoretical","value":{"tool":"percent-yield-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Percent Yield"},{"metric":"Percent Yield","value":"90%"},{"metric":"Actual Yield","value":"45"},{"metric":"Theoretical Yield","value":"50"},{"metric":"Efficiency Rating","value":"Excellent"}],"steps":"Formula: Percent Yield (%) = Actual Yield ÷ Theoretical Yield × 100\npercent yield = 45 ÷ 50 × 100 = 90%"},"credits_used":5,"credits_remaining":null}},"solve_actual_yield_90_yield_50_g_theoretical":{"summary":"Solve actual yield — 90% yield, 50 g theoretical","value":{"tool":"percent-yield-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Actual Yield"},{"metric":"Percent Yield","value":"90%"},{"metric":"Actual Yield","value":"45"},{"metric":"Theoretical Yield","value":"50"},{"metric":"Efficiency Rating","value":"Excellent"}],"steps":"Formula: Percent Yield (%) = Actual Yield ÷ Theoretical Yield × 100\nactual yield = (90 ÷ 100) × 50 = 45"},"credits_used":5,"credits_remaining":null}},"solve_theoretical_yield_45_g_actual_90_yield":{"summary":"Solve theoretical yield — 45 g actual, 90% yield","value":{"tool":"percent-yield-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Solved For","value":"Theoretical Yield"},{"metric":"Percent Yield","value":"90%"},{"metric":"Actual Yield","value":"45"},{"metric":"Theoretical Yield","value":"50"},{"metric":"Efficiency Rating","value":"Excellent"}],"steps":"Formula: Percent Yield (%) = Actual Yield ÷ Theoretical Yield × 100\ntheoretical yield = 45 ÷ (90 ÷ 100) = 50"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/permutation-combination-calculator":{"post":{"operationId":"run_permutation_combination_calculator","summary":"Permutation & Combination Calculator","tags":["Calculators"],"description":"Calculate nPr (permutations) and nCr (combinations) from n and r — how many ways to arrange or choose items, with exact factorial values, computed precisely for large n using arbitrary-precision arithmetic.\n\n[Try Permutation & Combination Calculator in your browser →](https://iotools.cloud/tool/permutation-combination-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"number","description":"n (total items)","minimum":0,"maximum":1000},"r":{"type":"number","description":"r (items chosen)","minimum":0,"maximum":1000}},"required":["n","r"]},"examples":{"p_5_2_and_c_5_2":{"summary":"P(5, 2) and C(5, 2)","value":{"n":"5","r":"2"}},"c_10_3_120":{"summary":"C(10, 3) = 120","value":{"n":"10","r":"3"}},"edge_case_r_0":{"summary":"Edge case: r = 0","value":{"n":"7","r":"0"}},"edge_case_r_n":{"summary":"Edge case: r = n","value":{"n":"6","r":"6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"p_5_2_and_c_5_2":{"summary":"P(5, 2) and C(5, 2)","value":{"tool":"permutation-combination-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Permutations P(n, r)","value":"20"},{"metric":"Combinations C(n, r)","value":"10"},{"metric":"n!","value":"120"},{"metric":"r!","value":"2"},{"metric":"(n − r)!","value":"6"}]},"credits_used":5,"credits_remaining":null}},"c_10_3_120":{"summary":"C(10, 3) = 120","value":{"tool":"permutation-combination-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Permutations P(n, r)","value":"720"},{"metric":"Combinations C(n, r)","value":"120"},{"metric":"n!","value":"3,628,800"},{"metric":"r!","value":"6"},{"metric":"(n − r)!","value":"5,040"}]},"credits_used":5,"credits_remaining":null}},"edge_case_r_0":{"summary":"Edge case: r = 0","value":{"tool":"permutation-combination-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Permutations P(n, r)","value":"1"},{"metric":"Combinations C(n, r)","value":"1"},{"metric":"n!","value":"5,040"},{"metric":"r!","value":"1"},{"metric":"(n − r)!","value":"5,040"}]},"credits_used":5,"credits_remaining":null}},"edge_case_r_n":{"summary":"Edge case: r = n","value":{"tool":"permutation-combination-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Permutations P(n, r)","value":"720"},{"metric":"Combinations C(n, r)","value":"1"},{"metric":"n!","value":"720"},{"metric":"r!","value":"720"},{"metric":"(n − r)!","value":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/permutations-with-repetition-calculator":{"post":{"operationId":"run_permutations_with_repetition_calculator","summary":"Permutations with Repetition Calculator","tags":["Calculators"],"description":"Calculate n^r — how many ordered arrangements of r positions are possible when choosing from n items and repetition is allowed (PIN codes, lock combinations, passwords) — with exact results for large n and r using arbitrary-precision arithmetic.\n\n[Try Permutations with Repetition Calculator in your browser →](https://iotools.cloud/tool/permutations-with-repetition-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"number","description":"n (items to choose from)","minimum":0,"maximum":1000},"r":{"type":"number","description":"r (positions to fill)","minimum":0,"maximum":1000}},"required":["n","r"]},"examples":{"10_digits_4_positions_pin_style":{"summary":"10 digits, 4 positions (PIN-style)","value":{"n":"10","r":"4"}},"r_exceeds_n_2_symbols_3_positions":{"summary":"r exceeds n (2 symbols, 3 positions)","value":{"n":"2","r":"3"}},"edge_case_r_0":{"summary":"Edge case: r = 0","value":{"n":"5","r":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_digits_4_positions_pin_style":{"summary":"10 digits, 4 positions (PIN-style)","value":{"tool":"permutations-with-repetition-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Arrangements with repetition (n^r)","value":"10,000"},{"metric":"Digits in result","value":"5"},{"metric":"Without repetition, P(n, r)","value":"5,040"},{"metric":"Combinations, C(n, r)","value":"210"},{"metric":"Combinations with repetition","value":"715"}]},"credits_used":5,"credits_remaining":null}},"r_exceeds_n_2_symbols_3_positions":{"summary":"r exceeds n (2 symbols, 3 positions)","value":{"tool":"permutations-with-repetition-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Arrangements with repetition (n^r)","value":"8"},{"metric":"Digits in result","value":"1"},{"metric":"Without repetition, P(n, r)","value":"0"},{"metric":"Combinations, C(n, r)","value":"0"},{"metric":"Combinations with repetition","value":"4"}]},"credits_used":5,"credits_remaining":null}},"edge_case_r_0":{"summary":"Edge case: r = 0","value":{"tool":"permutations-with-repetition-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Arrangements with repetition (n^r)","value":"1"},{"metric":"Digits in result","value":"1"},{"metric":"Without repetition, P(n, r)","value":"1"},{"metric":"Combinations, C(n, r)","value":"1"},{"metric":"Combinations with repetition","value":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pet-age-calculator":{"post":{"operationId":"run_pet_age_calculator","summary":"Pet Age Calculator","tags":["Calculators"],"description":"Convert your dog's or cat's age into human-equivalent years using modern non-linear veterinary formulas — the 2019 epigenetic-clock formula (breed-size adjusted) for dogs and the 15-9-4 rule for cats. Not the old \"multiply by 7\" myth.\n\n[Try Pet Age Calculator in your browser →](https://iotools.cloud/tool/pet-age-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"petAge":{"type":"number","description":"Pet Age (years)","minimum":0,"maximum":30},"petSpecies":{"enum":["dog","cat"],"description":"Species"},"dogSize":{"enum":["small","medium","large","giant"],"description":"Dog Size"}},"required":["petAge"]},"examples":{"medium_dog_age_2":{"summary":"Medium dog, age 2","value":{"petAge":"2","petSpecies":"dog","dogSize":"medium"}},"giant_dog_age_10":{"summary":"Giant dog, age 10","value":{"petAge":"10","petSpecies":"dog","dogSize":"giant"}},"small_puppy_age_6_months":{"summary":"Small puppy, age 6 months","value":{"petAge":"0.5","petSpecies":"dog","dogSize":"small"}},"cat_age_6":{"summary":"Cat, age 6","value":{"petAge":"6","petSpecies":"cat","dogSize":"medium"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"medium_dog_age_2":{"summary":"Medium dog, age 2","value":{"tool":"pet-age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pet Age","value":"2 years"},{"metric":"Species","value":"Dog (Medium breed)"},{"metric":"Human-Equivalent Age","value":"42.1 years"},{"metric":"Life Stage","value":"Adult"},{"metric":"Formula Used","value":"2019 epigenetic-clock formula: 16 x ln(age) + 31, adjusted for breed size"}]},"credits_used":5,"credits_remaining":null}},"giant_dog_age_10":{"summary":"Giant dog, age 10","value":{"tool":"pet-age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pet Age","value":"10 years"},{"metric":"Species","value":"Dog (Giant breed)"},{"metric":"Human-Equivalent Age","value":"81.4 years"},{"metric":"Life Stage","value":"Geriatric"},{"metric":"Formula Used","value":"2019 epigenetic-clock formula: 16 x ln(age) + 31, adjusted for breed size"}]},"credits_used":5,"credits_remaining":null}},"small_puppy_age_6_months":{"summary":"Small puppy, age 6 months","value":{"tool":"pet-age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pet Age","value":"0.5 years"},{"metric":"Species","value":"Dog (Small breed)"},{"metric":"Human-Equivalent Age","value":"14.3 years"},{"metric":"Life Stage","value":"Young adult"},{"metric":"Formula Used","value":"2019 epigenetic-clock formula: 16 x ln(age) + 31, adjusted for breed size"}]},"credits_used":5,"credits_remaining":null}},"cat_age_6":{"summary":"Cat, age 6","value":{"tool":"pet-age-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pet Age","value":"6 years"},{"metric":"Species","value":"Cat"},{"metric":"Human-Equivalent Age","value":"40 years"},{"metric":"Life Stage","value":"Mature"},{"metric":"Formula Used","value":"15-9-4 rule (year 1 = 15, year 2 = +9, each year after = +4)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Human-Equivalent Age","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pet-food-portion-calculator":{"post":{"operationId":"run_pet_food_portion_calculator","summary":"Pet Food Portion Calculator","tags":["Calculators"],"description":"Estimate how much to feed a dog or cat each day (grams and cups) from body weight, life stage/activity level, and the food's calorie density, using the standard veterinary RER/DER energy formula (RER = 70 x kg^0.75).\n\n[Try Pet Food Portion Calculator in your browser →](https://iotools.cloud/tool/pet-food-portion-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"petSpecies":{"enum":["dog","cat"],"description":"Species"},"weightUnit":{"enum":["kg","lbs"],"description":"Weight Unit"},"weight":{"type":"number","description":"Weight","minimum":0.1,"maximum":200},"dogLifeStage":{"enum":["3.0","2.0","1.6","1.8","3.0","4.0","1.4","1.0"],"description":"Life Stage & Activity"},"catLifeStage":{"enum":["2.5","1.2","1.4","1.1","0.8"],"description":"Life Stage & Activity"},"foodType":{"enum":["dry","wet","raw","custom"],"description":"Food Type"},"foodKcal":{"type":"number","description":"kcal / 100 g","minimum":30,"maximum":800},"mealsPerDay":{"enum":["1","2","3","4"],"description":"Meals / day"}},"required":["weight","foodKcal"]},"examples":{"medium_adult_dog_20_kg_dry_food":{"summary":"Medium adult dog, 20 kg, dry food","value":{"petSpecies":"dog","weightUnit":"kg","weight":"20","dogLifeStage":"1.6","catLifeStage":"1.2","foodType":"dry","foodKcal":"350","mealsPerDay":"2"}},"adult_cat_4_5_kg_wet_food":{"summary":"Adult cat, 4.5 kg, wet food","value":{"petSpecies":"cat","weightUnit":"kg","weight":"4.5","dogLifeStage":"1.6","catLifeStage":"1.2","foodType":"wet","foodKcal":"90","mealsPerDay":"2"}},"puppy_under_4_months_5_lbs_dry_food":{"summary":"Puppy under 4 months, 5 lbs, dry food","value":{"petSpecies":"dog","weightUnit":"lbs","weight":"5","dogLifeStage":"3.0","catLifeStage":"1.2","foodType":"dry","foodKcal":"350","mealsPerDay":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"medium_adult_dog_20_kg_dry_food":{"summary":"Medium adult dog, 20 kg, dry food","value":{"tool":"pet-food-portion-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Species","value":"Dog"},{"metric":"Body Weight","value":"20.00 kg"},{"metric":"Resting Energy Requirement (RER)","value":"662 kcal/day"},{"metric":"Daily Energy Requirement (DER)","value":"1059 kcal/day"},{"metric":"Food Portion per Day","value":"303 g (~2.52 cups)"},{"metric":"Food Portion per Meal","value":"151 g (~1.26 cups)"}]},"credits_used":5,"credits_remaining":null}},"adult_cat_4_5_kg_wet_food":{"summary":"Adult cat, 4.5 kg, wet food","value":{"tool":"pet-food-portion-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Species","value":"Cat"},{"metric":"Body Weight","value":"4.50 kg"},{"metric":"Resting Energy Requirement (RER)","value":"216 kcal/day"},{"metric":"Daily Energy Requirement (DER)","value":"260 kcal/day"},{"metric":"Food Portion per Day","value":"288 g (~1.20 cups)"},{"metric":"Food Portion per Meal","value":"144 g (~0.60 cups)"}]},"credits_used":5,"credits_remaining":null}},"puppy_under_4_months_5_lbs_dry_food":{"summary":"Puppy under 4 months, 5 lbs, dry food","value":{"tool":"pet-food-portion-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Species","value":"Dog"},{"metric":"Body Weight","value":"2.27 kg"},{"metric":"Resting Energy Requirement (RER)","value":"129 kcal/day"},{"metric":"Daily Energy Requirement (DER)","value":"388 kcal/day"},{"metric":"Food Portion per Day","value":"111 g (~0.92 cups)"},{"metric":"Food Portion per Meal","value":"28 g (~0.23 cups)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Energy & Portion Estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ph-calculator":{"post":{"operationId":"run_ph_calculator","summary":"pH Calculator","tags":["Calculators"],"description":"Calculate pH, pOH, [H+], and [OH-] from any one of them at 25°C, with an acidity/alkalinity classification.\n\n[Try pH Calculator in your browser →](https://iotools.cloud/tool/ph-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"given":{"enum":["ph","poh","h","oh"],"description":"Given Quantity"},"phValue":{"type":"number","description":"pH"},"pohValue":{"type":"number","description":"pOH"},"hValue":{"type":"number","description":"[H+] Concentration (mol/L)"},"ohValue":{"type":"number","description":"[OH-] Concentration (mol/L)"}},"required":[]},"examples":{"neutral_water_given_ph_7":{"summary":"Neutral water — given pH 7","value":{"given":"ph","phValue":"7","pohValue":"7","hValue":"0.0000001","ohValue":"0.0000001"}},"ammonia_solution_given_poh_3":{"summary":"Ammonia solution — given pOH 3","value":{"given":"poh","phValue":"7","pohValue":"3","hValue":"0.0000001","ohValue":"0.0000001"}},"dilute_hydrochloric_acid_given_h_0_001_mol_l":{"summary":"Dilute hydrochloric acid — given [H+] = 0.001 mol/L","value":{"given":"h","phValue":"7","pohValue":"7","hValue":"0.001","ohValue":"0.0000001"}},"baking_soda_solution_given_oh_0_00001_mol_l":{"summary":"Baking soda solution — given [OH-] = 0.00001 mol/L","value":{"given":"oh","phValue":"7","pohValue":"7","hValue":"0.0000001","ohValue":"0.00001"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"neutral_water_given_ph_7":{"summary":"Neutral water — given pH 7","value":{"tool":"ph-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"pH","value":"7"},{"metric":"pOH","value":"7"},{"metric":"[H+] (mol/L)","value":"1.000000e-7"},{"metric":"[OH-] (mol/L)","value":"1.000000e-7"},{"metric":"Classification","value":"Neutral"}],"steps":"At 25°C: pH + pOH = 14, [H+] × [OH-] = Kw = 1.0×10⁻¹⁴ mol²/L²\npOH = 14 − 7 = 7\n[H+] = 10^(−7) = 1.000000e-7 mol/L\n[OH-] = Kw ÷ [H+] = 1.0×10⁻¹⁴ ÷ 1.000000e-7 = 1.000000e-7 mol/L"},"credits_used":5,"credits_remaining":null}},"ammonia_solution_given_poh_3":{"summary":"Ammonia solution — given pOH 3","value":{"tool":"ph-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"pH","value":"11"},{"metric":"pOH","value":"3"},{"metric":"[H+] (mol/L)","value":"1.000000e-11"},{"metric":"[OH-] (mol/L)","value":"0.001"},{"metric":"Classification","value":"Basic"}],"steps":"At 25°C: pH + pOH = 14, [H+] × [OH-] = Kw = 1.0×10⁻¹⁴ mol²/L²\npH = 14 − 3 = 11\n[OH-] = 10^(−3) = 0.001 mol/L\n[H+] = Kw ÷ [OH-] = 1.0×10⁻¹⁴ ÷ 0.001 = 1.000000e-11 mol/L"},"credits_used":5,"credits_remaining":null}},"dilute_hydrochloric_acid_given_h_0_001_mol_l":{"summary":"Dilute hydrochloric acid — given [H+] = 0.001 mol/L","value":{"tool":"ph-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"pH","value":"3"},{"metric":"pOH","value":"11"},{"metric":"[H+] (mol/L)","value":"0.001"},{"metric":"[OH-] (mol/L)","value":"1.000000e-11"},{"metric":"Classification","value":"Acidic"}],"steps":"At 25°C: pH + pOH = 14, [H+] × [OH-] = Kw = 1.0×10⁻¹⁴ mol²/L²\npH = −log10(0.001) = 3\npOH = 14 − 3 = 11\n[OH-] = Kw ÷ [H+] = 1.0×10⁻¹⁴ ÷ 0.001 = 1.000000e-11 mol/L"},"credits_used":5,"credits_remaining":null}},"baking_soda_solution_given_oh_0_00001_mol_l":{"summary":"Baking soda solution — given [OH-] = 0.00001 mol/L","value":{"tool":"ph-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"pH","value":"9"},{"metric":"pOH","value":"5"},{"metric":"[H+] (mol/L)","value":"1.000000e-9"},{"metric":"[OH-] (mol/L)","value":"0.00001"},{"metric":"Classification","value":"Basic"}],"steps":"At 25°C: pH + pOH = 14, [H+] × [OH-] = Kw = 1.0×10⁻¹⁴ mol²/L²\npOH = −log10(0.00001) = 5\npH = 14 − 5 = 9\n[H+] = Kw ÷ [OH-] = 1.0×10⁻¹⁴ ÷ 0.00001 = 1.000000e-9 mol/L"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/photography-exposure-value-calculator":{"post":{"operationId":"run_photography_exposure_value_calculator","summary":"Photography Exposure Value (EV) Calculator","tags":["Calculators"],"description":"Calculate the Exposure Value (EV) from aperture, shutter speed and ISO. Get EV at your settings, the ISO 100-normalized EV100, the closest standard lighting condition (Sunny 16 family), and a table of equivalent same-exposure aperture/shutter pairs.\n\n[Try Photography Exposure Value (EV) Calculator in your browser →](https://iotools.cloud/tool/photography-exposure-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"aperture":{"type":"number","description":"Aperture (f-number)","minimum":0.5},"shutter":{"type":"string","description":"Shutter Speed"},"iSO":{"type":"number","description":"ISO","minimum":25}},"required":[]},"examples":{"sunny_16":{"summary":"Sunny 16","value":{"aperture":"16","shutter":"1/125","iSO":"100"}},"same_scene_higher_iso_ev100_stays_constant":{"summary":"Same scene, higher ISO (EV100 stays constant)","value":{"aperture":"16","shutter":"1/500","iSO":"400"}},"indoor_low_light":{"summary":"Indoor low light","value":{"aperture":"2.8","shutter":"1/60","iSO":"800"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sunny_16":{"summary":"Sunny 16","value":{"tool":"photography-exposure-value-calculator","tool_version":"1.0.2","outputs":{"headline":"EV 14.97 at ISO 100 (EV100 14.97)","summary":[{"property":"Exposure Value (EV) at ISO 100","value":"14.97"},{"property":"Exposure Value at ISO 100 (EV100)","value":"14.97"},{"property":"Closest lighting condition","value":"EV 15 — Sunny (Sunny 16)"}],"equivalents":[{"aperture":"f/2","shutter":"1/8000 s","depth-of-field":"Very shallow depth of field"},{"aperture":"f/2.8","shutter":"1/4000 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/4","shutter":"1/2000 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/5.6","shutter":"1/1000 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/8","shutter":"1/500 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/11","shutter":"1/250 s","depth-of-field":"Deep depth of field"},{"aperture":"f/16 (your aperture)","shutter":"1/125 s","depth-of-field":"Deep depth of field"},{"aperture":"f/22","shutter":"1/60 s","depth-of-field":"Very deep depth of field / diffraction risk"},{"aperture":"f/32","shutter":"1/30 s","depth-of-field":"Very deep depth of field / diffraction risk"}]},"credits_used":5,"credits_remaining":null}},"same_scene_higher_iso_ev100_stays_constant":{"summary":"Same scene, higher ISO (EV100 stays constant)","value":{"tool":"photography-exposure-value-calculator","tool_version":"1.0.2","outputs":{"headline":"EV 16.97 at ISO 400 (EV100 14.97)","summary":[{"property":"Exposure Value (EV) at ISO 400","value":"16.97"},{"property":"Exposure Value at ISO 100 (EV100)","value":"14.97"},{"property":"Closest lighting condition","value":"EV 15 — Sunny (Sunny 16)"}],"equivalents":[{"aperture":"f/2","shutter":"1/8000 s","depth-of-field":"Very shallow depth of field"},{"aperture":"f/2.8","shutter":"1/4000 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/4","shutter":"1/2000 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/5.6","shutter":"1/1000 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/8","shutter":"1/500 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/11","shutter":"1/250 s","depth-of-field":"Deep depth of field"},{"aperture":"f/16 (your aperture)","shutter":"1/125 s","depth-of-field":"Deep depth of field"},{"aperture":"f/22","shutter":"1/60 s","depth-of-field":"Very deep depth of field / diffraction risk"},{"aperture":"f/32","shutter":"1/30 s","depth-of-field":"Very deep depth of field / diffraction risk"}]},"credits_used":5,"credits_remaining":null}},"indoor_low_light":{"summary":"Indoor low light","value":{"tool":"photography-exposure-value-calculator","tool_version":"1.0.2","outputs":{"headline":"EV 8.88 at ISO 800 (EV100 5.88)","summary":[{"property":"Exposure Value (EV) at ISO 800","value":"8.88"},{"property":"Exposure Value at ISO 100 (EV100)","value":"5.88"},{"property":"Closest lighting condition","value":"EV 6 — Indoor average"}],"equivalents":[{"aperture":"f/1","shutter":"1/60 s","depth-of-field":"Very shallow depth of field"},{"aperture":"f/1.4","shutter":"1/30 s","depth-of-field":"Very shallow depth of field"},{"aperture":"f/2","shutter":"1/15 s","depth-of-field":"Very shallow depth of field"},{"aperture":"f/2.8 (your aperture)","shutter":"1/8 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/4","shutter":"1/4 s","depth-of-field":"Shallow depth of field"},{"aperture":"f/5.6","shutter":"1/2 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/8","shutter":"1 s","depth-of-field":"Balanced depth of field"},{"aperture":"f/11","shutter":"2 s","depth-of-field":"Deep depth of field"},{"aperture":"f/16","shutter":"4 s","depth-of-field":"Deep depth of field"},{"aperture":"f/22","shutter":"8 s","depth-of-field":"Very deep depth of field / diffraction risk"},{"aperture":"f/32","shutter":"15 s","depth-of-field":"Very deep depth of field / diffraction risk"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"headline":{"type":"string","description":"Exposure Value"},"summary":{"type":"array","description":"Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"equivalents":{"type":"array","description":"Equivalent Exposures","items":{"type":"object","properties":{"aperture":{"type":"string","description":"Aperture"},"shutter":{"type":"string","description":"Shutter"},"depth-of-field":{"type":"string","description":"Depth of Field"}}},"x-iotools-columns":["aperture","shutter","depth-of-field"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pipe-flow-velocity-calculator":{"post":{"operationId":"run_pipe_flow_velocity_calculator","summary":"Pipe Flow Velocity Calculator","tags":["Calculators"],"description":"Calculate the mean fluid velocity in a pipe from its volumetric flow rate and inside diameter (or the flow rate a pipe carries at a given velocity), using the continuity equation V = Q/A. Works in metric or imperial units and checks the result against common piping design velocity guidelines.\n\n[Try Pipe Flow Velocity Calculator in your browser →](https://iotools.cloud/tool/pipe-flow-velocity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["velocity","flow"],"description":"Solve For"},"flowRate":{"type":"number","description":"Volumetric Flow Rate","minimum":0},"flowUnit":{"enum":["lpm","lps","m3h","m3s","gpm","cfm"],"description":"Flow Unit"},"velocity":{"type":"number","description":"Velocity","minimum":0},"velocityUnit":{"enum":["mps","fps"],"description":"Velocity Unit"},"pipeDiameter":{"type":"number","description":"Inside Diameter","minimum":0},"lengthUnit":{"enum":["mm","in","m","ft"],"description":"Diameter Unit"}},"required":["pipeDiameter"]},"examples":{"100_l_min_in_a_50_mm_pipe":{"summary":"100 L/min in a 50 mm pipe","value":{"inputMode":"velocity","flowRate":"100","flowUnit":"lpm","pipeDiameter":"50","lengthUnit":"mm"}},"2_m_s_target_velocity_in_a_4_in_pipe":{"summary":"2 m/s target velocity in a 4 in pipe","value":{"inputMode":"flow","velocity":"2","velocityUnit":"mps","pipeDiameter":"4","lengthUnit":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_l_min_in_a_50_mm_pipe":{"summary":"100 L/min in a 50 mm pipe","value":{"tool":"pipe-flow-velocity-calculator","tool_version":"1.0.2","outputs":{"status":"100 L/min through a 50 mm pipe gives a velocity of 0.8488 m/s (2.785 ft/s).","result":[{"property":"Velocity","value":"0.8488 m/s (2.785 ft/s)"},{"property":"Volumetric Flow Rate","value":"0.001667 m³/s (100 L/min)"},{"property":"Pipe Inside Diameter","value":"0.05 m"},{"property":"Flow Area","value":"0.001963 m²"},{"property":"Formula","value":"V = Q / A = 0.001667 / 0.001963"}],"guidelineTable":[{"application":"Pump suction line","range-m-s":"0.5–1 m/s","range-ft-s":"1.6–3.3 ft/s","this-flow":"◄ Within range"},{"application":"Water supply / discharge line","range-m-s":"1–3 m/s","range-ft-s":"3.3–9.8 ft/s","this-flow":""},{"application":"Pump discharge line","range-m-s":"1.5–3.5 m/s","range-ft-s":"4.9–11.5 ft/s","this-flow":""},{"application":"Gravity drain line","range-m-s":"0.6–2 m/s","range-ft-s":"2–6.6 ft/s","this-flow":"◄ Within range"},{"application":"Compressed air line","range-m-s":"6–9 m/s","range-ft-s":"19.7–29.5 ft/s","this-flow":""},{"application":"Low-pressure steam line","range-m-s":"15–20 m/s","range-ft-s":"49.2–65.6 ft/s","this-flow":""}]},"credits_used":5,"credits_remaining":null}},"2_m_s_target_velocity_in_a_4_in_pipe":{"summary":"2 m/s target velocity in a 4 in pipe","value":{"tool":"pipe-flow-velocity-calculator","tool_version":"1.0.2","outputs":{"status":"2 m/s through a 4 in pipe carries 0.01621 m³/s (972.88 L/min, 257.01 GPM, 34.36 CFM).","result":[{"property":"Velocity","value":"2 m/s (6.562 ft/s)"},{"property":"Volumetric Flow Rate","value":"0.01621 m³/s (972.88 L/min)"},{"property":"Pipe Inside Diameter","value":"0.1016 m"},{"property":"Flow Area","value":"0.008107 m²"},{"property":"Formula","value":"V = Q / A = 0.01621 / 0.008107"}],"guidelineTable":[{"application":"Pump suction line","range-m-s":"0.5–1 m/s","range-ft-s":"1.6–3.3 ft/s","this-flow":""},{"application":"Water supply / discharge line","range-m-s":"1–3 m/s","range-ft-s":"3.3–9.8 ft/s","this-flow":"◄ Within range"},{"application":"Pump discharge line","range-m-s":"1.5–3.5 m/s","range-ft-s":"4.9–11.5 ft/s","this-flow":"◄ Within range"},{"application":"Gravity drain line","range-m-s":"0.6–2 m/s","range-ft-s":"2–6.6 ft/s","this-flow":"◄ Within range"},{"application":"Compressed air line","range-m-s":"6–9 m/s","range-ft-s":"19.7–29.5 ft/s","this-flow":""},{"application":"Low-pressure steam line","range-m-s":"15–20 m/s","range-ft-s":"49.2–65.6 ft/s","this-flow":""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"guidelineTable":{"type":"array","description":"Piping Design Velocity Guidelines","items":{"type":"object","properties":{"application":{"type":"string","description":"Application"},"range-m-s":{"type":"string","description":"Range (m/s)"},"range-ft-s":{"type":"string","description":"Range (ft/s)"},"this-flow":{"type":"string","description":"This Flow"}}},"x-iotools-columns":["application","range-m-s","range-ft-s","this-flow"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/beam-reaction-calculator":{"post":{"operationId":"run_beam_reaction_calculator","summary":"Beam Reaction Calculator","tags":["Calculators"],"description":"Calculate the support reactions of a simply supported (or overhanging) beam under point loads and a uniformly distributed load, using static equilibrium (ΣF = 0, ΣM = 0). Flags a negative reaction as uplift, where the support would need to be anchored down.\n\n[Try Beam Reaction Calculator in your browser →](https://iotools.cloud/tool/beam-reaction-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"beamLength":{"type":"number","description":"Beam Length","minimum":0},"lengthUnit":{"enum":["m","mm","ft","in"],"description":"Length Unit"},"forceUnit":{"enum":["kN","N","kip","lbf"],"description":"Force Unit"},"supportAPosition":{"type":"number","description":"Support A Position"},"supportBPosition":{"type":"number","description":"Support B Position"},"udlMagnitude":{"type":"number","description":"Load Intensity (w)"},"udlStart":{"type":"number","description":"Start Position"},"udlEnd":{"type":"number","description":"End Position"},"pointLoad1Magnitude":{"type":"number","description":"Point Load 1"},"pointLoad1Position":{"type":"number","description":"Position"},"pointLoad2Magnitude":{"type":"number","description":"Point Load 2"},"pointLoad2Position":{"type":"number","description":"Position"}},"required":["beamLength","supportAPosition","supportBPosition"]},"examples":{"simply_supported_one_central_point_load":{"summary":"Simply supported, one central point load","value":{"beamLength":"10","lengthUnit":"m","forceUnit":"kN","supportAPosition":"0","supportBPosition":"10","udlMagnitude":"0","udlStart":"0","udlEnd":"10","pointLoad1Magnitude":"20","pointLoad1Position":"5","pointLoad2Magnitude":"0","pointLoad2Position":"5"}},"full_span_udl_plus_an_overhang":{"summary":"Full-span UDL plus an overhang","value":{"beamLength":"12","lengthUnit":"m","forceUnit":"kN","supportAPosition":"2","supportBPosition":"10","udlMagnitude":"5","udlStart":"0","udlEnd":"12","pointLoad1Magnitude":"0","pointLoad1Position":"5","pointLoad2Magnitude":"0","pointLoad2Position":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simply_supported_one_central_point_load":{"summary":"Simply supported, one central point load","value":{"tool":"beam-reaction-calculator","tool_version":"1.0.2","outputs":{"status":"Support A: 10 kN (up) · Support B: 10 kN (up), for a total load of 20 kN.","result":[{"property":"Reaction at Support A","value":"10 kN"},{"property":"Reaction at Support B","value":"10 kN"},{"property":"Total Load","value":"20 kN"},{"property":"Formula","value":"ΣM_A = 0 → R_B × (10 − 0) = 100; ΣF = 0 → R_A + R_B = 20"}],"loadTable":[{"load":"Point load 1","magnitude":"20 kN","position":"5 m","arm-from-a":"5 m"}]},"credits_used":5,"credits_remaining":null}},"full_span_udl_plus_an_overhang":{"summary":"Full-span UDL plus an overhang","value":{"tool":"beam-reaction-calculator","tool_version":"1.0.2","outputs":{"status":"Support A: 30 kN (up) · Support B: 30 kN (up), for a total load of 60 kN.","result":[{"property":"Reaction at Support A","value":"30 kN"},{"property":"Reaction at Support B","value":"30 kN"},{"property":"Total Load","value":"60 kN"},{"property":"Formula","value":"ΣM_A = 0 → R_B × (10 − 2) = 240; ΣF = 0 → R_A + R_B = 60"}],"loadTable":[{"load":"Distributed load","magnitude":"60 kN","position":"6 m","arm-from-a":"4 m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"loadTable":{"type":"array","description":"Applied Loads","items":{"type":"object","properties":{"load":{"type":"string","description":"Load"},"magnitude":{"type":"string","description":"Magnitude"},"position":{"type":"string","description":"Position"},"arm-from-a":{"type":"string","description":"Arm from A"}}},"x-iotools-columns":["load","magnitude","position","arm-from-a"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pizza-value-calculator":{"post":{"operationId":"run_pizza_value_calculator","summary":"Pizza Value Calculator","tags":["Calculators"],"description":"Compare two pizzas by area, price per area, price per slice, and total savings to see which one is the better deal — enter each pizza's diameter, price, and slice count.\n\n[Try Pizza Value Calculator in your browser →](https://iotools.cloud/tool/pizza-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["in","cm"],"description":"Diameter Unit"},"diameterA":{"type":"number","description":"Diameter","minimum":0.1},"priceA":{"type":"number","description":"Price ($)","minimum":0},"slicesA":{"type":"number","description":"Slices","minimum":1,"maximum":20},"diameterB":{"type":"number","description":"Diameter","minimum":0.1},"priceB":{"type":"number","description":"Price ($)","minimum":0},"slicesB":{"type":"number","description":"Slices","minimum":1,"maximum":20}},"required":[]},"examples":{"12in_9_99_8_slices_vs_16in_14_99_8_slices":{"summary":"12in $9.99/8 slices vs 16in $14.99/8 slices","value":{"unit":"in","diameterA":"12","priceA":"9.99","slicesA":"8","diameterB":"16","priceB":"14.99","slicesB":"8"}},"25cm_12_6_slices_vs_30cm_18_8_slices":{"summary":"25cm $12/6 slices vs 30cm $18/8 slices","value":{"unit":"cm","diameterA":"25","priceA":"12","slicesA":"6","diameterB":"30","priceB":"18","slicesB":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"12in_9_99_8_slices_vs_16in_14_99_8_slices":{"summary":"12in $9.99/8 slices vs 16in $14.99/8 slices","value":{"tool":"pizza-value-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Pizza A Area","value":"113.10 in²"},{"metric":"Pizza B Area","value":"201.06 in²"},{"metric":"Price per in² — Pizza A","value":"$0.09"},{"metric":"Price per in² — Pizza B","value":"$0.07"},{"metric":"Price per Slice — Pizza A","value":"$1.25"},{"metric":"Price per Slice — Pizza B","value":"$1.87"},{"metric":"Area per Slice — Pizza A","value":"14.14 in²"},{"metric":"Area per Slice — Pizza B","value":"25.13 in²"},{"metric":"Better Value","value":"Pizza B"},{"metric":"Savings (per unit area)","value":"15.6%"},{"metric":"Break-even Price for Pizza A","value":"$8.43"}]},"credits_used":5,"credits_remaining":null}},"25cm_12_6_slices_vs_30cm_18_8_slices":{"summary":"25cm $12/6 slices vs 30cm $18/8 slices","value":{"tool":"pizza-value-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Pizza A Area","value":"490.87 cm²"},{"metric":"Pizza B Area","value":"706.86 cm²"},{"metric":"Price per cm² — Pizza A","value":"$0.02"},{"metric":"Price per cm² — Pizza B","value":"$0.03"},{"metric":"Price per Slice — Pizza A","value":"$2.00"},{"metric":"Price per Slice — Pizza B","value":"$2.25"},{"metric":"Area per Slice — Pizza A","value":"81.81 cm²"},{"metric":"Area per Slice — Pizza B","value":"88.36 cm²"},{"metric":"Better Value","value":"Pizza A"},{"metric":"Savings (per unit area)","value":"4.0%"},{"metric":"Break-even Price for Pizza B","value":"$17.28"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Comparison","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/plant-spacing-calculator":{"post":{"operationId":"run_plant_spacing_calculator","summary":"Plant Spacing Calculator","tags":["Calculators"],"description":"Calculate how many plants fit in a garden bed from its dimensions and your chosen spacing — compares a standard square grid against triangular (staggered) spacing side by side, so you can see which layout packs more into the same bed.\n\n[Try Plant Spacing Calculator in your browser →](https://iotools.cloud/tool/plant-spacing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"length":{"type":"number","description":"Bed length","minimum":0.1},"width":{"type":"number","description":"Bed width","minimum":0.1},"spacing":{"type":"number","description":"Plant spacing","minimum":0.1},"unit":{"enum":["cm","in","ft","m"],"description":"Unit"}},"required":["length","width","spacing"]},"examples":{"240_x_120_cm_raised_bed_15_cm_spacing":{"summary":"240 x 120 cm raised bed, 15 cm spacing","value":{"length":"240","width":"120","spacing":"15","unit":"cm"}},"100_x_100_cm_bed_30_cm_spacing":{"summary":"100 x 100 cm bed, 30 cm spacing","value":{"length":"100","width":"100","spacing":"30","unit":"cm"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"240_x_120_cm_raised_bed_15_cm_spacing":{"summary":"240 x 120 cm raised bed, 15 cm spacing","value":{"tool":"plant-spacing-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Bed area","value":"28,800 cm²"},{"metric":"Square grid pattern","value":"17 × 9 = 153 plants"},{"metric":"Triangular (staggered) pattern","value":"165 plants across 10 rows"},{"metric":"Difference","value":"+12 plants (+7.8%) with triangular spacing"}]},"credits_used":5,"credits_remaining":null}},"100_x_100_cm_bed_30_cm_spacing":{"summary":"100 x 100 cm bed, 30 cm spacing","value":{"tool":"plant-spacing-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Bed area","value":"10,000 cm²"},{"metric":"Square grid pattern","value":"4 × 4 = 16 plants"},{"metric":"Triangular (staggered) pattern","value":"14 plants across 4 rows"},{"metric":"Difference","value":"-2 plants (-12.5%) with triangular spacing"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/podcast-audio-file-size-calculator":{"post":{"operationId":"run_podcast_audio_file_size_calculator","summary":"Podcast Audio File Size Calculator","tags":["Calculators"],"description":"Estimate a podcast episode's audio file size from its length and encoding (MP3/AAC/OGG bitrate or WAV/FLAC), then project monthly and yearly hosting storage plus CDN bandwidth from your episode cadence and download count.\n\n[Try Podcast Audio File Size Calculator in your browser →](https://iotools.cloud/tool/podcast-audio-file-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"hours":{"type":"number","description":"Hours","minimum":0,"maximum":99},"minutes":{"type":"number","description":"Minutes","minimum":0,"maximum":59},"seconds":{"type":"number","description":"Seconds","minimum":0,"maximum":59},"audioFormat":{"enum":["mp3","aac","ogg","wav","flac"],"description":"Audio format"},"bitrateKbps":{"enum":["64","96","128","160","192","256","320"],"description":"Bitrate"},"sampleRate":{"enum":["22050","44100","48000","96000"],"description":"Sample rate"},"bitDepth":{"enum":["16","24","32"],"description":"Bit depth"},"channels":{"enum":["1","2"],"description":"Channels"},"episodesPerMonth":{"type":"number","description":"Episodes per month","minimum":1,"maximum":31},"listeners":{"type":"number","description":"Avg downloads per episode","minimum":1,"maximum":100000000}},"required":[]},"examples":{"45_min_mp3_podcast_at_128_kbps_weekly_1k_downloads":{"summary":"45-min MP3 podcast at 128 kbps, weekly, 1k downloads","value":{"hours":"0","minutes":"45","seconds":"0","audioFormat":"mp3","bitrateKbps":"128","sampleRate":"44100","bitDepth":"16","channels":"2","episodesPerMonth":"4","listeners":"1000"}},"1_hour_interview_64_kbps_mono_twice_weekly_5k_downloads":{"summary":"1-hour interview, 64 kbps mono, twice weekly, 5k downloads","value":{"hours":"1","minutes":"0","seconds":"0","audioFormat":"mp3","bitrateKbps":"64","sampleRate":"44100","bitDepth":"16","channels":"1","episodesPerMonth":"8","listeners":"5000"}},"30_min_wav_master_48_khz_24_bit_stereo":{"summary":"30-min WAV master, 48 kHz / 24-bit stereo","value":{"hours":"0","minutes":"30","seconds":"0","audioFormat":"wav","bitrateKbps":"128","sampleRate":"48000","bitDepth":"24","channels":"2","episodesPerMonth":"4","listeners":"1000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"45_min_mp3_podcast_at_128_kbps_weekly_1k_downloads":{"summary":"45-min MP3 podcast at 128 kbps, weekly, 1k downloads","value":{"tool":"podcast-audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"41.20 MB","estimates":[{"metric":"Duration","value":"45m 0s"},{"metric":"Format","value":"MP3 @ 128 kbps"},{"metric":"File size per episode","value":"41.20 MB"},{"metric":"Episodes per month","value":"4"},{"metric":"Monthly storage","value":"164.79 MB"},{"metric":"Yearly storage (48 episodes)","value":"1.93 GB"},{"metric":"Avg downloads per episode","value":"1,000"},{"metric":"Bandwidth per episode","value":"40.23 GB"},{"metric":"Monthly bandwidth","value":"160.93 GB"}]},"credits_used":5,"credits_remaining":null}},"1_hour_interview_64_kbps_mono_twice_weekly_5k_downloads":{"summary":"1-hour interview, 64 kbps mono, twice weekly, 5k downloads","value":{"tool":"podcast-audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"27.47 MB","estimates":[{"metric":"Duration","value":"1h 0m 0s"},{"metric":"Format","value":"MP3 @ 64 kbps"},{"metric":"File size per episode","value":"27.47 MB"},{"metric":"Episodes per month","value":"8"},{"metric":"Monthly storage","value":"219.73 MB"},{"metric":"Yearly storage (96 episodes)","value":"2.57 GB"},{"metric":"Avg downloads per episode","value":"5,000"},{"metric":"Bandwidth per episode","value":"134.11 GB"},{"metric":"Monthly bandwidth","value":"1072.88 GB"}]},"credits_used":5,"credits_remaining":null}},"30_min_wav_master_48_khz_24_bit_stereo":{"summary":"30-min WAV master, 48 kHz / 24-bit stereo","value":{"tool":"podcast-audio-file-size-calculator","tool_version":"1.0.2","outputs":{"fileSize":"494.38 MB","estimates":[{"metric":"Duration","value":"30m 0s"},{"metric":"Format","value":"WAV — 48,000 Hz / 24-bit / Stereo"},{"metric":"File size per episode","value":"494.38 MB"},{"metric":"Episodes per month","value":"4"},{"metric":"Monthly storage","value":"1.93 GB"},{"metric":"Yearly storage (48 episodes)","value":"23.17 GB"},{"metric":"Avg downloads per episode","value":"1,000"},{"metric":"Bandwidth per episode","value":"482.80 GB"},{"metric":"Monthly bandwidth","value":"1931.19 GB"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"fileSize":{"type":"string","description":"File size per episode"},"estimates":{"type":"array","description":"Storage & bandwidth estimate","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pregnancy-due-date-calculator":{"post":{"operationId":"run_pregnancy_due_date_calculator","summary":"Pregnancy Due Date Calculator","tags":["Calculators"],"description":"Estimate a pregnancy due date using Naegele's rule (LMP + 280 days), a known conception date, or an IVF embryo transfer date — plus current gestational age, trimester, and the start of each trimester. For informational use only, not medical advice.\n\n[Try Pregnancy Due Date Calculator in your browser →](https://iotools.cloud/tool/pregnancy-due-date-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"method":{"enum":["lmp","conception","ivf"],"description":"Calculation Method"},"lmpDate":{"type":"string","description":"First Day of Last Period"},"cycleLength":{"type":"number","description":"Cycle Length (days)","minimum":20,"maximum":45},"conceptionDate":{"type":"string","description":"Conception Date"},"ivfTransferDate":{"type":"string","description":"Embryo Transfer Date"},"ivfDay":{"enum":["3","5"],"description":"Embryo Age at Transfer"},"referenceDate":{"type":"string","description":"As of Date"}},"required":[]},"examples":{"lmp_method_standard_28_day_cycle":{"summary":"LMP method, standard 28-day cycle","value":{"method":"lmp","lmpDate":"2024-01-01","cycleLength":"28","conceptionDate":"","ivfTransferDate":"","ivfDay":"5","referenceDate":"2024-04-01"}},"lmp_method_longer_35_day_cycle_adjusted":{"summary":"LMP method, longer 35-day cycle (adjusted)","value":{"method":"lmp","lmpDate":"2024-06-01","cycleLength":"35","conceptionDate":"","ivfTransferDate":"","ivfDay":"5","referenceDate":"2024-08-01"}},"conception_date_method":{"summary":"Conception-date method","value":{"method":"conception","lmpDate":"","cycleLength":"28","conceptionDate":"2024-03-15","ivfTransferDate":"","ivfDay":"5","referenceDate":"2024-09-15"}},"ivf_5_day_blastocyst_transfer_method_past_due_date":{"summary":"IVF 5-day blastocyst transfer method (past due date)","value":{"method":"ivf","lmpDate":"","cycleLength":"28","conceptionDate":"","ivfTransferDate":"2024-02-10","ivfDay":"5","referenceDate":"2024-11-01"}},"reference_date_before_conception_pre_conception_edge_case":{"summary":"Reference date before conception (pre-conception edge case)","value":{"method":"lmp","lmpDate":"2024-06-01","cycleLength":"28","conceptionDate":"","ivfTransferDate":"","ivfDay":"5","referenceDate":"2024-05-01"}},"lmp_method_gestational_age_as_of_today":{"summary":"LMP method, gestational age as of today","value":{"method":"lmp","lmpDate":"2024-01-01","cycleLength":"28","conceptionDate":"","ivfTransferDate":"","ivfDay":"5","referenceDate":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"lmp_method_standard_28_day_cycle":{"summary":"LMP method, standard 28-day cycle","value":{"tool":"pregnancy-due-date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Estimated Due Date","value":"October 7, 2024"},{"metric":"Calculation Method","value":"Last Menstrual Period"},{"metric":"Estimated LMP","value":"January 1, 2024"},{"metric":"Estimated Conception Date","value":"January 15, 2024"},{"metric":"Reference Date","value":"April 1, 2024"},{"metric":"Gestational Age","value":"13 weeks, 0 days"},{"metric":"Trimester","value":"1st Trimester"},{"metric":"Days Until Due Date","value":"189"},{"metric":"End of 1st Trimester (Week 13)","value":"April 1, 2024"},{"metric":"End of 2nd Trimester (Week 27)","value":"July 8, 2024"},{"metric":"Full Term Begins (Week 37)","value":"September 16, 2024"}]},"credits_used":5,"credits_remaining":null}},"lmp_method_longer_35_day_cycle_adjusted":{"summary":"LMP method, longer 35-day cycle (adjusted)","value":{"tool":"pregnancy-due-date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Estimated Due Date","value":"March 15, 2025"},{"metric":"Calculation Method","value":"Last Menstrual Period"},{"metric":"Estimated LMP","value":"June 8, 2024"},{"metric":"Estimated Conception Date","value":"June 22, 2024"},{"metric":"Reference Date","value":"August 1, 2024"},{"metric":"Gestational Age","value":"7 weeks, 5 days"},{"metric":"Trimester","value":"1st Trimester"},{"metric":"Days Until Due Date","value":"226"},{"metric":"End of 1st Trimester (Week 13)","value":"September 7, 2024"},{"metric":"End of 2nd Trimester (Week 27)","value":"December 14, 2024"},{"metric":"Full Term Begins (Week 37)","value":"February 22, 2025"}]},"credits_used":5,"credits_remaining":null}},"conception_date_method":{"summary":"Conception-date method","value":{"tool":"pregnancy-due-date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Estimated Due Date","value":"December 6, 2024"},{"metric":"Calculation Method","value":"Conception Date"},{"metric":"Estimated LMP","value":"March 1, 2024"},{"metric":"Estimated Conception Date","value":"March 15, 2024"},{"metric":"Reference Date","value":"September 15, 2024"},{"metric":"Gestational Age","value":"28 weeks, 2 days"},{"metric":"Trimester","value":"3rd Trimester"},{"metric":"Days Until Due Date","value":"82"},{"metric":"End of 1st Trimester (Week 13)","value":"May 31, 2024"},{"metric":"End of 2nd Trimester (Week 27)","value":"September 6, 2024"},{"metric":"Full Term Begins (Week 37)","value":"November 15, 2024"}]},"credits_used":5,"credits_remaining":null}},"ivf_5_day_blastocyst_transfer_method_past_due_date":{"summary":"IVF 5-day blastocyst transfer method (past due date)","value":{"tool":"pregnancy-due-date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Estimated Due Date","value":"October 28, 2024"},{"metric":"Calculation Method","value":"IVF Transfer Date"},{"metric":"Estimated LMP","value":"January 22, 2024"},{"metric":"Estimated Conception Date","value":"February 5, 2024"},{"metric":"Reference Date","value":"November 1, 2024"},{"metric":"Gestational Age","value":"40 weeks, 4 days"},{"metric":"Trimester","value":"3rd Trimester"},{"metric":"Days Since Due Date","value":"4"},{"metric":"End of 1st Trimester (Week 13)","value":"April 22, 2024"},{"metric":"End of 2nd Trimester (Week 27)","value":"July 29, 2024"},{"metric":"Full Term Begins (Week 37)","value":"October 7, 2024"}]},"credits_used":5,"credits_remaining":null}},"reference_date_before_conception_pre_conception_edge_case":{"summary":"Reference date before conception (pre-conception edge case)","value":{"tool":"pregnancy-due-date-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Estimated Due Date","value":"March 8, 2025"},{"metric":"Calculation Method","value":"Last Menstrual Period"},{"metric":"Estimated LMP","value":"June 1, 2024"},{"metric":"Estimated Conception Date","value":"June 15, 2024"},{"metric":"Reference Date","value":"May 1, 2024"},{"metric":"Gestational Age","value":"Not yet pregnant on this date"},{"metric":"Trimester","value":"Pre-conception"},{"metric":"Days Until Due Date","value":"311"},{"metric":"End of 1st Trimester (Week 13)","value":"August 31, 2024"},{"metric":"End of 2nd Trimester (Week 27)","value":"December 7, 2024"},{"metric":"Full Term Begins (Week 37)","value":"February 15, 2025"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Pregnancy Timeline","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/prime-checker":{"post":{"operationId":"run_prime_checker","summary":"Prime Checker","tags":["Calculators"],"description":"Check whether a number is prime. Enter any integer to see an exact prime/composite verdict, and for composite numbers its prime factorization, divisors, and divisor sum. Uses BigInt so very large numbers work.\n\n[Try Prime Checker in your browser →](https://iotools.cloud/tool/prime-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Number to check"}},"required":["number"]},"examples":{"a_small_prime_17":{"summary":"A small prime (17)","value":{"number":"17"}},"the_only_even_prime_2":{"summary":"The only even prime (2)","value":{"number":"2"}},"a_composite_number_360":{"summary":"A composite number (360)","value":{"number":"360"}},"neither_prime_nor_composite_1":{"summary":"Neither prime nor composite (1)","value":{"number":"1"}},"a_negative_number_7":{"summary":"A negative number (-7)","value":{"number":"-7"}},"a_large_prime_982451653":{"summary":"A large prime (982451653)","value":{"number":"982451653"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_small_prime_17":{"summary":"A small prime (17)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"17 is a prime number","factorization":"17 (prime)","divisors":"1, 17","details":"Number: 17\nStatus: Prime\n\n17 is a prime number: a whole number greater than 1 whose only positive divisors are 1 and itself.\nDivisors (2): 1, 17"},"credits_used":5,"credits_remaining":null}},"the_only_even_prime_2":{"summary":"The only even prime (2)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"2 is a prime number","factorization":"2 (prime)","divisors":"1, 2","details":"Number: 2\nStatus: Prime\n\n2 is a prime number: a whole number greater than 1 whose only positive divisors are 1 and itself.\nDivisors (2): 1, 2"},"credits_used":5,"credits_remaining":null}},"a_composite_number_360":{"summary":"A composite number (360)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"360 is not a prime number (composite)","factorization":"2³ × 3² × 5","divisors":"1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120, 180, 360","details":"Number: 360\nStatus: Composite\n\nPrime factorization: 2³ × 3² × 5\nExpanded: 2 × 2 × 2 × 3 × 3 × 5\nNumber of divisors: 24\nSum of divisors: 1170\nDivisors: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120, 180, 360"},"credits_used":5,"credits_remaining":null}},"neither_prime_nor_composite_1":{"summary":"Neither prime nor composite (1)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"1 is neither prime nor composite","factorization":"N/A","divisors":"1","details":"Number: 1\nStatus: Neither prime nor composite\n\nA prime number must be a whole number greater than 1.\n1 is the multiplicative identity; it is neither prime nor composite."},"credits_used":5,"credits_remaining":null}},"a_negative_number_7":{"summary":"A negative number (-7)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"-7 is neither prime nor composite","factorization":"N/A","divisors":"N/A","details":"Number: -7\nStatus: Neither prime nor composite\n\nA prime number must be a whole number greater than 1.\nPrimality is defined only for integers greater than 1."},"credits_used":5,"credits_remaining":null}},"a_large_prime_982451653":{"summary":"A large prime (982451653)","value":{"tool":"prime-checker","tool_version":"1.0.2","outputs":{"result":"982451653 is a prime number","factorization":"982451653 (prime)","divisors":"1, 982451653","details":"Number: 982451653\nStatus: Prime\n\n982451653 is a prime number: a whole number greater than 1 whose only positive divisors are 1 and itself.\nDivisors (2): 1, 982451653"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"factorization":{"type":"string","description":"Prime factorization"},"divisors":{"type":"string","description":"Divisors"},"details":{"type":"string","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/prime-factorization-calculator":{"post":{"operationId":"run_prime_factorization_calculator","summary":"Prime Factorization Calculator","tags":["Calculators"],"description":"Break a positive integer down into its prime factors — with exponential form (2^3 x 3^2 x 5), a flat product, a factor/exponent table, the count of distinct primes, and every divisor.\n\n[Try Prime Factorization Calculator in your browser →](https://iotools.cloud/tool/prime-factorization-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"Number"}},"required":["number"]},"examples":{"360_2_3_x_3_2_x_5":{"summary":"360 = 2^3 x 3^2 x 5","value":{"number":"360"}},"a_prime_number_97":{"summary":"A prime number (97)","value":{"number":"97"}},"the_number_1_no_prime_factors":{"summary":"The number 1 (no prime factors)","value":{"number":"1"}},"a_large_semiprime_10403_101_x_103":{"summary":"A large semiprime (10403 = 101 x 103)","value":{"number":"10403"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"360_2_3_x_3_2_x_5":{"summary":"360 = 2^3 x 3^2 x 5","value":{"tool":"prime-factorization-calculator","tool_version":"1.0.2","outputs":{"exponential":"2^3 × 3^2 × 5","expanded":"2 × 2 × 2 × 3 × 3 × 5","distinctCount":"3","factorTable":[{"prime":"2","exponent":"3"},{"prime":"3","exponent":"2"},{"prime":"5","exponent":"1"}],"divisors":"1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 18, 20, 24, 30, 36, 40, 45, 60, 72, 90, 120, 180, 360"},"credits_used":5,"credits_remaining":null}},"a_prime_number_97":{"summary":"A prime number (97)","value":{"tool":"prime-factorization-calculator","tool_version":"1.0.2","outputs":{"exponential":"97 (prime)","expanded":"97","distinctCount":"1","factorTable":[{"prime":"97","exponent":"1"}],"divisors":"1, 97"},"credits_used":5,"credits_remaining":null}},"the_number_1_no_prime_factors":{"summary":"The number 1 (no prime factors)","value":{"tool":"prime-factorization-calculator","tool_version":"1.0.2","outputs":{"exponential":"1 (no prime factors)","expanded":"1 (empty product)","distinctCount":"0","factorTable":[],"divisors":"1"},"credits_used":5,"credits_remaining":null}},"a_large_semiprime_10403_101_x_103":{"summary":"A large semiprime (10403 = 101 x 103)","value":{"tool":"prime-factorization-calculator","tool_version":"1.0.2","outputs":{"exponential":"101 × 103","expanded":"101 × 103","distinctCount":"2","factorTable":[{"prime":"101","exponent":"1"},{"prime":"103","exponent":"1"}],"divisors":"1, 101, 103, 10403"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"exponential":{"type":"string","description":"Prime factorization"},"expanded":{"type":"string","description":"Expanded (as a product)"},"distinctCount":{"type":"string","description":"Distinct prime factors"},"factorTable":{"type":"array","description":"Factors","items":{"type":"object","properties":{"prime":{"type":"string","description":"Prime"},"exponent":{"type":"string","description":"Exponent"}}},"x-iotools-columns":["prime","exponent"]},"divisors":{"type":"string","description":"All divisors"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/print-cost-calculator":{"post":{"operationId":"run_print_cost_calculator","summary":"Print Cost Calculator","tags":["Calculators"],"description":"Work out what your printer really costs — ink or toner cost per page, paper cost per page, and the total cost of a print job, a month of printing, and a year of printing, in your own currency.\n\n[Try Print Cost Calculator in your browser →](https://iotools.cloud/tool/print-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"printType":{"enum":["bw","color"],"description":"Print Type"},"blackCartridgePrice":{"type":"number","description":"Black Cartridge Price","minimum":0.01},"blackPageYield":{"type":"number","description":"Black Cartridge Yield (pages)","minimum":1},"colorCartridgePrice":{"type":"number","description":"Color Cartridge Price","minimum":0.01},"colorPageYield":{"type":"number","description":"Color Cartridge Yield (pages)","minimum":1},"paperPrice":{"type":"number","description":"Paper Price (per ream)","minimum":0},"sheetsPerReam":{"type":"number","description":"Sheets Per Ream","minimum":1},"pagesPerJob":{"type":"number","description":"Pages Per Print Job","minimum":1},"pagesPerMonth":{"type":"number","description":"Pages Printed Per Month","minimum":0},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":[]},"examples":{"default_black_white_24_99_cartridge_250_pages":{"summary":"Default: black & white, $24.99 cartridge / 250 pages","value":{"printType":"bw","blackCartridgePrice":"24.99","blackPageYield":"250","colorCartridgePrice":"32.99","colorPageYield":"200","paperPrice":"6.00","sheetsPerReam":"500","pagesPerJob":"100","pagesPerMonth":"200","currency":"USD"}},"color_printing_higher_volume":{"summary":"Color printing, higher volume","value":{"printType":"color","blackCartridgePrice":"24.99","blackPageYield":"250","colorCartridgePrice":"32.99","colorPageYield":"200","paperPrice":"6.00","sheetsPerReam":"500","pagesPerJob":"50","pagesPerMonth":"500","currency":"USD"}},"eur_budget_toner_and_bulk_paper":{"summary":"EUR, budget toner and bulk paper","value":{"printType":"bw","blackCartridgePrice":"18.50","blackPageYield":"300","colorCartridgePrice":"32.99","colorPageYield":"200","paperPrice":"9.00","sheetsPerReam":"1000","pagesPerJob":"20","pagesPerMonth":"150","currency":"EUR"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_black_white_24_99_cartridge_250_pages":{"summary":"Default: black & white, $24.99 cartridge / 250 pages","value":{"tool":"print-cost-calculator","tool_version":"1.0.2","outputs":{"costPerPageTable":[{"component":"Ink Cost","cost-page":"$0.10"},{"component":"Paper Cost","cost-page":"$0.01"},{"component":"Total Cost","cost-page":"$0.11"}],"volumeTable":[{"period":"Per Print Job","pages":"100","cost":"$11.20"},{"period":"Monthly","pages":"200","cost":"$22.39"},{"period":"Yearly","pages":"2400","cost":"$268.70"}],"pagesPerUnit":"8.9 pages per $1"},"credits_used":5,"credits_remaining":null}},"color_printing_higher_volume":{"summary":"Color printing, higher volume","value":{"tool":"print-cost-calculator","tool_version":"1.0.2","outputs":{"costPerPageTable":[{"component":"Ink Cost","cost-page":"$0.16"},{"component":"Paper Cost","cost-page":"$0.01"},{"component":"Total Cost","cost-page":"$0.18"}],"volumeTable":[{"period":"Per Print Job","pages":"50","cost":"$8.85"},{"period":"Monthly","pages":"500","cost":"$88.48"},{"period":"Yearly","pages":"6000","cost":"$1,061.70"}],"pagesPerUnit":"5.7 pages per $1"},"credits_used":5,"credits_remaining":null}},"eur_budget_toner_and_bulk_paper":{"summary":"EUR, budget toner and bulk paper","value":{"tool":"print-cost-calculator","tool_version":"1.0.2","outputs":{"costPerPageTable":[{"component":"Ink Cost","cost-page":"€0.06"},{"component":"Paper Cost","cost-page":"€0.01"},{"component":"Total Cost","cost-page":"€0.07"}],"volumeTable":[{"period":"Per Print Job","pages":"20","cost":"€1.41"},{"period":"Monthly","pages":"150","cost":"€10.60"},{"period":"Yearly","pages":"1800","cost":"€127.20"}],"pagesPerUnit":"14.2 pages per €1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"costPerPageTable":{"type":"array","description":"Cost Per Page","items":{"type":"object","properties":{"component":{"type":"string","description":"Component"},"cost-page":{"type":"string","description":"Cost / Page"}}},"x-iotools-columns":["component","cost-page"]},"volumeTable":{"type":"array","description":"Print Job, Monthly & Yearly Cost","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"pages":{"type":"string","description":"Pages"},"cost":{"type":"string","description":"Cost"}}},"x-iotools-columns":["period","pages","cost"]},"pagesPerUnit":{"type":"string","description":"Pages Printable Per Currency Unit"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pump-power-calculator":{"post":{"operationId":"run_pump_power_calculator","summary":"Pump Power Calculator","tags":["Calculators"],"description":"Calculate a liquid pump's hydraulic power and shaft (brake) power from flow rate, total head and fluid density, plus an optional motor input power once motor efficiency is included.\n\n[Try Pump Power Calculator in your browser →](https://iotools.cloud/tool/pump-power-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"flowRate":{"type":"number","description":"Flow rate","minimum":0},"flowUnit":{"enum":["lpm","m3h","m3min","gpm"],"description":"Flow unit"},"head":{"type":"number","description":"Total head","minimum":0},"headUnit":{"enum":["m","ft"],"description":"Head unit"},"fluid":{"enum":["water","seawater","diesel","gasoline","glycerin","custom"],"description":"Fluid"},"density":{"type":"number","description":"Density (kg/m³)","minimum":0},"pumpEfficiency":{"type":"number","description":"Pump efficiency (%)","minimum":0,"maximum":100},"motorEfficiency":{"type":"number","description":"Motor efficiency (%) — optional","minimum":0,"maximum":100}},"required":["flowRate","head","pumpEfficiency"]},"examples":{"100_l_min_water_20_m_head_75_pump_efficiency":{"summary":"100 L/min water, 20 m head, 75% pump efficiency","value":{"flowRate":"100","flowUnit":"lpm","head":"20","headUnit":"m","fluid":"water","pumpEfficiency":"75"}},"100_l_min_water_20_m_head_75_pump_90_motor_efficiency":{"summary":"100 L/min water, 20 m head, 75% pump + 90% motor efficiency","value":{"flowRate":"100","flowUnit":"lpm","head":"20","headUnit":"m","fluid":"water","pumpEfficiency":"75","motorEfficiency":"90"}},"50_us_gpm_diesel_60_ft_head_65_pump_efficiency":{"summary":"50 US GPM diesel, 60 ft head, 65% pump efficiency","value":{"flowRate":"50","flowUnit":"gpm","head":"60","headUnit":"ft","fluid":"diesel","pumpEfficiency":"65"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_l_min_water_20_m_head_75_pump_efficiency":{"summary":"100 L/min water, 20 m head, 75% pump efficiency","value":{"tool":"pump-power-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volumetric flow","value":"0.001667 m³/s (100 L/min)"},{"property":"Total head","value":"20 m"},{"property":"Fluid density","value":"998.2 kg/m³"},{"property":"Hydraulic power","value":"0.3263 kW (0.4376 hp)"},{"property":"Pump efficiency","value":"75%"},{"property":"Shaft (brake) power","value":"0.4351 kW (0.5834 hp)"}]},"credits_used":5,"credits_remaining":null}},"100_l_min_water_20_m_head_75_pump_90_motor_efficiency":{"summary":"100 L/min water, 20 m head, 75% pump + 90% motor efficiency","value":{"tool":"pump-power-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volumetric flow","value":"0.001667 m³/s (100 L/min)"},{"property":"Total head","value":"20 m"},{"property":"Fluid density","value":"998.2 kg/m³"},{"property":"Hydraulic power","value":"0.3263 kW (0.4376 hp)"},{"property":"Pump efficiency","value":"75%"},{"property":"Shaft (brake) power","value":"0.4351 kW (0.5834 hp)"},{"property":"Motor efficiency","value":"90%"},{"property":"Motor input power","value":"0.4834 kW (0.6483 hp)"}]},"credits_used":5,"credits_remaining":null}},"50_us_gpm_diesel_60_ft_head_65_pump_efficiency":{"summary":"50 US GPM diesel, 60 ft head, 65% pump efficiency","value":{"tool":"pump-power-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volumetric flow","value":"0.003155 m³/s (50 US gal/min)"},{"property":"Total head","value":"18.29 m"},{"property":"Fluid density","value":"832 kg/m³"},{"property":"Hydraulic power","value":"0.4707 kW (0.6312 hp)"},{"property":"Pump efficiency","value":"65%"},{"property":"Shaft (brake) power","value":"0.7242 kW (0.9711 hp)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pwm-duty-frequency-calculator":{"post":{"operationId":"run_pwm_duty_frequency_calculator","summary":"PWM Duty Cycle & Frequency Calculator","tags":["Calculators"],"description":"Calculate PWM signal frequency, period, duty cycle and pulse width. Convert from frequency + duty cycle to period + pulse width, or the other way around.\n\n[Try PWM Duty Cycle & Frequency Calculator in your browser →](https://iotools.cloud/tool/pwm-duty-frequency-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["freq","period"],"description":"Known Values"},"frequency":{"type":"number","description":"Frequency (Hz)","minimum":0},"dutyCycle":{"type":"number","description":"Duty Cycle (%)","minimum":0,"maximum":100},"period":{"type":"number","description":"Period (ms)","minimum":0},"pulseWidth":{"type":"number","description":"Pulse Width — High Time (ms)","minimum":0}},"required":[]},"examples":{"from_frequency_duty_cycle_1000_hz_25":{"summary":"From Frequency + Duty Cycle — 1000 Hz, 25%","value":{"mode":"freq","frequency":"1000","dutyCycle":"25","period":"2","pulseWidth":"0.5"}},"from_period_pulse_width_2_ms_period_0_5_ms_high":{"summary":"From Period + Pulse Width — 2 ms period, 0.5 ms high","value":{"mode":"period","frequency":"1000","dutyCycle":"25","period":"2","pulseWidth":"0.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"from_frequency_duty_cycle_1000_hz_25":{"summary":"From Frequency + Duty Cycle — 1000 Hz, 25%","value":{"tool":"pwm-duty-frequency-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Frequency","value":"1000 Hz"},{"metric":"Period","value":"1 ms"},{"metric":"Duty Cycle","value":"25.00%"},{"metric":"Pulse Width (High Time)","value":"0.25 ms"},{"metric":"Pulse Low (Low Time)","value":"0.75 ms"}]},"credits_used":5,"credits_remaining":null}},"from_period_pulse_width_2_ms_period_0_5_ms_high":{"summary":"From Period + Pulse Width — 2 ms period, 0.5 ms high","value":{"tool":"pwm-duty-frequency-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Frequency","value":"500 Hz"},{"metric":"Period","value":"2 ms"},{"metric":"Duty Cycle","value":"25.00%"},{"metric":"Pulse Width (High Time)","value":"0.5 ms"},{"metric":"Pulse Low (Low Time)","value":"1.5 ms"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/quadratic-formula-solver":{"post":{"operationId":"run_quadratic_formula_solver","summary":"Quadratic Formula Solver","tags":["Calculators"],"description":"Solve ax² + bx + c = 0 for x using the quadratic formula. Computes the discriminant and returns two real roots, one repeated real root, or two complex conjugate roots, with a step-by-step derivation.\n\n[Try Quadratic Formula Solver in your browser →](https://iotools.cloud/tool/quadratic-formula-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"a"},"coeffB":{"type":"number","description":"b"},"coeffC":{"type":"number","description":"c"}},"required":["coeffA","coeffB","coeffC"]},"examples":{"two_distinct_real_roots_x_5x_6_0":{"summary":"Two distinct real roots (x² − 5x + 6 = 0)","value":{"coeffA":"1","coeffB":"-5","coeffC":"6"}},"one_repeated_real_root_x_4x_4_0":{"summary":"One repeated real root (x² − 4x + 4 = 0)","value":{"coeffA":"1","coeffB":"-4","coeffC":"4"}},"two_complex_conjugate_roots_x_x_1_0":{"summary":"Two complex conjugate roots (x² + x + 1 = 0)","value":{"coeffA":"1","coeffB":"1","coeffC":"1"}},"non_unit_leading_coefficient_2x_4x_6_0":{"summary":"Non-unit leading coefficient (2x² + 4x − 6 = 0)","value":{"coeffA":"2","coeffB":"4","coeffC":"-6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"two_distinct_real_roots_x_5x_6_0":{"summary":"Two distinct real roots (x² − 5x + 6 = 0)","value":{"tool":"quadratic-formula-solver","tool_version":"1.0.2","outputs":{"roots":"x₁ = 3, x₂ = 2","discriminant":"1","steps":"a = 1, b = -5, c = 6\nDiscriminant: Δ = b² − 4ac = (-5)² − 4(1)(6) = 1\nΔ > 0 → two distinct real roots\nx = (−b ± √Δ) / (2a) = (5 ± √1) / (2)\nx₁ = 3\nx₂ = 2"},"credits_used":5,"credits_remaining":null}},"one_repeated_real_root_x_4x_4_0":{"summary":"One repeated real root (x² − 4x + 4 = 0)","value":{"tool":"quadratic-formula-solver","tool_version":"1.0.2","outputs":{"roots":"x = 2 (double root)","discriminant":"0","steps":"a = 1, b = -4, c = 4\nDiscriminant: Δ = b² − 4ac = (-4)² − 4(1)(4) = 0\nΔ = 0 → one repeated real root\nx = −b / (2a) = 4 / 2 = 2"},"credits_used":5,"credits_remaining":null}},"two_complex_conjugate_roots_x_x_1_0":{"summary":"Two complex conjugate roots (x² + x + 1 = 0)","value":{"tool":"quadratic-formula-solver","tool_version":"1.0.2","outputs":{"roots":"x₁ = -0.5 + 0.866025i, x₂ = -0.5 - 0.866025i","discriminant":"-3","steps":"a = 1, b = 1, c = 1\nDiscriminant: Δ = b² − 4ac = (1)² − 4(1)(1) = -3\nΔ < 0 → two complex conjugate roots\nx = (−b ± i√|Δ|) / (2a) = (-1 ± i√3) / (2)\nx₁ = -0.5 + 0.866025i\nx₂ = -0.5 - 0.866025i"},"credits_used":5,"credits_remaining":null}},"non_unit_leading_coefficient_2x_4x_6_0":{"summary":"Non-unit leading coefficient (2x² + 4x − 6 = 0)","value":{"tool":"quadratic-formula-solver","tool_version":"1.0.2","outputs":{"roots":"x₁ = 1, x₂ = -3","discriminant":"64","steps":"a = 2, b = 4, c = -6\nDiscriminant: Δ = b² − 4ac = (4)² − 4(2)(-6) = 64\nΔ > 0 → two distinct real roots\nx = (−b ± √Δ) / (2a) = (-4 ± √64) / (4)\nx₁ = 1\nx₂ = -3"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"roots":{"type":"string","description":"Roots"},"discriminant":{"type":"string","description":"Discriminant (Δ)"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/stair-rise-run-calculator":{"post":{"operationId":"run_stair_rise_run_calculator","summary":"Stair Rise & Run Calculator","tags":["Calculators"],"description":"Calculate stair riser height, tread depth, step count, total run and stair angle from a total floor-to-floor rise — solving from either a target riser height or a desired step count — with a common building-code comfort check.\n\n[Try Stair Rise & Run Calculator in your browser →](https://iotools.cloud/tool/stair-rise-run-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalRise":{"type":"number","description":"Total rise (floor-to-floor height)","minimum":0},"unit":{"enum":["in","cm"],"description":"Unit"},"solveMode":{"enum":["riser","steps"],"description":"Solve from"},"targetRiser":{"type":"number","description":"Target riser height","minimum":0},"stepCount":{"type":"number","description":"Desired number of steps","minimum":1}},"required":["totalRise"]},"examples":{"108in_total_rise_solve_from_7in_target_riser":{"summary":"108in total rise, solve from 7in target riser","value":{"totalRise":"108","unit":"in","solveMode":"riser","targetRiser":"7","stepCount":"14"}},"275cm_total_rise_solve_from_18cm_target_riser":{"summary":"275cm total rise, solve from 18cm target riser","value":{"totalRise":"275","unit":"cm","solveMode":"riser","targetRiser":"18","stepCount":"14"}},"96in_total_rise_solve_from_a_fixed_12_step_count_fails_comfort_range":{"summary":"96in total rise, solve from a fixed 12-step count (fails comfort range)","value":{"totalRise":"96","unit":"in","solveMode":"steps","targetRiser":"7","stepCount":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"108in_total_rise_solve_from_7in_target_riser":{"summary":"108in total rise, solve from 7in target riser","value":{"tool":"stair-rise-run-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Number of steps (risers)","value":"15"},{"metric":"Number of treads","value":"14"},{"metric":"Riser height (each)","value":"7.20 in"},{"metric":"Tread depth (each)","value":"10.60 in"},{"metric":"Total run","value":"148.40 in"},{"metric":"Stair angle","value":"34.2°"},{"metric":"Comfort rule (2R + T)","value":"25.00 in"},{"metric":"Code compliance","value":"Within common comfort range (7.00 in-7.75 in riser, 10.00 in-11.00 in tread)"}],"summary":"15 risers × 7.20 in · 14 treads × 10.60 in · run 148.40 in · 34.2°"},"credits_used":5,"credits_remaining":null}},"275cm_total_rise_solve_from_18cm_target_riser":{"summary":"275cm total rise, solve from 18cm target riser","value":{"tool":"stair-rise-run-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Number of steps (risers)","value":"15"},{"metric":"Number of treads","value":"14"},{"metric":"Riser height (each)","value":"18.33 cm"},{"metric":"Tread depth (each)","value":"26.83 cm"},{"metric":"Total run","value":"375.67 cm"},{"metric":"Stair angle","value":"34.3°"},{"metric":"Comfort rule (2R + T)","value":"63.50 cm"},{"metric":"Code compliance","value":"Within common comfort range (17.78 cm-19.68 cm riser, 25.40 cm-27.94 cm tread)"}],"summary":"15 risers × 18.33 cm · 14 treads × 26.83 cm · run 375.67 cm · 34.3°"},"credits_used":5,"credits_remaining":null}},"96in_total_rise_solve_from_a_fixed_12_step_count_fails_comfort_range":{"summary":"96in total rise, solve from a fixed 12-step count (fails comfort range)","value":{"tool":"stair-rise-run-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Number of steps (risers)","value":"12"},{"metric":"Number of treads","value":"11"},{"metric":"Riser height (each)","value":"8.00 in"},{"metric":"Tread depth (each)","value":"9.00 in"},{"metric":"Total run","value":"99.00 in"},{"metric":"Stair angle","value":"41.6°"},{"metric":"Comfort rule (2R + T)","value":"25.00 in"},{"metric":"Code compliance","value":"Outside common comfort range: riser 8.00 in exceeds the common max of 7.75 in; tread 9.00 in is below the common min of 10.00 in"}],"summary":"12 risers × 8.00 in · 11 treads × 9.00 in · run 99.00 in · 41.6°"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/statistics-calculator":{"post":{"operationId":"run_statistics_calculator","summary":"Statistics Calculator","tags":["Calculators"],"description":"Compute descriptive statistics for a list of numbers — count, sum, mean, median, mode, range, quartiles, IQR, variance, standard deviation, standard error, coefficient of variation, skewness, and kurtosis. Choose population or sample variance.\n\n[Try Statistics Calculator in your browser →](https://iotools.cloud/tool/statistics-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dataInput":{"type":"string","description":"Data"},"varianceType":{"enum":["population","sample"],"description":"Variance Type"}},"required":[]},"examples":{"population_variance_known_reference_set":{"summary":"Population variance (known reference set)","value":{"dataInput":"2, 4, 4, 4, 5, 5, 7, 9","varianceType":"population"}},"sample_variance_multi_modal_set":{"summary":"Sample variance, multi-modal set","value":{"dataInput":"12, 15, 18, 22, 22, 25, 28, 30, 30, 30, 35, 40, 42, 45, 50","varianceType":"sample"}},"no_mode_even_length_set":{"summary":"No mode, even-length set","value":{"dataInput":"1 2 3 4","varianceType":"sample"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"population_variance_known_reference_set":{"summary":"Population variance (known reference set)","value":{"tool":"statistics-calculator","tool_version":"1.0.2","outputs":{"stats":[{"statistic":"Count","value":"8"},{"statistic":"Sum","value":"40"},{"statistic":"Mean","value":"5"},{"statistic":"Median","value":"4.5"},{"statistic":"Mode","value":"4"},{"statistic":"Range","value":"7"},{"statistic":"Min","value":"2"},{"statistic":"Max","value":"9"},{"statistic":"Q1 (25th percentile)","value":"4"},{"statistic":"Q2 (Median)","value":"4.5"},{"statistic":"Q3 (75th percentile)","value":"5.5"},{"statistic":"IQR","value":"1.5"},{"statistic":"Variance (Population)","value":"4"},{"statistic":"Std Deviation (Population)","value":"2"},{"statistic":"Std Error of Mean","value":"0.707107"},{"statistic":"Coefficient of Variation","value":"40%"},{"statistic":"Skewness","value":"0.65625"},{"statistic":"Kurtosis (Excess)","value":"-0.21875"}],"frequency":[{"value":"2","count":"1","relative":"12.5%"},{"value":"4","count":"3","relative":"37.5%"},{"value":"5","count":"2","relative":"25.0%"},{"value":"7","count":"1","relative":"12.5%"},{"value":"9","count":"1","relative":"12.5%"}]},"credits_used":5,"credits_remaining":null}},"sample_variance_multi_modal_set":{"summary":"Sample variance, multi-modal set","value":{"tool":"statistics-calculator","tool_version":"1.0.2","outputs":{"stats":[{"statistic":"Count","value":"15"},{"statistic":"Sum","value":"444"},{"statistic":"Mean","value":"29.6"},{"statistic":"Median","value":"30"},{"statistic":"Mode","value":"30"},{"statistic":"Range","value":"38"},{"statistic":"Min","value":"12"},{"statistic":"Max","value":"50"},{"statistic":"Q1 (25th percentile)","value":"22"},{"statistic":"Q2 (Median)","value":"30"},{"statistic":"Q3 (75th percentile)","value":"37.5"},{"statistic":"IQR","value":"15.5"},{"statistic":"Variance (Sample)","value":"124.4"},{"statistic":"Std Deviation (Sample)","value":"11.153475"},{"statistic":"Std Error of Mean","value":"2.879815"},{"statistic":"Coefficient of Variation","value":"37.680658%"},{"statistic":"Skewness","value":"0.225239"},{"statistic":"Kurtosis (Excess)","value":"-0.862402"}],"frequency":[{"value":"12","count":"1","relative":"6.7%"},{"value":"15","count":"1","relative":"6.7%"},{"value":"18","count":"1","relative":"6.7%"},{"value":"22","count":"2","relative":"13.3%"},{"value":"25","count":"1","relative":"6.7%"},{"value":"28","count":"1","relative":"6.7%"},{"value":"30","count":"3","relative":"20.0%"},{"value":"35","count":"1","relative":"6.7%"},{"value":"40","count":"1","relative":"6.7%"},{"value":"42","count":"1","relative":"6.7%"},{"value":"45","count":"1","relative":"6.7%"},{"value":"50","count":"1","relative":"6.7%"}]},"credits_used":5,"credits_remaining":null}},"no_mode_even_length_set":{"summary":"No mode, even-length set","value":{"tool":"statistics-calculator","tool_version":"1.0.2","outputs":{"stats":[{"statistic":"Count","value":"4"},{"statistic":"Sum","value":"10"},{"statistic":"Mean","value":"2.5"},{"statistic":"Median","value":"2.5"},{"statistic":"Mode","value":"No mode"},{"statistic":"Range","value":"3"},{"statistic":"Min","value":"1"},{"statistic":"Max","value":"4"},{"statistic":"Q1 (25th percentile)","value":"1.75"},{"statistic":"Q2 (Median)","value":"2.5"},{"statistic":"Q3 (75th percentile)","value":"3.25"},{"statistic":"IQR","value":"1.5"},{"statistic":"Variance (Sample)","value":"1.666667"},{"statistic":"Std Deviation (Sample)","value":"1.290994"},{"statistic":"Std Error of Mean","value":"0.645497"},{"statistic":"Coefficient of Variation","value":"51.639778%"},{"statistic":"Skewness","value":"0"},{"statistic":"Kurtosis (Excess)","value":"-1.36"}],"frequency":[{"value":"1","count":"1","relative":"25.0%"},{"value":"2","count":"1","relative":"25.0%"},{"value":"3","count":"1","relative":"25.0%"},{"value":"4","count":"1","relative":"25.0%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"statistic":{"type":"string","description":"Statistic"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["statistic","value"]},"frequency":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string","description":"Value"},"count":{"type":"string","description":"Count"},"relative":{"type":"string","description":"Relative %"}}},"x-iotools-columns":["value","count","relative"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/stress-strain-calculator":{"post":{"operationId":"run_stress_strain_calculator","summary":"Stress Strain Calculator","tags":["Calculators"],"description":"Calculate axial stress, strain and elastic modulus from an applied load and specimen geometry — enter the force, cross-sectional area, original length and elongation, and optionally compare the computed elastic modulus against a common structural material.\n\n[Try Stress Strain Calculator in your browser →](https://iotools.cloud/tool/stress-strain-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"force":{"type":"number","description":"Axial force","minimum":0},"area":{"type":"number","description":"Cross-sectional area","minimum":0},"originalLength":{"type":"number","description":"Original length","minimum":0},"elongation":{"type":"number","description":"Change in length (elongation)","minimum":0},"material":{"enum":["","structural-steel","stainless-steel","aluminum-6061","cast-iron","reinforced-concrete","douglas-fir","southern-pine","titanium"],"description":"Compare against (optional)"}},"required":["force","area","originalLength","elongation"]},"examples":{"steel_bar_50_kn_load":{"summary":"Steel bar, 50 kN load","value":{"force":"50000","area":"500","originalLength":"200","elongation":"0.1","material":"structural-steel"}},"aluminum_coupon_no_material_comparison":{"summary":"Aluminum coupon, no material comparison","value":{"force":"13780","area":"200","originalLength":"100","elongation":"0.1","material":""}},"zero_elongation_undefined_modulus":{"summary":"Zero elongation (undefined modulus)","value":{"force":"10000","area":"100","originalLength":"150","elongation":"0","material":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"steel_bar_50_kn_load":{"summary":"Steel bar, 50 kN load","value":{"tool":"stress-strain-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Stress (σ)","value":"100 MPa"},{"metric":"Strain (ε)","value":"0.0005"},{"metric":"Strain (%)","value":"0.05%"},{"metric":"Elastic modulus (E)","value":"200 GPa"}],"comparison":"Structural steel (ASTM A36): typical E ≈ 200 GPa — computed value is +0% away."},"credits_used":5,"credits_remaining":null}},"aluminum_coupon_no_material_comparison":{"summary":"Aluminum coupon, no material comparison","value":{"tool":"stress-strain-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Stress (σ)","value":"68.9 MPa"},{"metric":"Strain (ε)","value":"0.001"},{"metric":"Strain (%)","value":"0.1%"},{"metric":"Elastic modulus (E)","value":"68.9 GPa"}],"comparison":""},"credits_used":5,"credits_remaining":null}},"zero_elongation_undefined_modulus":{"summary":"Zero elongation (undefined modulus)","value":{"tool":"stress-strain-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Stress (σ)","value":"100 MPa"},{"metric":"Strain (ε)","value":"0 (no elongation)"},{"metric":"Strain (%)","value":"0%"},{"metric":"Elastic modulus (E)","value":"N/A (zero strain)"}],"comparison":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"comparison":{"type":"string","description":"Material comparison"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/string-length-calculator":{"post":{"operationId":"run_string_length_calculator","summary":"String Length Calculator","tags":["Calculators"],"description":"Calculate text length in multiple units: JS string length (UTF-16 code units — what most naive tools report), Unicode character count (codepoints), and byte length when UTF-8 encoded — plus character count without spaces, word count and line count. Reveals how emoji and other multi-byte characters make these numbers diverge.\n\n[Try String Length Calculator in your browser →](https://iotools.cloud/tool/string-length-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"textContent":{"type":"string","description":"Your text"}},"required":[]},"examples":{"single_emoji":{"summary":"Single emoji","value":{"textContent":"😀"}},"mixed_text_with_emoji_and_cjk":{"summary":"Mixed text with emoji and CJK","value":{"textContent":"Hello, World! 😀\n\nThis is a sample text with multiple lines.\nIt includes Unicode characters like é, ñ, 中文, and 日本語."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_emoji":{"summary":"Single emoji","value":{"tool":"string-length-calculator","tool_version":"1.0.2","outputs":{"stats":[{"metric":"JS String Length (UTF-16 code units)","value":"2"},{"metric":"Unicode Character Count (Codepoints)","value":"1"},{"metric":"Byte Length (UTF-8)","value":"4"},{"metric":"Character Count (No Spaces)","value":"1"},{"metric":"Word Count","value":"1"},{"metric":"Line Count","value":"1"}]},"credits_used":5,"credits_remaining":null}},"mixed_text_with_emoji_and_cjk":{"summary":"Mixed text with emoji and CJK","value":{"tool":"string-length-calculator","tool_version":"1.0.2","outputs":{"stats":[{"metric":"JS String Length (UTF-16 code units)","value":"115"},{"metric":"Unicode Character Count (Codepoints)","value":"114"},{"metric":"Byte Length (UTF-8)","value":"129"},{"metric":"Character Count (No Spaces)","value":"93"},{"metric":"Word Count","value":"21"},{"metric":"Line Count","value":"4"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/power-factor-correction-calculator":{"post":{"operationId":"run_power_factor_correction_calculator","summary":"Power Factor Correction Calculator","tags":["Calculators"],"description":"Calculate the capacitor kvar needed to correct a power factor to a target value, and size the bank itself — capacitance in µF per phase for a delta or star connection, capacitor current, and the apparent power and line current before and after correction.\n\n[Try Power Factor Correction Calculator in your browser →](https://iotools.cloud/tool/power-factor-correction-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"realPower":{"type":"number","description":"Real Power (kW)","minimum":0},"existingPf":{"type":"number","description":"Existing Power Factor","minimum":0.05,"maximum":1},"targetPf":{"type":"number","description":"Target Power Factor","minimum":0.05,"maximum":1},"system":{"enum":["three","single"],"description":"Supply"},"voltage":{"type":"number","description":"Voltage (V)","minimum":1},"frequency":{"enum":["50","60"],"description":"Frequency"},"connection":{"enum":["delta","star"],"description":"Bank Connection"}},"required":[]},"examples":{"100_kw_from_0_75_to_0_95_pf_400_v_three_phase_delta":{"summary":"100 kW from 0.75 to 0.95 PF, 400 V three-phase delta","value":{"realPower":"100","existingPf":"0.75","targetPf":"0.95","system":"three","voltage":"400","frequency":"50","connection":"delta"}},"star_connected_bank_at_60_hz":{"summary":"Star-connected bank at 60 Hz","value":{"realPower":"250","existingPf":"0.8","targetPf":"0.98","system":"three","voltage":"480","frequency":"60","connection":"star"}},"single_phase_5_kw_workshop_load_at_230_v":{"summary":"Single-phase 5 kW workshop load at 230 V","value":{"realPower":"5","existingPf":"0.7","targetPf":"0.95","system":"single","voltage":"230","frequency":"50","connection":"delta"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_kw_from_0_75_to_0_95_pf_400_v_three_phase_delta":{"summary":"100 kW from 0.75 to 0.95 PF, 400 V three-phase delta","value":{"tool":"power-factor-correction-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Power factor","before":"0.75","after":"0.95"},{"quantity":"Phase angle φ","before":"41.4096°","after":"18.1949°"},{"quantity":"Real power","before":"100 kW","after":"100 kW"},{"quantity":"Reactive power","before":"88.1917 kvar","after":"32.8684 kvar"},{"quantity":"Apparent power","before":"133.333 kVA","after":"105.263 kVA"},{"quantity":"Line current","before":"192.45 A","after":"151.934 A"}],"capacitor":[{"item":"Required compensation","value":"55.3233 kvar"},{"item":"kvar per kW (tan φ₁ − tan φ₂)","value":"0.553233"},{"item":"Bank connection","value":"Delta (3 capacitors)"},{"item":"Capacitor voltage","value":"400 V"},{"item":"Capacitance per phase","value":"366.874 µF"},{"item":"Total capacitance","value":"1100.62 µF"},{"item":"Capacitor current per phase","value":"46.1027 A"},{"item":"Capacitor line current","value":"79.8523 A"},{"item":"Apparent power released","value":"28.0702 kVA"},{"item":"Line current reduction","value":"21.0526 %"}],"breakdown":"φ₁ = acos(0.75) = 41.4096°   tan φ₁ = 0.881917\nφ₂ = acos(0.95) = 18.1949°   tan φ₂ = 0.328684\nQc = P × (tan φ₁ − tan φ₂) = 100 × 0.553233 = 55.3233 kvar\nS falls from 133.333 kVA to 105.263 kVA, freeing 28.0702 kVA\nI = S ÷ (√3 × 400 V): 192.45 A → 151.934 A\nC = (Qc ÷ 3) ÷ (2πf × 400²) = 366.874 µF per phase at 50 Hz\nPreliminary sizing only — harmonics, detuned reactors, switching steps and utility rules need an engineering review."},"credits_used":5,"credits_remaining":null}},"star_connected_bank_at_60_hz":{"summary":"Star-connected bank at 60 Hz","value":{"tool":"power-factor-correction-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Power factor","before":"0.8","after":"0.98"},{"quantity":"Phase angle φ","before":"36.8699°","after":"11.4783°"},{"quantity":"Real power","before":"250 kW","after":"250 kW"},{"quantity":"Reactive power","before":"187.5 kvar","after":"50.7647 kvar"},{"quantity":"Apparent power","before":"312.5 kVA","after":"255.102 kVA"},{"quantity":"Line current","before":"375.879 A","after":"306.84 A"}],"capacitor":[{"item":"Required compensation","value":"136.735 kvar"},{"item":"kvar per kW (tan φ₁ − tan φ₂)","value":"0.546941"},{"item":"Bank connection","value":"Star / wye (3 capacitors)"},{"item":"Capacitor voltage","value":"277.128 V"},{"item":"Capacitance per phase","value":"1574.23 µF"},{"item":"Total capacitance","value":"4722.68 µF"},{"item":"Capacitor current per phase","value":"164.467 A"},{"item":"Capacitor line current","value":"164.467 A"},{"item":"Apparent power released","value":"57.398 kVA"},{"item":"Line current reduction","value":"18.3673 %"}],"breakdown":"φ₁ = acos(0.8) = 36.8699°   tan φ₁ = 0.75\nφ₂ = acos(0.98) = 11.4783°   tan φ₂ = 0.203059\nQc = P × (tan φ₁ − tan φ₂) = 250 × 0.546941 = 136.735 kvar\nS falls from 312.5 kVA to 255.102 kVA, freeing 57.398 kVA\nI = S ÷ (√3 × 480 V): 375.879 A → 306.84 A\nC = (Qc ÷ 3) ÷ (2πf × 277.128²) = 1574.23 µF per phase at 60 Hz\nPreliminary sizing only — harmonics, detuned reactors, switching steps and utility rules need an engineering review."},"credits_used":5,"credits_remaining":null}},"single_phase_5_kw_workshop_load_at_230_v":{"summary":"Single-phase 5 kW workshop load at 230 V","value":{"tool":"power-factor-correction-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Power factor","before":"0.7","after":"0.95"},{"quantity":"Phase angle φ","before":"45.573°","after":"18.1949°"},{"quantity":"Real power","before":"5 kW","after":"5 kW"},{"quantity":"Reactive power","before":"5.10102 kvar","after":"1.64342 kvar"},{"quantity":"Apparent power","before":"7.14286 kVA","after":"5.26316 kVA"},{"quantity":"Line current","before":"31.0559 A","after":"22.8833 A"}],"capacitor":[{"item":"Required compensation","value":"3.4576 kvar"},{"item":"kvar per kW (tan φ₁ − tan φ₂)","value":"0.69152"},{"item":"Bank connection","value":"Single-phase"},{"item":"Capacitor voltage","value":"230 V"},{"item":"Capacitance per phase","value":"208.051 µF"},{"item":"Total capacitance","value":"208.051 µF"},{"item":"Capacitor current per phase","value":"15.033 A"},{"item":"Capacitor line current","value":"15.033 A"},{"item":"Apparent power released","value":"1.8797 kVA"},{"item":"Line current reduction","value":"26.3158 %"}],"breakdown":"φ₁ = acos(0.7) = 45.573°   tan φ₁ = 1.0202\nφ₂ = acos(0.95) = 18.1949°   tan φ₂ = 0.328684\nQc = P × (tan φ₁ − tan φ₂) = 5 × 0.69152 = 3.4576 kvar\nS falls from 7.14286 kVA to 5.26316 kVA, freeing 1.8797 kVA\nI = S ÷ 230 V: 31.0559 A → 22.8833 A\nC = Qc ÷ (2πf V²) = 208.051 µF at 50 Hz\nPreliminary sizing only — harmonics, detuned reactors, switching steps and utility rules need an engineering review."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Before & After Correction","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"before":{"type":"string","description":"Before"},"after":{"type":"string","description":"After"}}},"x-iotools-columns":["quantity","before","after"]},"capacitor":{"type":"array","description":"Capacitor Bank","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["item","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/transformer-sizing-calculator":{"post":{"operationId":"run_transformer_sizing_calculator","summary":"Transformer Sizing Calculator","tags":["Calculators"],"description":"Size a distribution transformer's kVA rating from connected load, demand factor, power factor and a future-growth margin — rounded up to the nearest standard IEC/ANSI kVA rating, with the resulting secondary full-load current.\n\n[Try Transformer Sizing Calculator in your browser →](https://iotools.cloud/tool/transformer-sizing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"connectedLoadKw":{"type":"number","description":"Connected Load (kW)","minimum":0},"demandFactor":{"type":"number","description":"Demand Factor (%)","minimum":10,"maximum":100},"loadPowerFactor":{"type":"number","description":"Load Power Factor","minimum":0.05,"maximum":1},"growthMargin":{"type":"number","description":"Future Growth Margin (%)","minimum":0,"maximum":100},"system":{"enum":["three","single"],"description":"Supply"},"voltage":{"type":"number","description":"Secondary Voltage (V)","minimum":1}},"required":[]},"examples":{"150_kw_plant_80_demand_factor_0_85_pf_400_v_three_phase":{"summary":"150 kW plant, 80% demand factor, 0.85 PF, 400 V three-phase","value":{"connectedLoadKw":"150","demandFactor":"80","loadPowerFactor":"0.85","growthMargin":"20","system":"three","voltage":"400"}},"single_phase_25_kw_workshop_100_demand_factor_230_v":{"summary":"Single-phase 25 kW workshop, 100% demand factor, 230 V","value":{"connectedLoadKw":"25","demandFactor":"100","loadPowerFactor":"0.9","growthMargin":"0","system":"single","voltage":"230"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"150_kw_plant_80_demand_factor_0_85_pf_400_v_three_phase":{"summary":"150 kW plant, 80% demand factor, 0.85 PF, 400 V three-phase","value":{"tool":"transformer-sizing-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Connected load","value":"150 kW"},{"quantity":"Demand load (80% demand factor)","value":"120 kW"},{"quantity":"Required apparent power (at PF 0.85)","value":"141.176 kVA"},{"quantity":"With growth margin (20%)","value":"169.412 kVA"},{"quantity":"Recommended standard transformer size","value":"200 kVA"},{"quantity":"Secondary full-load current at recommended size","value":"288.675 A"}],"breakdown":"Demand load = Connected load × demand factor = 150 × 0.8 = 120 kW\nRequired kVA = Demand load ÷ power factor = 120 ÷ 0.85 = 141.176 kVA\nWith growth margin = Required kVA × (1 + margin) = 141.176 × 1.2 = 169.412 kVA\nRecommended size: next standard rating ≥ 169.412 kVA → 200 kVA\nI = kVA × 1000 ÷ (√3 × 400 V)\nPreliminary sizing only — inrush current, ambient/altitude derating, harmonics and utility approval need an engineering review."},"credits_used":5,"credits_remaining":null}},"single_phase_25_kw_workshop_100_demand_factor_230_v":{"summary":"Single-phase 25 kW workshop, 100% demand factor, 230 V","value":{"tool":"transformer-sizing-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Connected load","value":"25 kW"},{"quantity":"Demand load (100% demand factor)","value":"25 kW"},{"quantity":"Required apparent power (at PF 0.9)","value":"27.7778 kVA"},{"quantity":"With growth margin (0%)","value":"27.7778 kVA"},{"quantity":"Recommended standard transformer size","value":"37.5 kVA"},{"quantity":"Secondary full-load current at recommended size","value":"163.043 A"}],"breakdown":"Demand load = Connected load × demand factor = 25 × 1 = 25 kW\nRequired kVA = Demand load ÷ power factor = 25 ÷ 0.9 = 27.7778 kVA\nWith growth margin = Required kVA × (1 + margin) = 27.7778 × 1 = 27.7778 kVA\nRecommended size: next standard rating ≥ 27.7778 kVA → 37.5 kVA\nI = kVA × 1000 ÷ 230 V\nPreliminary sizing only — inrush current, ambient/altitude derating, harmonics and utility approval need an engineering review."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Sizing Result","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/shaft-power-torque-calculator":{"post":{"operationId":"run_shaft_power_torque_calculator","summary":"Shaft Power & Torque Calculator","tags":["Calculators"],"description":"Calculate shaft torque from power and speed, power from torque and speed, or the shaft speed from power and torque. Supports kW/W/hp/PS, N·m/kgf·m/lb·ft/lb·in and rpm/rad·s⁻¹/Hz, reports every result in both metric and imperial units, and adds the input power a drive must supply at a given efficiency.\n\n[Try Shaft Power & Torque Calculator in your browser →](https://iotools.cloud/tool/shaft-power-torque-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"solveFor":{"enum":["torque","power","speed"],"description":"Solve For"},"power":{"type":"number","description":"Power (P)","minimum":0},"powerUnit":{"enum":["kw","w","hp","ps"],"description":"Power Unit"},"torque":{"type":"number","description":"Torque (T)","minimum":0},"torqueUnit":{"enum":["nm","kgfm","lbft","lbin"],"description":"Torque Unit"},"speed":{"type":"number","description":"Rotational Speed (N)","minimum":0},"speedUnit":{"enum":["rpm","rads","hz"],"description":"Speed Unit"},"efficiency":{"type":"number","description":"Drive Efficiency (%)","minimum":1,"maximum":100}},"required":[]},"examples":{"torque_from_15_kw_at_1450_rpm":{"summary":"Torque from 15 kW at 1450 rpm","value":{"solveFor":"torque","power":"15","powerUnit":"kw","torque":"100","torqueUnit":"nm","speed":"1450","speedUnit":"rpm","efficiency":"100"}},"power_from_100_n_m_at_1450_rpm":{"summary":"Power from 100 N·m at 1450 rpm","value":{"solveFor":"power","power":"15","powerUnit":"kw","torque":"100","torqueUnit":"nm","speed":"1450","speedUnit":"rpm","efficiency":"100"}},"speed_from_15_kw_and_100_n_m_92_efficient_drive":{"summary":"Speed from 15 kW and 100 N·m, 92% efficient drive","value":{"solveFor":"speed","power":"15","powerUnit":"kw","torque":"100","torqueUnit":"nm","speed":"1450","speedUnit":"rpm","efficiency":"92"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"torque_from_15_kw_at_1450_rpm":{"summary":"Torque from 15 kW at 1450 rpm","value":{"tool":"shaft-power-torque-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Torque","value":"98.7858 N·m","other-units":"10.0734 kgf·m · 72.8607 lb·ft · 874.328 lb·in"},{"quantity":"Shaft power","value":"15 kW","other-units":"15000 W · 20.1153 hp · 20.3943 PS"},{"quantity":"Rotational speed","value":"1450 rpm","other-units":"151.844 rad/s · 24.1667 Hz (rev/s)"},{"quantity":"Angular velocity (ω)","value":"151.844 rad/s","other-units":"24.1667 rev/s"}],"breakdown":"Solving for: Torque\nT = P ÷ ω   (ω = 2π × N ÷ 60)\nP = 15 kW\nT = 98.7858 N·m\nN = 1450 rpm  →  ω = 151.844 rad/s\nIdeal calculation — set a drive efficiency below 100% to size the motor input power."},"credits_used":5,"credits_remaining":null}},"power_from_100_n_m_at_1450_rpm":{"summary":"Power from 100 N·m at 1450 rpm","value":{"tool":"shaft-power-torque-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Torque","value":"100 N·m","other-units":"10.1972 kgf·m · 73.7562 lb·ft · 885.075 lb·in"},{"quantity":"Shaft power","value":"15.1844 kW","other-units":"15184.4 W · 20.3626 hp · 20.645 PS"},{"quantity":"Rotational speed","value":"1450 rpm","other-units":"151.844 rad/s · 24.1667 Hz (rev/s)"},{"quantity":"Angular velocity (ω)","value":"151.844 rad/s","other-units":"24.1667 rev/s"}],"breakdown":"Solving for: Power\nP = T × ω   (ω = 2π × N ÷ 60)\nP = 15.1844 kW\nT = 100 N·m\nN = 1450 rpm  →  ω = 151.844 rad/s\nIdeal calculation — set a drive efficiency below 100% to size the motor input power."},"credits_used":5,"credits_remaining":null}},"speed_from_15_kw_and_100_n_m_92_efficient_drive":{"summary":"Speed from 15 kW and 100 N·m, 92% efficient drive","value":{"tool":"shaft-power-torque-calculator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Torque","value":"100 N·m","other-units":"10.1972 kgf·m · 73.7562 lb·ft · 885.075 lb·in"},{"quantity":"Shaft power","value":"15 kW","other-units":"15000 W · 20.1153 hp · 20.3943 PS"},{"quantity":"Rotational speed","value":"1432.39 rpm","other-units":"150 rad/s · 23.8732 Hz (rev/s)"},{"quantity":"Angular velocity (ω)","value":"150 rad/s","other-units":"23.8732 rev/s"},{"quantity":"Input power at 92% efficiency","value":"16.3043 kW","other-units":"16304.3 W · 21.8645 hp · 22.1677 PS"},{"quantity":"Power lost in the drive","value":"1.30435 kW","other-units":"1304.35 W · 1.74916 hp · 1.77342 PS"}],"breakdown":"Solving for: Speed\nω = P ÷ T   (ω = 2π × N ÷ 60)\nP = 15 kW\nT = 100 N·m\nN = 1432.39 rpm  →  ω = 150 rad/s\nAt 92% drive efficiency the motor must supply 16.3043 kW."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Shaft Power, Torque & Speed","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"},"other-units":{"type":"string","description":"Other units"}}},"x-iotools-columns":["quantity","value","other-units"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sharpe-ratio-calculator":{"post":{"operationId":"run_sharpe_ratio_calculator","summary":"Sharpe Ratio Calculator","tags":["Calculators"],"description":"Calculate the Sharpe ratio — risk-adjusted return per unit of volatility — either from summary statistics (return, risk-free rate, standard deviation) or from a series of periodic returns, annualized. Get a performance rating alongside the ratio.\n\n[Try Sharpe Ratio Calculator in your browser →](https://iotools.cloud/tool/sharpe-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["summary","series"],"description":"Input Mode"},"portfolioReturn":{"type":"number","description":"Portfolio Annual Return (%)"},"riskFreeRate":{"type":"number","description":"Risk-Free Rate (%)"},"stdDev":{"type":"number","description":"Standard Deviation of Returns (%)","minimum":0.0001},"returns":{"type":"string","description":"Periodic Returns (%, comma or newline separated)"},"periodsPerYear":{"enum":["1","4","12","52","252"],"description":"Return Frequency"},"riskFreeRateSeries":{"type":"number","description":"Annual Risk-Free Rate (%)"},"sampleStdDev":{"type":"boolean","description":"Use sample standard deviation (n − 1)"}},"required":[]},"examples":{"summary_statistics":{"summary":"Summary statistics","value":{"mode":"summary","portfolioReturn":"12","riskFreeRate":"3","stdDev":"15"}},"12_months_of_returns":{"summary":"12 months of returns","value":{"mode":"series","returns":"2.1, -1.3, 3.4, 0.8, -0.5, 1.9, 2.7, -2.0, 1.1, 0.4, 2.9, -0.7","periodsPerYear":"12","riskFreeRateSeries":"3","sampleStdDev":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"summary_statistics":{"summary":"Summary statistics","value":{"tool":"sharpe-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Input Mode","value":"Summary Statistics"},{"metric":"Portfolio Annual Return","value":"12.00%"},{"metric":"Risk-Free Rate","value":"3.00%"},{"metric":"Standard Deviation","value":"15.00%"},{"metric":"Excess Return","value":"+9.00%"},{"metric":"Sharpe Ratio","value":"0.60"},{"metric":"Performance Rating","value":"Sub-optimal"}]},"credits_used":5,"credits_remaining":null}},"12_months_of_returns":{"summary":"12 months of returns","value":{"tool":"sharpe-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Input Mode","value":"Return Series"},{"metric":"Number of Periods","value":"12"},{"metric":"Return Frequency","value":"Monthly (12/year)"},{"metric":"Mean Return (per period)","value":"+0.90%"},{"metric":"Standard Deviation (per period)","value":"1.7581%"},{"metric":"Mean Return (annualized)","value":"+10.80%"},{"metric":"Standard Deviation (annualized)","value":"6.09%"},{"metric":"Annual Risk-Free Rate","value":"3.00%"},{"metric":"Sharpe Ratio (annualized)","value":"1.28"},{"metric":"Performance Rating","value":"Good"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Sharpe Ratio Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mortgage-calculator":{"post":{"operationId":"run_mortgage_calculator","summary":"Mortgage Calculator","tags":["Calculators"],"description":"Calculate your monthly mortgage payment — principal & interest via the standard amortization formula, plus property tax, home insurance and PMI for a full PITI estimate. See total interest and total cost over the life of the loan.\n\n[Try Mortgage Calculator in your browser →](https://iotools.cloud/tool/mortgage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"homePrice":{"type":"number","description":"Home Price ($)","minimum":0,"maximum":999999999},"downPayment":{"type":"number","description":"Down Payment","minimum":0,"maximum":999999999},"downPaymentType":{"enum":["dollar","percent"],"description":"Down Payment Is"},"annualRate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0,"maximum":100},"loanTermYears":{"enum":["10","15","20","30"],"description":"Loan Term"},"propertyTaxAnnual":{"type":"number","description":"Property Tax ($/year)","minimum":0,"maximum":999999},"homeInsuranceAnnual":{"type":"number","description":"Home Insurance ($/year)","minimum":0,"maximum":999999},"pmiMonthly":{"type":"number","description":"PMI ($/month)","minimum":0,"maximum":99999}},"required":["homePrice","downPayment","annualRate"]},"examples":{"400_000_home_20_down_6_5_30yr":{"summary":"$400,000 home, 20% down, 6.5% / 30yr","value":{"homePrice":"400000","downPayment":"80000","downPaymentType":"dollar","annualRate":"6.5","loanTermYears":"30","propertyTaxAnnual":"0","homeInsuranceAnnual":"0","pmiMonthly":"0"}},"same_loan_with_property_tax_insurance_pmi_down_payment_as":{"summary":"Same loan with property tax, insurance & PMI (down payment as %)","value":{"homePrice":"400000","downPayment":"20","downPaymentType":"percent","annualRate":"6.5","loanTermYears":"30","propertyTaxAnnual":"4800","homeInsuranceAnnual":"1200","pmiMonthly":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"400_000_home_20_down_6_5_30yr":{"summary":"$400,000 home, 20% down, 6.5% / 30yr","value":{"tool":"mortgage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Loan Amount","value":"$320,000"},{"metric":"Monthly Principal & Interest","value":"$2,023"},{"metric":"Monthly Tax + Insurance + PMI","value":"$0"},{"metric":"Total Monthly Payment","value":"$2,023"},{"metric":"Total Interest Paid Over Loan","value":"$408,142"},{"metric":"Total Cost","value":"$808,142"}]},"credits_used":5,"credits_remaining":null}},"same_loan_with_property_tax_insurance_pmi_down_payment_as":{"summary":"Same loan with property tax, insurance & PMI (down payment as %)","value":{"tool":"mortgage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Loan Amount","value":"$320,000"},{"metric":"Monthly Principal & Interest","value":"$2,023"},{"metric":"Monthly Tax + Insurance + PMI","value":"$600"},{"metric":"Total Monthly Payment","value":"$2,623"},{"metric":"Total Interest Paid Over Loan","value":"$408,142"},{"metric":"Total Cost","value":"$1,024,142"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/percentage-calculator":{"post":{"operationId":"run_percentage_calculator","summary":"Percentage Calculator","tags":["Calculators"],"description":"Solve eight kinds of percentage problem: what percent one number is of another, a percentage of a number, percentage change, percentage difference, percent ↔ decimal, and percent ↔ fraction. Shows the result, a plain-English summary and the formula used.\n\n[Try Percentage Calculator in your browser →](https://iotools.cloud/tool/percentage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"enum":["type-1","type-2","type-3","type-4","type-5","type-6","type-7","type-8"],"description":"Calculation"},"type1A":{"type":"number","description":"Value"},"type1B":{"type":"number","description":"Is what percent of"},"type2A":{"type":"number","description":"Percent (%)"},"type2B":{"type":"number","description":"Of value"},"type3A":{"type":"number","description":"From value"},"type3B":{"type":"number","description":"To value"},"type4A":{"type":"number","description":"Value 1"},"type4B":{"type":"number","description":"Value 2"},"type5A":{"type":"number","description":"Percent (%)"},"type6A":{"type":"number","description":"Decimal value"},"type7A":{"type":"number","description":"Percent (%)"},"type8A":{"type":"string","description":"Fraction"}},"required":[]},"examples":{"16_out_of_20_is_what_percent":{"summary":"16 out of 20 is what percent?","value":{"type":"type-1","type1A":"16","type1B":"20"}},"10_of_500":{"summary":"10% of 500","value":{"type":"type-2","type2A":"10","type2B":"500"}},"percentage_change_from_20_to_100":{"summary":"Percentage change from 20 to 100","value":{"type":"type-3","type3A":"20","type3B":"100"}},"percentage_difference_between_500_and_450":{"summary":"Percentage difference between 500 and 450","value":{"type":"type-4","type4A":"500","type4B":"450"}},"15_as_a_decimal":{"summary":"15% as a decimal","value":{"type":"type-5","type5A":"15"}},"0_025_as_a_percentage":{"summary":"0.025 as a percentage","value":{"type":"type-6","type6A":"0.025"}},"20_as_a_fraction":{"summary":"20% as a fraction","value":{"type":"type-7","type7A":"20"}},"12_15_as_a_percentage":{"summary":"12/15 as a percentage","value":{"type":"type-8","type8A":"12/15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"16_out_of_20_is_what_percent":{"summary":"16 out of 20 is what percent?","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"80%","summary":"16 out of 20 is 80%","formula":"16 ÷ 20 × 100 = 80%"},"credits_used":5,"credits_remaining":null}},"10_of_500":{"summary":"10% of 500","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"50","summary":"10% of 500 is 50","formula":"10 ÷ 100 × 500 = 50"},"credits_used":5,"credits_remaining":null}},"percentage_change_from_20_to_100":{"summary":"Percentage change from 20 to 100","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"400%","summary":"The percentage change from 20 to 100 is 400%","formula":"(100 − 20) ÷ 20 × 100 = 400%"},"credits_used":5,"credits_remaining":null}},"percentage_difference_between_500_and_450":{"summary":"Percentage difference between 500 and 450","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"10.53%","summary":"500 is different from 450 by 10.53%","formula":"|500 − 450| ÷ ((500 + 450) ÷ 2) × 100 = 10.53%"},"credits_used":5,"credits_remaining":null}},"15_as_a_decimal":{"summary":"15% as a decimal","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"0.15","summary":"15% as a decimal is 0.15","formula":"15 ÷ 100 = 0.15"},"credits_used":5,"credits_remaining":null}},"0_025_as_a_percentage":{"summary":"0.025 as a percentage","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"2.5%","summary":"0.025 as a percentage is 2.5%","formula":"0.025 × 100 = 2.5%"},"credits_used":5,"credits_remaining":null}},"20_as_a_fraction":{"summary":"20% as a fraction","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"1/5","summary":"20% as a fraction is 1/5","formula":"20 ÷ 100 = 1/5"},"credits_used":5,"credits_remaining":null}},"12_15_as_a_percentage":{"summary":"12/15 as a percentage","value":{"tool":"percentage-calculator","tool_version":"1.0.2","outputs":{"result":"80%","summary":"12/15 as a percentage is 80%","formula":"12/15 × 100 = 80%"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"summary":{"type":"string","description":"In words"},"formula":{"type":"string","description":"Formula"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rate-limit-calc":{"post":{"operationId":"run_rate_limit_calc","summary":"Rate Limit Calculator","tags":["Calculators"],"description":"Convert an API rate limit into requests/second, /minute, /hour and /day, plan multi-worker throughput with staggered start offsets, budget a daily request quota, and turn a 429 Retry-After response into an exponential backoff schedule.\n\n[Try Rate Limit Calculator in your browser →](https://iotools.cloud/tool/rate-limit-calc/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rateLimit":{"type":"number","description":"Rate limit","minimum":0,"maximum":100000000},"timeUnit":{"enum":["second","minute","hour","day"],"description":"Per"},"workers":{"type":"number","description":"Number of workers","minimum":1,"maximum":1000},"dailyLimit":{"type":"number","description":"Daily request limit","minimum":0,"maximum":100000000},"activeHours":{"type":"number","description":"Active hours per day","minimum":1,"maximum":24},"retryAfter":{"type":"number","description":"Retry-After (seconds)","minimum":0,"maximum":86400},"requestCount":{"type":"number","description":"Requests sent before 429","minimum":0,"maximum":100000000},"timeWindow":{"type":"number","description":"Time window (seconds)","minimum":0,"maximum":86400}},"required":[]},"examples":{"5_000_requests_hour_1_worker_100k_day_quota_429_after_100_req_60s":{"summary":"5,000 requests/hour, 1 worker, 100k/day quota, 429 after 100 req/60s","value":{"rateLimit":"5000","timeUnit":"hour","workers":"1","dailyLimit":"100000","activeHours":"24","retryAfter":"60","requestCount":"100","timeWindow":"60"}},"stripe_style_100_req_sec_across_3_workers_quota_backoff_skipped":{"summary":"Stripe-style 100 req/sec across 3 workers (quota/backoff skipped)","value":{"rateLimit":"100","timeUnit":"second","workers":"3","dailyLimit":"0","activeHours":"24","retryAfter":"0","requestCount":"0","timeWindow":"0"}},"429_backoff_only_250_requests_in_60s_retry_after_30s_rate_quota_skipped":{"summary":"429 backoff only: 250 requests in 60s, Retry-After 30s (rate/quota skipped)","value":{"rateLimit":"0","timeUnit":"minute","workers":"1","dailyLimit":"0","activeHours":"24","retryAfter":"30","requestCount":"250","timeWindow":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_000_requests_hour_1_worker_100k_day_quota_429_after_100_req_60s":{"summary":"5,000 requests/hour, 1 worker, 100k/day quota, 429 after 100 req/60s","value":{"tool":"rate-limit-calc","tool_version":"1.0.2","outputs":{"rateOutput":[{"metric":"Input","value":"5,000 requests per hour"},{"metric":"Requests Per Second (RPS)","value":"1.39"},{"metric":"Requests Per Minute","value":"83.33"},{"metric":"Requests Per Hour","value":"5,000"},{"metric":"Requests Per Day","value":"120,000"},{"metric":"Min Delay Between Requests","value":"720 ms"},{"metric":"Recommended Delay (10% buffer)","value":"792 ms"},{"metric":"Burst Capacity","value":"Up to 5,000 requests at the start of each hour, then pace at 1 request every 792 ms for the rest of the hour."}],"workerOutput":[{"metric":"Workers","value":"1"},{"metric":"Per-Worker Rate Limit","value":"1.39 RPS"},{"metric":"Per-Worker Delay","value":"720 ms"},{"metric":"Total Throughput Per Second","value":"1.39"},{"metric":"Total Throughput Per Minute","value":"83.33"},{"metric":"Total Throughput Per Hour","value":"5,000"}],"quotaOutput":[{"metric":"Daily Limit","value":"100,000 requests over 24 active hour(s)"},{"metric":"Requests Per Hour","value":"4,166.67"},{"metric":"Requests Per Minute","value":"69.44"},{"metric":"Requests Per Second","value":"1.16"},{"metric":"Safe Delay Between Requests","value":"950.4 ms"},{"metric":"Burst Allowance","value":"~416 requests (10% of hourly) at the start of each hour, then pace the remaining 3,751 over 54 minutes (1.16 req/sec)."}],"backoffOutput":[{"metric":"Scenario","value":"Got 429 after 100 requests in 60s"},{"metric":"Actual Rate You Were Sending","value":"1.67 req/sec"},{"metric":"Estimated Rate Limit","value":"~100 req / 60s"},{"metric":"Recommended New Delay","value":"900 ms"},{"metric":"Backoff Attempt 1","value":"60 seconds"},{"metric":"Backoff Attempt 2","value":"120 seconds"},{"metric":"Backoff Attempt 3","value":"240 seconds"},{"metric":"Backoff Attempt 4","value":"480 seconds"},{"metric":"Backoff Attempt 5","value":"960 seconds"},{"metric":"Backoff Attempt 6","value":"1,920 seconds"},{"metric":"Jittered Attempt 1","value":"60 - 90 seconds"},{"metric":"Jittered Attempt 2","value":"120 - 180 seconds"},{"metric":"Jittered Attempt 3","value":"240 - 360 seconds"},{"metric":"Jittered Attempt 4","value":"480 - 720 seconds"},{"metric":"Jittered Attempt 5","value":"960 - 1,440 seconds"},{"metric":"Jittered Attempt 6","value":"1,920 - 2,880 seconds"}]},"credits_used":5,"credits_remaining":null}},"stripe_style_100_req_sec_across_3_workers_quota_backoff_skipped":{"summary":"Stripe-style 100 req/sec across 3 workers (quota/backoff skipped)","value":{"tool":"rate-limit-calc","tool_version":"1.0.2","outputs":{"rateOutput":[{"metric":"Input","value":"100 requests per second"},{"metric":"Requests Per Second (RPS)","value":"100"},{"metric":"Requests Per Minute","value":"6,000"},{"metric":"Requests Per Hour","value":"360,000"},{"metric":"Requests Per Day","value":"8,640,000"},{"metric":"Min Delay Between Requests","value":"10 ms"},{"metric":"Recommended Delay (10% buffer)","value":"11 ms"}],"workerOutput":[{"metric":"Workers","value":"3"},{"metric":"Per-Worker Rate Limit","value":"33.33 RPS"},{"metric":"Per-Worker Delay","value":"30 ms"},{"metric":"Total Throughput Per Second","value":"100"},{"metric":"Total Throughput Per Minute","value":"6,000"},{"metric":"Total Throughput Per Hour","value":"360,000"},{"metric":"Worker 1 Start Offset","value":"+0 ms"},{"metric":"Worker 2 Start Offset","value":"+3.33 ms"},{"metric":"Worker 3 Start Offset","value":"+6.67 ms"}],"quotaOutput":[{"metric":"Status","value":"Enter a daily limit above to see the quota plan"}],"backoffOutput":[{"metric":"Status","value":"Enter retry-after, request count, and time window to see backoff calculations"}]},"credits_used":5,"credits_remaining":null}},"429_backoff_only_250_requests_in_60s_retry_after_30s_rate_quota_skipped":{"summary":"429 backoff only: 250 requests in 60s, Retry-After 30s (rate/quota skipped)","value":{"tool":"rate-limit-calc","tool_version":"1.0.2","outputs":{"rateOutput":[{"metric":"Status","value":"Enter a rate limit above to see calculations"}],"workerOutput":[{"metric":"Status","value":"Enter a rate limit above to see calculations"}],"quotaOutput":[{"metric":"Status","value":"Enter a daily limit above to see the quota plan"}],"backoffOutput":[{"metric":"Scenario","value":"Got 429 after 250 requests in 60s"},{"metric":"Actual Rate You Were Sending","value":"4.17 req/sec"},{"metric":"Estimated Rate Limit","value":"~125 req / 30s"},{"metric":"Recommended New Delay","value":"360 ms"},{"metric":"Backoff Attempt 1","value":"30 seconds"},{"metric":"Backoff Attempt 2","value":"60 seconds"},{"metric":"Backoff Attempt 3","value":"120 seconds"},{"metric":"Backoff Attempt 4","value":"240 seconds"},{"metric":"Backoff Attempt 5","value":"480 seconds"},{"metric":"Backoff Attempt 6","value":"960 seconds"},{"metric":"Backoff Attempt 7","value":"1,920 seconds"},{"metric":"Jittered Attempt 1","value":"30 - 45 seconds"},{"metric":"Jittered Attempt 2","value":"60 - 90 seconds"},{"metric":"Jittered Attempt 3","value":"120 - 180 seconds"},{"metric":"Jittered Attempt 4","value":"240 - 360 seconds"},{"metric":"Jittered Attempt 5","value":"480 - 720 seconds"},{"metric":"Jittered Attempt 6","value":"960 - 1,440 seconds"},{"metric":"Jittered Attempt 7","value":"1,920 - 2,880 seconds"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"rateOutput":{"type":"array","description":"Core Rate Calculations","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"workerOutput":{"type":"array","description":"Multi-Worker Throughput","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"quotaOutput":{"type":"array","description":"Daily Quota Plan","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"backoffOutput":{"type":"array","description":"Retry-After / Backoff Schedule","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rc-circuit-time-constant-calculator":{"post":{"operationId":"run_rc_circuit_time_constant_calculator","summary":"RC Circuit Time Constant Calculator","tags":["Calculators"],"description":"Calculate the RC time constant (τ = R × C) for a resistor-capacitor circuit from resistance and capacitance in any common unit (Ω/kΩ/MΩ, pF/nF/µF/mF/F). Returns τ auto-scaled to the best time unit, plus the standard charge/discharge percentage reached at 1τ through 5τ (63.2%, 86.5%, 95.0%, 98.2%, 99.3%).\n\n[Try RC Circuit Time Constant Calculator in your browser →](https://iotools.cloud/tool/rc-circuit-time-constant-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resistance":{"type":"number","description":"Resistance (R)","minimum":0},"resistanceUnit":{"enum":["ohm","kohm","megaohm"],"description":"Resistance Unit"},"capacitance":{"type":"number","description":"Capacitance (C)","minimum":0},"capacitanceUnit":{"enum":["pf","nf","uf","mf","f"],"description":"Capacitance Unit"}},"required":[]},"examples":{"1_k_1000_f_1_s":{"summary":"1 kΩ, 1000 µF → τ = 1 s","value":{"resistance":"1","resistanceUnit":"kohm","capacitance":"1000","capacitanceUnit":"uf"}},"10_k_10_f_100_ms":{"summary":"10 kΩ, 10 µF → τ = 100 ms","value":{"resistance":"10","resistanceUnit":"kohm","capacitance":"10","capacitanceUnit":"uf"}},"100_470_nf_47_s":{"summary":"100 Ω, 470 nF → τ = 47 µs","value":{"resistance":"100","resistanceUnit":"ohm","capacitance":"470","capacitanceUnit":"nf"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_k_1000_f_1_s":{"summary":"1 kΩ, 1000 µF → τ = 1 s","value":{"tool":"rc-circuit-time-constant-calculator","tool_version":"1.0.2","outputs":{"tau":"1 s","tauTable":[{"multiple":"1τ","time":"1 s","charging":"63.2%","discharging":"36.8%"},{"multiple":"2τ","time":"2 s","charging":"86.5%","discharging":"13.5%"},{"multiple":"3τ","time":"3 s","charging":"95.0%","discharging":"5.0%"},{"multiple":"4τ","time":"4 s","charging":"98.2%","discharging":"1.8%"},{"multiple":"5τ","time":"5 s","charging":"99.3%","discharging":"0.7%"}],"summary":"τ = R × C\nR = 1 kΩ\nC = 1000 µF\nτ = 1 s\nA circuit is considered essentially fully charged/discharged after about 5τ ≈ 5 s (99.3%)."},"credits_used":5,"credits_remaining":null}},"10_k_10_f_100_ms":{"summary":"10 kΩ, 10 µF → τ = 100 ms","value":{"tool":"rc-circuit-time-constant-calculator","tool_version":"1.0.2","outputs":{"tau":"100 ms","tauTable":[{"multiple":"1τ","time":"100 ms","charging":"63.2%","discharging":"36.8%"},{"multiple":"2τ","time":"200 ms","charging":"86.5%","discharging":"13.5%"},{"multiple":"3τ","time":"300 ms","charging":"95.0%","discharging":"5.0%"},{"multiple":"4τ","time":"400 ms","charging":"98.2%","discharging":"1.8%"},{"multiple":"5τ","time":"500 ms","charging":"99.3%","discharging":"0.7%"}],"summary":"τ = R × C\nR = 10 kΩ\nC = 10 µF\nτ = 100 ms\nA circuit is considered essentially fully charged/discharged after about 5τ ≈ 500 ms (99.3%)."},"credits_used":5,"credits_remaining":null}},"100_470_nf_47_s":{"summary":"100 Ω, 470 nF → τ = 47 µs","value":{"tool":"rc-circuit-time-constant-calculator","tool_version":"1.0.2","outputs":{"tau":"47 µs","tauTable":[{"multiple":"1τ","time":"47 µs","charging":"63.2%","discharging":"36.8%"},{"multiple":"2τ","time":"94 µs","charging":"86.5%","discharging":"13.5%"},{"multiple":"3τ","time":"141 µs","charging":"95.0%","discharging":"5.0%"},{"multiple":"4τ","time":"188 µs","charging":"98.2%","discharging":"1.8%"},{"multiple":"5τ","time":"235 µs","charging":"99.3%","discharging":"0.7%"}],"summary":"τ = R × C\nR = 100 Ω\nC = 470 nF\nτ = 47 µs\nA circuit is considered essentially fully charged/discharged after about 5τ ≈ 235 µs (99.3%)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tau":{"type":"string","description":"Time Constant (τ)"},"tauTable":{"type":"array","description":"Charge / Discharge at each τ","items":{"type":"object","properties":{"multiple":{"type":"string","description":"Multiple"},"time":{"type":"string","description":"Time"},"charging":{"type":"string","description":"Charging"},"discharging":{"type":"string","description":"Discharging"}}},"x-iotools-columns":["multiple","time","charging","discharging"]},"summary":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/reading-time-calculator":{"post":{"operationId":"run_reading_time_calculator","summary":"Reading Time Calculator","tags":["Calculators"],"description":"Estimate how long it takes to read a piece of text, based on word count and an adjustable reading speed (words per minute) — plus a slower read-aloud/speaking-time estimate.\n\n[Try Reading Time Calculator in your browser →](https://iotools.cloud/tool/reading-time-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"readingSpeed":{"type":"number","description":"Reading Speed (WPM)","minimum":100,"maximum":800},"speakingSpeed":{"type":"number","description":"Speaking / Read-Aloud Speed (WPM)","minimum":50,"maximum":400}},"required":[]},"examples":{"short_pangram":{"summary":"Short pangram","value":{"inputText":"The quick brown fox jumps over the lazy dog.","readingSpeed":"238","speakingSpeed":"154"}},"longer_article_at_default_speeds":{"summary":"Longer article at default speeds","value":{"inputText":"Reading speed varies enormously from one person to the next, and even the same person reads at different speeds depending on the material. Skimming a news headline is nothing like working through a dense legal contract or a technical manual full of unfamiliar terms. Researchers who study reading behavior generally agree that the average adult reads somewhere between two hundred and two hundred and fifty words per minute when reading silently for comprehension, though that number drops sharply for difficult or unfamiliar text and rises for light, familiar material.\n\nReading aloud is a different skill entirely. Because the reader must actually pronounce every syllable clearly enough for a listener to follow, read-aloud speed tends to land closer to one hundred and fifty words per minute, well below silent reading speed. This is one reason audiobooks often let listeners speed up playback well past the narrator's natural pace and still remain intelligible, since trained listeners can process spoken language faster than a narrator would naturally speak it.\n\nSeveral factors influence how quickly any individual reads a given passage. Font size and line spacing affect how easily the eye can track across a page. Vocabulary familiarity matters enormously, since unfamiliar jargon forces the brain to pause and decode meaning rather than recognizing whole words instantly. Prior knowledge of the subject also plays a role, because readers who already understand the topic can skip past details their brain fills in automatically.\n\nSpeed reading courses often promise reading speeds of a thousand words per minute or more, claiming that most readers waste time on habits like subvocalizing every word or moving their eyes back over text they already covered. However, controlled studies of speed reading techniques consistently find that comprehension falls sharply once reading speed climbs far beyond normal ranges, suggesting there is a real tradeoff between speed and understanding that no technique fully escapes. Most reading experts therefore recommend adjusting speed to match the material rather than chasing a single universal target, reading quickly through familiar or low stakes material and slowing down deliberately for anything dense, technical, or unfamiliar enough to reward careful attention.","readingSpeed":"238","speakingSpeed":"154"}},"same_article_slow_reading_fast_speaking":{"summary":"Same article, slow reading / fast speaking","value":{"inputText":"Reading speed varies enormously from one person to the next, and even the same person reads at different speeds depending on the material. Skimming a news headline is nothing like working through a dense legal contract or a technical manual full of unfamiliar terms. Researchers who study reading behavior generally agree that the average adult reads somewhere between two hundred and two hundred and fifty words per minute when reading silently for comprehension, though that number drops sharply for difficult or unfamiliar text and rises for light, familiar material.\n\nReading aloud is a different skill entirely. Because the reader must actually pronounce every syllable clearly enough for a listener to follow, read-aloud speed tends to land closer to one hundred and fifty words per minute, well below silent reading speed. This is one reason audiobooks often let listeners speed up playback well past the narrator's natural pace and still remain intelligible, since trained listeners can process spoken language faster than a narrator would naturally speak it.\n\nSeveral factors influence how quickly any individual reads a given passage. Font size and line spacing affect how easily the eye can track across a page. Vocabulary familiarity matters enormously, since unfamiliar jargon forces the brain to pause and decode meaning rather than recognizing whole words instantly. Prior knowledge of the subject also plays a role, because readers who already understand the topic can skip past details their brain fills in automatically.\n\nSpeed reading courses often promise reading speeds of a thousand words per minute or more, claiming that most readers waste time on habits like subvocalizing every word or moving their eyes back over text they already covered. However, controlled studies of speed reading techniques consistently find that comprehension falls sharply once reading speed climbs far beyond normal ranges, suggesting there is a real tradeoff between speed and understanding that no technique fully escapes. Most reading experts therefore recommend adjusting speed to match the material rather than chasing a single universal target, reading quickly through familiar or low stakes material and slowing down deliberately for anything dense, technical, or unfamiliar enough to reward careful attention.","readingSpeed":"100","speakingSpeed":"400"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"short_pangram":{"summary":"Short pangram","value":{"tool":"reading-time-calculator","tool_version":"1.0.2","outputs":{"readingTime":"2 sec","speakingTime":"4 sec","wordCount":"9","characterCount":"44"},"credits_used":5,"credits_remaining":null}},"longer_article_at_default_speeds":{"summary":"Longer article at default speeds","value":{"tool":"reading-time-calculator","tool_version":"1.0.2","outputs":{"readingTime":"1 min 29 sec","speakingTime":"2 min 17 sec","wordCount":"352","characterCount":"2319"},"credits_used":5,"credits_remaining":null}},"same_article_slow_reading_fast_speaking":{"summary":"Same article, slow reading / fast speaking","value":{"tool":"reading-time-calculator","tool_version":"1.0.2","outputs":{"readingTime":"3 min 31 sec","speakingTime":"53 sec","wordCount":"352","characterCount":"2319"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"readingTime":{"type":"string","description":"Reading Time"},"speakingTime":{"type":"string","description":"Speaking Time"},"wordCount":{"type":"string","description":"Words"},"characterCount":{"type":"string","description":"Characters"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rebar-calculator":{"post":{"operationId":"run_rebar_calculator","summary":"Rebar Calculator","tags":["Calculators"],"description":"Calculate the bar count, total linear length, and weight of a two-way reinforcing steel grid for a rectangular concrete slab, from the slab size, bar size (#3-#10), spacing, clear cover, and a waste/lap allowance — with an option to double up for a top-and-bottom mat.\n\n[Try Rebar Calculator in your browser →](https://iotools.cloud/tool/rebar-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slabLength":{"type":"number","description":"Slab Length","minimum":0},"slabWidth":{"type":"number","description":"Slab Width","minimum":0},"dimensionUnit":{"enum":["ft","m"],"description":"Dimension Unit"},"barSize":{"enum":["#3","#4","#5","#6","#7","#8","#9","#10"],"description":"Bar Size"},"spacing":{"type":"number","description":"Bar Spacing (on-center, both directions)","minimum":0},"cover":{"type":"number","description":"Clear Cover (from each slab edge)","minimum":0},"spacingUnit":{"enum":["in","mm"],"description":"Spacing/Cover Unit"},"layers":{"enum":["single","double"],"description":"Mat Layers"},"wastePercent":{"type":"number","description":"Waste / Lap Allowance","minimum":0}},"required":["slabLength","slabWidth","spacing"]},"examples":{"10x10_ft_slab_4_bars_at_12_in_single_mat":{"summary":"10x10 ft slab, #4 bars at 12 in, single mat","value":{"slabLength":"10","slabWidth":"10","dimensionUnit":"ft","barSize":"#4","spacing":"12","cover":"2","spacingUnit":"in","layers":"single","wastePercent":"10"}},"6x4_m_slab_5_bars_at_200_mm_top_and_bottom_mats":{"summary":"6x4 m slab, #5 bars at 200 mm, top and bottom mats","value":{"slabLength":"6","slabWidth":"4","dimensionUnit":"m","barSize":"#5","spacing":"200","cover":"40","spacingUnit":"mm","layers":"double","wastePercent":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10x10_ft_slab_4_bars_at_12_in_single_mat":{"summary":"10x10 ft slab, #4 bars at 12 in, single mat","value":{"tool":"rebar-calculator","tool_version":"1.0.2","outputs":{"status":"20 bars of #4 rebar, 212.67 ft (64.82 m) total, weighing 142.06 lb (64.43 kg).","result":[{"property":"Bar Size","value":"#4 (13M)"},{"property":"Mat Layers","value":"1"},{"property":"Bars — Direction A","value":"10 × 9.67 ft (2.95 m) each"},{"property":"Bars — Direction B","value":"10 × 9.67 ft (2.95 m) each"},{"property":"Total Bars","value":"20"},{"property":"Total Length (before waste)","value":"193.33 ft (58.93 m)"},{"property":"Total Length (with waste)","value":"212.67 ft (64.82 m)"},{"property":"Total Weight","value":"142.06 lb (64.43 kg)"}]},"credits_used":5,"credits_remaining":null}},"6x4_m_slab_5_bars_at_200_mm_top_and_bottom_mats":{"summary":"6x4 m slab, #5 bars at 200 mm, top and bottom mats","value":{"tool":"rebar-calculator","tool_version":"1.0.2","outputs":{"status":"100 bars of #5 rebar, 1625.98 ft (495.6 m) total, weighing 1695.9 lb (769.17 kg).","result":[{"property":"Bar Size","value":"#5 (16M)"},{"property":"Mat Layers","value":"2 (top and bottom)"},{"property":"Bars — Direction A","value":"20 × 19.42 ft (5.92 m) each"},{"property":"Bars — Direction B","value":"30 × 12.86 ft (3.92 m) each"},{"property":"Total Bars","value":"100"},{"property":"Total Length (before waste)","value":"1548.56 ft (472 m)"},{"property":"Total Length (with waste)","value":"1625.98 ft (495.6 m)"},{"property":"Total Weight","value":"1695.9 lb (769.17 kg)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rebar-weight-calculator":{"post":{"operationId":"run_rebar_weight_calculator","summary":"Rebar Weight Calculator","tags":["Calculators"],"description":"Calculate the weight of reinforcing steel bar (rebar) from its bar size, cut length, and quantity. Uses the standard ASTM A615/A615M unit-weight table for #3–#18 bars and gives results in both pounds and kilograms.\n\n[Try Rebar Weight Calculator in your browser →](https://iotools.cloud/tool/rebar-weight-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"barSize":{"enum":["#3","#4","#5","#6","#7","#8","#9","#10","#11","#14","#18"],"description":"Bar Size"},"length":{"type":"number","description":"Cut Length per Bar","minimum":0.01},"lengthUnit":{"enum":["ft","m"],"description":"Length Unit"},"quantity":{"type":"number","description":"Quantity (number of bars)","minimum":1}},"required":["length","quantity"]},"examples":{"4_bar_20_ft_10":{"summary":"#4 bar, 20 ft × 10","value":{"barSize":"#4","length":"20","lengthUnit":"ft","quantity":"10"}},"8_bar_6_m_25_metric":{"summary":"#8 bar, 6 m × 25 (metric)","value":{"barSize":"#8","length":"6","lengthUnit":"m","quantity":"25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4_bar_20_ft_10":{"summary":"#4 bar, 20 ft × 10","value":{"tool":"rebar-weight-calculator","tool_version":"1.0.2","outputs":{"status":"#4 rebar, 20 ft × 10 bars: total weight is 133.6 lb (60.59 kg).","result":[{"property":"Bar Size","value":"#4 (13M)"},{"property":"Diameter","value":"0.5\" / 12.7 mm"},{"property":"Unit Weight","value":"0.668 lb/ft (0.994 kg/m)"},{"property":"Total Length","value":"200 ft (60.96 m)"},{"property":"Total Weight","value":"133.6 lb (60.59 kg)"}],"refTable":[{"bar-size":"#3","metric":"10M","diameter":"0.375\" / 9.5 mm","unit-weight":"0.376 lb/ft / 0.56 kg/m"},{"bar-size":"#4","metric":"13M","diameter":"0.5\" / 12.7 mm","unit-weight":"0.668 lb/ft / 0.994 kg/m"},{"bar-size":"#5","metric":"16M","diameter":"0.625\" / 15.9 mm","unit-weight":"1.043 lb/ft / 1.552 kg/m"},{"bar-size":"#6","metric":"19M","diameter":"0.75\" / 19.1 mm","unit-weight":"1.502 lb/ft / 2.235 kg/m"},{"bar-size":"#7","metric":"22M","diameter":"0.875\" / 22.2 mm","unit-weight":"2.044 lb/ft / 3.042 kg/m"},{"bar-size":"#8","metric":"25M","diameter":"1\" / 25.4 mm","unit-weight":"2.67 lb/ft / 3.973 kg/m"},{"bar-size":"#9","metric":"29M","diameter":"1.128\" / 28.7 mm","unit-weight":"3.4 lb/ft / 5.06 kg/m"},{"bar-size":"#10","metric":"32M","diameter":"1.27\" / 32.3 mm","unit-weight":"4.303 lb/ft / 6.404 kg/m"},{"bar-size":"#11","metric":"36M","diameter":"1.41\" / 35.8 mm","unit-weight":"5.313 lb/ft / 7.907 kg/m"},{"bar-size":"#14","metric":"43M","diameter":"1.693\" / 43 mm","unit-weight":"7.65 lb/ft / 11.38 kg/m"},{"bar-size":"#18","metric":"57M","diameter":"2.257\" / 57.3 mm","unit-weight":"13.6 lb/ft / 20.24 kg/m"}]},"credits_used":5,"credits_remaining":null}},"8_bar_6_m_25_metric":{"summary":"#8 bar, 6 m × 25 (metric)","value":{"tool":"rebar-weight-calculator","tool_version":"1.0.2","outputs":{"status":"#8 rebar, 6 m × 25 bars: total weight is 1313.98 lb (595.95 kg).","result":[{"property":"Bar Size","value":"#8 (25M)"},{"property":"Diameter","value":"1\" / 25.4 mm"},{"property":"Unit Weight","value":"2.67 lb/ft (3.973 kg/m)"},{"property":"Total Length","value":"492.13 ft (150 m)"},{"property":"Total Weight","value":"1313.98 lb (595.95 kg)"}],"refTable":[{"bar-size":"#3","metric":"10M","diameter":"0.375\" / 9.5 mm","unit-weight":"0.376 lb/ft / 0.56 kg/m"},{"bar-size":"#4","metric":"13M","diameter":"0.5\" / 12.7 mm","unit-weight":"0.668 lb/ft / 0.994 kg/m"},{"bar-size":"#5","metric":"16M","diameter":"0.625\" / 15.9 mm","unit-weight":"1.043 lb/ft / 1.552 kg/m"},{"bar-size":"#6","metric":"19M","diameter":"0.75\" / 19.1 mm","unit-weight":"1.502 lb/ft / 2.235 kg/m"},{"bar-size":"#7","metric":"22M","diameter":"0.875\" / 22.2 mm","unit-weight":"2.044 lb/ft / 3.042 kg/m"},{"bar-size":"#8","metric":"25M","diameter":"1\" / 25.4 mm","unit-weight":"2.67 lb/ft / 3.973 kg/m"},{"bar-size":"#9","metric":"29M","diameter":"1.128\" / 28.7 mm","unit-weight":"3.4 lb/ft / 5.06 kg/m"},{"bar-size":"#10","metric":"32M","diameter":"1.27\" / 32.3 mm","unit-weight":"4.303 lb/ft / 6.404 kg/m"},{"bar-size":"#11","metric":"36M","diameter":"1.41\" / 35.8 mm","unit-weight":"5.313 lb/ft / 7.907 kg/m"},{"bar-size":"#14","metric":"43M","diameter":"1.693\" / 43 mm","unit-weight":"7.65 lb/ft / 11.38 kg/m"},{"bar-size":"#18","metric":"57M","diameter":"2.257\" / 57.3 mm","unit-weight":"13.6 lb/ft / 20.24 kg/m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Total Weight"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"refTable":{"type":"array","description":"ASTM A615/A615M Bar Reference","items":{"type":"object","properties":{"bar-size":{"type":"string","description":"Bar Size"},"metric":{"type":"string","description":"Metric"},"diameter":{"type":"string","description":"Diameter"},"unit-weight":{"type":"string","description":"Unit Weight"}}},"x-iotools-columns":["bar-size","metric","diameter","unit-weight"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/receivables-turnover-ratio-calculator":{"post":{"operationId":"run_receivables_turnover_ratio_calculator","summary":"Receivables Turnover Ratio Calculator","tags":["Calculators"],"description":"Calculate your receivables turnover ratio and days sales outstanding (DSO) from net credit sales and beginning/ending accounts receivable. Get a collection-speed rating alongside the raw numbers.\n\n[Try Receivables Turnover Ratio Calculator in your browser →](https://iotools.cloud/tool/receivables-turnover-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"netCreditSales":{"type":"number","description":"Net Credit Sales","minimum":0.01,"maximum":999999999999},"beginningReceivables":{"type":"number","description":"Beginning Accounts Receivable","minimum":0,"maximum":999999999999},"endingReceivables":{"type":"number","description":"Ending Accounts Receivable","minimum":0,"maximum":999999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["netCreditSales","beginningReceivables","endingReceivables"]},"examples":{"good_collections_cycle":{"summary":"Good collections cycle","value":{"netCreditSales":"1000000","beginningReceivables":"80000","endingReceivables":"120000","currency":"USD"}},"fast_collections":{"summary":"Fast collections","value":{"netCreditSales":"2000000","beginningReceivables":"40000","endingReceivables":"60000","currency":"USD"}},"slow_collections_risk":{"summary":"Slow collections (risk)","value":{"netCreditSales":"500000","beginningReceivables":"150000","endingReceivables":"170000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"good_collections_cycle":{"summary":"Good collections cycle","value":{"tool":"receivables-turnover-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Credit Sales","value":"$1,000,000.00"},{"metric":"Beginning Accounts Receivable","value":"$80,000.00"},{"metric":"Ending Accounts Receivable","value":"$120,000.00"},{"metric":"Average Accounts Receivable","value":"$100,000.00"},{"metric":"Receivables Turnover Ratio","value":"10.00x"},{"metric":"Days Sales Outstanding (DSO)","value":"36.5 days"},{"metric":"Collection Speed Rating","value":"Good"}]},"credits_used":5,"credits_remaining":null}},"fast_collections":{"summary":"Fast collections","value":{"tool":"receivables-turnover-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Credit Sales","value":"$2,000,000.00"},{"metric":"Beginning Accounts Receivable","value":"$40,000.00"},{"metric":"Ending Accounts Receivable","value":"$60,000.00"},{"metric":"Average Accounts Receivable","value":"$50,000.00"},{"metric":"Receivables Turnover Ratio","value":"40.00x"},{"metric":"Days Sales Outstanding (DSO)","value":"9.1 days"},{"metric":"Collection Speed Rating","value":"Excellent (Fast Collection)"}]},"credits_used":5,"credits_remaining":null}},"slow_collections_risk":{"summary":"Slow collections (risk)","value":{"tool":"receivables-turnover-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Net Credit Sales","value":"$500,000.00"},{"metric":"Beginning Accounts Receivable","value":"$150,000.00"},{"metric":"Ending Accounts Receivable","value":"$170,000.00"},{"metric":"Average Accounts Receivable","value":"$160,000.00"},{"metric":"Receivables Turnover Ratio","value":"3.13x"},{"metric":"Days Sales Outstanding (DSO)","value":"116.8 days"},{"metric":"Collection Speed Rating","value":"Poor (Collection Risk)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Receivables Turnover Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/recipe-scale-calculator":{"post":{"operationId":"run_recipe_scale_calculator","summary":"Recipe Scale Calculator","tags":["Calculators"],"description":"Scale a recipe's ingredient quantities up or down — from one serving count to another, or by any ratio — with mixed numbers, fractions and unicode fractions (½, ⅓, ⅔…) parsed and re-formatted back into readable cooking fractions.\n\n[Try Recipe Scale Calculator in your browser →](https://iotools.cloud/tool/recipe-scale-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"originalServings":{"type":"number","description":"Original Servings","minimum":0.25},"targetServings":{"type":"number","description":"Target Servings","minimum":0.25},"recipeText":{"type":"string","description":"Ingredient list (one per line)"},"roundingMode":{"enum":["fractions","decimal"],"description":"Rounding"}},"required":["originalServings","targetServings","recipeText"]},"examples":{"whole_numbers_with_a_passthrough_instruction_line":{"summary":"Whole numbers (with a passthrough instruction line)","value":{"originalServings":"4","targetServings":"6","recipeText":"2 cups flour\nPreheat oven to 350F","roundingMode":"fractions"}},"simple_fraction":{"summary":"Simple fraction","value":{"originalServings":"2","targetServings":"4","recipeText":"1/2 tsp salt","roundingMode":"fractions"}},"mixed_number_rounded_to_nearest_common_fraction":{"summary":"Mixed number, rounded to nearest common fraction","value":{"originalServings":"2","targetServings":"3","recipeText":"1 1/2 cups flour","roundingMode":"fractions"}},"unicode_fraction":{"summary":"Unicode fraction (½)","value":{"originalServings":"1","targetServings":"2","recipeText":"½ cup milk","roundingMode":"fractions"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"whole_numbers_with_a_passthrough_instruction_line":{"summary":"Whole numbers (with a passthrough instruction line)","value":{"tool":"recipe-scale-calculator","tool_version":"1.0.2","outputs":{"scaledRecipe":"3 cups flour\nPreheat oven to 350F","summary":"Scaling 4 → 6 servings (×1.5) · 1 ingredient line scaled."},"credits_used":5,"credits_remaining":null}},"simple_fraction":{"summary":"Simple fraction","value":{"tool":"recipe-scale-calculator","tool_version":"1.0.2","outputs":{"scaledRecipe":"1 tsp salt","summary":"Scaling 2 → 4 servings (×2) · 1 ingredient line scaled."},"credits_used":5,"credits_remaining":null}},"mixed_number_rounded_to_nearest_common_fraction":{"summary":"Mixed number, rounded to nearest common fraction","value":{"tool":"recipe-scale-calculator","tool_version":"1.0.2","outputs":{"scaledRecipe":"2 1/4 cups flour","summary":"Scaling 2 → 3 servings (×1.5) · 1 ingredient line scaled."},"credits_used":5,"credits_remaining":null}},"unicode_fraction":{"summary":"Unicode fraction (½)","value":{"tool":"recipe-scale-calculator","tool_version":"1.0.2","outputs":{"scaledRecipe":"1 cup milk","summary":"Scaling 1 → 2 servings (×2) · 1 ingredient line scaled."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"scaledRecipe":{"type":"string","description":"Scaled Ingredient List"},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rectangle-calculator":{"post":{"operationId":"run_rectangle_calculator","summary":"Rectangle Calculator","tags":["Calculators"],"description":"Calculate a rectangle's area, perimeter, diagonal, inscribed/circumscribed circle radii, and aspect ratio from any two known measurements — length & width, area & one side, perimeter & one side, diagonal & one side, or area & perimeter. Also flags how close the result sits to a golden-ratio rectangle.\n\n[Try Rectangle Calculator in your browser →](https://iotools.cloud/tool/rectangle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"calcMode":{"enum":["length_width","area_length","area_width","perimeter_length","perimeter_width","diagonal_length","diagonal_width","area_perimeter"],"description":"Solve from"},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"area":{"type":"number","description":"Area","minimum":0},"perimeter":{"type":"number","description":"Perimeter","minimum":0},"diagonal":{"type":"number","description":"Diagonal","minimum":0},"unit":{"enum":["none","mm","cm","m","km","in","ft","yd","mi"],"description":"Unit"},"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"}},"required":[]},"examples":{"length_8_width_6":{"summary":"Length 8, width 6","value":{"calcMode":"length_width","length":"8","width":"6","unit":"cm","precision":"4"}},"diagonal_10_width_6_unitless":{"summary":"Diagonal 10, width 6 (unitless)","value":{"calcMode":"diagonal_width","diagonal":"10","width":"6","unit":"none","precision":"4"}},"a_golden_ratio_rectangle":{"summary":"A golden-ratio rectangle","value":{"calcMode":"length_width","length":"1.618033988749895","width":"1","unit":"none","precision":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"length_8_width_6":{"summary":"Length 8, width 6","value":{"tool":"rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Length","value":"8 cm"},{"metric":"Width","value":"6 cm"},{"metric":"Area","value":"48 cm²"},{"metric":"Perimeter","value":"28 cm"},{"metric":"Diagonal","value":"10 cm"},{"metric":"Inscribed circle radius","value":"3 cm"},{"metric":"Circumscribed circle radius","value":"5 cm"},{"metric":"Aspect ratio","value":"1.3333:1"},{"metric":"Difference from golden ratio (φ)","value":"17.5955%"},{"metric":"Close to golden ratio?","value":"No"}]},"credits_used":5,"credits_remaining":null}},"diagonal_10_width_6_unitless":{"summary":"Diagonal 10, width 6 (unitless)","value":{"tool":"rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Length","value":"8"},{"metric":"Width","value":"6"},{"metric":"Area","value":"48"},{"metric":"Perimeter","value":"28"},{"metric":"Diagonal","value":"10"},{"metric":"Inscribed circle radius","value":"3"},{"metric":"Circumscribed circle radius","value":"5"},{"metric":"Aspect ratio","value":"1.3333:1"},{"metric":"Difference from golden ratio (φ)","value":"17.5955%"},{"metric":"Close to golden ratio?","value":"No"}]},"credits_used":5,"credits_remaining":null}},"a_golden_ratio_rectangle":{"summary":"A golden-ratio rectangle","value":{"tool":"rectangle-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Length","value":"1.618"},{"metric":"Width","value":"1"},{"metric":"Area","value":"1.618"},{"metric":"Perimeter","value":"5.2361"},{"metric":"Diagonal","value":"1.9021"},{"metric":"Inscribed circle radius","value":"0.5"},{"metric":"Circumscribed circle radius","value":"0.9511"},{"metric":"Aspect ratio","value":"1.618:1"},{"metric":"Difference from golden ratio (φ)","value":"0%"},{"metric":"Close to golden ratio?","value":"Yes"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rent-affordability-calculator":{"post":{"operationId":"run_rent_affordability_calculator","summary":"Rent Affordability Calculator","tags":["Calculators"],"description":"Work out how much rent you can afford on your income. Applies the 30% rule, a debt-aware limit that accounts for your existing monthly payments, and the 40x-annual-income screen most landlords use — then tells you which one is actually capping your budget and what's left over each month.\n\n[Try Rent Affordability Calculator in your browser →](https://iotools.cloud/tool/rent-affordability-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"income":{"type":"number","description":"Gross Income ($)","minimum":0,"maximum":99999999},"incomePeriod":{"enum":["monthly","annual"],"description":"Income Period"},"monthlyDebt":{"type":"number","description":"Existing Debt Payments ($)","minimum":0,"maximum":99999999},"utilities":{"type":"number","description":"Utilities & Insurance ($)","minimum":0,"maximum":99999999},"rentPercent":{"type":"number","description":"Rent Budget (% of gross income)","minimum":10,"maximum":60},"dtiLimit":{"type":"number","description":"Rent + Debt Limit (% of gross income)","minimum":10,"maximum":80},"incomeMultiple":{"type":"number","description":"Landlord Income Multiple (× monthly rent)","minimum":0,"maximum":60}},"required":["income"]},"examples":{"6_000_mo_income_500_debts_250_utilities":{"summary":"$6,000/mo income, $500 debts, $250 utilities","value":{"income":"6000","incomePeriod":"monthly","monthlyDebt":"500","utilities":"250","rentPercent":"30","dtiLimit":"40","incomeMultiple":"40"}},"annual_salary_debt_limited_85k_with_1_400_of_debts":{"summary":"Annual salary, debt-limited ($85k with $1,400 of debts)","value":{"income":"85000","incomePeriod":"annual","monthlyDebt":"1400","utilities":"200","rentPercent":"35","dtiLimit":"45","incomeMultiple":"0"}},"landlord_40x_screen_is_the_binding_limit_debt_free_40_budget":{"summary":"Landlord 40x screen is the binding limit (debt-free, 40% budget)","value":{"income":"4500","incomePeriod":"monthly","monthlyDebt":"0","utilities":"180","rentPercent":"40","dtiLimit":"50","incomeMultiple":"40"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"6_000_mo_income_500_debts_250_utilities":{"summary":"$6,000/mo income, $500 debts, $250 utilities","value":{"tool":"rent-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross Monthly Income","value":"$6,000"},{"metric":"Affordable Monthly Rent","value":"$1,800"},{"metric":"Limiting Factor","value":"Budget rule — 30% of gross income"},{"metric":"Budget Rule Cap (30% of income)","value":"$1,800"},{"metric":"Debt-Aware Cap (40% of income − debts)","value":"$1,900"},{"metric":"Landlord Cap (annual income ÷ 40)","value":"$1,800"},{"metric":"Utilities & Insurance","value":"$250"},{"metric":"Total Housing Cost","value":"$2,050"},{"metric":"Existing Debt Payments","value":"$500"},{"metric":"Left Over Each Month","value":"$3,450"},{"metric":"Rent as % of Gross Income","value":"30%"}]},"credits_used":5,"credits_remaining":null}},"annual_salary_debt_limited_85k_with_1_400_of_debts":{"summary":"Annual salary, debt-limited ($85k with $1,400 of debts)","value":{"tool":"rent-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross Monthly Income","value":"$7,083"},{"metric":"Affordable Monthly Rent","value":"$1,788"},{"metric":"Limiting Factor","value":"Existing debt payments"},{"metric":"Budget Rule Cap (35% of income)","value":"$2,479"},{"metric":"Debt-Aware Cap (45% of income − debts)","value":"$1,788"},{"metric":"Utilities & Insurance","value":"$200"},{"metric":"Total Housing Cost","value":"$1,988"},{"metric":"Existing Debt Payments","value":"$1,400"},{"metric":"Left Over Each Month","value":"$3,696"},{"metric":"Rent as % of Gross Income","value":"25.24%"}]},"credits_used":5,"credits_remaining":null}},"landlord_40x_screen_is_the_binding_limit_debt_free_40_budget":{"summary":"Landlord 40x screen is the binding limit (debt-free, 40% budget)","value":{"tool":"rent-affordability-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross Monthly Income","value":"$4,500"},{"metric":"Affordable Monthly Rent","value":"$1,350"},{"metric":"Limiting Factor","value":"Landlord screen — annual income ÷ 40"},{"metric":"Budget Rule Cap (40% of income)","value":"$1,800"},{"metric":"Debt-Aware Cap (50% of income − debts)","value":"$2,250"},{"metric":"Landlord Cap (annual income ÷ 40)","value":"$1,350"},{"metric":"Utilities & Insurance","value":"$180"},{"metric":"Total Housing Cost","value":"$1,530"},{"metric":"Existing Debt Payments","value":"$0"},{"metric":"Left Over Each Month","value":"$2,970"},{"metric":"Rent as % of Gross Income","value":"30%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rental-property-roi-calculator":{"post":{"operationId":"run_rental_property_roi_calculator","summary":"Rental Property ROI Calculator","tags":["Calculators"],"description":"Analyze a rental property's return on investment — net operating income (NOI), cap rate, cash-on-cash return, monthly/annual cash flow and gross rent multiplier, from purchase price, financing terms, rent and operating expenses.\n\n[Try Rental Property ROI Calculator in your browser →](https://iotools.cloud/tool/rental-property-roi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Purchase Price ($)","minimum":0,"maximum":999999999},"downPayment":{"type":"number","description":"Down Payment","minimum":0,"maximum":999999999},"downPaymentType":{"enum":["percent","dollar"],"description":"Down Payment Is"},"annualRate":{"type":"number","description":"Loan Interest Rate (%)","minimum":0,"maximum":100},"loanTermYears":{"enum":["10","15","20","30"],"description":"Loan Term"},"closingCosts":{"type":"number","description":"Closing & Rehab Costs ($)","minimum":0,"maximum":999999999},"monthlyRent":{"type":"number","description":"Monthly Rent ($)","minimum":0,"maximum":999999},"vacancyRate":{"type":"number","description":"Vacancy Rate (%)","minimum":0,"maximum":100},"propertyTaxAnnual":{"type":"number","description":"Property Tax ($/year)","minimum":0,"maximum":999999},"insuranceAnnual":{"type":"number","description":"Insurance ($/year)","minimum":0,"maximum":999999},"hoaAnnual":{"type":"number","description":"HOA & Other ($/year)","minimum":0,"maximum":999999},"managementRate":{"type":"number","description":"Property Management (% of rent collected)","minimum":0,"maximum":100},"maintenanceRate":{"type":"number","description":"Maintenance & Repairs (% of rent collected)","minimum":0,"maximum":100}},"required":["purchasePrice","downPayment","annualRate","monthlyRent"]},"examples":{"200_000_property_25_down_6_30yr_positive_cash_flow":{"summary":"$200,000 property, 25% down, 6% / 30yr — positive cash flow","value":{"purchasePrice":"200000","downPayment":"25","downPaymentType":"percent","annualRate":"6","loanTermYears":"30","closingCosts":"4000","monthlyRent":"2000","vacancyRate":"5","propertyTaxAnnual":"2200","insuranceAnnual":"900","hoaAnnual":"0","managementRate":"8","maintenanceRate":"5"}},"250_000_property_50_000_down_dollar_hoa_no_management_fee_negative_cash_flow":{"summary":"$250,000 property, $50,000 down (dollar), HOA, no management fee — negative cash flow","value":{"purchasePrice":"250000","downPayment":"50000","downPaymentType":"dollar","annualRate":"7","loanTermYears":"30","closingCosts":"5000","monthlyRent":"1800","vacancyRate":"8","propertyTaxAnnual":"2500","insuranceAnnual":"900","hoaAnnual":"1200","managementRate":"0","maintenanceRate":"10"}},"150_000_all_cash_purchase_100_down_15yr_term_ignored_no_mortgage":{"summary":"$150,000 all-cash purchase (100% down), 15yr term ignored — no mortgage","value":{"purchasePrice":"150000","downPayment":"100","downPaymentType":"percent","annualRate":"5","loanTermYears":"15","closingCosts":"3000","monthlyRent":"1400","vacancyRate":"5","propertyTaxAnnual":"1800","insuranceAnnual":"700","hoaAnnual":"0","managementRate":"10","maintenanceRate":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"200_000_property_25_down_6_30yr_positive_cash_flow":{"summary":"$200,000 property, 25% down, 6% / 30yr — positive cash flow","value":{"tool":"rental-property-roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Loan Amount","value":"$150,000"},{"metric":"Down Payment","value":"$50,000"},{"metric":"Monthly Mortgage Payment (P&I)","value":"$899"},{"metric":"Effective Gross Income (annual)","value":"$22,800"},{"metric":"Operating Expenses (annual)","value":"$6,064"},{"metric":"Net Operating Income — NOI (annual)","value":"$16,736"},{"metric":"Cap Rate","value":"8.37%"},{"metric":"Monthly Cash Flow","value":"$495"},{"metric":"Annual Cash Flow","value":"$5,944"},{"metric":"Cash-on-Cash Return","value":"11.01%"},{"metric":"Gross Rent Multiplier","value":"8.33"},{"metric":"Total Cash Invested","value":"$54,000"}]},"credits_used":5,"credits_remaining":null}},"250_000_property_50_000_down_dollar_hoa_no_management_fee_negative_cash_flow":{"summary":"$250,000 property, $50,000 down (dollar), HOA, no management fee — negative cash flow","value":{"tool":"rental-property-roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Loan Amount","value":"$200,000"},{"metric":"Down Payment","value":"$50,000"},{"metric":"Monthly Mortgage Payment (P&I)","value":"$1,331"},{"metric":"Effective Gross Income (annual)","value":"$19,872"},{"metric":"Operating Expenses (annual)","value":"$6,587"},{"metric":"Net Operating Income — NOI (annual)","value":"$13,285"},{"metric":"Cap Rate","value":"5.31%"},{"metric":"Monthly Cash Flow","value":"-$224"},{"metric":"Annual Cash Flow","value":"-$2,682"},{"metric":"Cash-on-Cash Return","value":"-4.88%"},{"metric":"Gross Rent Multiplier","value":"11.57"},{"metric":"Total Cash Invested","value":"$55,000"}]},"credits_used":5,"credits_remaining":null}},"150_000_all_cash_purchase_100_down_15yr_term_ignored_no_mortgage":{"summary":"$150,000 all-cash purchase (100% down), 15yr term ignored — no mortgage","value":{"tool":"rental-property-roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Loan Amount","value":"$0"},{"metric":"Down Payment","value":"$150,000"},{"metric":"Monthly Mortgage Payment (P&I)","value":"$0"},{"metric":"Effective Gross Income (annual)","value":"$15,960"},{"metric":"Operating Expenses (annual)","value":"$4,894"},{"metric":"Net Operating Income — NOI (annual)","value":"$11,066"},{"metric":"Cap Rate","value":"7.38%"},{"metric":"Monthly Cash Flow","value":"$922"},{"metric":"Annual Cash Flow","value":"$11,066"},{"metric":"Cash-on-Cash Return","value":"7.23%"},{"metric":"Gross Rent Multiplier","value":"8.93"},{"metric":"Total Cash Invested","value":"$153,000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/revenue-per-employee-calculator":{"post":{"operationId":"run_revenue_per_employee_calculator","summary":"Revenue Per Employee Calculator","tags":["Calculators"],"description":"Calculate revenue per employee for any period, plus the monthly and annualized figures — add a prior period to see whether productivity is growing.\n\n[Try Revenue Per Employee Calculator in your browser →](https://iotools.cloud/tool/revenue-per-employee-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalRevenue":{"type":"number","description":"Total Revenue ($)","minimum":0},"employees":{"type":"number","description":"Number of Employees","minimum":1},"periodMonths":{"type":"number","description":"Period Length (Months)","minimum":0.01},"priorRevenue":{"type":"number","description":"Prior Period Revenue ($, optional)","minimum":0},"priorEmployees":{"type":"number","description":"Prior Period Employees (optional)","minimum":1}},"required":["totalRevenue","employees","periodMonths"]},"examples":{"annual_2_5m_revenue_25_employees_12_months":{"summary":"Annual ($2.5M revenue / 25 employees, 12 months)","value":{"totalRevenue":"2500000","employees":"25","periodMonths":"12","priorRevenue":"","priorEmployees":""}},"quarterly_with_prior_period_growth_comparison":{"summary":"Quarterly, with prior-period growth comparison","value":{"totalRevenue":"600000","employees":"20","periodMonths":"3","priorRevenue":"480000","priorEmployees":"20"}},"small_team_6_month_period":{"summary":"Small team, 6-month period","value":{"totalRevenue":"180000","employees":"6","periodMonths":"6","priorRevenue":"","priorEmployees":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"annual_2_5m_revenue_25_employees_12_months":{"summary":"Annual ($2.5M revenue / 25 employees, 12 months)","value":{"tool":"revenue-per-employee-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Revenue per Employee (period)","value":"$100,000.00"},{"metric":"Monthly Revenue per Employee","value":"$8,333.33"},{"metric":"Annualized Revenue per Employee","value":"$100,000.00"},{"metric":"Total Employees","value":"25"}]},"credits_used":5,"credits_remaining":null}},"quarterly_with_prior_period_growth_comparison":{"summary":"Quarterly, with prior-period growth comparison","value":{"tool":"revenue-per-employee-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Revenue per Employee (period)","value":"$30,000.00"},{"metric":"Monthly Revenue per Employee","value":"$10,000.00"},{"metric":"Annualized Revenue per Employee","value":"$120,000.00"},{"metric":"Total Employees","value":"20"},{"metric":"Prior Period Revenue per Employee","value":"$24,000.00"},{"metric":"Revenue per Employee Growth","value":"+25.00%"}]},"credits_used":5,"credits_remaining":null}},"small_team_6_month_period":{"summary":"Small team, 6-month period","value":{"tool":"revenue-per-employee-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Revenue per Employee (period)","value":"$30,000.00"},{"metric":"Monthly Revenue per Employee","value":"$5,000.00"},{"metric":"Annualized Revenue per Employee","value":"$60,000.00"},{"metric":"Total Employees","value":"6"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/resistor-color-code-calculator":{"post":{"operationId":"run_resistor_color_code_calculator","summary":"Resistor Color Code Calculator","tags":["Calculators"],"description":"Decode a resistor's colour bands into its resistance, tolerance and temperature coefficient, or encode a resistance value back into 4-, 5- or 6-band colours. Shows the value range and a colour-band diagram of the resistor.\n\n[Try Resistor Color Code Calculator in your browser →](https://iotools.cloud/tool/resistor-color-code-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["colors","value"],"description":"Direction"},"bandCount":{"enum":["4","5","6"],"description":"Number of Bands"},"resistanceInput":{"type":"string","description":"Resistance Value"},"band1":{"enum":["black","brown","red","orange","yellow","green","blue","violet","grey","white"],"description":"Band 1 (1st digit)"},"band2":{"enum":["black","brown","red","orange","yellow","green","blue","violet","grey","white"],"description":"Band 2 (2nd digit)"},"band3":{"enum":["black","brown","red","orange","yellow","green","blue","violet","grey","white"],"description":"Band 3 (3rd digit)"},"multiplier":{"enum":["silver","gold","black","brown","red","orange","yellow","green","blue","violet","grey","white"],"description":"Multiplier"},"tolerance":{"enum":["brown","red","green","blue","violet","grey","gold","silver","none"],"description":"Tolerance"},"tcr":{"enum":["brown","red","orange","yellow","blue","violet","black","green","grey"],"description":"Temp. Coefficient"}},"required":[]},"examples":{"4_band_yellow_violet_brown_gold_470_5":{"summary":"4-band: Yellow, Violet, Brown, Gold (470 Ω ±5%)","value":{"mode":"colors","bandCount":"4","band1":"yellow","band2":"violet","multiplier":"brown","tolerance":"gold"}},"5_band_brown_black_black_red_brown_10_k_1":{"summary":"5-band: Brown, Black, Black, Red, Brown (10 kΩ ±1%)","value":{"mode":"colors","bandCount":"5","band1":"brown","band2":"black","band3":"black","multiplier":"red","tolerance":"brown"}},"6_band_4_7_k_0_1_with_25_ppm_k":{"summary":"6-band: 4.7 kΩ ±0.1% with 25 ppm/K","value":{"mode":"colors","bandCount":"6","band1":"yellow","band2":"violet","band3":"black","multiplier":"brown","tolerance":"violet","tcr":"yellow"}},"reverse_decode_4_7k_into_5_band_colours":{"summary":"Reverse: decode 4.7k into 5-band colours","value":{"mode":"value","bandCount":"5","resistanceInput":"4k7","tolerance":"brown"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4_band_yellow_violet_brown_gold_470_5":{"summary":"4-band: Yellow, Violet, Brown, Gold (470 Ω ±5%)","value":{"tool":"resistor-color-code-calculator","tool_version":"1.0.2","outputs":{"resistance":"470 Ω ±5%","resultTable":[{"property":"Resistance","value":"470 Ω"},{"property":"Tolerance","value":"±5%"},{"property":"Value Range","value":"446.5 Ω – 493.5 Ω"},{"property":"Band Colours","value":"Yellow, Violet, Brown, Gold"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"120\" viewBox=\"0 0 360 120\"><line x1=\"0\" y1=\"60\" x2=\"86\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><line x1=\"274\" y1=\"60\" x2=\"360\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><rect x=\"80\" y=\"35\" width=\"200\" height=\"50\" rx=\"10\" ry=\"10\" fill=\"#d9c19a\" stroke=\"#8b7355\" stroke-width=\"2\"/><rect x=\"93\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#f4d020\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"146\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8a4fce\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"200\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"253\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#c9a227\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/></svg>"},"credits_used":5,"credits_remaining":null}},"5_band_brown_black_black_red_brown_10_k_1":{"summary":"5-band: Brown, Black, Black, Red, Brown (10 kΩ ±1%)","value":{"tool":"resistor-color-code-calculator","tool_version":"1.0.2","outputs":{"resistance":"10 kΩ ±1%","resultTable":[{"property":"Resistance","value":"10 kΩ"},{"property":"Tolerance","value":"±1%"},{"property":"Value Range","value":"9.9 kΩ – 10.1 kΩ"},{"property":"Band Colours","value":"Brown, Black, Black, Red, Brown"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"120\" viewBox=\"0 0 360 120\"><line x1=\"0\" y1=\"60\" x2=\"86\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><line x1=\"274\" y1=\"60\" x2=\"360\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><rect x=\"80\" y=\"35\" width=\"200\" height=\"50\" rx=\"10\" ry=\"10\" fill=\"#d9c19a\" stroke=\"#8b7355\" stroke-width=\"2\"/><rect x=\"93\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"133\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#1a1a1a\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"173\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#1a1a1a\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"213\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#e13b30\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"253\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/></svg>"},"credits_used":5,"credits_remaining":null}},"6_band_4_7_k_0_1_with_25_ppm_k":{"summary":"6-band: 4.7 kΩ ±0.1% with 25 ppm/K","value":{"tool":"resistor-color-code-calculator","tool_version":"1.0.2","outputs":{"resistance":"4.7 kΩ ±0.1%","resultTable":[{"property":"Resistance","value":"4.7 kΩ"},{"property":"Tolerance","value":"±0.1%"},{"property":"Value Range","value":"4.695 kΩ – 4.705 kΩ"},{"property":"Temp. Coefficient","value":"25 ppm/K"},{"property":"Band Colours","value":"Yellow, Violet, Black, Brown, Violet, Yellow"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"120\" viewBox=\"0 0 360 120\"><line x1=\"0\" y1=\"60\" x2=\"86\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><line x1=\"274\" y1=\"60\" x2=\"360\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><rect x=\"80\" y=\"35\" width=\"200\" height=\"50\" rx=\"10\" ry=\"10\" fill=\"#d9c19a\" stroke=\"#8b7355\" stroke-width=\"2\"/><rect x=\"93\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#f4d020\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"125\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8a4fce\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"157\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#1a1a1a\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"189\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"221\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8a4fce\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"253\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#f4d020\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/></svg>"},"credits_used":5,"credits_remaining":null}},"reverse_decode_4_7k_into_5_band_colours":{"summary":"Reverse: decode 4.7k into 5-band colours","value":{"tool":"resistor-color-code-calculator","tool_version":"1.0.2","outputs":{"resistance":"4.7 kΩ ±1%","resultTable":[{"property":"Resistance","value":"4.7 kΩ"},{"property":"Tolerance","value":"±1%"},{"property":"Value Range","value":"4.653 kΩ – 4.747 kΩ"},{"property":"Band Colours","value":"Yellow, Violet, Black, Brown, Brown"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"360\" height=\"120\" viewBox=\"0 0 360 120\"><line x1=\"0\" y1=\"60\" x2=\"86\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><line x1=\"274\" y1=\"60\" x2=\"360\" y2=\"60\" stroke=\"#9a9a9a\" stroke-width=\"4\"/><rect x=\"80\" y=\"35\" width=\"200\" height=\"50\" rx=\"10\" ry=\"10\" fill=\"#d9c19a\" stroke=\"#8b7355\" stroke-width=\"2\"/><rect x=\"93\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#f4d020\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"133\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8a4fce\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"173\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#1a1a1a\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"213\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/><rect x=\"253\" y=\"37\" width=\"14\" height=\"46\" rx=\"2\" ry=\"2\" fill=\"#8b5a2b\" stroke=\"#3a3a3a\" stroke-width=\"0.75\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resistance":{"type":"string","description":"Resistance"},"resultTable":{"type":"array","description":"Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"svg":{"type":"string","description":"Diagram (SVG)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/roi-calculator":{"post":{"operationId":"run_roi_calculator","summary":"ROI Calculator","tags":["Calculators"],"description":"Calculate return on investment (ROI) for any investment. Enter what you put in and what you got back to get net profit, ROI percentage, investment multiple, and annualized ROI (CAGR) when you add a holding period.\n\n[Try ROI Calculator in your browser →](https://iotools.cloud/tool/roi-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"initialInvestment":{"type":"number","description":"Initial Investment ($)","minimum":0},"finalValue":{"type":"number","description":"Final Value ($)","minimum":0},"additionalCosts":{"type":"number","description":"Additional Costs / Fees ($)","minimum":0},"incomeReceived":{"type":"number","description":"Income Received ($)","minimum":0},"years":{"type":"number","description":"Holding Period (Years)","minimum":0}},"required":["initialInvestment","finalValue"]},"examples":{"10_000_15_000_simple_50_gain":{"summary":"$10,000 → $15,000 (simple 50% gain)","value":{"initialInvestment":"10000","finalValue":"15000","additionalCosts":"0","incomeReceived":"0","years":""}},"10_000_25_000_over_5_years_annualized_roi_cagr":{"summary":"$10,000 → $25,000 over 5 years (annualized ROI / CAGR)","value":{"initialInvestment":"10000","finalValue":"25000","additionalCosts":"0","incomeReceived":"0","years":"5"}},"stock_with_fees_and_dividends_over_3_years":{"summary":"Stock with fees and dividends over 3 years","value":{"initialInvestment":"5000","finalValue":"6000","additionalCosts":"100","incomeReceived":"300","years":"3"}},"losing_investment_8_000_6_000":{"summary":"Losing investment — $8,000 → $6,000","value":{"initialInvestment":"8000","finalValue":"6000","additionalCosts":"0","incomeReceived":"0","years":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_15_000_simple_50_gain":{"summary":"$10,000 → $15,000 (simple 50% gain)","value":{"tool":"roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Invested","value":"$10,000.00"},{"metric":"Total Return","value":"$15,000.00"},{"metric":"Net Profit","value":"$5,000.00"},{"metric":"ROI","value":"50.00%"},{"metric":"Investment Multiple","value":"1.50×"}]},"credits_used":5,"credits_remaining":null}},"10_000_25_000_over_5_years_annualized_roi_cagr":{"summary":"$10,000 → $25,000 over 5 years (annualized ROI / CAGR)","value":{"tool":"roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Invested","value":"$10,000.00"},{"metric":"Total Return","value":"$25,000.00"},{"metric":"Net Profit","value":"$15,000.00"},{"metric":"ROI","value":"150.00%"},{"metric":"Investment Multiple","value":"2.50×"},{"metric":"Annualized ROI (CAGR, 5 yr)","value":"20.11%"}]},"credits_used":5,"credits_remaining":null}},"stock_with_fees_and_dividends_over_3_years":{"summary":"Stock with fees and dividends over 3 years","value":{"tool":"roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Invested","value":"$5,100.00"},{"metric":"Total Return","value":"$6,300.00"},{"metric":"Net Profit","value":"$1,200.00"},{"metric":"ROI","value":"23.53%"},{"metric":"Investment Multiple","value":"1.24×"},{"metric":"Annualized ROI (CAGR, 3 yr)","value":"7.30%"}]},"credits_used":5,"credits_remaining":null}},"losing_investment_8_000_6_000":{"summary":"Losing investment — $8,000 → $6,000","value":{"tool":"roi-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Invested","value":"$8,000.00"},{"metric":"Total Return","value":"$6,000.00"},{"metric":"Net Loss","value":"-$2,000.00"},{"metric":"ROI","value":"-25.00%"},{"metric":"Investment Multiple","value":"0.75×"},{"metric":"Annualized ROI (CAGR, 2 yr)","value":"-13.40%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rule-of-72-calculator":{"post":{"operationId":"run_rule_of_72_calculator","summary":"Rule of 72 Calculator","tags":["Calculators"],"description":"Estimate how long it takes an investment to double using the Rule of 72 (years ≈ 72 / rate%), and see the exact logarithmic answer beside it. Compares the Rule of 72, 70 and 69.3 approximations, shows each rule's error, supports any compounding frequency, and works in reverse to find the rate needed to double in a target number of years.\n\n[Try Rule of 72 Calculator in your browser →](https://iotools.cloud/tool/rule-of-72-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["rate_to_years","years_to_rate"],"description":"Direction"},"rate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0.01,"maximum":1000},"years":{"type":"number","description":"Years to Double","minimum":0.01,"maximum":1000},"frequency":{"enum":["1","2","4","12","365","continuous"],"description":"Compounding"}},"required":[]},"examples":{"8_annual_return_doubling_time":{"summary":"8% annual return — doubling time","value":{"mode":"rate_to_years","rate":"8","frequency":"1"}},"2_low_rate_where_the_rule_drifts":{"summary":"2% low rate — where the rule drifts","value":{"mode":"rate_to_years","rate":"2","frequency":"1"}},"double_in_10_years_required_rate":{"summary":"Double in 10 years — required rate","value":{"mode":"years_to_rate","years":"10","frequency":"1"}},"6_compounded_monthly":{"summary":"6% compounded monthly","value":{"mode":"rate_to_years","rate":"6","frequency":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"8_annual_return_doubling_time":{"summary":"8% annual return — doubling time","value":{"tool":"rule-of-72-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Rule of 72 — Doubling Time ===\n\n  At 8% per year, your money doubles in about 9.00 years (Rule of 72).\n  The exact doubling time is 9.01 years — the rule is off by -0.07%.\n\n  Annual Interest Rate:   8%\n  Compounding:            Annually (1x/year)\n\n  Rule of 72:             9.00 years\n  Rule of 70:             8.75 years\n  Rule of 69.3:           8.66 years\n  Exact (logarithmic):    9.01 years\n\n=== Formula ===\n  Approximation:  years ≈ 72 / rate\n  Exact:          years = ln(2) / ln(1 + rate/100)","table":[{"method":"Rule of 72","result":"9.00 years","error-vs-exact":"-0.07%","best-for":"Most popular; most accurate for rates around 6-10%"},{"method":"Rule of 70","result":"8.75 years","error-vs-exact":"-2.85%","best-for":"Easier mental math; slight under-estimate at low rates"},{"method":"Rule of 69.3","result":"8.66 years","error-vs-exact":"-3.82%","best-for":"Closest to the true constant (69.3 ≈ 100·ln 2)"},{"method":"Exact (logarithmic)","result":"9.01 years","error-vs-exact":"—","best-for":"True value from the compound-interest formula"}]},"credits_used":5,"credits_remaining":null}},"2_low_rate_where_the_rule_drifts":{"summary":"2% low rate — where the rule drifts","value":{"tool":"rule-of-72-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Rule of 72 — Doubling Time ===\n\n  At 2% per year, your money doubles in about 36.00 years (Rule of 72).\n  The exact doubling time is 35.00 years — the rule is off by +2.85%.\n\n  Annual Interest Rate:   2%\n  Compounding:            Annually (1x/year)\n\n  Rule of 72:             36.00 years\n  Rule of 70:             35.00 years\n  Rule of 69.3:           34.65 years\n  Exact (logarithmic):    35.00 years\n\n=== Formula ===\n  Approximation:  years ≈ 72 / rate\n  Exact:          years = ln(2) / ln(1 + rate/100)","table":[{"method":"Rule of 72","result":"36.00 years","error-vs-exact":"+2.85%","best-for":"Most popular; most accurate for rates around 6-10%"},{"method":"Rule of 70","result":"35.00 years","error-vs-exact":"-0.01%","best-for":"Easier mental math; slight under-estimate at low rates"},{"method":"Rule of 69.3","result":"34.65 years","error-vs-exact":"-1.01%","best-for":"Closest to the true constant (69.3 ≈ 100·ln 2)"},{"method":"Exact (logarithmic)","result":"35.00 years","error-vs-exact":"—","best-for":"True value from the compound-interest formula"}]},"credits_used":5,"credits_remaining":null}},"double_in_10_years_required_rate":{"summary":"Double in 10 years — required rate","value":{"tool":"rule-of-72-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Rule of 72 — Required Rate ===\n\n  To double in 10 years, you need about 7.200% per year (Rule of 72).\n  The exact required rate is 7.177% — the rule is off by +0.32%.\n\n  Years to double:        10\n  Compounding:            Annually (1x/year)\n\n  Rule of 72:             7.200%\n  Rule of 70:             7.000%\n  Rule of 69.3:           6.930%\n  Exact (logarithmic):    7.177%\n\n=== Formula ===\n  Approximation:  rate ≈ 72 / years\n  Exact:          rate = (2^(1/years) − 1) × 100","table":[{"method":"Rule of 72","result":"7.200%","error-vs-exact":"+0.32%","best-for":"Most popular; most accurate for rates around 6-10%"},{"method":"Rule of 70","result":"7.000%","error-vs-exact":"-2.47%","best-for":"Easier mental math; slight under-estimate at low rates"},{"method":"Rule of 69.3","result":"6.930%","error-vs-exact":"-3.45%","best-for":"Closest to the true constant (69.3 ≈ 100·ln 2)"},{"method":"Exact (logarithmic)","result":"7.177%","error-vs-exact":"—","best-for":"True value from the compound-interest formula"}]},"credits_used":5,"credits_remaining":null}},"6_compounded_monthly":{"summary":"6% compounded monthly","value":{"tool":"rule-of-72-calculator","tool_version":"1.0.2","outputs":{"summary":"=== Rule of 72 — Doubling Time ===\n\n  At 6% per year, your money doubles in about 12.00 years (Rule of 72).\n  The exact doubling time is 11.58 years — the rule is off by +3.62%.\n\n  Annual Interest Rate:   6%\n  Compounding:            Monthly (12x/year)\n\n  Rule of 72:             12.00 years\n  Rule of 70:             11.67 years\n  Rule of 69.3:           11.55 years\n  Exact (logarithmic):    11.58 years\n\n=== Formula ===\n  Approximation:  years ≈ 72 / rate\n  Exact:          years = ln(2) / (n · ln(1 + rate/(100·n)))","table":[{"method":"Rule of 72","result":"12.00 years","error-vs-exact":"+3.62%","best-for":"Most popular; most accurate for rates around 6-10%"},{"method":"Rule of 70","result":"11.67 years","error-vs-exact":"+0.74%","best-for":"Easier mental math; slight under-estimate at low rates"},{"method":"Rule of 69.3","result":"11.55 years","error-vs-exact":"-0.27%","best-for":"Closest to the true constant (69.3 ≈ 100·ln 2)"},{"method":"Exact (logarithmic)","result":"11.58 years","error-vs-exact":"—","best-for":"True value from the compound-interest formula"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"table":{"type":"array","description":"Comparison","items":{"type":"object","properties":{"method":{"type":"string","description":"Method"},"result":{"type":"string","description":"Result"},"error-vs-exact":{"type":"string","description":"Error vs exact"},"best-for":{"type":"string","description":"Best for"}}},"x-iotools-columns":["method","result","error-vs-exact","best-for"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/running-pace-calculator":{"post":{"operationId":"run_running_pace_calculator","summary":"Running Pace Calculator","tags":["Calculators"],"description":"Solve the running pace triangle: enter any two of distance, time and pace to calculate the third. Shows pace per km and per mile, speed, a Riegel equivalent race-time predictor (5K, 10K, half, marathon and more) and an even-split table.\n\n[Try Running Pace Calculator in your browser →](https://iotools.cloud/tool/running-pace-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["pace","time","distance"],"description":"Calculate"},"distancePreset":{"enum":["custom","1.609344","5","10","15","21.0975","42.195","50","100"],"description":"Distance preset"},"distance":{"type":"number","description":"Distance","minimum":0},"distanceUnit":{"enum":["km","miles","meters"],"description":"Distance unit"},"time":{"type":"string","description":"Time"},"pace":{"type":"string","description":"Pace"},"paceUnit":{"enum":["km","mile"],"description":"Pace unit"},"splitUnit":{"enum":["km","mile"],"description":"Split every"}},"required":[]},"examples":{"pace_from_10_km_in_50_00":{"summary":"Pace from 10 km in 50:00","value":{"mode":"pace","distancePreset":"custom","distance":"10","distanceUnit":"km","time":"50:00","splitUnit":"km"}},"time_from_half_marathon_at_5_00_km":{"summary":"Time from half marathon at 5:00/km","value":{"mode":"time","distancePreset":"21.0975","distanceUnit":"km","pace":"5:00","paceUnit":"km","splitUnit":"km"}},"distance_from_5_00_km_for_30_00":{"summary":"Distance from 5:00/km for 30:00","value":{"mode":"distance","distanceUnit":"km","time":"30:00","pace":"5:00","paceUnit":"km","splitUnit":"km"}},"marathon_time_from_8_00_mile_pace_mile_splits":{"summary":"Marathon time from 8:00/mile pace, mile splits","value":{"mode":"time","distancePreset":"42.195","distanceUnit":"miles","pace":"8:00","paceUnit":"mile","splitUnit":"mile"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pace_from_10_km_in_50_00":{"summary":"Pace from 10 km in 50:00","value":{"tool":"running-pace-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Distance","value":"10.00 km"},{"metric":"Total Time","value":"50:00"},{"metric":"Pace /km","value":"5:00 min/km"},{"metric":"Pace /mile","value":"8:03 min/mi"},{"metric":"Speed","value":"12.00 km/h"},{"metric":"Speed (imperial)","value":"7.46 mph"}],"equivalent":[{"distance":"1 Mile","predicted-time":"7:13","pace-km":"4:29 /km","pace-mile":"7:13 /mi"},{"distance":"5K","predicted-time":"23:59","pace-km":"4:48 /km","pace-mile":"7:43 /mi"},{"distance":"10K","predicted-time":"50:00","pace-km":"5:00 /km","pace-mile":"8:03 /mi"},{"distance":"15K","predicted-time":"1:16:51","pace-km":"5:07 /km","pace-mile":"8:15 /mi"},{"distance":"Half Marathon","predicted-time":"1:50:19","pace-km":"5:14 /km","pace-mile":"8:25 /mi"},{"distance":"Marathon","predicted-time":"3:50:01","pace-km":"5:27 /km","pace-mile":"8:46 /mi"},{"distance":"50K Ultra","predicted-time":"4:35:21","pace-km":"5:30 /km","pace-mile":"8:52 /mi"},{"distance":"100K Ultra","predicted-time":"9:34:05","pace-km":"5:44 /km","pace-mile":"9:14 /mi"}],"splits":[{"split":"km 1","split-time":"5:00","cumulative":"5:00"},{"split":"km 2","split-time":"5:00","cumulative":"10:00"},{"split":"km 3","split-time":"5:00","cumulative":"15:00"},{"split":"km 4","split-time":"5:00","cumulative":"20:00"},{"split":"km 5","split-time":"5:00","cumulative":"25:00"},{"split":"km 6","split-time":"5:00","cumulative":"30:00"},{"split":"km 7","split-time":"5:00","cumulative":"35:00"},{"split":"km 8","split-time":"5:00","cumulative":"40:00"},{"split":"km 9","split-time":"5:00","cumulative":"45:00"},{"split":"km 10","split-time":"5:00","cumulative":"50:00"}]},"credits_used":5,"credits_remaining":null}},"time_from_half_marathon_at_5_00_km":{"summary":"Time from half marathon at 5:00/km","value":{"tool":"running-pace-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Distance","value":"21.10 km"},{"metric":"Total Time","value":"1:45:29"},{"metric":"Pace /km","value":"5:00 min/km"},{"metric":"Pace /mile","value":"8:03 min/mi"},{"metric":"Speed","value":"12.00 km/h"},{"metric":"Speed (imperial)","value":"7.46 mph"}],"equivalent":[{"distance":"1 Mile","predicted-time":"6:54","pace-km":"4:17 /km","pace-mile":"6:54 /mi"},{"distance":"5K","predicted-time":"22:56","pace-km":"4:35 /km","pace-mile":"7:23 /mi"},{"distance":"10K","predicted-time":"47:49","pace-km":"4:47 /km","pace-mile":"7:42 /mi"},{"distance":"15K","predicted-time":"1:13:29","pace-km":"4:54 /km","pace-mile":"7:53 /mi"},{"distance":"Half Marathon","predicted-time":"1:45:29","pace-km":"5:00 /km","pace-mile":"8:03 /mi"},{"distance":"Marathon","predicted-time":"3:39:56","pace-km":"5:13 /km","pace-mile":"8:23 /mi"},{"distance":"50K Ultra","predicted-time":"4:23:17","pace-km":"5:16 /km","pace-mile":"8:28 /mi"},{"distance":"100K Ultra","predicted-time":"9:08:56","pace-km":"5:29 /km","pace-mile":"8:50 /mi"}],"splits":[{"split":"km 1","split-time":"5:00","cumulative":"5:00"},{"split":"km 2","split-time":"5:00","cumulative":"10:00"},{"split":"km 3","split-time":"5:00","cumulative":"15:00"},{"split":"km 4","split-time":"5:00","cumulative":"20:00"},{"split":"km 5","split-time":"5:00","cumulative":"25:00"},{"split":"km 6","split-time":"5:00","cumulative":"30:00"},{"split":"km 7","split-time":"5:00","cumulative":"35:00"},{"split":"km 8","split-time":"5:00","cumulative":"40:00"},{"split":"km 9","split-time":"5:00","cumulative":"45:00"},{"split":"km 10","split-time":"5:00","cumulative":"50:00"},{"split":"km 11","split-time":"5:00","cumulative":"55:00"},{"split":"km 12","split-time":"5:00","cumulative":"1:00:00"},{"split":"km 13","split-time":"5:00","cumulative":"1:05:00"},{"split":"km 14","split-time":"5:00","cumulative":"1:10:00"},{"split":"km 15","split-time":"5:00","cumulative":"1:15:00"},{"split":"km 16","split-time":"5:00","cumulative":"1:20:00"},{"split":"km 17","split-time":"5:00","cumulative":"1:25:00"},{"split":"km 18","split-time":"5:00","cumulative":"1:30:00"},{"split":"km 19","split-time":"5:00","cumulative":"1:35:00"},{"split":"km 20","split-time":"5:00","cumulative":"1:40:00"},{"split":"km 21","split-time":"5:00","cumulative":"1:45:00"},{"split":"21.10 km (final)","split-time":"0:29","cumulative":"1:45:29"}]},"credits_used":5,"credits_remaining":null}},"distance_from_5_00_km_for_30_00":{"summary":"Distance from 5:00/km for 30:00","value":{"tool":"running-pace-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Distance","value":"6.00 km"},{"metric":"Total Time","value":"30:00"},{"metric":"Pace /km","value":"5:00 min/km"},{"metric":"Pace /mile","value":"8:03 min/mi"},{"metric":"Speed","value":"12.00 km/h"},{"metric":"Speed (imperial)","value":"7.46 mph"}],"equivalent":[{"distance":"1 Mile","predicted-time":"7:26","pace-km":"4:37 /km","pace-mile":"7:26 /mi"},{"distance":"5K","predicted-time":"24:44","pace-km":"4:57 /km","pace-mile":"7:58 /mi"},{"distance":"10K","predicted-time":"51:33","pace-km":"5:09 /km","pace-mile":"8:18 /mi"},{"distance":"15K","predicted-time":"1:19:14","pace-km":"5:17 /km","pace-mile":"8:30 /mi"},{"distance":"Half Marathon","predicted-time":"1:53:45","pace-km":"5:24 /km","pace-mile":"8:41 /mi"},{"distance":"Marathon","predicted-time":"3:57:10","pace-km":"5:37 /km","pace-mile":"9:03 /mi"},{"distance":"50K Ultra","predicted-time":"4:43:55","pace-km":"5:41 /km","pace-mile":"9:08 /mi"},{"distance":"100K Ultra","predicted-time":"9:51:57","pace-km":"5:55 /km","pace-mile":"9:32 /mi"}],"splits":[{"split":"km 1","split-time":"5:00","cumulative":"5:00"},{"split":"km 2","split-time":"5:00","cumulative":"10:00"},{"split":"km 3","split-time":"5:00","cumulative":"15:00"},{"split":"km 4","split-time":"5:00","cumulative":"20:00"},{"split":"km 5","split-time":"5:00","cumulative":"25:00"},{"split":"km 6","split-time":"5:00","cumulative":"30:00"}]},"credits_used":5,"credits_remaining":null}},"marathon_time_from_8_00_mile_pace_mile_splits":{"summary":"Marathon time from 8:00/mile pace, mile splits","value":{"tool":"running-pace-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Distance","value":"26.22 mi"},{"metric":"Total Time","value":"3:29:45"},{"metric":"Pace /km","value":"4:58 min/km"},{"metric":"Pace /mile","value":"8:00 min/mi"},{"metric":"Speed","value":"12.07 km/h"},{"metric":"Speed (imperial)","value":"7.50 mph"}],"equivalent":[{"distance":"1 Mile","predicted-time":"6:35","pace-km":"4:05 /km","pace-mile":"6:35 /mi"},{"distance":"5K","predicted-time":"21:52","pace-km":"4:22 /km","pace-mile":"7:02 /mi"},{"distance":"10K","predicted-time":"45:36","pace-km":"4:34 /km","pace-mile":"7:20 /mi"},{"distance":"15K","predicted-time":"1:10:05","pace-km":"4:40 /km","pace-mile":"7:31 /mi"},{"distance":"Half Marathon","predicted-time":"1:40:36","pace-km":"4:46 /km","pace-mile":"7:40 /mi"},{"distance":"Marathon","predicted-time":"3:29:45","pace-km":"4:58 /km","pace-mile":"8:00 /mi"},{"distance":"50K Ultra","predicted-time":"4:11:06","pace-km":"5:01 /km","pace-mile":"8:05 /mi"},{"distance":"100K Ultra","predicted-time":"8:43:31","pace-km":"5:14 /km","pace-mile":"8:26 /mi"}],"splits":[{"split":"mi 1","split-time":"8:00","cumulative":"8:00"},{"split":"mi 2","split-time":"8:00","cumulative":"16:00"},{"split":"mi 3","split-time":"8:00","cumulative":"24:00"},{"split":"mi 4","split-time":"8:00","cumulative":"32:00"},{"split":"mi 5","split-time":"8:00","cumulative":"40:00"},{"split":"mi 6","split-time":"8:00","cumulative":"48:00"},{"split":"mi 7","split-time":"8:00","cumulative":"56:00"},{"split":"mi 8","split-time":"8:00","cumulative":"1:04:00"},{"split":"mi 9","split-time":"8:00","cumulative":"1:12:00"},{"split":"mi 10","split-time":"8:00","cumulative":"1:20:00"},{"split":"mi 11","split-time":"8:00","cumulative":"1:28:00"},{"split":"mi 12","split-time":"8:00","cumulative":"1:36:00"},{"split":"mi 13","split-time":"8:00","cumulative":"1:44:00"},{"split":"mi 14","split-time":"8:00","cumulative":"1:52:00"},{"split":"mi 15","split-time":"8:00","cumulative":"2:00:00"},{"split":"mi 16","split-time":"8:00","cumulative":"2:08:00"},{"split":"mi 17","split-time":"8:00","cumulative":"2:16:00"},{"split":"mi 18","split-time":"8:00","cumulative":"2:24:00"},{"split":"mi 19","split-time":"8:00","cumulative":"2:32:00"},{"split":"mi 20","split-time":"8:00","cumulative":"2:40:00"},{"split":"mi 21","split-time":"8:00","cumulative":"2:48:00"},{"split":"mi 22","split-time":"8:00","cumulative":"2:56:00"},{"split":"mi 23","split-time":"8:00","cumulative":"3:04:00"},{"split":"mi 24","split-time":"8:00","cumulative":"3:12:00"},{"split":"mi 25","split-time":"8:00","cumulative":"3:20:00"},{"split":"mi 26","split-time":"8:00","cumulative":"3:28:00"},{"split":"26.22 mi (final)","split-time":"1:45","cumulative":"3:29:45"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"equivalent":{"type":"array","description":"Equivalent Race Times (Riegel formula)","items":{"type":"object","properties":{"distance":{"type":"string","description":"Distance"},"predicted-time":{"type":"string","description":"Predicted Time"},"pace-km":{"type":"string","description":"Pace /km"},"pace-mile":{"type":"string","description":"Pace /mile"}}},"x-iotools-columns":["distance","predicted-time","pace-km","pace-mile"]},"splits":{"type":"array","description":"Even Splits","items":{"type":"object","properties":{"split":{"type":"string","description":"Split"},"split-time":{"type":"string","description":"Split Time"},"cumulative":{"type":"string","description":"Cumulative"}}},"x-iotools-columns":["split","split-time","cumulative"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/salary-calculator":{"post":{"operationId":"run_salary_calculator","summary":"Salary Calculator","tags":["Calculators"],"description":"Convert a salary between annual, monthly, bi-weekly, weekly, daily, and hourly pay periods. Enter your pay at any one period and see the equivalent at every other, based on your work hours per day, days per week, and paid leave.\n\n[Try Salary Calculator in your browser →](https://iotools.cloud/tool/salary-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"salaryAmount":{"type":"number","description":"Salary Amount","minimum":0},"salaryPeriod":{"enum":["annual","monthly","biweekly","weekly","daily","hourly"],"description":"Pay Period"},"currencySymbol":{"type":"string","description":"Currency Symbol"},"hoursPerDay":{"type":"number","description":"Work Hours / Day","minimum":1,"maximum":24},"daysPerWeek":{"type":"number","description":"Work Days / Week","minimum":1,"maximum":7},"paidLeave":{"type":"number","description":"Paid Leave / Year","minimum":0,"maximum":90}},"required":["salaryAmount"]},"examples":{"75_000_year_to_every_period":{"summary":"$75,000/year to every period","value":{"salaryAmount":"75000","salaryPeriod":"annual","currencySymbol":"$","hoursPerDay":"8","daysPerWeek":"5","paidLeave":"20"}},"30_hour_to_every_period":{"summary":"$30/hour to every period","value":{"salaryAmount":"30","salaryPeriod":"hourly","currencySymbol":"$","hoursPerDay":"8","daysPerWeek":"5","paidLeave":"20"}},"3_500_month_symbol_part_time_schedule":{"summary":"£3,500/month, £ symbol, part-time schedule","value":{"salaryAmount":"3500","salaryPeriod":"monthly","currencySymbol":"£","hoursPerDay":"6","daysPerWeek":"4","paidLeave":"25"}},"1_200_week_no_paid_leave":{"summary":"$1,200/week, no paid leave","value":{"salaryAmount":"1200","salaryPeriod":"weekly","currencySymbol":"$","hoursPerDay":"8","daysPerWeek":"5","paidLeave":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"75_000_year_to_every_period":{"summary":"$75,000/year to every period","value":{"tool":"salary-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Annual Salary","amount":"$75,000.00"},{"period":"Monthly Salary","amount":"$6,250.00"},{"period":"Bi-weekly Salary","amount":"$2,884.62"},{"period":"Weekly Salary","amount":"$1,442.31"},{"period":"Daily Rate","amount":"$312.50"},{"period":"Hourly Rate","amount":"$39.06"}]},"credits_used":5,"credits_remaining":null}},"30_hour_to_every_period":{"summary":"$30/hour to every period","value":{"tool":"salary-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Annual Salary","amount":"$57,600.00"},{"period":"Monthly Salary","amount":"$4,800.00"},{"period":"Bi-weekly Salary","amount":"$2,215.38"},{"period":"Weekly Salary","amount":"$1,107.69"},{"period":"Daily Rate","amount":"$240.00"},{"period":"Hourly Rate","amount":"$30.00"}]},"credits_used":5,"credits_remaining":null}},"3_500_month_symbol_part_time_schedule":{"summary":"£3,500/month, £ symbol, part-time schedule","value":{"tool":"salary-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Annual Salary","amount":"£42,000.00"},{"period":"Monthly Salary","amount":"£3,500.00"},{"period":"Bi-weekly Salary","amount":"£1,615.38"},{"period":"Weekly Salary","amount":"£807.69"},{"period":"Daily Rate","amount":"£229.51"},{"period":"Hourly Rate","amount":"£38.25"}]},"credits_used":5,"credits_remaining":null}},"1_200_week_no_paid_leave":{"summary":"$1,200/week, no paid leave","value":{"tool":"salary-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Annual Salary","amount":"$62,400.00"},{"period":"Monthly Salary","amount":"$5,200.00"},{"period":"Bi-weekly Salary","amount":"$2,400.00"},{"period":"Weekly Salary","amount":"$1,200.00"},{"period":"Daily Rate","amount":"$240.00"},{"period":"Hourly Rate","amount":"$30.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Salary Breakdown","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["period","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sales-tax-vat-calculator":{"post":{"operationId":"run_sales_tax_vat_calculator","summary":"Sales Tax & VAT Calculator","tags":["Calculators"],"description":"Add or remove sales tax, VAT or GST from a price. Enter your own rate to compute the tax amount, pre-tax price and gross total — with a full breakdown and common country presets.\n\n[Try Sales Tax & VAT Calculator in your browser →](https://iotools.cloud/tool/sales-tax-vat-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["add","remove"],"description":"Mode"},"price":{"type":"number","description":"Price","minimum":0},"ratePreset":{"enum":["custom","uk","de","fr","nl","es","it","se","ch","jp","au","ca","in","sg"],"description":"Common Rate"},"taxRate":{"type":"number","description":"Tax Rate (%)","minimum":0,"maximum":100}},"required":[]},"examples":{"add_20_vat_to_a_100_net_price":{"summary":"Add 20% VAT to a $100 net price","value":{"mode":"add","price":"100","ratePreset":"custom","taxRate":"20"}},"remove_20_vat_from_a_120_gross_price":{"summary":"Remove 20% VAT from a $120 gross price","value":{"mode":"remove","price":"120","ratePreset":"custom","taxRate":"20"}},"add_8_25_us_sales_tax_to_a_49_99_price":{"summary":"Add 8.25% US sales tax to a $49.99 price","value":{"mode":"add","price":"49.99","ratePreset":"custom","taxRate":"8.25"}},"remove_germany_vat_19_from_a_59_99_gross_price":{"summary":"Remove Germany VAT (19%) from a €59.99 gross price","value":{"mode":"remove","price":"59.99","ratePreset":"de"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"add_20_vat_to_a_100_net_price":{"summary":"Add 20% VAT to a $100 net price","value":{"tool":"sales-tax-vat-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Total (incl. Tax)","value":"120.00"},{"metric":"Pre-Tax Price","value":"100.00"},{"metric":"Tax Amount","value":"20.00"},{"metric":"Tax Rate","value":"20%"}]},"credits_used":5,"credits_remaining":null}},"remove_20_vat_from_a_120_gross_price":{"summary":"Remove 20% VAT from a $120 gross price","value":{"tool":"sales-tax-vat-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pre-Tax Price","value":"100.00"},{"metric":"Total (incl. Tax)","value":"120.00"},{"metric":"Tax Amount","value":"20.00"},{"metric":"Tax Rate","value":"20%"}]},"credits_used":5,"credits_remaining":null}},"add_8_25_us_sales_tax_to_a_49_99_price":{"summary":"Add 8.25% US sales tax to a $49.99 price","value":{"tool":"sales-tax-vat-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Total (incl. Tax)","value":"54.11"},{"metric":"Pre-Tax Price","value":"49.99"},{"metric":"Tax Amount","value":"4.12"},{"metric":"Tax Rate","value":"8.25%"}]},"credits_used":5,"credits_remaining":null}},"remove_germany_vat_19_from_a_59_99_gross_price":{"summary":"Remove Germany VAT (19%) from a €59.99 gross price","value":{"tool":"sales-tax-vat-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Pre-Tax Price","value":"50.41"},{"metric":"Total (incl. Tax)","value":"59.99"},{"metric":"Tax Amount","value":"9.58"},{"metric":"Tax Rate","value":"19%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/savings-goal-calculator":{"post":{"operationId":"run_savings_goal_calculator","summary":"Savings Goal Calculator","tags":["Calculators"],"description":"Work out exactly how much to save each month to hit a savings goal by a target date — or how long a fixed monthly deposit will take to get there — with interest, a contributions-vs-interest split, and a year-by-year schedule.\n\n[Try Savings Goal Calculator in your browser →](https://iotools.cloud/tool/savings-goal-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["deposit","time"],"description":"Solve For"},"goalAmount":{"type":"number","description":"Savings Goal ($)","minimum":0},"currentSavings":{"type":"number","description":"Current Savings ($)","minimum":0},"timeValue":{"type":"number","description":"Time to Goal","minimum":0},"timeUnit":{"enum":["years","months"],"description":"Time Unit"},"monthlyDeposit":{"type":"number","description":"Monthly Deposit ($)","minimum":0},"annualRate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0},"compounding":{"enum":["monthly","annual"],"description":"Compounding"}},"required":[]},"examples":{"25k_in_3_years_at_4":{"summary":"$25k in 3 years at 4%","value":{"mode":"deposit","goalAmount":"25000","currentSavings":"5000","timeValue":"3","timeUnit":"years","monthlyDeposit":"400","annualRate":"4","compounding":"monthly"}},"how_long_400_month_takes":{"summary":"How long $400/month takes","value":{"mode":"time","goalAmount":"25000","currentSavings":"5000","timeValue":"3","timeUnit":"years","monthlyDeposit":"400","annualRate":"4","compounding":"monthly"}},"18_month_goal_no_interest":{"summary":"18-month goal, no interest","value":{"mode":"deposit","goalAmount":"6000","currentSavings":"0","timeValue":"18","timeUnit":"months","monthlyDeposit":"400","annualRate":"0","compounding":"monthly"}},"annual_compounding_10_year_goal":{"summary":"Annual compounding, 10-year goal","value":{"mode":"deposit","goalAmount":"100000","currentSavings":"20000","timeValue":"10","timeUnit":"years","monthlyDeposit":"400","annualRate":"5","compounding":"annual"}},"goal_already_met_by_interest_alone":{"summary":"Goal already met by interest alone","value":{"mode":"deposit","goalAmount":"10000","currentSavings":"9800","timeValue":"5","timeUnit":"years","monthlyDeposit":"400","annualRate":"4","compounding":"monthly"}},"deposits_only_no_growth":{"summary":"Deposits only, no growth","value":{"mode":"time","goalAmount":"12000","currentSavings":"0","timeValue":"3","timeUnit":"years","monthlyDeposit":"500","annualRate":"0","compounding":"monthly"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"25k_in_3_years_at_4":{"summary":"$25k in 3 years at 4%","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Required Monthly Deposit","value":"$507.15"},{"metric":"Time to Goal","value":"3 years"},{"metric":"Savings Goal","value":"$25,000.00"},{"metric":"Starting Balance","value":"$5,000.00"},{"metric":"Total Deposits","value":"$18,257.27"},{"metric":"Interest Earned","value":"$1,742.73"},{"metric":"Projected Final Balance","value":"$25,000.00"}],"schedule":[{"year":"1","deposits":"$6,085.76","interest":"$316.53","balance":"$11,402.29"},{"year":"2","deposits":"$6,085.76","interest":"$577.37","balance":"$18,065.41"},{"year":"3","deposits":"$6,085.76","interest":"$848.83","balance":"$25,000.00"}]},"credits_used":5,"credits_remaining":null}},"how_long_400_month_takes":{"summary":"How long $400/month takes","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Time to Goal","value":"3 years 9 months"},{"metric":"Months to Goal","value":"45"},{"metric":"Monthly Deposit","value":"$400.00"},{"metric":"Savings Goal","value":"$25,000.00"},{"metric":"Starting Balance","value":"$5,000.00"},{"metric":"Total Deposits","value":"$18,000.00"},{"metric":"Interest Earned","value":"$2,193.06"},{"metric":"Projected Final Balance","value":"$25,193.06"}],"schedule":[{"year":"1","deposits":"$4,800.00","interest":"$292.69","balance":"$10,092.69"},{"year":"2","deposits":"$4,800.00","interest":"$500.18","balance":"$15,392.87"},{"year":"3","deposits":"$4,800.00","interest":"$716.11","balance":"$20,908.98"},{"year":"4","deposits":"$3,600.00","interest":"$684.07","balance":"$25,193.06"}]},"credits_used":5,"credits_remaining":null}},"18_month_goal_no_interest":{"summary":"18-month goal, no interest","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Required Monthly Deposit","value":"$333.33"},{"metric":"Time to Goal","value":"1 year 6 months"},{"metric":"Savings Goal","value":"$6,000.00"},{"metric":"Starting Balance","value":"$0.00"},{"metric":"Total Deposits","value":"$6,000.00"},{"metric":"Interest Earned","value":"$0.00"},{"metric":"Projected Final Balance","value":"$6,000.00"}],"schedule":[{"year":"1","deposits":"$4,000.00","interest":"$0.00","balance":"$4,000.00"},{"year":"2","deposits":"$2,000.00","interest":"$0.00","balance":"$6,000.00"}]},"credits_used":5,"credits_remaining":null}},"annual_compounding_10_year_goal":{"summary":"Annual compounding, 10-year goal","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Required Monthly Deposit","value":"$436.78"},{"metric":"Time to Goal","value":"10 years"},{"metric":"Savings Goal","value":"$100,000.00"},{"metric":"Starting Balance","value":"$20,000.00"},{"metric":"Total Deposits","value":"$52,413.11"},{"metric":"Interest Earned","value":"$27,586.89"},{"metric":"Projected Final Balance","value":"$100,000.00"}],"schedule":[{"year":"1","deposits":"$5,241.31","interest":"$1,119.06","balance":"$26,360.37"},{"year":"2","deposits":"$5,241.31","interest":"$1,437.07","balance":"$33,038.75"},{"year":"3","deposits":"$5,241.31","interest":"$1,770.99","balance":"$40,051.05"},{"year":"4","deposits":"$5,241.31","interest":"$2,121.61","balance":"$47,413.97"},{"year":"5","deposits":"$5,241.31","interest":"$2,489.75","balance":"$55,145.04"},{"year":"6","deposits":"$5,241.31","interest":"$2,876.31","balance":"$63,262.65"},{"year":"7","deposits":"$5,241.31","interest":"$3,282.19","balance":"$71,786.15"},{"year":"8","deposits":"$5,241.31","interest":"$3,708.36","balance":"$80,735.83"},{"year":"9","deposits":"$5,241.31","interest":"$4,155.85","balance":"$90,132.98"},{"year":"10","deposits":"$5,241.31","interest":"$4,625.70","balance":"$100,000.00"}]},"credits_used":5,"credits_remaining":null}},"goal_already_met_by_interest_alone":{"summary":"Goal already met by interest alone","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Required Monthly Deposit","value":"$0.00"},{"metric":"Time to Goal","value":"5 years"},{"metric":"Note","value":"Your current savings already reach the goal in this time on interest alone."},{"metric":"Savings Goal","value":"$10,000.00"},{"metric":"Starting Balance","value":"$9,800.00"},{"metric":"Total Deposits","value":"$0.00"},{"metric":"Interest Earned","value":"$2,165.77"},{"metric":"Projected Final Balance","value":"$11,965.77"}],"schedule":[{"year":"1","deposits":"$0.00","interest":"$399.27","balance":"$10,199.27"},{"year":"2","deposits":"$0.00","interest":"$415.53","balance":"$10,614.80"},{"year":"3","deposits":"$0.00","interest":"$432.46","balance":"$11,047.26"},{"year":"4","deposits":"$0.00","interest":"$450.08","balance":"$11,497.35"},{"year":"5","deposits":"$0.00","interest":"$468.42","balance":"$11,965.77"}]},"credits_used":5,"credits_remaining":null}},"deposits_only_no_growth":{"summary":"Deposits only, no growth","value":{"tool":"savings-goal-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Time to Goal","value":"2 years"},{"metric":"Months to Goal","value":"24"},{"metric":"Monthly Deposit","value":"$500.00"},{"metric":"Savings Goal","value":"$12,000.00"},{"metric":"Starting Balance","value":"$0.00"},{"metric":"Total Deposits","value":"$12,000.00"},{"metric":"Interest Earned","value":"$0.00"},{"metric":"Projected Final Balance","value":"$12,000.00"}],"schedule":[{"year":"1","deposits":"$6,000.00","interest":"$0.00","balance":"$6,000.00"},{"year":"2","deposits":"$6,000.00","interest":"$0.00","balance":"$12,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Savings Plan","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Projection","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"deposits":{"type":"string","description":"Deposits"},"interest":{"type":"string","description":"Interest"},"balance":{"type":"string","description":"Balance"}}},"x-iotools-columns":["year","deposits","interest","balance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/screen-size-comparison-calculator":{"post":{"operationId":"run_screen_size_comparison_calculator","summary":"Screen Size Comparison Calculator","tags":["Calculators"],"description":"Compare two screens side by side — resolution, physical size, PPI, pixel pitch, pixel density category, and retina status — from resolution and diagonal size, or a device preset.\n\n[Try Screen Size Comparison Calculator in your browser →](https://iotools.cloud/tool/screen-size-comparison-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"presetA":{"enum":["custom","iphone-15-pro","iphone-se","ipad-pro-129","mbp-14","mbp-16","imac-24","monitor-27-4k","monitor-24-1080","monitor-27-1440","ultrawide-34","tv-55-4k","tv-65-4k"],"description":"Preset"},"widthA":{"type":"number","description":"Width","minimum":1},"heightA":{"type":"number","description":"Height","minimum":1},"diagonalA":{"type":"number","description":"Diagonal","minimum":0.1},"diagonalUnitA":{"enum":["in","cm"],"description":"Diagonal Unit"},"presetB":{"enum":["custom","iphone-15-pro","iphone-se","ipad-pro-129","mbp-14","mbp-16","imac-24","monitor-27-4k","monitor-24-1080","monitor-27-1440","ultrawide-34","tv-55-4k","tv-65-4k"],"description":"Preset"},"widthB":{"type":"number","description":"Width","minimum":1},"heightB":{"type":"number","description":"Height","minimum":1},"diagonalB":{"type":"number","description":"Diagonal","minimum":0.1},"diagonalUnitB":{"enum":["in","cm"],"description":"Diagonal Unit"}},"required":[]},"examples":{"iphone_15_pro_vs_65_4k_tv":{"summary":"iPhone 15 Pro vs 65″ 4K TV","value":{"presetA":"iphone-15-pro","widthA":"2556","heightA":"1179","diagonalA":"6.1","diagonalUnitA":"in","presetB":"tv-65-4k","widthB":"3840","heightB":"2160","diagonalB":"65","diagonalUnitB":"in"}},"1080p_vs_1440p_27_monitor":{"summary":"1080p vs 1440p 27″ monitor","value":{"presetA":"monitor-24-1080","widthA":"1920","heightA":"1080","diagonalA":"24","diagonalUnitA":"in","presetB":"monitor-27-1440","widthB":"2560","heightB":"1440","diagonalB":"27","diagonalUnitB":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"iphone_15_pro_vs_65_4k_tv":{"summary":"iPhone 15 Pro vs 65″ 4K TV","value":{"tool":"screen-size-comparison-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Resolution","screen-a":"2,556 × 1,179","screen-b":"3,840 × 2,160"},{"property":"Diagonal","screen-a":"6.10″ (15.5 cm)","screen-b":"65.00″ (165.1 cm)"},{"property":"Physical Size (W × H)","screen-a":"5.54″ × 2.56″","screen-b":"56.65″ × 31.87″"},{"property":"Screen Area","screen-a":"14.2 in² (91.3 cm²)","screen-b":"1805.3 in² (11647.3 cm²) ✓"},{"property":"Aspect Ratio","screen-a":"284:131","screen-b":"16:9"},{"property":"Total Pixels","screen-a":"3,013,524 (3.01 MP)","screen-b":"8,294,400 (8.29 MP) ✓"},{"property":"PPI","screen-a":"461.44 ✓","screen-b":"67.78"},{"property":"Pixel Pitch","screen-a":"0.0550 mm ✓","screen-b":"0.3747 mm"},{"property":"Density Category","screen-a":"xxhdpi","screen-b":"ldpi"},{"property":"Retina (≥ 220 PPI)","screen-a":"✓ Yes","screen-b":"✗ No"}],"summary":"Screen B is 127.56× larger in viewing area than Screen A.\nScreen A is sharper at 461.44 PPI vs 67.78 PPI.\nScreen B packs 2.75× the pixels of Screen A."},"credits_used":5,"credits_remaining":null}},"1080p_vs_1440p_27_monitor":{"summary":"1080p vs 1440p 27″ monitor","value":{"tool":"screen-size-comparison-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Resolution","screen-a":"1,920 × 1,080","screen-b":"2,560 × 1,440"},{"property":"Diagonal","screen-a":"24.00″ (61.0 cm)","screen-b":"27.00″ (68.6 cm)"},{"property":"Physical Size (W × H)","screen-a":"20.92″ × 11.77″","screen-b":"23.53″ × 13.24″"},{"property":"Screen Area","screen-a":"246.1 in² (1587.9 cm²)","screen-b":"311.5 in² (2009.7 cm²) ✓"},{"property":"Aspect Ratio","screen-a":"16:9","screen-b":"16:9"},{"property":"Total Pixels","screen-a":"2,073,600 (2.07 MP)","screen-b":"3,686,400 (3.69 MP) ✓"},{"property":"PPI","screen-a":"91.79","screen-b":"108.79 ✓"},{"property":"Pixel Pitch","screen-a":"0.2767 mm","screen-b":"0.2335 mm ✓"},{"property":"Density Category","screen-a":"ldpi","screen-b":"ldpi"},{"property":"Retina (≥ 220 PPI)","screen-a":"✗ No","screen-b":"✗ No"}],"summary":"Screen B is 1.27× larger in viewing area than Screen A.\nScreen B is sharper at 108.79 PPI vs 91.79 PPI.\nScreen B packs 1.78× the pixels of Screen A."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Side-by-Side Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"screen-a":{"type":"string","description":"Screen A"},"screen-b":{"type":"string","description":"Screen B"}}},"x-iotools-columns":["property","screen-a","screen-b"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/section-properties-calculator":{"post":{"operationId":"run_section_properties_calculator","summary":"Section Properties Calculator","tags":["Calculators"],"description":"Calculate the cross-section properties of a rectangle, solid circle, hollow circle (tube), isosceles triangle or symmetric wide-flange (I-beam) shape — area, centroid, moment of inertia, section modulus and radius of gyration about both the strong (x-x) and weak (y-y) axes.\n\n[Try Section Properties Calculator in your browser →](https://iotools.cloud/tool/section-properties-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["rectangle","circle","tube","triangle","i-beam"],"description":"Cross-section shape"},"width":{"type":"number","description":"Width (b)","minimum":0},"height":{"type":"number","description":"Height (h)","minimum":0},"diameter":{"type":"number","description":"Diameter (d)","minimum":0},"outerDiameter":{"type":"number","description":"Outer diameter (Do)","minimum":0},"innerDiameter":{"type":"number","description":"Inner diameter (Di)","minimum":0},"triangleBase":{"type":"number","description":"Base (b)","minimum":0},"triangleHeight":{"type":"number","description":"Height (h)","minimum":0},"flangeWidth":{"type":"number","description":"Flange width (bf)","minimum":0},"flangeThickness":{"type":"number","description":"Flange thickness (tf)","minimum":0},"totalDepth":{"type":"number","description":"Total depth (d)","minimum":0},"webThickness":{"type":"number","description":"Web thickness (tw)","minimum":0}},"required":[]},"examples":{"rectangle_200_x_400_mm":{"summary":"Rectangle, 200 x 400 mm","value":{"shape":"rectangle","width":"200","height":"400"}},"solid_circle_150_mm_diameter":{"summary":"Solid circle, 150 mm diameter","value":{"shape":"circle","diameter":"150"}},"tube_200_mm_outer_150_mm_inner":{"summary":"Tube, 200 mm outer / 150 mm inner","value":{"shape":"tube","outerDiameter":"200","innerDiameter":"150"}},"isosceles_triangle_300_mm_base_x_250_mm_height":{"summary":"Isosceles triangle, 300 mm base x 250 mm height","value":{"shape":"triangle","triangleBase":"300","triangleHeight":"250"}},"i_beam_150_mm_flange_x_300_mm_deep":{"summary":"I-beam, 150 mm flange x 300 mm deep","value":{"shape":"i-beam","flangeWidth":"150","flangeThickness":"12","totalDepth":"300","webThickness":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_200_x_400_mm":{"summary":"Rectangle, 200 x 400 mm","value":{"tool":"section-properties-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Shape","value":"Rectangle"},{"property":"Area (A)","value":"80,000 mm²"},{"property":"Centroid","value":"At the geometric center (b/2, h/2)"},{"property":"Moment of Inertia, x-x (Ix)","value":"1,066,666,667 mm⁴"},{"property":"Section Modulus, x-x (Sx)","value":"5,333,333 mm³"},{"property":"Radius of Gyration, x-x (rx)","value":"115.5 mm"},{"property":"Moment of Inertia, y-y (Iy)","value":"266,666,667 mm⁴"},{"property":"Section Modulus, y-y (Sy)","value":"2,666,667 mm³"},{"property":"Radius of Gyration, y-y (ry)","value":"57.74 mm"}]},"credits_used":5,"credits_remaining":null}},"solid_circle_150_mm_diameter":{"summary":"Solid circle, 150 mm diameter","value":{"tool":"section-properties-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Shape","value":"Solid circle"},{"property":"Area (A)","value":"17,671 mm²"},{"property":"Centroid","value":"At the geometric center"},{"property":"Note","value":"Symmetric about every axis through the centroid — x-x and y-y properties are identical."},{"property":"Moment of Inertia, x-x (Ix)","value":"24,850,489 mm⁴"},{"property":"Section Modulus, x-x (Sx)","value":"331,340 mm³"},{"property":"Radius of Gyration, x-x (rx)","value":"37.50 mm"},{"property":"Moment of Inertia, y-y (Iy)","value":"24,850,489 mm⁴"},{"property":"Section Modulus, y-y (Sy)","value":"331,340 mm³"},{"property":"Radius of Gyration, y-y (ry)","value":"37.50 mm"}]},"credits_used":5,"credits_remaining":null}},"tube_200_mm_outer_150_mm_inner":{"summary":"Tube, 200 mm outer / 150 mm inner","value":{"tool":"section-properties-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Shape","value":"Hollow circle (tube)"},{"property":"Area (A)","value":"13,744 mm²"},{"property":"Centroid","value":"At the geometric center"},{"property":"Note","value":"Symmetric about every axis through the centroid — x-x and y-y properties are identical."},{"property":"Moment of Inertia, x-x (Ix)","value":"53,689,328 mm⁴"},{"property":"Section Modulus, x-x (Sx)","value":"536,893 mm³"},{"property":"Radius of Gyration, x-x (rx)","value":"62.50 mm"},{"property":"Moment of Inertia, y-y (Iy)","value":"53,689,328 mm⁴"},{"property":"Section Modulus, y-y (Sy)","value":"536,893 mm³"},{"property":"Radius of Gyration, y-y (ry)","value":"62.50 mm"}]},"credits_used":5,"credits_remaining":null}},"isosceles_triangle_300_mm_base_x_250_mm_height":{"summary":"Isosceles triangle, 300 mm base x 250 mm height","value":{"tool":"section-properties-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Shape","value":"Isosceles triangle"},{"property":"Area (A)","value":"37,500 mm²"},{"property":"Centroid Height Above Base","value":"83.33 mm"},{"property":"Moment of Inertia, x-x (Ix)","value":"130,208,333 mm⁴"},{"property":"Section Modulus, x-x, Base Fiber (Sx)","value":"1,562,500 mm³"},{"property":"Section Modulus, x-x, Apex Fiber (Sx)","value":"781,250 mm³"},{"property":"Radius of Gyration, x-x (rx)","value":"58.93 mm"},{"property":"Moment of Inertia, y-y (Iy)","value":"140,625,000 mm⁴"},{"property":"Section Modulus, y-y (Sy)","value":"937,500 mm³"},{"property":"Radius of Gyration, y-y (ry)","value":"61.24 mm"},{"property":"Note","value":"The base and apex fibers are different distances from the centroid, so they carry different section moduli — use the smaller one (the governing fiber) for a conservative stress check."}]},"credits_used":5,"credits_remaining":null}},"i_beam_150_mm_flange_x_300_mm_deep":{"summary":"I-beam, 150 mm flange x 300 mm deep","value":{"tool":"section-properties-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Shape","value":"Symmetric wide-flange (I-beam)"},{"property":"Area (A)","value":"5,808 mm²"},{"property":"Centroid","value":"At the geometric center (equal flanges, top and bottom)"},{"property":"Web Height (hw)","value":"276.0 mm"},{"property":"Moment of Inertia, x-x (Ix)","value":"88,709,184 mm⁴"},{"property":"Section Modulus, x-x (Sx)","value":"591,395 mm³"},{"property":"Radius of Gyration, x-x (rx)","value":"123.6 mm"},{"property":"Moment of Inertia, y-y (Iy)","value":"6,761,776 mm⁴"},{"property":"Section Modulus, y-y (Sy)","value":"90,157 mm³"},{"property":"Radius of Gyration, y-y (ry)","value":"34.12 mm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/plate-weight-calculator":{"post":{"operationId":"run_plate_weight_calculator","summary":"Plate Weight Calculator","tags":["Calculators"],"description":"Calculate the weight of a steel, aluminium, stainless or plastic plate from its dimensions — rectangular sheet, round disc or ring — with 24 built-in material densities, a quantity multiplier, surface area, and results in both kg and lb.\n\n[Try Plate Weight Calculator in your browser →](https://iotools.cloud/tool/plate-weight-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"units":{"enum":["metric","imperial"],"description":"Units"},"shape":{"enum":["rectangle","circle","ring"],"description":"Shape"},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"diameter":{"type":"number","description":"Outside diameter","minimum":0},"innerDiameter":{"type":"number","description":"Inside (hole) diameter","minimum":0},"thickness":{"type":"number","description":"Thickness","minimum":0},"material":{"enum":["carbon-steel","stainless-304","stainless-316","stainless-430","tool-steel","cast-iron","aluminium-6061","aluminium-5052","aluminium-7075","copper","brass","bronze","titanium-gr5","nickel","zinc","lead","magnesium-az31","acrylic","polycarbonate","hdpe","pvc","nylon","glass","plywood","custom"],"description":"Material"},"density":{"type":"number","description":"Density","minimum":0},"quantity":{"type":"number","description":"Quantity","minimum":1}},"required":[]},"examples":{"2000_x_1000_x_10_mm_mild_steel_sheet":{"summary":"2000 x 1000 x 10 mm mild steel sheet","value":{"units":"metric","shape":"rectangle","length":"2000","width":"1000","diameter":"","innerDiameter":"","thickness":"10","material":"carbon-steel","density":"","quantity":"1"}},"aluminium_6061_disc_500_mm_x_12_mm_8_off":{"summary":"Aluminium 6061 disc, 500 mm x 12 mm, 8 off","value":{"units":"metric","shape":"circle","length":"","width":"","diameter":"500","innerDiameter":"","thickness":"12","material":"aluminium-6061","density":"","quantity":"8"}},"stainless_304_ring_600_300_mm_x_20_mm":{"summary":"Stainless 304 ring, 600/300 mm x 20 mm","value":{"units":"metric","shape":"ring","length":"","width":"","diameter":"600","innerDiameter":"300","thickness":"20","material":"stainless-304","density":"","quantity":"1"}},"imperial_48_x_96_x_0_25_in_carbon_steel":{"summary":"Imperial — 48 x 96 x 0.25 in carbon steel","value":{"units":"imperial","shape":"rectangle","length":"96","width":"48","diameter":"","innerDiameter":"","thickness":"0.25","material":"carbon-steel","density":"","quantity":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2000_x_1000_x_10_mm_mild_steel_sheet":{"summary":"2000 x 1000 x 10 mm mild steel sheet","value":{"tool":"plate-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"157.0 kg (346.1 lb)"},{"metric":"Volume (each)","value":"20,000 cm³ (1,220 in³)"},{"metric":"Weight Force (each)","value":"1,540 N (346.1 lbf)"},{"metric":"Surface Area (each, all faces)","value":"4.060 m² (43.70 ft²)"},{"metric":"Density Used","value":"7,850 kg/m³ (490.1 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"aluminium_6061_disc_500_mm_x_12_mm_8_off":{"summary":"Aluminium 6061 disc, 500 mm x 12 mm, 8 off","value":{"tool":"plate-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"6.362 kg (14.03 lb)"},{"metric":"Total Weight (8 pcs)","value":"50.89 kg (112.2 lb)"},{"metric":"Volume (each)","value":"2,356 cm³ (143.8 in³)"},{"metric":"Weight Force (each)","value":"62.39 N (14.03 lbf)"},{"metric":"Surface Area (each, all faces)","value":"0.4115 m² (4.430 ft²)"},{"metric":"Density Used","value":"2,700 kg/m³ (168.6 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"stainless_304_ring_600_300_mm_x_20_mm":{"summary":"Stainless 304 ring, 600/300 mm x 20 mm","value":{"tool":"plate-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"33.93 kg (74.80 lb)"},{"metric":"Volume (each)","value":"4,241 cm³ (258.8 in³)"},{"metric":"Weight Force (each)","value":"332.7 N (74.80 lbf)"},{"metric":"Surface Area (each, all faces)","value":"0.4807 m² (5.174 ft²)"},{"metric":"Density Used","value":"8,000 kg/m³ (499.4 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"imperial_48_x_96_x_0_25_in_carbon_steel":{"summary":"Imperial — 48 x 96 x 0.25 in carbon steel","value":{"tool":"plate-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"148.2 kg (326.7 lb)"},{"metric":"Volume (each)","value":"18,878 cm³ (1,152 in³)"},{"metric":"Weight Force (each)","value":"1,453 N (326.7 lbf)"},{"metric":"Surface Area (each, all faces)","value":"5.992 m² (64.50 ft²)"},{"metric":"Density Used","value":"7,850 kg/m³ (490.1 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tolerance-stackup-calculator":{"post":{"operationId":"run_tolerance_stackup_calculator","summary":"Tolerance Stackup Calculator","tags":["Calculators"],"description":"Calculate worst-case and statistical (RSS) tolerance stackup across a chain of dimensions. Enter each contributor as a label, +/- direction, nominal value and tolerance — get the assembled nominal, both the worst-case and RSS min/max range, and each dimension's percentage contribution to the total variance.\n\n[Try Tolerance Stackup Calculator in your browser →](https://iotools.cloud/tool/tolerance-stackup-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"units":{"enum":["mm","in"],"description":"Units"},"dimensions":{"type":"string","description":"Dimension Chain"}},"required":[]},"examples":{"bore_shaft_retaining_ring_clearance_stack_mm":{"summary":"Bore/shaft/retaining-ring clearance stack (mm)","value":{"units":"mm","dimensions":"Bore diameter, +, 25.400, 0.050\nShaft diameter, -, 25.350, 0.030\nRetaining ring width, -, 0.020, 0.005"}},"four_part_imperial_housing_stack_in":{"summary":"Four-part imperial housing stack (in)","value":{"units":"in","dimensions":"Housing depth, +, 2.5000, 0.0050\nBearing width, -, 0.7500, 0.0020\nSpacer, -, 1.2500, 0.0030\nSnap ring, -, 0.4500, 0.0010"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bore_shaft_retaining_ring_clearance_stack_mm":{"summary":"Bore/shaft/retaining-ring clearance stack (mm)","value":{"tool":"tolerance-stackup-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Stack","value":"0.030 mm"},{"metric":"Contributors","value":"3"},{"metric":"Worst-Case Tolerance","value":"±0.085 mm"},{"metric":"Worst-Case Range","value":"-0.055 to 0.115 mm"},{"metric":"Statistical (RSS) Tolerance","value":"±0.059 mm"},{"metric":"Statistical (RSS) Range","value":"-0.029 to 0.089 mm"},{"metric":"RSS vs. Worst-Case","value":"31.1% tighter"}],"contributors":[{"dimension":"Bore diameter","dir":"+","nominal":"25.400 mm","tolerance":"±0.050 mm","worst-case-share":"58.8%","rss-variance-share":"73.0%"},{"dimension":"Shaft diameter","dir":"-","nominal":"25.350 mm","tolerance":"±0.030 mm","worst-case-share":"35.3%","rss-variance-share":"26.3%"},{"dimension":"Retaining ring width","dir":"-","nominal":"0.020 mm","tolerance":"±0.005 mm","worst-case-share":"5.9%","rss-variance-share":"0.7%"}]},"credits_used":5,"credits_remaining":null}},"four_part_imperial_housing_stack_in":{"summary":"Four-part imperial housing stack (in)","value":{"tool":"tolerance-stackup-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Nominal Stack","value":"0.0500 in"},{"metric":"Contributors","value":"4"},{"metric":"Worst-Case Tolerance","value":"±0.0110 in"},{"metric":"Worst-Case Range","value":"0.0390 to 0.0610 in"},{"metric":"Statistical (RSS) Tolerance","value":"±0.0062 in"},{"metric":"Statistical (RSS) Range","value":"0.0438 to 0.0562 in"},{"metric":"RSS vs. Worst-Case","value":"43.2% tighter"}],"contributors":[{"dimension":"Housing depth","dir":"+","nominal":"2.5000 in","tolerance":"±0.0050 in","worst-case-share":"45.5%","rss-variance-share":"64.1%"},{"dimension":"Bearing width","dir":"-","nominal":"0.7500 in","tolerance":"±0.0020 in","worst-case-share":"18.2%","rss-variance-share":"10.3%"},{"dimension":"Spacer","dir":"-","nominal":"1.2500 in","tolerance":"±0.0030 in","worst-case-share":"27.3%","rss-variance-share":"23.1%"},{"dimension":"Snap ring","dir":"-","nominal":"0.4500 in","tolerance":"±0.0010 in","worst-case-share":"9.1%","rss-variance-share":"2.6%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"contributors":{"type":"array","items":{"type":"object","properties":{"dimension":{"type":"string","description":"Dimension"},"dir":{"type":"string","description":"Dir."},"nominal":{"type":"string","description":"Nominal"},"tolerance":{"type":"string","description":"Tolerance (±)"},"worst-case-share":{"type":"string","description":"Worst-Case Share"},"rss-variance-share":{"type":"string","description":"RSS Variance Share"}}},"x-iotools-columns":["dimension","dir","nominal","tolerance","worst-case-share","rss-variance-share"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gdt-positional-tolerance-calculator":{"post":{"operationId":"run_gdt_positional_tolerance_calculator","summary":"GD&T Positional Tolerance Calculator","tags":["Calculators"],"description":"Calculate bonus tolerance, total positional tolerance, and virtual condition size for a GD&T true-position callout at MMC or RFS, then check a measured X/Y deviation from true position against the result — pass, fail, and margin.\n\n[Try GD&T Positional Tolerance Calculator in your browser →](https://iotools.cloud/tool/gdt-positional-tolerance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"featureType":{"enum":["hole","shaft"],"description":"Feature Type"},"materialCondition":{"enum":["mmc","rfs"],"description":"Material Condition Modifier"},"positionTolerance":{"type":"number","description":"Positional Tolerance (mm)","minimum":0},"conditionSize":{"type":"number","description":"Feature Size at MMC (mm)","minimum":0},"actualSize":{"type":"number","description":"Actual (Measured) Size (mm)","minimum":0},"measuredDx":{"type":"number","description":"Measured X Deviation from True Position (mm)"},"measuredDy":{"type":"number","description":"Measured Y Deviation from True Position (mm)"}},"required":[]},"examples":{"hole_at_mmc_within_tolerance":{"summary":"Hole at MMC, within tolerance","value":{"featureType":"hole","materialCondition":"mmc","positionTolerance":"0.30","conditionSize":"9.80","actualSize":"9.95","measuredDx":"0.10","measuredDy":"0.05"}},"shaft_at_rfs_out_of_tolerance":{"summary":"Shaft at RFS, out of tolerance","value":{"featureType":"shaft","materialCondition":"rfs","positionTolerance":"0.20","conditionSize":"9.80","actualSize":"9.95","measuredDx":"0.05","measuredDy":"0.12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hole_at_mmc_within_tolerance":{"summary":"Hole at MMC, within tolerance","value":{"tool":"gdt-positional-tolerance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Feature Type","value":"Hole (internal feature)"},{"metric":"Material Condition","value":"MMC (Ⓜ)"},{"metric":"Specified Positional Tolerance","value":"⌀0.300 mm"},{"metric":"Bonus Tolerance","value":"⌀0.150 mm"},{"metric":"Total Positional Tolerance","value":"⌀0.450 mm"},{"metric":"Virtual Condition Size","value":"⌀9.500 mm"}],"check":[{"metric":"Measured X Deviation","value":"0.100 mm"},{"metric":"Measured Y Deviation","value":"0.050 mm"},{"metric":"Measured Positional Deviation","value":"⌀0.224 mm"},{"metric":"Result","value":"PASS — 0.226 mm margin"}]},"credits_used":5,"credits_remaining":null}},"shaft_at_rfs_out_of_tolerance":{"summary":"Shaft at RFS, out of tolerance","value":{"tool":"gdt-positional-tolerance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Feature Type","value":"Shaft / pin (external feature)"},{"metric":"Material Condition","value":"RFS (no modifier)"},{"metric":"Specified Positional Tolerance","value":"⌀0.200 mm"},{"metric":"Bonus Tolerance","value":"⌀0.000 mm"},{"metric":"Total Positional Tolerance","value":"⌀0.200 mm"},{"metric":"Virtual Condition Size","value":"— not a single fixed value under RFS"}],"check":[{"metric":"Measured X Deviation","value":"0.050 mm"},{"metric":"Measured Y Deviation","value":"0.120 mm"},{"metric":"Measured Positional Deviation","value":"⌀0.260 mm"},{"metric":"Result","value":"FAIL — exceeds tolerance by 0.060 mm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"check":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sheet-metal-bend-allowance-calculator":{"post":{"operationId":"run_sheet_metal_bend_allowance_calculator","summary":"Sheet Metal Bend Allowance Calculator","tags":["Calculators"],"description":"Calculate bend allowance, outside setback, and bend deduction for a sheet metal bend from bend angle, inside radius, thickness, and K-factor — plus, optionally, the flat blank length from the two outside-mold-line leg lengths.\n\n[Try Sheet Metal Bend Allowance Calculator in your browser →](https://iotools.cloud/tool/sheet-metal-bend-allowance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bendAngle":{"type":"number","description":"Bend Angle (°)","minimum":0,"maximum":180},"insideRadius":{"type":"number","description":"Inside Bend Radius (mm)","minimum":0},"thickness":{"type":"number","description":"Material Thickness (mm)","minimum":0},"kFactor":{"type":"number","description":"K-Factor","minimum":0,"maximum":1},"leg1Length":{"type":"number","description":"Leg 1 Length, outside mold line (mm)","minimum":0},"leg2Length":{"type":"number","description":"Leg 2 Length, outside mold line (mm)","minimum":0}},"required":[]},"examples":{"90_bend_3mm_radius_2mm_mild_steel":{"summary":"90° bend, 3mm radius, 2mm mild steel","value":{"bendAngle":"90","insideRadius":"3","thickness":"2","kFactor":"0.33","leg1Length":"","leg2Length":""}},"120_bend_with_flat_blank_length_from_two_legs":{"summary":"120° bend with flat blank length from two legs","value":{"bendAngle":"120","insideRadius":"5","thickness":"3","kFactor":"0.4","leg1Length":"40","leg2Length":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"90_bend_3mm_radius_2mm_mild_steel":{"summary":"90° bend, 3mm radius, 2mm mild steel","value":{"tool":"sheet-metal-bend-allowance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Bend Angle","value":"90.0°"},{"metric":"Inside Bend Radius","value":"3.000 mm"},{"metric":"Material Thickness","value":"2.000 mm"},{"metric":"K-Factor","value":"0.33"},{"metric":"Bend Allowance","value":"5.749 mm"},{"metric":"Outside Setback","value":"5.000 mm"},{"metric":"Bend Deduction","value":"4.251 mm"}]},"credits_used":5,"credits_remaining":null}},"120_bend_with_flat_blank_length_from_two_legs":{"summary":"120° bend with flat blank length from two legs","value":{"tool":"sheet-metal-bend-allowance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Bend Angle","value":"120.0°"},{"metric":"Inside Bend Radius","value":"5.000 mm"},{"metric":"Material Thickness","value":"3.000 mm"},{"metric":"K-Factor","value":"0.40"},{"metric":"Bend Allowance","value":"12.985 mm"},{"metric":"Outside Setback","value":"13.856 mm"},{"metric":"Bend Deduction","value":"14.728 mm"},{"metric":"Leg 1 + Leg 2 (outside mold line)","value":"40.000 + 60.000 mm"},{"metric":"Flat Blank Length","value":"85.272 mm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/press-fit-interference-calculator":{"post":{"operationId":"run_press_fit_interference_calculator","summary":"Press Fit Interference Calculator","tags":["Calculators"],"description":"Calculate contact pressure, hub hoop stress, and press-in force/torque for a shaft-hub interference (press/shrink) fit using the Lamé thick-cylinder equations — including the hub outer diameter and Poisson's ratio the simplified version of this calculator skips, plus an optional von Mises safety-factor check against the hub's yield strength.\n\n[Try Press Fit Interference Calculator in your browser →](https://iotools.cloud/tool/press-fit-interference-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shaftDiameter":{"type":"number","description":"Shaft Outer Diameter","minimum":0},"holeDiameter":{"type":"number","description":"Hub Bore Diameter","minimum":0},"hubOuterDiameter":{"type":"number","description":"Hub Outer Diameter","minimum":0},"shaftModulus":{"type":"number","description":"Shaft Modulus of Elasticity (GPa)","minimum":0},"shaftPoisson":{"type":"number","description":"Shaft Poisson's Ratio","minimum":0,"maximum":0.49},"hubModulus":{"type":"number","description":"Hub Modulus of Elasticity (GPa)","minimum":0},"hubPoisson":{"type":"number","description":"Hub Poisson's Ratio","minimum":0,"maximum":0.49},"engagementLength":{"type":"number","description":"Engagement Length (mm)","minimum":0},"frictionCoefficient":{"type":"number","description":"Coefficient of Friction","minimum":0,"maximum":1},"hubYieldStrength":{"type":"number","description":"Hub Yield Strength (MPa)","minimum":0}},"required":[]},"examples":{"steel_shaft_press_fit_into_a_steel_hub":{"summary":"Steel shaft press-fit into a steel hub","value":{"shaftDiameter":"25.040","holeDiameter":"25.000","hubOuterDiameter":"50.000","shaftModulus":"200","shaftPoisson":"0.30","hubModulus":"200","hubPoisson":"0.30","engagementLength":"25","frictionCoefficient":"0.15","hubYieldStrength":"250"}},"bronze_bushing_pressed_into_a_steel_housing":{"summary":"Bronze bushing pressed into a steel housing","value":{"shaftDiameter":"20.030","holeDiameter":"20.000","hubOuterDiameter":"40.000","shaftModulus":"110","shaftPoisson":"0.34","hubModulus":"200","hubPoisson":"0.30","engagementLength":"15","frictionCoefficient":"0.12","hubYieldStrength":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"steel_shaft_press_fit_into_a_steel_hub":{"summary":"Steel shaft press-fit into a steel hub","value":{"tool":"press-fit-interference-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Nominal Interface Diameter","value":"25.020 mm"},{"metric":"Diametral Interference","value":"0.0400 mm"},{"metric":"Contact Pressure","value":"119.84 MPa"},{"metric":"Max Hoop Stress (Hub Bore)","value":"199.90 MPa"},{"metric":"Shaft Compressive Stress","value":"119.84 MPa"},{"metric":"Press-In Force","value":"35324 N (35.32 kN)"},{"metric":"Torque Capacity","value":"441.90 N·m"},{"metric":"Hub Von Mises Stress","value":"279.79 MPa"},{"metric":"Hub Safety Factor","value":"0.89 — exceeds yield, fit is too tight"}]},"credits_used":5,"credits_remaining":null}},"bronze_bushing_pressed_into_a_steel_housing":{"summary":"Bronze bushing pressed into a steel housing","value":{"tool":"press-fit-interference-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Nominal Interface Diameter","value":"20.015 mm"},{"metric":"Diametral Interference","value":"0.0300 mm"},{"metric":"Contact Pressure","value":"94.63 MPa"},{"metric":"Max Hoop Stress (Hub Bore)","value":"157.84 MPa"},{"metric":"Shaft Compressive Stress","value":"94.63 MPa"},{"metric":"Press-In Force","value":"10710 N (10.71 kN)"},{"metric":"Torque Capacity","value":"107.18 N·m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/spring-rate-calculator":{"post":{"operationId":"run_spring_rate_calculator","summary":"Spring Rate Calculator","tags":["Calculators"],"description":"Calculate the spring rate of a helical compression or extension spring from wire diameter, mean coil diameter, active coils and material — with spring index, Wahl correction factor, deflection under load and corrected shear stress, in both metric and imperial units.\n\n[Try Spring Rate Calculator in your browser →](https://iotools.cloud/tool/spring-rate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"units":{"enum":["metric","imperial"],"description":"Units"},"material":{"enum":["music-wire","hard-drawn","oil-tempered","chrome-vanadium","chrome-silicon","stainless-302","stainless-316","stainless-17-7","phosphor-bronze","beryllium-copper","brass","monel-400","inconel-x750","titanium","custom"],"description":"Material"},"shearModulus":{"type":"number","description":"Shear modulus G","minimum":0},"wireDiameter":{"type":"number","description":"Wire diameter (d)","minimum":0},"coilDiameter":{"type":"number","description":"Mean coil diameter (D)","minimum":0},"activeCoils":{"type":"number","description":"Active coils (n)","minimum":0},"load":{"type":"number","description":"Applied load (optional)","minimum":0}},"required":[]},"examples":{"music_wire_2_mm_wire_on_a_16_mm_coil":{"summary":"Music wire, 2 mm wire on a 16 mm coil","value":{"units":"metric","material":"music-wire","shearModulus":"","wireDiameter":"2","coilDiameter":"16","activeCoils":"8","load":""}},"stainless_302_with_a_50_n_load":{"summary":"Stainless 302 with a 50 N load","value":{"units":"metric","material":"stainless-302","shearModulus":"","wireDiameter":"1.6","coilDiameter":"12","activeCoils":"10","load":"50"}},"imperial_chrome_silicon_0_080_in_wire":{"summary":"Imperial — chrome silicon, 0.080 in wire","value":{"units":"imperial","material":"chrome-silicon","shearModulus":"","wireDiameter":"0.08","coilDiameter":"0.6","activeCoils":"9","load":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"music_wire_2_mm_wire_on_a_16_mm_coil":{"summary":"Music wire, 2 mm wire on a 16 mm coil","value":{"tool":"spring-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spring Rate","value":"4.840 N/mm (27.64 lbf/in)"},{"metric":"Spring Index (C = D/d)","value":"8.000 — good (4–12 is the practical range)"},{"metric":"Wahl Correction Factor (Kw)","value":"1.184"},{"metric":"Shear Modulus Used","value":"79,300 N/mm² (11,501,493 psi)"},{"metric":"Active Wire Length (π·D·n)","value":"402.1 mm (15.83 in)"}]},"credits_used":5,"credits_remaining":null}},"stainless_302_with_a_50_n_load":{"summary":"Stainless 302 with a 50 N load","value":{"tool":"spring-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spring Rate","value":"3.271 N/mm (18.68 lbf/in)"},{"metric":"Spring Index (C = D/d)","value":"7.500 — good (4–12 is the practical range)"},{"metric":"Wahl Correction Factor (Kw)","value":"1.197"},{"metric":"Shear Modulus Used","value":"69,000 N/mm² (10,007,604 psi)"},{"metric":"Deflection at Load","value":"15.29 mm (0.6018 in) at 50.00 N (11.24 lbf)"},{"metric":"Corrected Shear Stress","value":"446.6 N/mm² (64,781 psi)"},{"metric":"Active Wire Length (π·D·n)","value":"377.0 mm (14.84 in)"}]},"credits_used":5,"credits_remaining":null}},"imperial_chrome_silicon_0_080_in_wire":{"summary":"Imperial — chrome silicon, 0.080 in wire","value":{"tool":"spring-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Spring Rate","value":"5.164 N/mm (29.49 lbf/in)"},{"metric":"Spring Index (C = D/d)","value":"7.500 — good (4–12 is the practical range)"},{"metric":"Wahl Correction Factor (Kw)","value":"1.197"},{"metric":"Shear Modulus Used","value":"77,200 N/mm² (11,196,913 psi)"},{"metric":"Deflection at Load","value":"8.613 mm (0.3391 in) at 44.48 N (10.00 lbf)"},{"metric":"Corrected Shear Stress","value":"246.4 N/mm² (35,732 psi)"},{"metric":"Active Wire Length (π·D·n)","value":"430.9 mm (16.96 in)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/retirement-savings-calculator":{"post":{"operationId":"run_retirement_savings_calculator","summary":"Retirement Savings Calculator","tags":["Calculators"],"description":"Project your retirement savings growth from your current balance, monthly contribution, expected annual return and years until retirement — shows future value, total contributed, and total growth earned.\n\n[Try Retirement Savings Calculator in your browser →](https://iotools.cloud/tool/retirement-savings-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"currentSavings":{"type":"number","description":"Current Savings ($)","minimum":0},"monthlyContribution":{"type":"number","description":"Monthly Contribution ($)","minimum":0},"annualReturnRate":{"type":"number","description":"Expected Annual Return (%)","minimum":0},"yearsToRetirement":{"type":"number","description":"Years to Retirement","minimum":0}},"required":[]},"examples":{"50k_now_1_000_mo_7_for_25_years":{"summary":"$50k now, $1,000/mo, 7% for 25 years","value":{"currentSavings":"50000","monthlyContribution":"1000","annualReturnRate":"7","yearsToRetirement":"25"}},"0_return_no_compounding":{"summary":"0% return (no compounding)","value":{"currentSavings":"20000","monthlyContribution":"500","annualReturnRate":"0","yearsToRetirement":"10"}},"already_retired_0_years_left":{"summary":"Already retired (0 years left)","value":{"currentSavings":"75000","monthlyContribution":"800","annualReturnRate":"6","yearsToRetirement":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"50k_now_1_000_mo_7_for_25_years":{"summary":"$50k now, $1,000/mo, 7% for 25 years","value":{"tool":"retirement-savings-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Future Value at Retirement","value":"$1,096,342.60"},{"metric":"Total Contributed","value":"$350,000.00"},{"metric":"Total Growth (Interest Earned)","value":"$746,342.60"}]},"credits_used":5,"credits_remaining":null}},"0_return_no_compounding":{"summary":"0% return (no compounding)","value":{"tool":"retirement-savings-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Future Value at Retirement","value":"$80,000.00"},{"metric":"Total Contributed","value":"$80,000.00"},{"metric":"Total Growth (Interest Earned)","value":"$0.00"}]},"credits_used":5,"credits_remaining":null}},"already_retired_0_years_left":{"summary":"Already retired (0 years left)","value":{"tool":"retirement-savings-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Future Value at Retirement","value":"$75,000.00"},{"metric":"Total Contributed","value":"$75,000.00"},{"metric":"Total Growth (Interest Earned)","value":"$0.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Projected Retirement Savings","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/slugging-percentage-calculator":{"post":{"operationId":"run_slugging_percentage_calculator","summary":"Slugging Percentage Calculator","tags":["Calculators"],"description":"Calculate a baseball or softball slugging percentage from singles, doubles, triples, home runs, and at bats — SLG = total bases ÷ at bats, rounded to three decimal places.\n\n[Try Slugging Percentage Calculator in your browser →](https://iotools.cloud/tool/slugging-percentage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"singles":{"type":"number","description":"Singles","minimum":0},"doubles":{"type":"number","description":"Doubles","minimum":0},"triples":{"type":"number","description":"Triples","minimum":0},"homeRuns":{"type":"number","description":"Home runs","minimum":0},"atBats":{"type":"number","description":"At bats","minimum":1}},"required":["singles","doubles","triples","homeRuns","atBats"]},"examples":{"barry_bonds_2001_49_1b_32_2b_2_3b_73_hr_in_476_ab":{"summary":"Barry Bonds, 2001 (49 1B, 32 2B, 2 3B, 73 HR in 476 AB)","value":{"singles":"49","doubles":"32","triples":"2","homeRuns":"73","atBats":"476"}},"all_singles_30_for_200":{"summary":"All singles (30 for 200)","value":{"singles":"30","doubles":"0","triples":"0","homeRuns":"0","atBats":"200"}},"perfect_power_day_4_home_runs_in_4_at_bats":{"summary":"Perfect power day (4 home runs in 4 at bats)","value":{"singles":"0","doubles":"0","triples":"0","homeRuns":"4","atBats":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"barry_bonds_2001_49_1b_32_2b_2_3b_73_hr_in_476_ab":{"summary":"Barry Bonds, 2001 (49 1B, 32 2B, 2 3B, 73 HR in 476 AB)","value":{"tool":"slugging-percentage-calculator","tool_version":"1.0.2","outputs":{"sluggingPercentage":"0.863"},"credits_used":5,"credits_remaining":null}},"all_singles_30_for_200":{"summary":"All singles (30 for 200)","value":{"tool":"slugging-percentage-calculator","tool_version":"1.0.2","outputs":{"sluggingPercentage":"0.150"},"credits_used":5,"credits_remaining":null}},"perfect_power_day_4_home_runs_in_4_at_bats":{"summary":"Perfect power day (4 home runs in 4 at bats)","value":{"tool":"slugging-percentage-calculator","tool_version":"1.0.2","outputs":{"sluggingPercentage":"4.000"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sluggingPercentage":{"type":"string","description":"Slugging percentage (SLG)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/split-bill-calculator":{"post":{"operationId":"run_split_bill_calculator","summary":"Split Bill Calculator","tags":["Calculators"],"description":"Split a restaurant or group bill evenly among any number of people. Add tax as an amount or a percentage, a discount, and a tip (before or after tax, with country tip-preset shortcuts), then get an exact cent-accurate breakdown per person — no rounding errors, the shares always sum to the total.\n\n[Try Split Bill Calculator in your browser →](https://iotools.cloud/tool/split-bill-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subtotal":{"type":"number","description":"Bill Subtotal","minimum":0.01},"taxMode":{"enum":["amount","percent"],"description":"Tax Entry"},"taxAmount":{"type":"number","description":"Tax","minimum":0},"taxPercent":{"type":"number","description":"Tax %","minimum":0,"maximum":100},"discount":{"type":"number","description":"Discount","minimum":0},"tipPreset":{"enum":["custom","us","ca","uk","au","fr","jp"],"description":"Tip Preset"},"tipPercent":{"type":"number","description":"Tip %","minimum":0,"maximum":100},"tipBasis":{"enum":["subtotal","total"],"description":"Tip On"},"numPeople":{"type":"number","description":"Number of People","minimum":1,"maximum":100},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"},"roundUp":{"type":"boolean","description":"Round up each person's share to the next whole currency unit (for easier cash payment)"}},"required":["subtotal","numPeople"]},"examples":{"even_split_100_bill_15_tip_2_people":{"summary":"Even split — $100 bill, 15% tip, 2 people","value":{"subtotal":"100","taxAmount":"0","discount":"0","tipPreset":"custom","tipPercent":"15","numPeople":"2","currency":"USD","roundUp":""}},"uneven_split_100_bill_no_tip_3_people_fair_cent_remainder":{"summary":"Uneven split — $100 bill, no tip, 3 people (fair cent remainder)","value":{"subtotal":"100","taxAmount":"0","discount":"0","tipPreset":"custom","tipPercent":"0","numPeople":"3","currency":"USD","roundUp":""}},"tax_discount_us_tip_preset_and_round_up_for_cash_4_people":{"summary":"Tax, discount, US tip preset and round-up for cash — 4 people","value":{"subtotal":"85.50","taxAmount":"6.84","discount":"5","tipPreset":"us","tipPercent":"15","numPeople":"4","currency":"USD","roundUp":"true"}},"tax_as_a_percent_tipping_on_the_post_tax_total_3_people":{"summary":"Tax as a percent, tipping on the post-tax total — 3 people","value":{"subtotal":"126.50","taxMode":"percent","taxPercent":"8.875","taxAmount":"0","discount":"0","tipPreset":"custom","tipPercent":"20","tipBasis":"total","numPeople":"3","currency":"USD","roundUp":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"even_split_100_bill_15_tip_2_people":{"summary":"Even split — $100 bill, 15% tip, 2 people","value":{"tool":"split-bill-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Subtotal","value":"$100.00"},{"metric":"Tax","value":"$0.00"},{"metric":"Discount","value":"$0.00"},{"metric":"Tip (15%)","value":"$15.00"},{"metric":"Total","value":"$115.00"},{"metric":"People","value":"2"}],"perPerson":[{"person":"Person 1","amount":"$57.50"},{"person":"Person 2","amount":"$57.50"}]},"credits_used":5,"credits_remaining":null}},"uneven_split_100_bill_no_tip_3_people_fair_cent_remainder":{"summary":"Uneven split — $100 bill, no tip, 3 people (fair cent remainder)","value":{"tool":"split-bill-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Subtotal","value":"$100.00"},{"metric":"Tax","value":"$0.00"},{"metric":"Discount","value":"$0.00"},{"metric":"Tip (0%)","value":"$0.00"},{"metric":"Total","value":"$100.00"},{"metric":"People","value":"3"}],"perPerson":[{"person":"Person 1","amount":"$33.34"},{"person":"Person 2","amount":"$33.33"},{"person":"Person 3","amount":"$33.33"}]},"credits_used":5,"credits_remaining":null}},"tax_discount_us_tip_preset_and_round_up_for_cash_4_people":{"summary":"Tax, discount, US tip preset and round-up for cash — 4 people","value":{"tool":"split-bill-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Subtotal","value":"$85.50"},{"metric":"Tax","value":"$6.84"},{"metric":"Discount","value":"-$5.00"},{"metric":"Tip (18%)","value":"$15.39"},{"metric":"Total","value":"$102.73"},{"metric":"People","value":"4"}],"perPerson":[{"person":"Person 1","amount":"$26.00 (rounded up)"},{"person":"Person 2","amount":"$26.00 (rounded up)"},{"person":"Person 3","amount":"$26.00 (rounded up)"},{"person":"Person 4","amount":"$26.00 (rounded up)"}]},"credits_used":5,"credits_remaining":null}},"tax_as_a_percent_tipping_on_the_post_tax_total_3_people":{"summary":"Tax as a percent, tipping on the post-tax total — 3 people","value":{"tool":"split-bill-calculator","tool_version":"1.0.2","outputs":{"breakdown":[{"metric":"Subtotal","value":"$126.50"},{"metric":"Tax (8.875%)","value":"$11.23"},{"metric":"Discount","value":"$0.00"},{"metric":"Tip (20% after tax)","value":"$27.55"},{"metric":"Total","value":"$165.28"},{"metric":"People","value":"3"}],"perPerson":[{"person":"Person 1","amount":"$55.10"},{"person":"Person 2","amount":"$55.09"},{"person":"Person 3","amount":"$55.09"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"breakdown":{"type":"array","description":"Bill Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"perPerson":{"type":"array","description":"Per Person","items":{"type":"object","properties":{"person":{"type":"string","description":"Person"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["person","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/value-of-a-visitor-calculator":{"post":{"operationId":"run_value_of_a_visitor_calculator","summary":"Value of a Visitor Calculator","tags":["Calculators"],"description":"Calculate how much a single website visitor is worth from your revenue and traffic — plus conversion rate, annualized revenue, and traffic ROI when you add conversions or ad spend.\n\n[Try Value of a Visitor Calculator in your browser →](https://iotools.cloud/tool/value-of-a-visitor-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"websiteRevenue":{"type":"number","description":"Website Revenue ($)","minimum":0},"visitors":{"type":"number","description":"Total Visitors","minimum":1},"timePeriod":{"enum":["day","week","month","year"],"description":"Time Period"},"conversions":{"type":"number","description":"Conversions (optional)","minimum":0},"adSpend":{"type":"number","description":"Ad Spend ($, optional)","minimum":0}},"required":["websiteRevenue","visitors"]},"examples":{"revenue_only_5_000_10_000_visitors_monthly":{"summary":"Revenue only ($5,000 / 10,000 visitors, monthly)","value":{"websiteRevenue":"5000","visitors":"10000","timePeriod":"month","conversions":"","adSpend":""}},"with_conversions_and_ad_spend":{"summary":"With conversions and ad spend","value":{"websiteRevenue":"5000","visitors":"10000","timePeriod":"month","conversions":"50","adSpend":"1000"}},"annual_site_120_000_500_000_visitors_yearly":{"summary":"Annual site ($120,000 / 500,000 visitors, yearly)","value":{"websiteRevenue":"120000","visitors":"500000","timePeriod":"year","conversions":"","adSpend":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"revenue_only_5_000_10_000_visitors_monthly":{"summary":"Revenue only ($5,000 / 10,000 visitors, monthly)","value":{"tool":"value-of-a-visitor-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Visitor Value","value":"$0.5000"},{"metric":"Annualized Revenue","value":"$60,000.00"},{"metric":"Annualized Visitors","value":"120,000"}]},"credits_used":5,"credits_remaining":null}},"with_conversions_and_ad_spend":{"summary":"With conversions and ad spend","value":{"tool":"value-of-a-visitor-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Visitor Value","value":"$0.5000"},{"metric":"Annualized Revenue","value":"$60,000.00"},{"metric":"Annualized Visitors","value":"120,000"},{"metric":"Conversion Rate","value":"0.50%"},{"metric":"Average Order Value","value":"$100.00"},{"metric":"Cost per Visitor","value":"$0.1000"},{"metric":"Traffic ROI","value":"+400.00%"},{"metric":"Profit per Visitor","value":"$0.4000"}]},"credits_used":5,"credits_remaining":null}},"annual_site_120_000_500_000_visitors_yearly":{"summary":"Annual site ($120,000 / 500,000 visitors, yearly)","value":{"tool":"value-of-a-visitor-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Visitor Value","value":"$0.2400"},{"metric":"Annualized Revenue","value":"$120,000.00"},{"metric":"Annualized Visitors","value":"500,000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vertex-axis-calculator":{"post":{"operationId":"run_vertex_axis_calculator","summary":"Vertex and Axis of Symmetry Calculator","tags":["Calculators"],"description":"Find the vertex, axis of symmetry, opening direction, and minimum/maximum classification of a quadratic ax² + bx + c, plus its real roots and a step-by-step derivation.\n\n[Try Vertex and Axis of Symmetry Calculator in your browser →](https://iotools.cloud/tool/vertex-axis-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"a"},"coeffB":{"type":"number","description":"b"},"coeffC":{"type":"number","description":"c"}},"required":["coeffA","coeffB","coeffC"]},"examples":{"opens_upward_x_4x_3":{"summary":"Opens upward (x² − 4x + 3)","value":{"coeffA":"1","coeffB":"-4","coeffC":"3"}},"opens_downward_no_real_roots_x_2x_5":{"summary":"Opens downward, no real roots (-x² + 2x - 5)","value":{"coeffA":"-1","coeffB":"2","coeffC":"-5"}},"repeated_root_touches_x_axis_once_x_6x_9":{"summary":"Repeated root, touches x-axis once (x² - 6x + 9)","value":{"coeffA":"1","coeffB":"-6","coeffC":"9"}},"non_unit_leading_coefficient_2x_4x_6":{"summary":"Non-unit leading coefficient (2x² + 4x − 6)","value":{"coeffA":"2","coeffB":"4","coeffC":"-6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"opens_upward_x_4x_3":{"summary":"Opens upward (x² − 4x + 3)","value":{"tool":"vertex-axis-calculator","tool_version":"1.0.2","outputs":{"vertex":"(2, -1)","axisOfSymmetry":"x = 2","direction":"Upward","vertexType":"Minimum","discriminant":"4","roots":"x₁ = 3, x₂ = 1","standardForm":"y = x² - 4x + 3","vertexForm":"y = (x - 2)² - 1","steps":"y = x² - 4x + 3, with a = 1, b = -4, c = 3\nAxis of symmetry: x = −b / (2a) = 4 / 2 = 2\nVertex y-coordinate: k = c − b² / (4a) = 3 − 16 / 4 = -1\nVertex: (h, k) = (2, -1)\nVertex form: y = (x - 2)² - 1\nSince a > 0, the parabola opens upward and the vertex is a minimum.\nDiscriminant: Δ = b² − 4ac = 4\nΔ > 0 → two real x-intercepts: x₁ = 3, x₂ = 1"},"credits_used":5,"credits_remaining":null}},"opens_downward_no_real_roots_x_2x_5":{"summary":"Opens downward, no real roots (-x² + 2x - 5)","value":{"tool":"vertex-axis-calculator","tool_version":"1.0.2","outputs":{"vertex":"(1, -4)","axisOfSymmetry":"x = 1","direction":"Downward","vertexType":"Maximum","discriminant":"-16","roots":"No real roots (parabola doesn't cross the x-axis)","standardForm":"y = -x² + 2x - 5","vertexForm":"y = -(x - 1)² - 4","steps":"y = -x² + 2x - 5, with a = -1, b = 2, c = -5\nAxis of symmetry: x = −b / (2a) = -2 / -2 = 1\nVertex y-coordinate: k = c − b² / (4a) = -5 − 4 / -4 = -4\nVertex: (h, k) = (1, -4)\nVertex form: y = -(x - 1)² - 4\nSince a < 0, the parabola opens downward and the vertex is a maximum.\nDiscriminant: Δ = b² − 4ac = -16\nΔ < 0 → no real roots — the parabola never crosses the x-axis."},"credits_used":5,"credits_remaining":null}},"repeated_root_touches_x_axis_once_x_6x_9":{"summary":"Repeated root, touches x-axis once (x² - 6x + 9)","value":{"tool":"vertex-axis-calculator","tool_version":"1.0.2","outputs":{"vertex":"(3, 0)","axisOfSymmetry":"x = 3","direction":"Upward","vertexType":"Minimum","discriminant":"0","roots":"x = 3 (touches the x-axis once)","standardForm":"y = x² - 6x + 9","vertexForm":"y = (x - 3)²","steps":"y = x² - 6x + 9, with a = 1, b = -6, c = 9\nAxis of symmetry: x = −b / (2a) = 6 / 2 = 3\nVertex y-coordinate: k = c − b² / (4a) = 9 − 36 / 4 = 0\nVertex: (h, k) = (3, 0)\nVertex form: y = (x - 3)²\nSince a > 0, the parabola opens upward and the vertex is a minimum.\nDiscriminant: Δ = b² − 4ac = 0\nΔ = 0 → the parabola touches the x-axis once, at its vertex: x = 3 (touches the x-axis once)"},"credits_used":5,"credits_remaining":null}},"non_unit_leading_coefficient_2x_4x_6":{"summary":"Non-unit leading coefficient (2x² + 4x − 6)","value":{"tool":"vertex-axis-calculator","tool_version":"1.0.2","outputs":{"vertex":"(-1, -8)","axisOfSymmetry":"x = -1","direction":"Upward","vertexType":"Minimum","discriminant":"64","roots":"x₁ = 1, x₂ = -3","standardForm":"y = 2x² + 4x - 6","vertexForm":"y = 2(x + 1)² - 8","steps":"y = 2x² + 4x - 6, with a = 2, b = 4, c = -6\nAxis of symmetry: x = −b / (2a) = -4 / 4 = -1\nVertex y-coordinate: k = c − b² / (4a) = -6 − 16 / 8 = -8\nVertex: (h, k) = (-1, -8)\nVertex form: y = 2(x + 1)² - 8\nSince a > 0, the parabola opens upward and the vertex is a minimum.\nDiscriminant: Δ = b² − 4ac = 64\nΔ > 0 → two real x-intercepts: x₁ = 1, x₂ = -3"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"vertex":{"type":"string","description":"Vertex (h, k)"},"axisOfSymmetry":{"type":"string","description":"Axis of Symmetry"},"direction":{"type":"string","description":"Opens"},"vertexType":{"type":"string","description":"Vertex Is a"},"discriminant":{"type":"string","description":"Discriminant (Δ)"},"roots":{"type":"string","description":"Real Roots (x-intercepts)"},"standardForm":{"type":"string","description":"Standard Form"},"vertexForm":{"type":"string","description":"Vertex Form"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/video-bitrate-calculator":{"post":{"operationId":"run_video_bitrate_calculator","summary":"Video Bitrate Calculator","tags":["Calculators"],"description":"Estimate the recommended video bitrate for a resolution, frame rate, codec and quality target, then see the total bitrate with audio, projected file sizes for common durations, and how H.264, H.265, VP9 and AV1 compare.\n\n[Try Video Bitrate Calculator in your browser →](https://iotools.cloud/tool/video-bitrate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resolution":{"enum":["1280x720","1920x1080","2560x1440","3840x2160","7680x4320","custom"],"description":"Resolution"},"customWidth":{"type":"number","description":"Width (px)","minimum":1,"maximum":15360},"customHeight":{"type":"number","description":"Height (px)","minimum":1,"maximum":8640},"frameRate":{"enum":["24","30","60","120"],"description":"Frame rate (FPS)"},"codec":{"enum":["h264","h265","vp9","av1"],"description":"Codec"},"quality":{"enum":["low","medium","high","veryhigh"],"description":"Quality"},"audioBitrate":{"enum":["0","64","128","192","320"],"description":"Audio bitrate"}},"required":[]},"examples":{"1080p_30fps_h_264_medium_quality_128_kbps_audio":{"summary":"1080p, 30fps, H.264, medium quality, 128 kbps audio","value":{"resolution":"1920x1080","customWidth":"1920","customHeight":"1080","frameRate":"30","codec":"h264","quality":"medium","audioBitrate":"128"}},"4k_60fps_av1_high_quality_320_kbps_audio":{"summary":"4K, 60fps, AV1, high quality, 320 kbps audio","value":{"resolution":"3840x2160","customWidth":"1920","customHeight":"1080","frameRate":"60","codec":"av1","quality":"high","audioBitrate":"320"}},"custom_1280x720_24fps_h_265_low_quality_no_audio":{"summary":"Custom 1280x720, 24fps, H.265, low quality, no audio","value":{"resolution":"custom","customWidth":"1280","customHeight":"720","frameRate":"24","codec":"h265","quality":"low","audioBitrate":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1080p_30fps_h_264_medium_quality_128_kbps_audio":{"summary":"1080p, 30fps, H.264, medium quality, 128 kbps audio","value":{"tool":"video-bitrate-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Resolution","value":"1920 x 1080"},{"property":"Video bitrate","value":"4.35 Mbps"},{"property":"Audio bitrate","value":"128 kbps"},{"property":"Container overhead (5%)","value":"224 kbps"},{"property":"Total bitrate","value":"4.71 Mbps"}],"fileSizeTable":[{"duration":"1 minute","file-size":"35.30 MB"},{"duration":"10 minutes","file-size":"353.00 MB"},{"duration":"1 hour","file-size":"2.12 GB"},{"duration":"24 hours","file-size":"50.83 GB"}],"codecComparisonTable":[{"codec":"H.264 / AVC","recommended-bitrate":"4.35 Mbps","relative-efficiency":"Baseline (1x)"},{"codec":"H.265 / HEVC","recommended-bitrate":"2.18 Mbps","relative-efficiency":"~50% of H.264"},{"codec":"VP9","recommended-bitrate":"2.18 Mbps","relative-efficiency":"~50% of H.264"},{"codec":"AV1","recommended-bitrate":"1.52 Mbps","relative-efficiency":"~35% of H.264"}]},"credits_used":5,"credits_remaining":null}},"4k_60fps_av1_high_quality_320_kbps_audio":{"summary":"4K, 60fps, AV1, high quality, 320 kbps audio","value":{"tool":"video-bitrate-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Resolution","value":"3840 x 2160"},{"property":"Video bitrate","value":"17.42 Mbps"},{"property":"Audio bitrate","value":"320 kbps"},{"property":"Container overhead (5%)","value":"887 kbps"},{"property":"Total bitrate","value":"18.63 Mbps"}],"fileSizeTable":[{"duration":"1 minute","file-size":"139.69 MB"},{"duration":"10 minutes","file-size":"1.40 GB"},{"duration":"1 hour","file-size":"8.38 GB"},{"duration":"24 hours","file-size":"201.15 GB"}],"codecComparisonTable":[{"codec":"H.264 / AVC","recommended-bitrate":"49.77 Mbps","relative-efficiency":"Baseline (1x)"},{"codec":"H.265 / HEVC","recommended-bitrate":"24.88 Mbps","relative-efficiency":"~50% of H.264"},{"codec":"VP9","recommended-bitrate":"24.88 Mbps","relative-efficiency":"~50% of H.264"},{"codec":"AV1","recommended-bitrate":"17.42 Mbps","relative-efficiency":"~35% of H.264"}]},"credits_used":5,"credits_remaining":null}},"custom_1280x720_24fps_h_265_low_quality_no_audio":{"summary":"Custom 1280x720, 24fps, H.265, low quality, no audio","value":{"tool":"video-bitrate-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Resolution","value":"1280 x 720"},{"property":"Video bitrate","value":"442 kbps"},{"property":"Audio bitrate","value":"None"},{"property":"Container overhead (5%)","value":"22 kbps"},{"property":"Total bitrate","value":"464 kbps"}],"fileSizeTable":[{"duration":"1 minute","file-size":"3.48 MB"},{"duration":"10 minutes","file-size":"34.84 MB"},{"duration":"1 hour","file-size":"209.02 MB"},{"duration":"24 hours","file-size":"5.02 GB"}],"codecComparisonTable":[{"codec":"H.264 / AVC","recommended-bitrate":"885 kbps","relative-efficiency":"Baseline (1x)"},{"codec":"H.265 / HEVC","recommended-bitrate":"442 kbps","relative-efficiency":"~50% of H.264"},{"codec":"VP9","recommended-bitrate":"442 kbps","relative-efficiency":"~50% of H.264"},{"codec":"AV1","recommended-bitrate":"310 kbps","relative-efficiency":"~35% of H.264"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Bitrate estimate","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"fileSizeTable":{"type":"array","description":"Estimated file sizes","items":{"type":"object","properties":{"duration":{"type":"string","description":"Duration"},"file-size":{"type":"string","description":"File size"}}},"x-iotools-columns":["duration","file-size"]},"codecComparisonTable":{"type":"array","description":"Codec comparison (video bitrate)","items":{"type":"object","properties":{"codec":{"type":"string","description":"Codec"},"recommended-bitrate":{"type":"string","description":"Recommended bitrate"},"relative-efficiency":{"type":"string","description":"Relative efficiency"}}},"x-iotools-columns":["codec","recommended-bitrate","relative-efficiency"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wacc-calculator":{"post":{"operationId":"run_wacc_calculator","summary":"WACC Calculator","tags":["Calculators"],"description":"Calculate the weighted average cost of capital (WACC) from the cost and market value of equity and debt, plus a tax rate. Get the blended WACC, the after-tax cost of debt and tax shield, and a full equity-vs-debt capital-structure breakdown.\n\n[Try WACC Calculator in your browser →](https://iotools.cloud/tool/wacc-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"costOfEquity":{"type":"number","description":"Cost of Equity (%)","minimum":0,"maximum":100},"marketValueEquity":{"type":"number","description":"Market Value of Equity","minimum":0},"costOfDebt":{"type":"number","description":"Cost of Debt (%)","minimum":0,"maximum":100},"marketValueDebt":{"type":"number","description":"Market Value of Debt","minimum":0},"taxRate":{"type":"number","description":"Tax Rate (%)","minimum":0,"maximum":100},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["costOfEquity","marketValueEquity","costOfDebt","marketValueDebt","taxRate"]},"examples":{"default_5m_equity_at_12_2m_debt_at_6_25_tax":{"summary":"Default: $5M equity at 12%, $2M debt at 6%, 25% tax","value":{"costOfEquity":"12","marketValueEquity":"5000000","costOfDebt":"6","marketValueDebt":"2000000","taxRate":"25","currency":"USD"}},"heavily_debt_financed_2m_equity_at_15_8m_debt_at_8_21_tax":{"summary":"Heavily debt-financed: $2M equity at 15%, $8M debt at 8%, 21% tax","value":{"costOfEquity":"15","marketValueEquity":"2000000","costOfDebt":"8","marketValueDebt":"8000000","taxRate":"21","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_5m_equity_at_12_2m_debt_at_6_25_tax":{"summary":"Default: $5M equity at 12%, $2M debt at 6%, 25% tax","value":{"tool":"wacc-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Market Value of Equity","value":"$5,000,000.00"},{"metric":"Market Value of Debt","value":"$2,000,000.00"},{"metric":"Total Capital","value":"$7,000,000.00"},{"metric":"After-Tax Cost of Debt","value":"4.50%"},{"metric":"Tax Shield","value":"1.50%"},{"metric":"Weighted Average Cost of Capital (WACC)","value":"9.86%"},{"metric":"Assessment","value":"Moderate"}],"breakdown":[{"component":"Equity","market-value":"$5,000,000.00","weight":"71.43%","cost-after-tax-for-debt":"12.00%","contribution-to-wacc":"8.57%"},{"component":"Debt","market-value":"$2,000,000.00","weight":"28.57%","cost-after-tax-for-debt":"4.50%","contribution-to-wacc":"1.29%"},{"component":"Total","market-value":"$7,000,000.00","weight":"100.00%","cost-after-tax-for-debt":"—","contribution-to-wacc":"9.86%"}]},"credits_used":5,"credits_remaining":null}},"heavily_debt_financed_2m_equity_at_15_8m_debt_at_8_21_tax":{"summary":"Heavily debt-financed: $2M equity at 15%, $8M debt at 8%, 21% tax","value":{"tool":"wacc-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Market Value of Equity","value":"$2,000,000.00"},{"metric":"Market Value of Debt","value":"$8,000,000.00"},{"metric":"Total Capital","value":"$10,000,000.00"},{"metric":"After-Tax Cost of Debt","value":"6.32%"},{"metric":"Tax Shield","value":"1.68%"},{"metric":"Weighted Average Cost of Capital (WACC)","value":"8.06%"},{"metric":"Assessment","value":"Moderate"}],"breakdown":[{"component":"Equity","market-value":"$2,000,000.00","weight":"20.00%","cost-after-tax-for-debt":"15.00%","contribution-to-wacc":"3.00%"},{"component":"Debt","market-value":"$8,000,000.00","weight":"80.00%","cost-after-tax-for-debt":"6.32%","contribution-to-wacc":"5.06%"},{"component":"Total","market-value":"$10,000,000.00","weight":"100.00%","cost-after-tax-for-debt":"—","contribution-to-wacc":"8.06%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"WACC Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Capital Structure Breakdown","items":{"type":"object","properties":{"component":{"type":"string","description":"Component"},"market-value":{"type":"string","description":"Market Value"},"weight":{"type":"string","description":"Weight"},"cost-after-tax-for-debt":{"type":"string","description":"Cost (after-tax for debt)"},"contribution-to-wacc":{"type":"string","description":"Contribution to WACC"}}},"x-iotools-columns":["component","market-value","weight","cost-after-tax-for-debt","contribution-to-wacc"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yeast-conversion-calculator":{"post":{"operationId":"run_yeast_conversion_calculator","summary":"Yeast Conversion Calculator","tags":["Calculators"],"description":"Convert between fresh (cake), active dry and instant yeast — enter grams, ounces, teaspoons, packets, cakes or cubes and get the equivalent amount of every other yeast type in all units at once.\n\n[Try Yeast Conversion Calculator in your browser →](https://iotools.cloud/tool/yeast-conversion-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fromType":{"enum":["fresh","active-dry","instant"],"description":"Yeast in recipe"},"amount":{"type":"number","description":"Amount","minimum":0},"dryUnit":{"enum":["g","oz","tsp","packet"],"description":"Unit"},"freshUnit":{"enum":["g","oz","cake","cube"],"description":"Unit"}},"required":["amount"]},"examples":{"one_packet_of_active_dry_yeast":{"summary":"One packet of active dry yeast","value":{"fromType":"active-dry","amount":"1","dryUnit":"packet"}},"one_42_g_cube_of_fresh_yeast":{"summary":"One 42 g cube of fresh yeast","value":{"fromType":"fresh","amount":"1","freshUnit":"cube"}},"2_teaspoons_of_instant_yeast":{"summary":"2 teaspoons of instant yeast","value":{"fromType":"instant","amount":"2","dryUnit":"tsp"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"one_packet_of_active_dry_yeast":{"summary":"One packet of active dry yeast","value":{"tool":"yeast-conversion-calculator","tool_version":"1.0.2","outputs":{"summary":"7 g active dry yeast = 14 g fresh yeast = 5.6 g instant yeast","conversions":[{"yeast":"Fresh (cake / compressed)","grams":"14","ounces":"0.494","teaspoons":"—","packets-cakes":"0.82 small cakes · 0.33 cubes"},{"yeast":"Active dry","grams":"7","ounces":"0.247","teaspoons":"2.25","packets-cakes":"1 packet"},{"yeast":"Instant / rapid-rise / bread machine","grams":"5.6","ounces":"0.198","teaspoons":"1.8","packets-cakes":"0.8 packets"}]},"credits_used":5,"credits_remaining":null}},"one_42_g_cube_of_fresh_yeast":{"summary":"One 42 g cube of fresh yeast","value":{"tool":"yeast-conversion-calculator","tool_version":"1.0.2","outputs":{"summary":"42 g fresh yeast = 21 g active dry yeast = 16.8 g instant yeast","conversions":[{"yeast":"Fresh (cake / compressed)","grams":"42","ounces":"1.482","teaspoons":"—","packets-cakes":"2.47 small cakes · 1 cube"},{"yeast":"Active dry","grams":"21","ounces":"0.741","teaspoons":"6.75","packets-cakes":"3 packets"},{"yeast":"Instant / rapid-rise / bread machine","grams":"16.8","ounces":"0.593","teaspoons":"5.4","packets-cakes":"2.4 packets"}]},"credits_used":5,"credits_remaining":null}},"2_teaspoons_of_instant_yeast":{"summary":"2 teaspoons of instant yeast","value":{"tool":"yeast-conversion-calculator","tool_version":"1.0.2","outputs":{"summary":"6.22 g instant yeast = 15.56 g fresh yeast = 7.78 g active dry yeast","conversions":[{"yeast":"Fresh (cake / compressed)","grams":"15.56","ounces":"0.549","teaspoons":"—","packets-cakes":"0.91 small cakes · 0.37 cubes"},{"yeast":"Active dry","grams":"7.78","ounces":"0.274","teaspoons":"2.5","packets-cakes":"1.11 packets"},{"yeast":"Instant / rapid-rise / bread machine","grams":"6.22","ounces":"0.219","teaspoons":"2","packets-cakes":"0.89 packets"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Equivalent"},"conversions":{"type":"array","description":"Every yeast type","items":{"type":"object","properties":{"yeast":{"type":"string","description":"Yeast"},"grams":{"type":"string","description":"Grams"},"ounces":{"type":"string","description":"Ounces"},"teaspoons":{"type":"string","description":"Teaspoons"},"packets-cakes":{"type":"string","description":"Packets / cakes"}}},"x-iotools-columns":["yeast","grams","ounces","teaspoons","packets-cakes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/volume-surface-area-calculator":{"post":{"operationId":"run_volume_surface_area_calculator","summary":"Volume & Surface Area Calculator","tags":["Calculators"],"description":"Calculate the volume and surface area of 7 common 3D solids — cube, rectangular prism, sphere, cylinder, cone, square pyramid and triangular prism — from a single shape picker.\n\n[Try Volume & Surface Area Calculator in your browser →](https://iotools.cloud/tool/volume-surface-area-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["cube","box","sphere","cylinder","cone","pyramid","triangularPrism"],"description":"Solid"},"unit":{"enum":["mm","cm","m","km","in","ft","yd"],"description":"Unit"},"side":{"type":"number","description":"Side length","minimum":0},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"radius":{"type":"number","description":"Radius","minimum":0},"baseSide":{"type":"number","description":"Base side length","minimum":0},"triSideA":{"type":"number","description":"Base triangle — side A","minimum":0},"triSideB":{"type":"number","description":"Base triangle — side B","minimum":0},"triSideC":{"type":"number","description":"Base triangle — side C","minimum":0},"prismLength":{"type":"number","description":"Prism length","minimum":0}},"required":[]},"examples":{"cube_4_cm_side":{"summary":"Cube, 4 cm side","value":{"shape":"cube","unit":"cm","side":"4"}},"rectangular_prism_6_4_3_cm":{"summary":"Rectangular prism, 6×4×3 cm","value":{"shape":"box","unit":"cm","length":"6","width":"4","height":"3"}},"sphere_radius_5_cm":{"summary":"Sphere, radius 5 cm","value":{"shape":"sphere","unit":"cm","radius":"5"}},"cylinder_radius_3_height_8_cm":{"summary":"Cylinder, radius 3, height 8 cm","value":{"shape":"cylinder","unit":"cm","radius":"3","height":"8"}},"cone_radius_3_height_4_cm":{"summary":"Cone, radius 3, height 4 cm","value":{"shape":"cone","unit":"cm","radius":"3","height":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cube_4_cm_side":{"summary":"Cube, 4 cm side","value":{"tool":"volume-surface-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volume","value":"64 cm³"},{"property":"Surface area","value":"96 cm²"},{"property":"Space diagonal","value":"6.93 cm"}]},"credits_used":5,"credits_remaining":null}},"rectangular_prism_6_4_3_cm":{"summary":"Rectangular prism, 6×4×3 cm","value":{"tool":"volume-surface-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volume","value":"72 cm³"},{"property":"Surface area","value":"108 cm²"},{"property":"Space diagonal","value":"7.81 cm"}]},"credits_used":5,"credits_remaining":null}},"sphere_radius_5_cm":{"summary":"Sphere, radius 5 cm","value":{"tool":"volume-surface-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volume","value":"523.6 cm³"},{"property":"Surface area","value":"314.16 cm²"}]},"credits_used":5,"credits_remaining":null}},"cylinder_radius_3_height_8_cm":{"summary":"Cylinder, radius 3, height 8 cm","value":{"tool":"volume-surface-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volume","value":"226.19 cm³"},{"property":"Surface area (total)","value":"207.35 cm²"},{"property":"Lateral surface area","value":"150.8 cm²"}]},"credits_used":5,"credits_remaining":null}},"cone_radius_3_height_4_cm":{"summary":"Cone, radius 3, height 4 cm","value":{"tool":"volume-surface-area-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Volume","value":"37.7 cm³"},{"property":"Surface area (total)","value":"75.4 cm²"},{"property":"Lateral surface area","value":"47.12 cm²"},{"property":"Slant height","value":"5 cm"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/x-y-intercept-calculator":{"post":{"operationId":"run_x_y_intercept_calculator","summary":"X and Y Intercept Calculator","tags":["Calculators"],"description":"Find where a line ax + by + c = 0 crosses the x-axis and y-axis. Returns both intercept points, the slope, a plain-English line classification, and a step-by-step derivation.\n\n[Try X and Y Intercept Calculator in your browser →](https://iotools.cloud/tool/x-y-intercept-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"a"},"b":{"type":"number","description":"b"},"c":{"type":"number","description":"c"}},"required":["a","b","c"]},"examples":{"2x_3y_6_0":{"summary":"2x + 3y - 6 = 0","value":{"a":"2","b":"3","c":"-6"}},"horizontal_line_0x_2y_8_0":{"summary":"Horizontal line: 0x + 2y - 8 = 0","value":{"a":"0","b":"2","c":"-8"}},"vertical_line_3x_0y_9_0":{"summary":"Vertical line: 3x + 0y - 9 = 0","value":{"a":"3","b":"0","c":"-9"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3y_6_0":{"summary":"2x + 3y - 6 = 0","value":{"tool":"x-y-intercept-calculator","tool_version":"1.0.2","outputs":{"equation":"2x + 3y - 6 = 0","classification":"Oblique (slanted) line","xIntercept":"(3, 0)","yIntercept":"(0, 2)","slope":"-0.666667","steps":"Equation: 2x + 3y - 6 = 0\nx-intercept (set y = 0): ax + c = 0 → x = -c/a = -(-6)/2 = 3\ny-intercept (set x = 0): by + c = 0 → y = -c/b = -(-6)/3 = 2\nSlope: m = -a/b = -(2)/3 = -0.666667"},"credits_used":5,"credits_remaining":null}},"horizontal_line_0x_2y_8_0":{"summary":"Horizontal line: 0x + 2y - 8 = 0","value":{"tool":"x-y-intercept-calculator","tool_version":"1.0.2","outputs":{"equation":"2y - 8 = 0","classification":"Horizontal line","xIntercept":"None — the line never crosses the x-axis","yIntercept":"(0, 4)","slope":"0","steps":"Equation: 2y - 8 = 0\na = 0 → horizontal line. Solve for y: y = -c/b = -(-8)/2 = 4\nA horizontal line off the x-axis never reaches y = 0."},"credits_used":5,"credits_remaining":null}},"vertical_line_3x_0y_9_0":{"summary":"Vertical line: 3x + 0y - 9 = 0","value":{"tool":"x-y-intercept-calculator","tool_version":"1.0.2","outputs":{"equation":"3x - 9 = 0","classification":"Vertical line","xIntercept":"(3, 0)","yIntercept":"None — the line never crosses the y-axis","slope":"Undefined","steps":"Equation: 3x - 9 = 0\nb = 0 → vertical line. Solve for x: x = -c/a = -(-9)/3 = 3\nA vertical line off the y-axis never reaches x = 0."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"equation":{"type":"string","description":"Equation"},"classification":{"type":"string","description":"Classification"},"xIntercept":{"type":"string","description":"X-Intercept"},"yIntercept":{"type":"string","description":"Y-Intercept"},"slope":{"type":"string","description":"Slope"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/zero-coupon-bond-calculator":{"post":{"operationId":"run_zero_coupon_bond_calculator","summary":"Zero Coupon Bond Calculator","tags":["Calculators"],"description":"Calculate a zero-coupon bond's price from its yield, or its yield to maturity from its price, with a selectable compounding frequency (annual, semi-annual, quarterly, monthly, daily, or continuous) — plus discount amount, effective annual yield, and a year-by-year accreted-value schedule.\n\n[Try Zero Coupon Bond Calculator in your browser →](https://iotools.cloud/tool/zero-coupon-bond-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"calcType":{"enum":["price","ytm"],"description":"Solve For"},"faceValue":{"type":"number","description":"Face Value ($)","minimum":0.01,"maximum":100000000},"rate":{"type":"number","description":"Annual Yield / Discount Rate (%)","minimum":0,"maximum":100},"currentPrice":{"type":"number","description":"Current Market Price ($)","minimum":0.01,"maximum":100000000},"years":{"type":"number","description":"Years to Maturity","minimum":1,"maximum":100},"compound":{"enum":["1","2","4","12","365","continuous"],"description":"Compounding Frequency"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["faceValue","years"]},"examples":{"1_000_face_5_yield_10_years_annual_solve_price":{"summary":"$1,000 face, 5% yield, 10 years, annual — solve price","value":{"calcType":"price","faceValue":"1000","rate":"5","years":"10","compound":"1","currency":"USD"}},"1_000_face_614_price_10_years_annual_solve_yield":{"summary":"$1,000 face, $614 price, 10 years, annual — solve yield","value":{"calcType":"ytm","faceValue":"1000","currentPrice":"614","years":"10","compound":"1","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_000_face_5_yield_10_years_annual_solve_price":{"summary":"$1,000 face, 5% yield, 10 years, annual — solve price","value":{"tool":"zero-coupon-bond-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Solved For","value":"Bond Price"},{"metric":"Face Value","value":"$1,000.00"},{"metric":"Bond Price","value":"$613.91"},{"metric":"Yield to Maturity","value":"+5.000%"},{"metric":"Compounding Frequency","value":"Annually"},{"metric":"Years to Maturity","value":"10"},{"metric":"Discount","value":"$386.09"},{"metric":"Discount %","value":"+38.61%"},{"metric":"Total Return Over Term","value":"+62.89%"},{"metric":"Effective Annual Yield","value":"+5.000%"},{"metric":"Duration (Years)","value":"10.00"},{"metric":"Investment Quality","value":"Moderate Yield"}],"schedule":[{"year":"0","accreted-value":"$613.91"},{"year":"1","accreted-value":"$644.61"},{"year":"2","accreted-value":"$676.84"},{"year":"3","accreted-value":"$710.68"},{"year":"4","accreted-value":"$746.22"},{"year":"5","accreted-value":"$783.53"},{"year":"6","accreted-value":"$822.70"},{"year":"7","accreted-value":"$863.84"},{"year":"8","accreted-value":"$907.03"},{"year":"9","accreted-value":"$952.38"},{"year":"10","accreted-value":"$1,000.00"}]},"credits_used":5,"credits_remaining":null}},"1_000_face_614_price_10_years_annual_solve_yield":{"summary":"$1,000 face, $614 price, 10 years, annual — solve yield","value":{"tool":"zero-coupon-bond-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Solved For","value":"Yield to Maturity"},{"metric":"Face Value","value":"$1,000.00"},{"metric":"Bond Price","value":"$614.00"},{"metric":"Yield to Maturity","value":"+4.999%"},{"metric":"Compounding Frequency","value":"Annually"},{"metric":"Years to Maturity","value":"10"},{"metric":"Discount","value":"$386.00"},{"metric":"Discount %","value":"+38.60%"},{"metric":"Total Return Over Term","value":"+62.87%"},{"metric":"Effective Annual Yield","value":"+4.999%"},{"metric":"Duration (Years)","value":"10.00"},{"metric":"Investment Quality","value":"Moderate Yield"}],"schedule":[{"year":"0","accreted-value":"$614.00"},{"year":"1","accreted-value":"$644.69"},{"year":"2","accreted-value":"$676.92"},{"year":"3","accreted-value":"$710.75"},{"year":"4","accreted-value":"$746.28"},{"year":"5","accreted-value":"$783.58"},{"year":"6","accreted-value":"$822.75"},{"year":"7","accreted-value":"$863.87"},{"year":"8","accreted-value":"$907.06"},{"year":"9","accreted-value":"$952.39"},{"year":"10","accreted-value":"$1,000.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Accreted Value","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"accreted-value":{"type":"string","description":"Accreted Value"}}},"x-iotools-columns":["year","accreted-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/comparing-fractions-calculator":{"post":{"operationId":"run_comparing_fractions_calculator","summary":"Comparing Fractions Calculator","tags":["Calculators"],"description":"Compare two fractions or mixed numbers by converting both to a common denominator, with a step-by-step derivation and the greater-than/less-than/equal verdict.\n\n[Try Comparing Fractions Calculator in your browser →](https://iotools.cloud/tool/comparing-fractions-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"wholeA":{"type":"number","description":"Fraction A — whole number (optional)"},"numeratorA":{"type":"number","description":"Fraction A — numerator"},"denominatorA":{"type":"number","description":"Fraction A — denominator"},"wholeB":{"type":"number","description":"Fraction B — whole number (optional)"},"numeratorB":{"type":"number","description":"Fraction B — numerator"},"denominatorB":{"type":"number","description":"Fraction B — denominator"}},"required":[]},"examples":{"3_4_vs_2_3_a_is_greater":{"summary":"3/4 vs 2/3 (A is greater)","value":{"wholeA":"","numeratorA":"3","denominatorA":"4","wholeB":"","numeratorB":"2","denominatorB":"3"}},"2_4_vs_1_2_equal":{"summary":"2/4 vs 1/2 (equal)","value":{"wholeA":"","numeratorA":"2","denominatorA":"4","wholeB":"","numeratorB":"1","denominatorB":"2"}},"mixed_numbers_1_1_2_vs_1_3_4_a_is_less":{"summary":"Mixed numbers: 1 1/2 vs 1 3/4 (A is less)","value":{"wholeA":"1","numeratorA":"1","denominatorA":"2","wholeB":"1","numeratorB":"3","denominatorB":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"3_4_vs_2_3_a_is_greater":{"summary":"3/4 vs 2/3 (A is greater)","value":{"tool":"comparing-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction A","value":"3/4"},{"property":"Fraction B","value":"2/3"},{"property":"Simplified A","value":"3/4"},{"property":"Simplified B","value":"2/3"},{"property":"Decimal A","value":"0.75"},{"property":"Decimal B","value":"0.666666666667"},{"property":"Comparison","value":"3/4 > 2/3"},{"property":"Verdict","value":"Fraction A is greater than Fraction B"}],"steps":"Find a common denominator: LCM(4, 3) = 12\nConvert A: 3×3 / 4×3 = 9/12\nConvert B: 2×4 / 3×4 = 8/12\nCompare numerators: 9 > 8 → Fraction A is greater than Fraction B."},"credits_used":5,"credits_remaining":null}},"2_4_vs_1_2_equal":{"summary":"2/4 vs 1/2 (equal)","value":{"tool":"comparing-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction A","value":"2/4"},{"property":"Fraction B","value":"1/2"},{"property":"Simplified A","value":"1/2"},{"property":"Simplified B","value":"1/2"},{"property":"Decimal A","value":"0.5"},{"property":"Decimal B","value":"0.5"},{"property":"Comparison","value":"2/4 = 1/2"},{"property":"Verdict","value":"Fraction A is equal to Fraction B"}],"steps":"Find a common denominator: LCM(4, 2) = 4\nConvert A: 2×1 / 4×1 = 2/4\nConvert B: 1×2 / 2×2 = 2/4\nCompare numerators: 2 = 2 → Fraction A is equal to Fraction B."},"credits_used":5,"credits_remaining":null}},"mixed_numbers_1_1_2_vs_1_3_4_a_is_less":{"summary":"Mixed numbers: 1 1/2 vs 1 3/4 (A is less)","value":{"tool":"comparing-fractions-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Fraction A","value":"3/2"},{"property":"Fraction B","value":"7/4"},{"property":"Simplified A","value":"3/2"},{"property":"Simplified B","value":"7/4"},{"property":"Decimal A","value":"1.5"},{"property":"Decimal B","value":"1.75"},{"property":"Comparison","value":"3/2 < 7/4"},{"property":"Verdict","value":"Fraction A is less than Fraction B"}],"steps":"Find a common denominator: LCM(2, 4) = 4\nConvert A: 3×2 / 2×2 = 6/4\nConvert B: 7×1 / 4×1 = 7/4\nCompare numerators: 6 < 7 → Fraction A is less than Fraction B."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/simple-interest-calculator":{"post":{"operationId":"run_simple_interest_calculator","summary":"Simple Interest Calculator","tags":["Calculators"],"description":"Calculate simple interest (I = P × r × t) from a principal, annual interest rate, and time period in years, months, or days — get the total interest and final amount plus a year-by-year accrual schedule.\n\n[Try Simple Interest Calculator in your browser →](https://iotools.cloud/tool/simple-interest-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal":{"type":"number","description":"Principal Amount","minimum":0,"maximum":999999999},"rate":{"type":"number","description":"Annual Interest Rate (%)","minimum":0,"maximum":100},"time":{"type":"number","description":"Time Period","minimum":0.01,"maximum":36500},"timeUnit":{"enum":["years","months","days"],"description":"Time Unit"},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["principal","rate","time"]},"examples":{"10_000_at_5_for_3_years":{"summary":"$10,000 at 5% for 3 years","value":{"principal":"10000","rate":"5","time":"3","timeUnit":"years","currency":"USD"}},"5_000_at_8_for_6_months":{"summary":"$5,000 at 8% for 6 months","value":{"principal":"5000","rate":"8","time":"6","timeUnit":"months","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_at_5_for_3_years":{"summary":"$10,000 at 5% for 3 years","value":{"tool":"simple-interest-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Principal Amount","value":"$10,000.00"},{"metric":"Annual Interest Rate","value":"5.0%"},{"metric":"Time Period","value":"3 years (3.0000 years)"},{"metric":"Total Interest","value":"$1,500.00"},{"metric":"Total Amount","value":"$11,500.00"}],"schedule":[{"year":"1","interest-this-year":"$500.00","cumulative-interest":"$500.00","balance":"$10,500.00"},{"year":"2","interest-this-year":"$500.00","cumulative-interest":"$1,000.00","balance":"$11,000.00"},{"year":"3","interest-this-year":"$500.00","cumulative-interest":"$1,500.00","balance":"$11,500.00"}]},"credits_used":5,"credits_remaining":null}},"5_000_at_8_for_6_months":{"summary":"$5,000 at 8% for 6 months","value":{"tool":"simple-interest-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Principal Amount","value":"$5,000.00"},{"metric":"Annual Interest Rate","value":"8.0%"},{"metric":"Time Period","value":"6 months (0.5000 years)"},{"metric":"Total Interest","value":"$200.00"},{"metric":"Total Amount","value":"$5,200.00"}],"schedule":[{"year":"1","interest-this-year":"$200.00","cumulative-interest":"$200.00","balance":"$5,200.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"schedule":{"type":"array","description":"Year-by-Year Accrual","items":{"type":"object","properties":{"year":{"type":"string","description":"Year"},"interest-this-year":{"type":"string","description":"Interest This Year"},"cumulative-interest":{"type":"string","description":"Cumulative Interest"},"balance":{"type":"string","description":"Balance"}}},"x-iotools-columns":["year","interest-this-year","cumulative-interest","balance"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/debt-to-equity-ratio-calculator":{"post":{"operationId":"run_debt_to_equity_ratio_calculator","summary":"Debt-to-Equity Ratio Calculator","tags":["Calculators"],"description":"Calculate the debt-to-equity (D/E) ratio from total liabilities and total shareholders' equity. Get the ratio, a leverage rating, the debt/equity capitalization split, and how it compares against typical D/E ranges by industry.\n\n[Try Debt-to-Equity Ratio Calculator in your browser →](https://iotools.cloud/tool/debt-to-equity-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalLiabilities":{"type":"number","description":"Total Liabilities","minimum":0,"maximum":999999999999},"totalEquity":{"type":"number","description":"Total Shareholders' Equity","minimum":0.01,"maximum":999999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["totalLiabilities","totalEquity"]},"examples":{"moderately_leveraged_company":{"summary":"Moderately leveraged company","value":{"totalLiabilities":"500000","totalEquity":"400000","currency":"USD"}},"conservative_balance_sheet":{"summary":"Conservative balance sheet","value":{"totalLiabilities":"100000","totalEquity":"500000","currency":"USD"}},"highly_leveraged_company":{"summary":"Highly leveraged company","value":{"totalLiabilities":"900000","totalEquity":"300000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"moderately_leveraged_company":{"summary":"Moderately leveraged company","value":{"tool":"debt-to-equity-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Liabilities","value":"$500,000.00"},{"metric":"Total Shareholders' Equity","value":"$400,000.00"},{"metric":"Debt-to-Equity Ratio","value":"1.25"},{"metric":"Debt Ratio (Liabilities ÷ Total Capital)","value":"55.6%"},{"metric":"Equity Ratio (Equity ÷ Total Capital)","value":"44.4%"},{"metric":"Leverage Rating","value":"Elevated"}],"benchmarks":[{"industry":"Technology / Software","typical-d-e-range":"0.00 – 0.50","your-ratio":"Above range"},{"industry":"Retail","typical-d-e-range":"0.50 – 1.50","your-ratio":"Within range"},{"industry":"Manufacturing","typical-d-e-range":"1.00 – 2.00","your-ratio":"Within range"},{"industry":"Real Estate","typical-d-e-range":"1.50 – 3.00","your-ratio":"Below range"},{"industry":"Utilities","typical-d-e-range":"1.50 – 3.00","your-ratio":"Below range"}]},"credits_used":5,"credits_remaining":null}},"conservative_balance_sheet":{"summary":"Conservative balance sheet","value":{"tool":"debt-to-equity-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Liabilities","value":"$100,000.00"},{"metric":"Total Shareholders' Equity","value":"$500,000.00"},{"metric":"Debt-to-Equity Ratio","value":"0.20"},{"metric":"Debt Ratio (Liabilities ÷ Total Capital)","value":"16.7%"},{"metric":"Equity Ratio (Equity ÷ Total Capital)","value":"83.3%"},{"metric":"Leverage Rating","value":"Low (Conservative)"}],"benchmarks":[{"industry":"Technology / Software","typical-d-e-range":"0.00 – 0.50","your-ratio":"Within range"},{"industry":"Retail","typical-d-e-range":"0.50 – 1.50","your-ratio":"Below range"},{"industry":"Manufacturing","typical-d-e-range":"1.00 – 2.00","your-ratio":"Below range"},{"industry":"Real Estate","typical-d-e-range":"1.50 – 3.00","your-ratio":"Below range"},{"industry":"Utilities","typical-d-e-range":"1.50 – 3.00","your-ratio":"Below range"}]},"credits_used":5,"credits_remaining":null}},"highly_leveraged_company":{"summary":"Highly leveraged company","value":{"tool":"debt-to-equity-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Liabilities","value":"$900,000.00"},{"metric":"Total Shareholders' Equity","value":"$300,000.00"},{"metric":"Debt-to-Equity Ratio","value":"3.00"},{"metric":"Debt Ratio (Liabilities ÷ Total Capital)","value":"75.0%"},{"metric":"Equity Ratio (Equity ÷ Total Capital)","value":"25.0%"},{"metric":"Leverage Rating","value":"High (Leveraged)"}],"benchmarks":[{"industry":"Technology / Software","typical-d-e-range":"0.00 – 0.50","your-ratio":"Above range"},{"industry":"Retail","typical-d-e-range":"0.50 – 1.50","your-ratio":"Above range"},{"industry":"Manufacturing","typical-d-e-range":"1.00 – 2.00","your-ratio":"Above range"},{"industry":"Real Estate","typical-d-e-range":"1.50 – 3.00","your-ratio":"Within range"},{"industry":"Utilities","typical-d-e-range":"1.50 – 3.00","your-ratio":"Within range"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"D/E Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"benchmarks":{"type":"array","description":"Industry Benchmark Comparison","items":{"type":"object","properties":{"industry":{"type":"string","description":"Industry"},"typical-d-e-range":{"type":"string","description":"Typical D/E Range"},"your-ratio":{"type":"string","description":"Your Ratio"}}},"x-iotools-columns":["industry","typical-d-e-range","your-ratio"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/taylor-series-calculator":{"post":{"operationId":"run_taylor_series_calculator","summary":"Taylor Series Calculator","tags":["Calculators"],"description":"Expand a function f(x) into its Taylor (or Maclaurin) polynomial about any center a, to a chosen degree, with every derivative used to build each coefficient and an optional evaluation at a point against the actual function value.\n\n[Try Taylor Series Calculator in your browser →](https://iotools.cloud/tool/taylor-series-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"f":{"type":"string","description":"f(x)"},"a":{"type":"number","description":"Center a"},"n":{"type":"number","description":"Degree","minimum":1,"maximum":10},"x0":{"type":"number","description":"Evaluate at x₀"}},"required":["f","a"]},"examples":{"maclaurin_series_of_sin_x_degree_5_evaluated_at_x_1":{"summary":"Maclaurin series of sin(x), degree 5, evaluated at x = 1","value":{"f":"sin(x)","a":"0","n":"5","x0":"1"}},"maclaurin_series_of_exp_x_degree_4_evaluated_at_x_1":{"summary":"Maclaurin series of exp(x), degree 4, evaluated at x = 1","value":{"f":"exp(x)","a":"0","n":"4","x0":"1"}},"taylor_series_of_1_x_about_a_1_degree_3_symbolic_only":{"summary":"Taylor series of 1/x about a = 1, degree 3, symbolic only","value":{"f":"1/x","a":"1","n":"3","x0":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"maclaurin_series_of_sin_x_degree_5_evaluated_at_x_1":{"summary":"Maclaurin series of sin(x), degree 5, evaluated at x = 1","value":{"tool":"taylor-series-calculator","tool_version":"1.0.2","outputs":{"series":"x - 0.166667·x^3 + 0.00833333·x^5","approxValue":"0.841667","actualValue":"0.841471","error":"0.000195682","steps":"f(x) = sin(x), center a = 0, degree 5\nf(x) = sin(x)  →  value at a = 0, c0 = 0\nf^(1)(x) = cos(x)  →  value at a = 1, c1 = 1\nf^(2)(x) = -sin(x)  →  value at a = 0, c2 = 0\nf^(3)(x) = -cos(x)  →  value at a = -1, c3 = -0.166667\nf^(4)(x) = sin(x)  →  value at a = 0, c4 = 0\nf^(5)(x) = cos(x)  →  value at a = 1, c5 = 0.00833333\nTaylor polynomial: P(x) = x - 0.166667·x^3 + 0.00833333·x^5\nAt x = 1: P(x) ≈ 0.841667, actual f(x) = 0.841471, |error| = 0.000195682"},"credits_used":5,"credits_remaining":null}},"maclaurin_series_of_exp_x_degree_4_evaluated_at_x_1":{"summary":"Maclaurin series of exp(x), degree 4, evaluated at x = 1","value":{"tool":"taylor-series-calculator","tool_version":"1.0.2","outputs":{"series":"1 + x + 0.5·x^2 + 0.166667·x^3 + 0.0416667·x^4","approxValue":"2.70833","actualValue":"2.71828","error":"0.0099485","steps":"f(x) = exp(x), center a = 0, degree 4\nf(x) = exp(x)  →  value at a = 1, c0 = 1\nf^(1)(x) = exp(x)  →  value at a = 1, c1 = 1\nf^(2)(x) = exp(x)  →  value at a = 1, c2 = 0.5\nf^(3)(x) = exp(x)  →  value at a = 1, c3 = 0.166667\nf^(4)(x) = exp(x)  →  value at a = 1, c4 = 0.0416667\nTaylor polynomial: P(x) = 1 + x + 0.5·x^2 + 0.166667·x^3 + 0.0416667·x^4\nAt x = 1: P(x) ≈ 2.70833, actual f(x) = 2.71828, |error| = 0.0099485"},"credits_used":5,"credits_remaining":null}},"taylor_series_of_1_x_about_a_1_degree_3_symbolic_only":{"summary":"Taylor series of 1/x about a = 1, degree 3, symbolic only","value":{"tool":"taylor-series-calculator","tool_version":"1.0.2","outputs":{"series":"1 - (x - 1) + (x - 1)^2 - (x - 1)^3","approxValue":"","actualValue":"","error":"","steps":"f(x) = 1/x, center a = 1, degree 3\nf(x) = 1/x  →  value at a = 1, c0 = 1\nf^(1)(x) = -(1 / x ^ 2)  →  value at a = -1, c1 = -1\nf^(2)(x) = 2 / x ^ 3  →  value at a = 2, c2 = 1\nf^(3)(x) = -(6 / x ^ 4)  →  value at a = -6, c3 = -1\nTaylor polynomial: P(x) = 1 - (x - 1) + (x - 1)^2 - (x - 1)^3"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"series":{"type":"string","description":"Taylor Polynomial"},"approxValue":{"type":"string","description":"P(x₀) Approximation"},"actualValue":{"type":"string","description":"Actual f(x₀)"},"error":{"type":"string","description":"|Error|"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/thermal-expansion-calculator":{"post":{"operationId":"run_thermal_expansion_calculator","summary":"Thermal Expansion Calculator","tags":["Calculators"],"description":"Calculate how much a part grows or shrinks with temperature — change in length, final length, linear strain and volumetric change — from a built-in library of 36 material expansion coefficients, in Celsius or Fahrenheit.\n\n[Try Thermal Expansion Calculator in your browser →](https://iotools.cloud/tool/thermal-expansion-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"material":{"enum":["aluminium","brass","bronze","copper","carbon-steel","stainless-304","stainless-316","cast-iron","titanium","nickel","inconel-625","invar-36","zinc","lead","magnesium","tin","gold","silver","platinum","tungsten","glass-soda-lime","glass-borosilicate","quartz-fused","concrete","brick","wood-along-grain","silicon","diamond","ice","pvc","polycarbonate","abs","acrylic","nylon","hdpe","ptfe","custom"],"description":"Material"},"coefficient":{"type":"number","description":"Custom coefficient α (× 10⁻⁶ per °C)","minimum":0},"length":{"type":"number","description":"Original length L₀","minimum":0},"lengthUnit":{"enum":["mm","cm","m","in","ft"],"description":"Length unit"},"tempUnit":{"enum":["c","f"],"description":"Temperature unit"},"initialTemp":{"type":"number","description":"Initial temperature"},"finalTemp":{"type":"number","description":"Final temperature"}},"required":[]},"examples":{"1_m_mild_steel_bar_heated_from_20_c_to_120_c":{"summary":"1 m mild steel bar heated from 20 °C to 120 °C","value":{"material":"carbon-steel","coefficient":"","length":"1000","lengthUnit":"mm","tempUnit":"c","initialTemp":"20","finalTemp":"120"}},"20_ft_aluminium_rail_70_f_to_110_f":{"summary":"20 ft aluminium rail, 70 °F to 110 °F","value":{"material":"aluminium","coefficient":"","length":"20","lengthUnit":"ft","tempUnit":"f","initialTemp":"70","finalTemp":"110"}},"500_mm_ptfe_seal_cooled_from_25_c_to_40_c_contraction":{"summary":"500 mm PTFE seal cooled from 25 °C to -40 °C (contraction)","value":{"material":"ptfe","coefficient":"","length":"500","lengthUnit":"mm","tempUnit":"c","initialTemp":"25","finalTemp":"-40"}},"custom_coefficient_on_a_2_m_span":{"summary":"Custom coefficient on a 2 m span","value":{"material":"custom","coefficient":"9.5","length":"2","lengthUnit":"m","tempUnit":"c","initialTemp":"15","finalTemp":"85"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"1_m_mild_steel_bar_heated_from_20_c_to_120_c":{"summary":"1 m mild steel bar heated from 20 °C to 120 °C","value":{"tool":"thermal-expansion-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Temperature change ΔT","value":"100 °C"},{"metric":"Coefficient α used","value":"12 × 10⁻⁶ /°C — Carbon steel (mild)"},{"metric":"Change in length ΔL","value":"1.2 mm"},{"metric":"ΔL in millimetres","value":"1.2 mm"},{"metric":"ΔL in inches","value":"0.047244 in"},{"metric":"Final length","value":"1001.2 mm"},{"metric":"Linear strain (ΔL / L₀)","value":"1.2 mm/m (1200 µm/m)"},{"metric":"Volumetric change (≈ 3αΔT)","value":"0.36 %"}]},"credits_used":5,"credits_remaining":null}},"20_ft_aluminium_rail_70_f_to_110_f":{"summary":"20 ft aluminium rail, 70 °F to 110 °F","value":{"tool":"thermal-expansion-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Temperature change ΔT","value":"40 °F (22.22 °C)"},{"metric":"Coefficient α used","value":"23.1 × 10⁻⁶ /°C — Aluminium"},{"metric":"Change in length ΔL","value":"0.010267 ft"},{"metric":"ΔL in millimetres","value":"3.1293 mm"},{"metric":"ΔL in inches","value":"0.1232 in"},{"metric":"Final length","value":"20.0103 ft"},{"metric":"Linear strain (ΔL / L₀)","value":"0.513333 mm/m (513.3333 µm/m)"},{"metric":"Volumetric change (≈ 3αΔT)","value":"0.154 %"}]},"credits_used":5,"credits_remaining":null}},"500_mm_ptfe_seal_cooled_from_25_c_to_40_c_contraction":{"summary":"500 mm PTFE seal cooled from 25 °C to -40 °C (contraction)","value":{"tool":"thermal-expansion-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Temperature change ΔT","value":"-65 °C"},{"metric":"Coefficient α used","value":"135 × 10⁻⁶ /°C — PTFE (Teflon)"},{"metric":"Change in length ΔL","value":"-4.3875 mm"},{"metric":"ΔL in millimetres","value":"-4.3875 mm"},{"metric":"ΔL in inches","value":"-0.172736 in"},{"metric":"Final length","value":"495.6125 mm"},{"metric":"Linear strain (ΔL / L₀)","value":"-8.775 mm/m (-8775 µm/m)"},{"metric":"Volumetric change (≈ 3αΔT)","value":"-2.6325 %"}]},"credits_used":5,"credits_remaining":null}},"custom_coefficient_on_a_2_m_span":{"summary":"Custom coefficient on a 2 m span","value":{"tool":"thermal-expansion-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Temperature change ΔT","value":"70 °C"},{"metric":"Coefficient α used","value":"9.5 × 10⁻⁶ /°C — Custom"},{"metric":"Change in length ΔL","value":"0.00133 m"},{"metric":"ΔL in millimetres","value":"1.33 mm"},{"metric":"ΔL in inches","value":"0.052362 in"},{"metric":"Final length","value":"2.0013 m"},{"metric":"Linear strain (ΔL / L₀)","value":"0.665 mm/m (665 µm/m)"},{"metric":"Volumetric change (≈ 3αΔT)","value":"0.1995 %"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/semver-version-calculator":{"post":{"operationId":"run_semver_version_calculator","summary":"SemVer Version Calculator","tags":["Calculators"],"description":"Validate, compare, increment, range-test, and sort Semantic Versioning (SemVer 2.0.0) version strings. Handles prerelease precedence, build metadata, and npm-style ranges (^, ~, x, hyphen, ||).\n\n[Try SemVer Version Calculator in your browser →](https://iotools.cloud/tool/semver-version-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"semverMode":{"enum":["validate","compare","satisfies","increment","sort"],"description":"Operation"},"semverVersionA":{"type":"string","description":"Version A"},"semverVersionB":{"type":"string","description":"Version B"},"semverRange":{"type":"string","description":"Range"},"semverIncrementType":{"enum":["patch","minor","major","prepatch","preminor","premajor","prerelease"],"description":"Increment"},"semverPrereleaseId":{"type":"string","description":"Prerelease ID"},"semverList":{"type":"string","description":"Versions"},"semverSortDirection":{"enum":["asc","desc"],"description":"Sort Order"}},"required":[]},"examples":{"compare_1_2_3_with_1_10_0":{"summary":"Compare 1.2.3 with 1.10.0","value":{"semverMode":"compare","semverVersionA":"1.2.3","semverVersionB":"1.10.0"}},"validate_2_0_0_beta_1_build_42":{"summary":"Validate 2.0.0-beta.1+build.42","value":{"semverMode":"validate","semverVersionA":"2.0.0-beta.1+build.42"}},"increment_1_2_3_minor":{"summary":"Increment 1.2.3 (minor)","value":{"semverMode":"increment","semverVersionA":"1.2.3","semverIncrementType":"minor","semverPrereleaseId":""}},"test_1_2_3_against_1_0_0":{"summary":"Test 1.2.3 against ^1.0.0","value":{"semverMode":"satisfies","semverVersionA":"1.2.3","semverRange":"^1.0.0"}},"sort_a_list_ascending":{"summary":"Sort a list (ascending)","value":{"semverMode":"sort","semverList":"1.2.3\n1.10.0\n1.2.10\n2.0.0-alpha.1\n2.0.0-beta\n2.0.0\n1.2.3+build.5","semverSortDirection":"asc"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compare_1_2_3_with_1_10_0":{"summary":"Compare 1.2.3 with 1.10.0","value":{"tool":"semver-version-calculator","tool_version":"1.0.2","outputs":{"semverSummary":"1.2.3 < 1.10.0","semverOutput":"1.2.3 < 1.10.0\nComparison result: -1 (A is older)\n\nVersion A\n  Canonical: 1.2.3\n  Major: 1\n  Minor: 2\n  Patch: 3\n  Prerelease: (none)\n  Build metadata: (none)\n\nVersion B\n  Canonical: 1.10.0\n  Major: 1\n  Minor: 10\n  Patch: 0\n  Prerelease: (none)\n  Build metadata: (none)"},"credits_used":5,"credits_remaining":null}},"validate_2_0_0_beta_1_build_42":{"summary":"Validate 2.0.0-beta.1+build.42","value":{"tool":"semver-version-calculator","tool_version":"1.0.2","outputs":{"semverSummary":"Valid SemVer 2.0.0","semverOutput":"Canonical: 2.0.0-beta.1+build.42\nMajor: 2\nMinor: 0\nPatch: 0\nPrerelease: beta.1\nBuild metadata: build.42"},"credits_used":5,"credits_remaining":null}},"increment_1_2_3_minor":{"summary":"Increment 1.2.3 (minor)","value":{"tool":"semver-version-calculator","tool_version":"1.0.2","outputs":{"semverSummary":"1.2.3 → 1.3.0","semverOutput":"1.2.3 → 1.3.0\nBump: minor\n\nBefore\n  Canonical: 1.2.3\n  Major: 1\n  Minor: 2\n  Patch: 3\n  Prerelease: (none)\n  Build metadata: (none)\n\nAfter\n  Canonical: 1.3.0\n  Major: 1\n  Minor: 3\n  Patch: 0\n  Prerelease: (none)\n  Build metadata: (none)"},"credits_used":5,"credits_remaining":null}},"test_1_2_3_against_1_0_0":{"summary":"Test 1.2.3 against ^1.0.0","value":{"tool":"semver-version-calculator","tool_version":"1.0.2","outputs":{"semverSummary":"true — satisfies range","semverOutput":"1.2.3 satisfies ^1.0.0\nNormalized range: >=1.0.0 <2.0.0\n\nOR-set 1: match — >=1.0.0 <2.0.0\n\nNote: a pre-release version only satisfies a comparator that pins the same major.minor.patch and itself carries a pre-release tag (npm semver convention)."},"credits_used":5,"credits_remaining":null}},"sort_a_list_ascending":{"summary":"Sort a list (ascending)","value":{"tool":"semver-version-calculator","tool_version":"1.0.2","outputs":{"semverSummary":"7 valid, 0 invalid — ascending","semverOutput":"1.2.3\n1.2.3+build.5\n1.2.10\n1.10.0\n2.0.0-alpha.1\n2.0.0-beta\n2.0.0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"semverSummary":{"type":"string","description":"Summary"},"semverOutput":{"type":"string","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/server-capacity-calculator":{"post":{"operationId":"run_server_capacity_calculator","summary":"Server Request Capacity Calculator (Little's Law)","tags":["Calculators"],"description":"Solve Little's Law (L = λW) for arrival rate, response time, or concurrency — enter any two and calculate the third. Also estimates per-instance utilization, instances needed for a target throughput, and utilization at other traffic levels.\n\n[Try Server Request Capacity Calculator (Little's Law) in your browser →](https://iotools.cloud/tool/server-capacity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"knownPair":{"enum":["rw","rc","wc"],"description":"Known Values"},"arrivalRate":{"type":"number","description":"Arrival Rate (λ)","minimum":0},"responseTime":{"type":"number","description":"Avg Response Time (W)","minimum":0},"concurrency":{"type":"number","description":"Concurrency (L)","minimum":0},"perInstanceCapacity":{"type":"number","description":"Per-Instance Capacity (μ)","minimum":0.0001},"targetThroughput":{"type":"number","description":"Target Throughput (req/s)","minimum":0}},"required":["perInstanceCapacity"]},"examples":{"arrival_rate_response_time_known_50_req_s_200ms":{"summary":"Arrival Rate & Response Time known (50 req/s, 200ms)","value":{"knownPair":"rw","arrivalRate":"50","responseTime":"200","concurrency":"10","perInstanceCapacity":"20","targetThroughput":"75"}},"arrival_rate_concurrency_known_50_req_s_10_in_flight":{"summary":"Arrival Rate & Concurrency known (50 req/s, 10 in-flight)","value":{"knownPair":"rc","arrivalRate":"50","responseTime":"200","concurrency":"10","perInstanceCapacity":"20","targetThroughput":"75"}},"response_time_concurrency_known_200ms_10_in_flight":{"summary":"Response Time & Concurrency known (200ms, 10 in-flight)","value":{"knownPair":"wc","arrivalRate":"50","responseTime":"200","concurrency":"10","perInstanceCapacity":"20","targetThroughput":"75"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"arrival_rate_response_time_known_50_req_s_200ms":{"summary":"Arrival Rate & Response Time known (50 req/s, 200ms)","value":{"tool":"server-capacity-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Arrival Rate (λ)","value":"50 req/s"},{"metric":"Avg Response Time (W)","value":"200 ms"},{"metric":"Concurrency (L)","value":"10 in-flight requests"},{"metric":"Utilization at current load","value":"250%"},{"metric":"Instances needed at current load","value":"3"}],"scalingTable":[{"traffic-level":"50% of target","throughput-req-s":"37.5","utilization":"46.875%"},{"traffic-level":"75% of target","throughput-req-s":"56.25","utilization":"70.3125%"},{"traffic-level":"100% of target (baseline)","throughput-req-s":"75","utilization":"93.75%"},{"traffic-level":"125% of target","throughput-req-s":"93.75","utilization":"117.188%"},{"traffic-level":"150% of target","throughput-req-s":"112.5","utilization":"140.625%"},{"traffic-level":"200% of target","throughput-req-s":"150","utilization":"187.5%"}],"formulas":"Known: Arrival Rate (λ) & Response Time (W)\nSolved: Concurrency (L)\n\nLittle's Law:\n  L = λ × W\n  L = 50 req/s × 0.2 s = 10 in-flight requests\n\nUtilization (current load):\n  Utilization = λ ÷ μ\n  Utilization = 50 ÷ 20 = 2.5 (250%)\n  Instances = ceil(Utilization) = ceil(2.5) = 3\n\nInstances needed for target throughput (75 req/s):\n  Instances = ceil(target ÷ μ) = ceil(75 ÷ 20) = 4\n\nScaling table assumes 4 instance(s) — sized for the target throughput above — and shows how full the fleet gets at other traffic levels."},"credits_used":5,"credits_remaining":null}},"arrival_rate_concurrency_known_50_req_s_10_in_flight":{"summary":"Arrival Rate & Concurrency known (50 req/s, 10 in-flight)","value":{"tool":"server-capacity-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Arrival Rate (λ)","value":"50 req/s"},{"metric":"Avg Response Time (W)","value":"200 ms"},{"metric":"Concurrency (L)","value":"10 in-flight requests"},{"metric":"Utilization at current load","value":"250%"},{"metric":"Instances needed at current load","value":"3"}],"scalingTable":[{"traffic-level":"50% of target","throughput-req-s":"37.5","utilization":"46.875%"},{"traffic-level":"75% of target","throughput-req-s":"56.25","utilization":"70.3125%"},{"traffic-level":"100% of target (baseline)","throughput-req-s":"75","utilization":"93.75%"},{"traffic-level":"125% of target","throughput-req-s":"93.75","utilization":"117.188%"},{"traffic-level":"150% of target","throughput-req-s":"112.5","utilization":"140.625%"},{"traffic-level":"200% of target","throughput-req-s":"150","utilization":"187.5%"}],"formulas":"Known: Arrival Rate (λ) & Concurrency (L)\nSolved: Response Time (W)\n\nLittle's Law:\n  W = L ÷ λ\n  W = 10 ÷ 50 req/s = 0.2 s = 200 ms\n\nUtilization (current load):\n  Utilization = λ ÷ μ\n  Utilization = 50 ÷ 20 = 2.5 (250%)\n  Instances = ceil(Utilization) = ceil(2.5) = 3\n\nInstances needed for target throughput (75 req/s):\n  Instances = ceil(target ÷ μ) = ceil(75 ÷ 20) = 4\n\nScaling table assumes 4 instance(s) — sized for the target throughput above — and shows how full the fleet gets at other traffic levels."},"credits_used":5,"credits_remaining":null}},"response_time_concurrency_known_200ms_10_in_flight":{"summary":"Response Time & Concurrency known (200ms, 10 in-flight)","value":{"tool":"server-capacity-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"metric":"Arrival Rate (λ)","value":"50 req/s"},{"metric":"Avg Response Time (W)","value":"200 ms"},{"metric":"Concurrency (L)","value":"10 in-flight requests"},{"metric":"Utilization at current load","value":"250%"},{"metric":"Instances needed at current load","value":"3"}],"scalingTable":[{"traffic-level":"50% of target","throughput-req-s":"37.5","utilization":"46.875%"},{"traffic-level":"75% of target","throughput-req-s":"56.25","utilization":"70.3125%"},{"traffic-level":"100% of target (baseline)","throughput-req-s":"75","utilization":"93.75%"},{"traffic-level":"125% of target","throughput-req-s":"93.75","utilization":"117.188%"},{"traffic-level":"150% of target","throughput-req-s":"112.5","utilization":"140.625%"},{"traffic-level":"200% of target","throughput-req-s":"150","utilization":"187.5%"}],"formulas":"Known: Response Time (W) & Concurrency (L)\nSolved: Arrival Rate (λ)\n\nLittle's Law:\n  λ = L ÷ W\n  λ = 10 ÷ 0.2 s = 50 req/s\n\nUtilization (current load):\n  Utilization = λ ÷ μ\n  Utilization = 50 ÷ 20 = 2.5 (250%)\n  Instances = ceil(Utilization) = ceil(2.5) = 3\n\nInstances needed for target throughput (75 req/s):\n  Instances = ceil(target ÷ μ) = ceil(75 ÷ 20) = 4\n\nScaling table assumes 4 instance(s) — sized for the target throughput above — and shows how full the fleet gets at other traffic levels."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Little's Law Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"scalingTable":{"type":"array","description":"Utilization at Other Traffic Levels","items":{"type":"object","properties":{"traffic-level":{"type":"string","description":"Traffic Level"},"throughput-req-s":{"type":"string","description":"Throughput (req/s)"},"utilization":{"type":"string","description":"Utilization"}}},"x-iotools-columns":["traffic-level","throughput-req-s","utilization"]},"formulas":{"type":"string","description":"Formulas & Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sewing-fabric-yardage-calculator":{"post":{"operationId":"run_sewing_fabric_yardage_calculator","summary":"Sewing Fabric Yardage Calculator","tags":["Calculators"],"description":"Estimate how much fabric to buy for a garment or quilt from your measurements, the bolt width and a safety margin. Supports skirts, shirts, dresses, trousers and quilt blocks in imperial or metric, with a full cutting breakdown.\n\n[Try Sewing Fabric Yardage Calculator in your browser →](https://iotools.cloud/tool/sewing-fabric-yardage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"garmentType":{"enum":["skirt","shirt","dress","pants","quilt"],"description":"Garment"},"unitSystem":{"enum":["imperial","metric"],"description":"Units"},"fabricWidthImperial":{"enum":["45","54","60"],"description":"Fabric width"},"fabricWidthMetric":{"enum":["115","137","150"],"description":"Fabric width"},"bust":{"type":"number","description":"Bust / chest","minimum":1},"hip":{"type":"number","description":"Hip","minimum":1},"garmentLength":{"type":"number","description":"Length","minimum":1},"sleeveLength":{"type":"number","description":"Sleeve length","minimum":0},"blockSize":{"type":"number","description":"Finished block size","minimum":1},"blockCount":{"type":"number","description":"Number of blocks","minimum":1},"seamAllowance":{"type":"number","description":"Seam allowance","minimum":0},"patternRepeat":{"type":"number","description":"Pattern repeat","minimum":0},"safetyMargin":{"type":"number","description":"Extra buffer %","minimum":0,"maximum":25}},"required":[]},"examples":{"a_line_skirt_60in_bolt":{"summary":"A-line skirt, 60in bolt","value":{"garmentType":"skirt","unitSystem":"imperial","fabricWidthImperial":"60","hip":"40","garmentLength":"24","patternRepeat":"0","safetyMargin":"10"}},"long_sleeve_shirt_54in_bolt":{"summary":"Long-sleeve shirt, 54in bolt","value":{"garmentType":"shirt","unitSystem":"imperial","fabricWidthImperial":"54","bust":"38","garmentLength":"28","sleeveLength":"24","patternRepeat":"0","safetyMargin":"10"}},"30_quilt_blocks_45in_bolt":{"summary":"30 quilt blocks, 45in bolt","value":{"garmentType":"quilt","unitSystem":"imperial","fabricWidthImperial":"45","blockSize":"12","blockCount":"30","seamAllowance":"0.25","patternRepeat":"0","safetyMargin":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"a_line_skirt_60in_bolt":{"summary":"A-line skirt, 60in bolt","value":{"tool":"sewing-fabric-yardage-calculator","tool_version":"1.0.2","outputs":{"yards":"1 yd","meters":"1 m","breakdown":[{"detail":"Project","value":"A-line skirt"},{"detail":"Fabric width","value":"60 in (152 cm)"},{"detail":"Usable width (after selvage)","value":"58 in"},{"detail":"Lay length per panel","value":"28 in"},{"detail":"Number of panels","value":"1"},{"detail":"Extras (sleeves / facings / waistband)","value":"4 in"},{"detail":"Buffer (10%)","value":"3.2 in"},{"detail":"Total fabric length","value":"35.2 in"},{"detail":"Rounded up to","value":"1 yd  ·  1 m"}]},"credits_used":5,"credits_remaining":null}},"long_sleeve_shirt_54in_bolt":{"summary":"Long-sleeve shirt, 54in bolt","value":{"tool":"sewing-fabric-yardage-calculator","tool_version":"1.0.2","outputs":{"yards":"2 yd","meters":"1.75 m","breakdown":[{"detail":"Project","value":"Shirt / blouse"},{"detail":"Fabric width","value":"54 in (137 cm)"},{"detail":"Usable width (after selvage)","value":"52 in"},{"detail":"Lay length per panel","value":"30 in"},{"detail":"Number of panels","value":"1"},{"detail":"Extras (sleeves / facings / waistband)","value":"32 in"},{"detail":"Buffer (10%)","value":"6.2 in"},{"detail":"Total fabric length","value":"68.2 in"},{"detail":"Rounded up to","value":"2 yd  ·  1.75 m"}]},"credits_used":5,"credits_remaining":null}},"30_quilt_blocks_45in_bolt":{"summary":"30 quilt blocks, 45in bolt","value":{"tool":"sewing-fabric-yardage-calculator","tool_version":"1.0.2","outputs":{"yards":"4 yd","meters":"3.5 m","breakdown":[{"detail":"Project","value":"Quilt blocks"},{"detail":"Fabric width","value":"45 in (114 cm)"},{"detail":"Usable width (after selvage)","value":"43 in"},{"detail":"Lay length per panel","value":"12.5 in"},{"detail":"Number of panels","value":"10"},{"detail":"Buffer (10%)","value":"12.5 in"},{"detail":"Total fabric length","value":"137.5 in"},{"detail":"Rounded up to","value":"4 yd  ·  3.5 m"},{"detail":"Cut block size","value":"12.5 in"},{"detail":"Blocks per row","value":"3"},{"detail":"Rows needed","value":"10"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"yards":{"type":"string","description":"Buy (yards)"},"meters":{"type":"string","description":"Buy (meters)"},"breakdown":{"type":"array","description":"Cutting breakdown","items":{"type":"object","properties":{"detail":{"type":"string","description":"Detail"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["detail","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/shower-cost-calculator":{"post":{"operationId":"run_shower_cost_calculator","summary":"Shower Cost Calculator","tags":["Calculators"],"description":"Estimate the water use, energy use, and cost of a shower (or a household's worth of showers) from flow rate, duration, water temperature rise, and your local water/energy rates — with a total and a per-shower cost breakdown.\n\n[Try Shower Cost Calculator in your browser →](https://iotools.cloud/tool/shower-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"flowRate":{"type":"number","description":"Shower Flow Rate (L/min)","minimum":0.1},"duration":{"type":"number","description":"Duration per Shower (min)","minimum":0.1},"showers":{"type":"number","description":"Number of Showers","minimum":1,"maximum":500},"temperatureRise":{"type":"number","description":"Water Temperature Rise (°C)","minimum":0,"maximum":100},"waterCost":{"type":"number","description":"Water Cost (per 1,000 L)","minimum":0},"energyCost":{"type":"number","description":"Energy Cost (per kWh)","minimum":0}},"required":[]},"examples":{"default_1_shower_9_l_min_8_min_30_c_rise":{"summary":"Default: 1 shower, 9 L/min, 8 min, 30°C rise","value":{"flowRate":"9","duration":"8","showers":"1","temperatureRise":"30","waterCost":"2.5","energyCost":"0.16"}},"household_30_showers_7_l_min_10_min_35_c_rise":{"summary":"Household: 30 showers, 7 L/min, 10 min, 35°C rise","value":{"flowRate":"7","duration":"10","showers":"30","temperatureRise":"35","waterCost":"2.8","energyCost":"0.18"}},"eco_shower_low_flow_short_duration_cool_rise":{"summary":"Eco shower: low flow, short duration, cool rise","value":{"flowRate":"6","duration":"5","showers":"1","temperatureRise":"25","waterCost":"3.0","energyCost":"0.20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_1_shower_9_l_min_8_min_30_c_rise":{"summary":"Default: 1 shower, 9 L/min, 8 min, 30°C rise","value":{"tool":"shower-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Water Used","value":"72.0 L"},{"metric":"Energy Used","value":"2.51 kWh"},{"metric":"Water Cost","value":"$0.18"},{"metric":"Energy Cost","value":"$0.40"},{"metric":"Total Cost","value":"$0.58"},{"metric":"Cost per Shower","value":"$0.58"}]},"credits_used":5,"credits_remaining":null}},"household_30_showers_7_l_min_10_min_35_c_rise":{"summary":"Household: 30 showers, 7 L/min, 10 min, 35°C rise","value":{"tool":"shower-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Water Used","value":"2100.0 L"},{"metric":"Energy Used","value":"85.46 kWh"},{"metric":"Water Cost","value":"$5.88"},{"metric":"Energy Cost","value":"$15.38"},{"metric":"Total Cost","value":"$21.26"},{"metric":"Cost per Shower","value":"$0.71"}]},"credits_used":5,"credits_remaining":null}},"eco_shower_low_flow_short_duration_cool_rise":{"summary":"Eco shower: low flow, short duration, cool rise","value":{"tool":"shower-cost-calculator","tool_version":"1.0.2","outputs":{"summaryTable":[{"metric":"Water Used","value":"30.0 L"},{"metric":"Energy Used","value":"0.87 kWh"},{"metric":"Water Cost","value":"$0.09"},{"metric":"Energy Cost","value":"$0.17"},{"metric":"Total Cost","value":"$0.26"},{"metric":"Cost per Shower","value":"$0.26"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summaryTable":{"type":"array","description":"Water, Energy & Cost","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/side-hustle-income-tax-calculator":{"post":{"operationId":"run_side_hustle_income_tax_calculator","summary":"Side Hustle Income Tax Calculator","tags":["Calculators"],"description":"Estimate the US federal tax on your side hustle, gig, or 1099 income — self-employment tax (Social Security + Medicare), the 50% SE-tax deduction, marginal income tax, effective rate, and your suggested quarterly estimated payment.\n\n[Try Side Hustle Income Tax Calculator in your browser →](https://iotools.cloud/tool/side-hustle-income-tax-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filingStatus":{"enum":["single","mfj","mfs","hoh"],"description":"Filing Status"},"grossIncome":{"type":"number","description":"Side Hustle Income ($)","minimum":0,"maximum":99999999},"expenses":{"type":"number","description":"Business Expenses ($)","minimum":0,"maximum":99999999},"otherIncome":{"type":"number","description":"Other Income ($)","minimum":0,"maximum":99999999}},"required":["grossIncome"]},"examples":{"50_000_side_hustle_income_5_000_expenses_single":{"summary":"$50,000 side hustle income, $5,000 expenses (single)","value":{"filingStatus":"single","grossIncome":"50000","expenses":"5000","otherIncome":"0"}},"3_000_side_hustle_income_no_expenses_single":{"summary":"$3,000 side hustle income, no expenses (single)","value":{"filingStatus":"single","grossIncome":"3000","expenses":"0","otherIncome":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"50_000_side_hustle_income_5_000_expenses_single":{"summary":"$50,000 side hustle income, $5,000 expenses (single)","value":{"tool":"side-hustle-income-tax-calculator","tool_version":"1.0.2","outputs":{"taxBreakdown":[{"description":"Net Self-Employment Income","amount":"$45,000.00"},{"description":"Self-Employment Tax","amount":"$6,358.30"},{"description":"Social Security (12.4%)","amount":"$5,153.13"},{"description":"Medicare (2.9%)","amount":"$1,205.17"},{"description":"Additional Medicare (0.9%)","amount":"$0.00"},{"description":"SE Tax Deduction (50%)","amount":"-$3,179.15"},{"description":"Estimated Federal Income Tax","amount":"$2,980.00"},{"description":"Total Estimated Tax","amount":"$9,338.30"},{"description":"Effective Tax Rate","amount":"20.8%"},{"description":"Quarterly Payment","amount":"$2,334.57"}],"quarterlyAdvice":"You should make quarterly estimated tax payments. Your estimated annual tax of $9,338.30 exceeds $1,000. The IRS requires estimated payments to avoid underpayment penalties. Pay $2,334.57 per quarter (due April 15, June 15, September 15, and January 15 of the following year)."},"credits_used":5,"credits_remaining":null}},"3_000_side_hustle_income_no_expenses_single":{"summary":"$3,000 side hustle income, no expenses (single)","value":{"tool":"side-hustle-income-tax-calculator","tool_version":"1.0.2","outputs":{"taxBreakdown":[{"description":"Net Self-Employment Income","amount":"$3,000.00"},{"description":"Self-Employment Tax","amount":"$423.89"},{"description":"Social Security (12.4%)","amount":"$343.54"},{"description":"Medicare (2.9%)","amount":"$80.34"},{"description":"Additional Medicare (0.9%)","amount":"$0.00"},{"description":"SE Tax Deduction (50%)","amount":"-$211.94"},{"description":"Estimated Federal Income Tax","amount":"$0.00"},{"description":"Total Estimated Tax","amount":"$423.89"},{"description":"Effective Tax Rate","amount":"14.1%"},{"description":"Quarterly Payment","amount":"$105.97"}],"quarterlyAdvice":"Quarterly payments may not be required. Your estimated annual tax of $423.89 is under $1,000. You may be able to pay when you file your annual return, but setting aside $105.97 per quarter is still recommended."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"taxBreakdown":{"type":"array","description":"Estimated Tax Breakdown","items":{"type":"object","properties":{"description":{"type":"string","description":"Description"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["description","amount"]},"quarterlyAdvice":{"type":"string","description":"Quarterly Estimated Payments"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/signal-attenuation-db-calculator":{"post":{"operationId":"run_signal_attenuation_db_calculator","summary":"Signal Attenuation dB Calculator","tags":["Calculators"],"description":"Calculate signal attenuation or gain in decibels from an input/output power or voltage pair — supports linear power units (mW/W/µW), direct dBm readings, and voltage ratios, not just a single power-ratio mode.\n\n[Try Signal Attenuation dB Calculator in your browser →](https://iotools.cloud/tool/signal-attenuation-db-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"ratioType":{"enum":["power","voltage"],"description":"Ratio Type"},"inputFormat":{"enum":["linear","dbm"],"description":"Input Format"},"powerUnit":{"enum":["mw","w","uw"],"description":"Power Unit"},"powerIn":{"type":"number","description":"Input Power","minimum":0.000001},"powerOut":{"type":"number","description":"Output Power","minimum":0.000001},"dbmIn":{"type":"number","description":"Input Power (dBm)"},"dbmOut":{"type":"number","description":"Output Power (dBm)"},"voltageUnit":{"enum":["v","mv","uv"],"description":"Voltage Unit"},"voltageIn":{"type":"number","description":"Input Voltage","minimum":0.000001},"voltageOut":{"type":"number","description":"Output Voltage","minimum":0.000001}},"required":[]},"examples":{"10_mw_5_mw_power_linear":{"summary":"10 mW → 5 mW (power, linear)","value":{"ratioType":"power","inputFormat":"linear","powerUnit":"mw","powerIn":"10","powerOut":"5"}},"20_dbm_17_dbm":{"summary":"20 dBm → 17 dBm","value":{"ratioType":"power","inputFormat":"dbm","dbmIn":"20","dbmOut":"17"}},"10_v_5_v_voltage":{"summary":"10 V → 5 V (voltage)","value":{"ratioType":"voltage","voltageUnit":"v","voltageIn":"10","voltageOut":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_mw_5_mw_power_linear":{"summary":"10 mW → 5 mW (power, linear)","value":{"tool":"signal-attenuation-db-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Gain / Attenuation","value":"-3.01 dB (Attenuation (loss))"},{"metric":"Output/Input Ratio","value":"0.5"},{"metric":"Power Loss","value":"50 % loss"},{"metric":"Formula Used","value":"dB = 10 × log₁₀(Pout ÷ Pin) = 10 × log₁₀(5 ÷ 10) = -3.01 dB"}]},"credits_used":5,"credits_remaining":null}},"20_dbm_17_dbm":{"summary":"20 dBm → 17 dBm","value":{"tool":"signal-attenuation-db-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Gain / Attenuation","value":"-3 dB (Attenuation (loss))"},{"metric":"Output/Input Ratio","value":"0.5012"},{"metric":"Power Loss","value":"49.88 % loss"},{"metric":"Formula Used","value":"dB = Pout(dBm) − Pin(dBm) = 17 − 20 = -3 dB"}]},"credits_used":5,"credits_remaining":null}},"10_v_5_v_voltage":{"summary":"10 V → 5 V (voltage)","value":{"tool":"signal-attenuation-db-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Gain / Attenuation","value":"-6.021 dB (Attenuation (loss))"},{"metric":"Output/Input Ratio","value":"0.5 (voltage), 0.25 (power)"},{"metric":"Power Loss","value":"75 % loss"},{"metric":"Formula Used","value":"dB = 20 × log₁₀(Vout ÷ Vin) = 20 × log₁₀(5 ÷ 10) = -6.021 dB"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Attenuation Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sleep-cycle-calculator":{"post":{"operationId":"run_sleep_cycle_calculator","summary":"Sleep Cycle Calculator","tags":["Calculators"],"description":"Find the best time to go to bed or wake up using 90-minute sleep cycles. Enter a bedtime to see when to wake up refreshed, or a wake-up time to see when to fall asleep — with an adjustable fall-asleep buffer.\n\n[Try Sleep Cycle Calculator in your browser →](https://iotools.cloud/tool/sleep-cycle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["wake-from-bedtime","bedtime-for-wake"],"description":"I want to"},"time":{"type":"string","description":"Time"},"fallAsleepBuffer":{"type":"number","description":"Fall-asleep buffer (minutes)","minimum":0,"maximum":60}},"required":["time"]},"examples":{"going_to_bed_at_23_00_when_to_wake_up":{"summary":"Going to bed at 23:00 — when to wake up","value":{"mode":"wake-from-bedtime","time":"23:00","fallAsleepBuffer":"15"}},"need_to_wake_at_07_00_when_to_go_to_bed":{"summary":"Need to wake at 07:00 — when to go to bed","value":{"mode":"bedtime-for-wake","time":"07:00","fallAsleepBuffer":"15"}},"bedtime_22_30_with_no_fall_asleep_buffer":{"summary":"Bedtime 22:30 with no fall-asleep buffer","value":{"mode":"wake-from-bedtime","time":"22:30","fallAsleepBuffer":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"going_to_bed_at_23_00_when_to_wake_up":{"summary":"Going to bed at 23:00 — when to wake up","value":{"tool":"sleep-cycle-calculator","tool_version":"1.0.2","outputs":{"recommendation":"For a recommended 7h 30m of sleep (5 cycles) with a 15-minute fall-asleep buffer, wake up at 06:45 given a bedtime of 23:00.","cycleTable":[{"time":"00:45","cycles":"1 cycle","sleep-duration":"1h 30m","quality":"Power nap"},{"time":"02:15","cycles":"2 cycles","sleep-duration":"3h 0m","quality":"Short rest"},{"time":"03:45","cycles":"3 cycles","sleep-duration":"4h 30m","quality":"Minimum"},{"time":"05:15","cycles":"4 cycles","sleep-duration":"6h 0m","quality":"Minimum"},{"time":"06:45","cycles":"5 cycles","sleep-duration":"7h 30m","quality":"Recommended"},{"time":"08:15","cycles":"6 cycles","sleep-duration":"9h 0m","quality":"Ideal"}]},"credits_used":5,"credits_remaining":null}},"need_to_wake_at_07_00_when_to_go_to_bed":{"summary":"Need to wake at 07:00 — when to go to bed","value":{"tool":"sleep-cycle-calculator","tool_version":"1.0.2","outputs":{"recommendation":"For a recommended 7h 30m of sleep (5 cycles) with a 15-minute fall-asleep buffer, go to bed at 23:15 given a wake-up time of 07:00.","cycleTable":[{"time":"05:15","cycles":"1 cycle","sleep-duration":"1h 30m","quality":"Power nap"},{"time":"03:45","cycles":"2 cycles","sleep-duration":"3h 0m","quality":"Short rest"},{"time":"02:15","cycles":"3 cycles","sleep-duration":"4h 30m","quality":"Minimum"},{"time":"00:45","cycles":"4 cycles","sleep-duration":"6h 0m","quality":"Minimum"},{"time":"23:15","cycles":"5 cycles","sleep-duration":"7h 30m","quality":"Recommended"},{"time":"21:45","cycles":"6 cycles","sleep-duration":"9h 0m","quality":"Ideal"}]},"credits_used":5,"credits_remaining":null}},"bedtime_22_30_with_no_fall_asleep_buffer":{"summary":"Bedtime 22:30 with no fall-asleep buffer","value":{"tool":"sleep-cycle-calculator","tool_version":"1.0.2","outputs":{"recommendation":"For a recommended 7h 30m of sleep (5 cycles) with a 0-minute fall-asleep buffer, wake up at 06:00 given a bedtime of 22:30.","cycleTable":[{"time":"00:00","cycles":"1 cycle","sleep-duration":"1h 30m","quality":"Power nap"},{"time":"01:30","cycles":"2 cycles","sleep-duration":"3h 0m","quality":"Short rest"},{"time":"03:00","cycles":"3 cycles","sleep-duration":"4h 30m","quality":"Minimum"},{"time":"04:30","cycles":"4 cycles","sleep-duration":"6h 0m","quality":"Minimum"},{"time":"06:00","cycles":"5 cycles","sleep-duration":"7h 30m","quality":"Recommended"},{"time":"07:30","cycles":"6 cycles","sleep-duration":"9h 0m","quality":"Ideal"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"recommendation":{"type":"string","description":"Recommended"},"cycleTable":{"type":"array","description":"All sleep-cycle options","items":{"type":"object","properties":{"time":{"type":"string","description":"Time"},"cycles":{"type":"string","description":"Cycles"},"sleep-duration":{"type":"string","description":"Sleep duration"},"quality":{"type":"string","description":"Quality"}}},"x-iotools-columns":["time","cycles","sleep-duration","quality"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/solar-panel-output-calculator":{"post":{"operationId":"run_solar_panel_output_calculator","summary":"Solar Panel Output Calculator","tags":["Calculators"],"description":"Estimate the energy output and cost savings of a solar panel system. Enter panel count, wattage, peak sun hours, system losses, and electricity rate to get daily, weekly, monthly, yearly, and 25-year lifetime kWh production plus savings, CO2 offset, and battery sizing.\n\n[Try Solar Panel Output Calculator in your browser →](https://iotools.cloud/tool/solar-panel-output-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"panels":{"type":"number","description":"Number of Panels","minimum":1,"maximum":10000},"wattage":{"type":"number","description":"Panel Wattage (W)","minimum":1,"maximum":1000},"sunHours":{"type":"number","description":"Peak Sun Hours per Day","minimum":0.1,"maximum":12},"systemLoss":{"type":"number","description":"System Losses (%)","minimum":0,"maximum":50},"rate":{"type":"number","description":"Electricity Rate ($/kWh)","minimum":0.001},"dailyUsage":{"type":"number","description":"Daily Usage (kWh)","minimum":0}},"required":["panels","wattage","sunHours","systemLoss","rate"]},"examples":{"10_400w_residential_system":{"summary":"10 × 400W residential system","value":{"panels":"10","wattage":"400","sunHours":"4.5","systemLoss":"15","rate":"0.15","dailyUsage":"30"}},"24_350w_no_usage_entered":{"summary":"24 × 350W, no usage entered","value":{"panels":"24","wattage":"350","sunHours":"5.5","systemLoss":"12","rate":"0.22","dailyUsage":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_400w_residential_system":{"summary":"10 × 400W residential system","value":{"tool":"solar-panel-output-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Daily","energy-kwh":"15.30","savings":"$2.30"},{"period":"Weekly","energy-kwh":"107.10","savings":"$16.06"},{"period":"Monthly","energy-kwh":"465.73","savings":"$69.86"},{"period":"Yearly","energy-kwh":"5,584.50","savings":"$837.68"},{"period":"25-Year Lifetime","energy-kwh":"131,548.21","savings":"$19,732.23"}],"systemSize":"4.00 kW","co2":"2233.8 kg (2.23 tonnes)","battery":"37.50 kWh usable","offset":"51.0%"},"credits_used":5,"credits_remaining":null}},"24_350w_no_usage_entered":{"summary":"24 × 350W, no usage entered","value":{"tool":"solar-panel-output-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"period":"Daily","energy-kwh":"40.66","savings":"$8.94"},{"period":"Weekly","energy-kwh":"284.59","savings":"$62.61"},{"period":"Monthly","energy-kwh":"1,237.57","savings":"$272.27"},{"period":"Yearly","energy-kwh":"14,839.44","savings":"$3,264.68"},{"period":"25-Year Lifetime","energy-kwh":"349,557.13","savings":"$76,902.57"}],"systemSize":"8.40 kW","co2":"5935.8 kg (5.94 tonnes)","battery":"Enter daily usage above","offset":"Enter daily usage above"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Energy & Savings","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"energy-kwh":{"type":"string","description":"Energy (kWh)"},"savings":{"type":"string","description":"Savings ($)"}}},"x-iotools-columns":["period","energy-kwh","savings"]},"systemSize":{"type":"string","description":"System Size"},"co2":{"type":"string","description":"CO₂ Offset (yearly)"},"battery":{"type":"string","description":"Battery Size (1-day backup)"},"offset":{"type":"string","description":"Daily Consumption Offset"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/solar-pv-system-sizing-calculator":{"post":{"operationId":"run_solar_pv_system_sizing_calculator","summary":"Solar PV System Sizing Calculator","tags":["Calculators"],"description":"Size a solar PV system from your daily energy usage, peak sun hours and panel wattage: required array capacity, number of panels, recommended inverter size, and — for off-grid systems — battery bank capacity from days of autonomy and depth of discharge. Runs entirely in your browser.\n\n[Try Solar PV System Sizing Calculator in your browser →](https://iotools.cloud/tool/solar-pv-system-sizing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dailyUsage":{"type":"number","description":"Average daily energy usage (kWh/day)","minimum":0.1,"maximum":100000},"peakSunHours":{"type":"number","description":"Peak sun hours (h/day)","minimum":0.5,"maximum":12},"panelWattage":{"type":"number","description":"Solar panel wattage (W)","minimum":50,"maximum":700},"systemEfficiency":{"type":"number","description":"System derate factor (%)","minimum":50,"maximum":95},"dcAcRatio":{"type":"number","description":"DC:AC (inverter loading) ratio","minimum":1,"maximum":1.5},"mode":{"enum":["grid-tied","off-grid"],"description":"System type"},"autonomyDays":{"type":"number","description":"Days of autonomy (battery reserve)","minimum":0.5,"maximum":14},"depthOfDischarge":{"type":"number","description":"Battery depth of discharge (%)","minimum":10,"maximum":100},"batteryVoltage":{"enum":["12","24","48"],"description":"Battery bank voltage"}},"required":[]},"examples":{"grid_tied_30_kwh_day_400w_panels":{"summary":"Grid-tied, 30 kWh/day, 400W panels","value":{"dailyUsage":"30","peakSunHours":"4.5","panelWattage":"400","systemEfficiency":"77","dcAcRatio":"1.2","mode":"grid-tied"}},"off_grid_cabin_15_kwh_day_3_days_autonomy":{"summary":"Off-grid cabin, 15 kWh/day, 3 days autonomy","value":{"dailyUsage":"15","peakSunHours":"5","panelWattage":"350","systemEfficiency":"75","dcAcRatio":"1.15","mode":"off-grid","autonomyDays":"3","depthOfDischarge":"50","batteryVoltage":"48"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"grid_tied_30_kwh_day_400w_panels":{"summary":"Grid-tied, 30 kWh/day, 400W panels","value":{"tool":"solar-pv-system-sizing-calculator","tool_version":"1.0.2","outputs":{"systemSizeKw":"8.66 kW DC","panelCount":"22 panels (8.80 kW DC actual)","inverterSizeKw":"7.33 kW AC","batterySizing":"N/A — grid-tied systems don't need battery storage","summaryTable":[{"metric":"Daily energy usage","value":"30.00 kWh/day"},{"metric":"Peak sun hours","value":"4.50 h/day"},{"metric":"System derate factor","value":"77%"},{"metric":"Required array size","value":"8.66 kW DC"},{"metric":"Panels needed","value":"22 × 400 W"},{"metric":"Actual array size","value":"8.80 kW DC"},{"metric":"DC:AC ratio","value":"1.20"},{"metric":"Inverter size","value":"7.33 kW AC"}],"notes":"Required array size = daily usage ÷ (peak sun hours × derate) = 30.00 kWh ÷ (4.50 h × 0.77) = 8.66 kW DC.\nGrid-tied systems don't need battery storage — excess production exports to the grid, subject to your utility's net-metering rules.\nThis is a rough sizing estimate for planning purposes only — a licensed installer should verify against your roof's actual irradiance, shading and orientation, and local electrical code (e.g. NEC Article 690), before purchase or installation."},"credits_used":5,"credits_remaining":null}},"off_grid_cabin_15_kwh_day_3_days_autonomy":{"summary":"Off-grid cabin, 15 kWh/day, 3 days autonomy","value":{"tool":"solar-pv-system-sizing-calculator","tool_version":"1.0.2","outputs":{"systemSizeKw":"4.00 kW DC","panelCount":"12 panels (4.20 kW DC actual)","inverterSizeKw":"3.65 kW AC","batterySizing":"90.00 kWh (1,875 Ah at 48V)","summaryTable":[{"metric":"Daily energy usage","value":"15.00 kWh/day"},{"metric":"Peak sun hours","value":"5.00 h/day"},{"metric":"System derate factor","value":"75%"},{"metric":"Required array size","value":"4.00 kW DC"},{"metric":"Panels needed","value":"12 × 350 W"},{"metric":"Actual array size","value":"4.20 kW DC"},{"metric":"DC:AC ratio","value":"1.15"},{"metric":"Inverter size","value":"3.65 kW AC"},{"metric":"Battery bank capacity","value":"90.00 kWh (1,875 Ah at 48V)"}],"notes":"Required array size = daily usage ÷ (peak sun hours × derate) = 15.00 kWh ÷ (5.00 h × 0.75) = 4.00 kW DC.\nBattery bank sized for 3.0 day(s) of autonomy at 50% depth of discharge: 45.00 kWh usable ÷ 0.50 = 90.00 kWh nominal capacity.\nThis is a rough sizing estimate for planning purposes only — a licensed installer should verify against your roof's actual irradiance, shading and orientation, and local electrical code (e.g. NEC Article 690), before purchase or installation."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"systemSizeKw":{"type":"string","description":"Required array size"},"panelCount":{"type":"string","description":"Panels needed"},"inverterSizeKw":{"type":"string","description":"Recommended inverter size"},"batterySizing":{"type":"string","description":"Battery bank size"},"summaryTable":{"type":"array","description":"Sizing breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sprint-velocity-capacity-calculator":{"post":{"operationId":"run_sprint_velocity_capacity_calculator","summary":"Sprint Velocity & Capacity Calculator","tags":["Calculators"],"description":"Plan your next Agile sprint: compute average and median team velocity from past sprints, work out team capacity in focused hours, and get a recommended story-point commitment range adjusted for time off and focus factor.\n\n[Try Sprint Velocity & Capacity Calculator in your browser →](https://iotools.cloud/tool/sprint-velocity-capacity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"teamSize":{"type":"number","description":"Team Size","minimum":1,"maximum":100},"sprintLength":{"type":"number","description":"Sprint Length (working days)","minimum":1,"maximum":30},"hoursPerDay":{"type":"number","description":"Productive Hours / Person / Day","minimum":1,"maximum":12},"velocityHistory":{"type":"string","description":"Completed Story Points (last N sprints)"},"timeOffDays":{"type":"number","description":"Team Time-Off Days","minimum":0,"maximum":500},"focusFactor":{"type":"number","description":"Focus Factor (%)","minimum":10,"maximum":100},"hoursPerPoint":{"type":"number","description":"Hours per Story Point","minimum":0.5,"maximum":40}},"required":[]},"examples":{"5_person_team_2_week_sprint":{"summary":"5-person team, 2-week sprint","value":{"teamSize":"5","sprintLength":"10","hoursPerDay":"6","velocityHistory":"42, 38, 45, 40, 43","timeOffDays":"0","focusFactor":"80","hoursPerPoint":"4"}},"with_time_off_and_lower_focus":{"summary":"With time off and lower focus","value":{"teamSize":"6","sprintLength":"10","hoursPerDay":"6","velocityHistory":"30, 28, 34","timeOffDays":"5","focusFactor":"70","hoursPerPoint":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_person_team_2_week_sprint":{"summary":"5-person team, 2-week sprint","value":{"tool":"sprint-velocity-capacity-calculator","tool_version":"1.0.2","outputs":{"capacitySummary":[{"metric":"Average Velocity","value":"41.6 pts"},{"metric":"Median Velocity","value":"42 pts"},{"metric":"Velocity Range (min - max)","value":"38 pts - 45 pts"},{"metric":"Recommended Commitment (conservative - stretch)","value":"41.6 pts - 42 pts"},{"metric":"Adjusted Capacity (after availability & focus)","value":"41.6 pts"}],"hoursBreakdown":[{"item":"Nominal team hours (size × days × hrs)","hours":"300 hrs"},{"item":"Less: time-off hours","hours":"- 0 hrs"},{"item":"Available hours","hours":"300 hrs"},{"item":"Less: non-focus time","hours":"- 60 hrs"},{"item":"Net focused hours","hours":"240 hrs"},{"item":"Equivalent story points (hours ÷ hrs per point)","hours":"60 pts"}]},"credits_used":5,"credits_remaining":null}},"with_time_off_and_lower_focus":{"summary":"With time off and lower focus","value":{"tool":"sprint-velocity-capacity-calculator","tool_version":"1.0.2","outputs":{"capacitySummary":[{"metric":"Average Velocity","value":"30.7 pts"},{"metric":"Median Velocity","value":"30 pts"},{"metric":"Velocity Range (min - max)","value":"28 pts - 34 pts"},{"metric":"Recommended Commitment (conservative - stretch)","value":"27.5 pts - 28.1 pts"},{"metric":"Adjusted Capacity (after availability & focus)","value":"24.6 pts"}],"hoursBreakdown":[{"item":"Nominal team hours (size × days × hrs)","hours":"360 hrs"},{"item":"Less: time-off hours","hours":"- 30 hrs"},{"item":"Available hours","hours":"330 hrs"},{"item":"Less: non-focus time","hours":"- 99 hrs"},{"item":"Net focused hours","hours":"231 hrs"},{"item":"Equivalent story points (hours ÷ hrs per point)","hours":"46.2 pts"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"capacitySummary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"hoursBreakdown":{"type":"array","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"hours":{"type":"string","description":"Hours"}}},"x-iotools-columns":["item","hours"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/stock-forex-position-size-calculator":{"post":{"operationId":"run_stock_forex_position_size_calculator","summary":"Stock & Forex Position Size Calculator","tags":["Calculators"],"description":"Work out how many shares, coins, or forex lots to trade so a stop-loss loss equals your chosen risk (a percent of the account or a fixed amount). Shows max loss, position value, risk:reward, potential profit, and a forex lot breakdown.\n\n[Try Stock & Forex Position Size Calculator in your browser →](https://iotools.cloud/tool/stock-forex-position-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["stocks","forex","crypto"],"description":"Instrument"},"accountBalance":{"type":"number","description":"Account balance","minimum":0},"currency":{"enum":["$","€","£","¥","A$","C$","CHF "],"description":"Currency"},"riskType":{"enum":["percent","fixed"],"description":"Risk sizing"},"riskPercent":{"type":"number","description":"Risk %","minimum":0.01,"maximum":100},"riskAmount":{"type":"number","description":"Risk amount","minimum":0},"pipSize":{"type":"number","description":"Pip size","minimum":0},"pipValue":{"type":"number","description":"Pip value / std lot","minimum":0},"entryPrice":{"type":"number","description":"Entry price","minimum":0},"stopPrice":{"type":"number","description":"Stop-loss price","minimum":0},"targetPrice":{"type":"number","description":"Take-profit (optional)","minimum":0}},"required":[]},"examples":{"stocks_1_risk_5_stop_target_110":{"summary":"Stocks — 1% risk, $5 stop, target $110","value":{"mode":"stocks","accountBalance":"10000","currency":"$","riskType":"percent","riskPercent":"1","entryPrice":"100","stopPrice":"95","targetPrice":"110"}},"forex_eur_usd_1_risk_100_pip_stop":{"summary":"Forex — EUR/USD, 1% risk, 100-pip stop","value":{"mode":"forex","accountBalance":"10000","currency":"$","riskType":"percent","riskPercent":"1","pipSize":"0.0001","pipValue":"10","entryPrice":"1.1","stopPrice":"1.09","targetPrice":"1.12"}},"crypto_fixed_50_risk_no_target":{"summary":"Crypto — fixed $50 risk, no target","value":{"mode":"crypto","accountBalance":"5000","currency":"$","riskType":"fixed","riskAmount":"50","entryPrice":"2","stopPrice":"1.8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"stocks_1_risk_5_stop_target_110":{"summary":"Stocks — 1% risk, $5 stop, target $110","value":{"tool":"stock-forex-position-size-calculator","tool_version":"1.0.2","outputs":{"summary":"20 shares · Long (buy) · Risking $100.00 (1.00% of account) · Potential profit $200.00 · R:R 1:2.00","summaryTable":[{"metric":"Trade direction","value":"Long (buy)"},{"metric":"Position size","value":"20 shares"},{"metric":"Position value","value":"$2,000.00"},{"metric":"Max risk (loss at stop)","value":"$100.00"},{"metric":"Risk % of account","value":"1.00%"},{"metric":"Stop distance","value":"(5.00, 5.00%)"},{"metric":"Potential profit","value":"$200.00"},{"metric":"Target distance","value":"(10.00, 10.00%)"},{"metric":"Risk : Reward","value":"1 : 2.00"},{"metric":"Return % of account","value":"2.00%"},{"metric":"Break-even win rate","value":"33.33%"}],"forexTable":[]},"credits_used":5,"credits_remaining":null}},"forex_eur_usd_1_risk_100_pip_stop":{"summary":"Forex — EUR/USD, 1% risk, 100-pip stop","value":{"tool":"stock-forex-position-size-calculator","tool_version":"1.0.2","outputs":{"summary":"0.10 lots (9,999 units) · Long (buy) · Risking $100.00 (1.00% of account) · Potential profit $200.00 · R:R 1:2.00","summaryTable":[{"metric":"Trade direction","value":"Long (buy)"},{"metric":"Position size","value":"0.10 lots (9,999 units)"},{"metric":"Position value","value":"$11,000.00"},{"metric":"Max risk (loss at stop)","value":"$100.00"},{"metric":"Risk % of account","value":"1.00%"},{"metric":"Stop distance","value":"100.0 pips (0.01, 0.91%)"},{"metric":"Potential profit","value":"$200.00"},{"metric":"Target distance","value":"200.0 pips (0.02, 1.82%)"},{"metric":"Risk : Reward","value":"1 : 2.00"},{"metric":"Return % of account","value":"2.00%"},{"metric":"Break-even win rate","value":"33.33%"}],"forexTable":[{"metric":"Stop distance (pips)","value":"100.0 pips"},{"metric":"Standard lots (100,000 units)","value":"0.10"},{"metric":"Mini lots (10,000 units)","value":"1.00"},{"metric":"Micro lots (1,000 units)","value":"10.00"},{"metric":"Total units","value":"9,999"}]},"credits_used":5,"credits_remaining":null}},"crypto_fixed_50_risk_no_target":{"summary":"Crypto — fixed $50 risk, no target","value":{"tool":"stock-forex-position-size-calculator","tool_version":"1.0.2","outputs":{"summary":"250.00 coins · Long (buy) · Risking $50.00 (1.00% of account)","summaryTable":[{"metric":"Trade direction","value":"Long (buy)"},{"metric":"Position size","value":"250.00 coins"},{"metric":"Position value","value":"$500.00"},{"metric":"Max risk (loss at stop)","value":"$50.00"},{"metric":"Risk % of account","value":"1.00%"},{"metric":"Stop distance","value":"(0.20, 10.00%)"}],"forexTable":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Position size"},"summaryTable":{"type":"array","description":"Position summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"forexTable":{"type":"array","description":"Forex lot breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/survey-sample-size-calculator":{"post":{"operationId":"run_survey_sample_size_calculator","summary":"Survey Sample Size Calculator","tags":["Calculators"],"description":"Calculate the minimum survey sample size for a target margin of error and confidence level using Cochran's formula, with an optional finite population correction for known population sizes.\n\n[Try Survey Sample Size Calculator in your browser →](https://iotools.cloud/tool/survey-sample-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"population":{"type":"number","description":"Population size","minimum":0},"marginError":{"type":"number","description":"Margin of error (%)","minimum":0.1,"maximum":50},"confidenceLevel":{"enum":["80","85","90","95","99","99.9"],"description":"Confidence level"},"proportion":{"type":"number","description":"Expected proportion (%)","minimum":1,"maximum":99}},"required":[]},"examples":{"unknown_population_95_confidence_5":{"summary":"Unknown population (95% confidence, ±5%)","value":{"population":"","marginError":"5","confidenceLevel":"95","proportion":"50"}},"population_of_5_000_95_confidence_5":{"summary":"Population of 5,000 (95% confidence, ±5%)","value":{"population":"5000","marginError":"5","confidenceLevel":"95","proportion":"50"}},"employee_survey_250_staff_99_confidence_5":{"summary":"Employee survey — 250 staff (99% confidence, ±5%)","value":{"population":"250","marginError":"5","confidenceLevel":"99","proportion":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"unknown_population_95_confidence_5":{"summary":"Unknown population (95% confidence, ±5%)","value":{"tool":"survey-sample-size-calculator","tool_version":"1.0.2","outputs":{"sampleSize":"385","breakdown":[{"metric":"Confidence level","value":"95%"},{"metric":"Critical z-score","value":"1.9600"},{"metric":"Margin of error (e)","value":"±5%"},{"metric":"Expected proportion (p)","value":"50%"},{"metric":"Required sample (Cochran)","value":"384"},{"metric":"Population (N)","value":"Unknown / very large"},{"metric":"Recommended minimum sample","value":"385"}],"sensitivity":[{"margin-of-error":"±1%","sample-cochran":"9,604","sample-with-fpc":"—"},{"margin-of-error":"±2%","sample-cochran":"2,401","sample-with-fpc":"—"},{"margin-of-error":"±3%","sample-cochran":"1,067","sample-with-fpc":"—"},{"margin-of-error":"±4%","sample-cochran":"600","sample-with-fpc":"—"},{"margin-of-error":"±5%","sample-cochran":"384","sample-with-fpc":"—"},{"margin-of-error":"±7%","sample-cochran":"196","sample-with-fpc":"—"},{"margin-of-error":"±10%","sample-cochran":"96","sample-with-fpc":"—"}]},"credits_used":5,"credits_remaining":null}},"population_of_5_000_95_confidence_5":{"summary":"Population of 5,000 (95% confidence, ±5%)","value":{"tool":"survey-sample-size-calculator","tool_version":"1.0.2","outputs":{"sampleSize":"357","breakdown":[{"metric":"Confidence level","value":"95%"},{"metric":"Critical z-score","value":"1.9600"},{"metric":"Margin of error (e)","value":"±5%"},{"metric":"Expected proportion (p)","value":"50%"},{"metric":"Required sample (Cochran)","value":"384"},{"metric":"Population (N)","value":"5,000"},{"metric":"Required sample (with FPC)","value":"357"},{"metric":"Sample fraction (n / N)","value":"7.14%"},{"metric":"Recommended minimum sample","value":"357"}],"sensitivity":[{"margin-of-error":"±1%","sample-cochran":"9,604","sample-with-fpc":"3,288"},{"margin-of-error":"±2%","sample-cochran":"2,401","sample-with-fpc":"1,622"},{"margin-of-error":"±3%","sample-cochran":"1,067","sample-with-fpc":"880"},{"margin-of-error":"±4%","sample-cochran":"600","sample-with-fpc":"536"},{"margin-of-error":"±5%","sample-cochran":"384","sample-with-fpc":"357"},{"margin-of-error":"±7%","sample-cochran":"196","sample-with-fpc":"189"},{"margin-of-error":"±10%","sample-cochran":"96","sample-with-fpc":"94"}]},"credits_used":5,"credits_remaining":null}},"employee_survey_250_staff_99_confidence_5":{"summary":"Employee survey — 250 staff (99% confidence, ±5%)","value":{"tool":"survey-sample-size-calculator","tool_version":"1.0.2","outputs":{"sampleSize":"182","breakdown":[{"metric":"Confidence level","value":"99%"},{"metric":"Critical z-score","value":"2.5758"},{"metric":"Margin of error (e)","value":"±5%"},{"metric":"Expected proportion (p)","value":"50%"},{"metric":"Required sample (Cochran)","value":"663"},{"metric":"Population (N)","value":"250"},{"metric":"Required sample (with FPC)","value":"182"},{"metric":"Sample fraction (n / N)","value":"72.80%"},{"metric":"Recommended minimum sample","value":"182"}],"sensitivity":[{"margin-of-error":"±1%","sample-cochran":"16,587","sample-with-fpc":"246"},{"margin-of-error":"±2%","sample-cochran":"4,147","sample-with-fpc":"236"},{"margin-of-error":"±3%","sample-cochran":"1,843","sample-with-fpc":"220"},{"margin-of-error":"±4%","sample-cochran":"1,037","sample-with-fpc":"202"},{"margin-of-error":"±5%","sample-cochran":"663","sample-with-fpc":"182"},{"margin-of-error":"±7%","sample-cochran":"339","sample-with-fpc":"144"},{"margin-of-error":"±10%","sample-cochran":"166","sample-with-fpc":"100"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sampleSize":{"type":"string","description":"Recommended sample size"},"breakdown":{"type":"array","description":"Statistical breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"sensitivity":{"type":"array","description":"Sample size by margin of error","items":{"type":"object","properties":{"margin-of-error":{"type":"string","description":"Margin of error"},"sample-cochran":{"type":"string","description":"Sample (Cochran)"},"sample-with-fpc":{"type":"string","description":"Sample (with FPC)"}}},"x-iotools-columns":["margin-of-error","sample-cochran","sample-with-fpc"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/synthetic-division-calculator":{"post":{"operationId":"run_synthetic_division_calculator","summary":"Synthetic Division Calculator","tags":["Calculators"],"description":"Divide a polynomial by x − a using synthetic division. Enter the coefficients and the root a to get the quotient, the remainder, the full bring-down/multiply/add step table, and whether x − a is a factor.\n\n[Try Synthetic Division Calculator in your browser →](https://iotools.cloud/tool/synthetic-division-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coefficients":{"type":"string","description":"Coefficients (highest degree first)"},"root":{"type":"number","description":"Divide by (x − a): a ="}},"required":["coefficients","root"]},"examples":{"x_2x_x_2_x_1_exact_factor":{"summary":"x³ + 2x² − x − 2 ÷ (x − 1) — exact factor","value":{"coefficients":"1, 2, -1, -2","root":"1"}},"x_4_x_2_difference_of_squares":{"summary":"x² − 4 ÷ (x − 2) — difference of squares","value":{"coefficients":"1, 0, -4","root":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_2x_x_2_x_1_exact_factor":{"summary":"x³ + 2x² − x − 2 ÷ (x − 1) — exact factor","value":{"tool":"synthetic-division-calculator","tool_version":"1.0.2","outputs":{"divisor":"x - 1","quotient":"x^2 + 3x + 2","remainder":"0","isFactor":"Yes — x - 1 is a factor (remainder = 0).","steps":[{"term-x-k":"x^3","coefficient":"1","root":"—","result":"1"},{"term-x-k":"x^2","coefficient":"2","root":"1","result":"3"},{"term-x-k":"x","coefficient":"-1","root":"3","result":"2"},{"term-x-k":"constant","coefficient":"-2","root":"2","result":"0"}]},"credits_used":5,"credits_remaining":null}},"x_4_x_2_difference_of_squares":{"summary":"x² − 4 ÷ (x − 2) — difference of squares","value":{"tool":"synthetic-division-calculator","tool_version":"1.0.2","outputs":{"divisor":"x - 2","quotient":"x + 2","remainder":"0","isFactor":"Yes — x - 2 is a factor (remainder = 0).","steps":[{"term-x-k":"x^2","coefficient":"1","root":"—","result":"1"},{"term-x-k":"x","coefficient":"0","root":"2","result":"2"},{"term-x-k":"constant","coefficient":"-4","root":"4","result":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"divisor":{"type":"string","description":"Divisor"},"quotient":{"type":"string","description":"Quotient"},"remainder":{"type":"string","description":"Remainder"},"isFactor":{"type":"string","description":"Factor?"},"steps":{"type":"array","description":"Synthetic Division Steps","items":{"type":"object","properties":{"term-x-k":{"type":"string","description":"Term (x^k)"},"coefficient":{"type":"string","description":"Coefficient"},"root":{"type":"string","description":"× root"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["term-x-k","coefficient","root","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/time-between-dates-calculator":{"post":{"operationId":"run_time_between_dates_calculator","summary":"Time Between Dates Calculator","tags":["Calculators"],"description":"Calculate the exact time between two dates and times: a full years, months, days, hours, minutes and seconds breakdown, plus totals in weeks, days, hours, minutes and seconds.\n\n[Try Time Between Dates Calculator in your browser →](https://iotools.cloud/tool/time-between-dates-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"startDate":{"type":"string","description":"Start Date"},"startTime":{"type":"string","description":"Start Time"},"endDate":{"type":"string","description":"End Date"},"endTime":{"type":"string","description":"End Time"}},"required":["startDate","endDate"]},"examples":{"within_one_day_9h_30m_apart":{"summary":"Within one day (9h 30m apart)","value":{"startDate":"2024-06-15","startTime":"08:00","endDate":"2024-06-15","endTime":"17:30"}},"across_leap_day_february_jan_15_mar_10_2020":{"summary":"Across leap-day February (Jan 15 → Mar 10, 2020)","value":{"startDate":"2020-01-15","startTime":"00:00","endDate":"2020-03-10","endTime":"06:45"}},"end_before_start_dates_swapped":{"summary":"End before start (dates swapped)","value":{"startDate":"2023-05-20","startTime":"14:00","endDate":"2023-05-18","endTime":"09:00"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"within_one_day_9h_30m_apart":{"summary":"Within one day (9h 30m apart)","value":{"tool":"time-between-dates-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"From","value":"Saturday, June 15, 2024 08:00:00"},{"metric":"To","value":"Saturday, June 15, 2024 17:30:00"},{"metric":"Duration","value":"9 hours, 30 minutes"},{"metric":"Total Days","value":"0 days, 9h 30m"},{"metric":"Total Weeks","value":"0 weeks and 0 days"},{"metric":"Total Hours","value":"9"},{"metric":"Total Minutes","value":"570"},{"metric":"Total Seconds","value":"34,200"}]},"credits_used":5,"credits_remaining":null}},"across_leap_day_february_jan_15_mar_10_2020":{"summary":"Across leap-day February (Jan 15 → Mar 10, 2020)","value":{"tool":"time-between-dates-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"From","value":"Wednesday, January 15, 2020 00:00:00"},{"metric":"To","value":"Tuesday, March 10, 2020 06:45:00"},{"metric":"Duration","value":"1 month, 24 days, 6 hours, 45 minutes"},{"metric":"Total Days","value":"55 days, 6h 45m"},{"metric":"Total Weeks","value":"7 weeks and 6 days"},{"metric":"Total Hours","value":"1,326"},{"metric":"Total Minutes","value":"79,605"},{"metric":"Total Seconds","value":"4,776,300"}]},"credits_used":5,"credits_remaining":null}},"end_before_start_dates_swapped":{"summary":"End before start (dates swapped)","value":{"tool":"time-between-dates-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Note","value":"End is before start — showing the absolute difference."},{"metric":"From","value":"Thursday, May 18, 2023 09:00:00"},{"metric":"To","value":"Saturday, May 20, 2023 14:00:00"},{"metric":"Duration","value":"2 days, 5 hours"},{"metric":"Total Days","value":"2 days, 5h 0m"},{"metric":"Total Weeks","value":"0 weeks and 2 days"},{"metric":"Total Hours","value":"53"},{"metric":"Total Minutes","value":"3,180"},{"metric":"Total Seconds","value":"190,800"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/time-zone-meeting-planner":{"post":{"operationId":"run_time_zone_meeting_planner","summary":"Time Zone Meeting Planner","tags":["Calculators"],"description":"Plan a meeting across time zones: enter a date and time in your home zone and each participant's IANA time zone, and see everyone's local date, local time and whether it lands in their working hours.\n\n[Try Time Zone Meeting Planner in your browser →](https://iotools.cloud/tool/time-zone-meeting-planner/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"meetingDate":{"type":"string","description":"Meeting date"},"meetingTime":{"type":"string","description":"Meeting time"},"homeZone":{"enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmera","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/La_Rioja","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Catamarca","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Coral_Harbour","America/Cordoba","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Godthab","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Indianapolis","America/Inuvik","America/Iqaluit","America/Jamaica","America/Jujuy","America/Juneau","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Louisville","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Mendoza","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Chita","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Katmandu","Asia/Khandyga","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kiev","Europe/Kirov","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Easter","Pacific/Efate","Pacific/Enderbury","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk","Pacific/Wake","Pacific/Wallis"],"description":"Home time zone"},"participants":{"type":"string","description":"Participant time zones"},"businessStart":{"type":"number","description":"Working hours start","minimum":0,"maximum":23},"businessEnd":{"type":"number","description":"Working hours end","minimum":1,"maximum":24},"use24Hour":{"type":"boolean","description":"Use 24-hour time"}},"required":[]},"examples":{"2_pm_new_york_across_london_tokyo":{"summary":"2 PM New York across London & Tokyo","value":{"meetingDate":"2026-06-17","meetingTime":"14:00","homeZone":"America/New_York","participants":"America/New_York\nEurope/London\nAsia/Tokyo","businessStart":"9","businessEnd":"17"}},"9_am_london_24_hour_clock":{"summary":"9 AM London, 24-hour clock","value":{"meetingDate":"2026-01-15","meetingTime":"09:00","homeZone":"Europe/London","participants":"Europe/London\nAmerica/New_York\nAsia/Tokyo","businessStart":"9","businessEnd":"17","use24Hour":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_pm_new_york_across_london_tokyo":{"summary":"2 PM New York across London & Tokyo","value":{"tool":"time-zone-meeting-planner","tool_version":"1.0.2","outputs":{"meetingSummary":"Wed, Jun 17, 2026 · 2:00 PM (America/New_York, UTC-04:00)","schedule":[{"time-zone":"America/New_York (UTC-04:00)","local-date":"Wed, Jun 17, 2026","local-time":"2:00 PM","status":"Business hours"},{"time-zone":"Europe/London (UTC+01:00)","local-date":"Wed, Jun 17, 2026","local-time":"7:00 PM","status":"Outside hours"},{"time-zone":"Asia/Tokyo (UTC+09:00)","local-date":"Thu, Jun 18, 2026 (+1 day)","local-time":"3:00 AM","status":"Outside hours"}]},"credits_used":5,"credits_remaining":null}},"9_am_london_24_hour_clock":{"summary":"9 AM London, 24-hour clock","value":{"tool":"time-zone-meeting-planner","tool_version":"1.0.2","outputs":{"meetingSummary":"Thu, Jan 15, 2026 · 09:00 (Europe/London, UTC+00:00)","schedule":[{"time-zone":"Europe/London (UTC+00:00)","local-date":"Thu, Jan 15, 2026","local-time":"09:00","status":"Business hours"},{"time-zone":"America/New_York (UTC-05:00)","local-date":"Thu, Jan 15, 2026","local-time":"04:00","status":"Outside hours"},{"time-zone":"Asia/Tokyo (UTC+09:00)","local-date":"Thu, Jan 15, 2026","local-time":"18:00","status":"Early / late"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"meetingSummary":{"type":"string","description":"Meeting time (home zone)"},"schedule":{"type":"array","description":"Participant schedule","items":{"type":"object","properties":{"time-zone":{"type":"string","description":"Time zone"},"local-date":{"type":"string","description":"Local date"},"local-time":{"type":"string","description":"Local time"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["time-zone","local-date","local-time","status"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/timer-555-calculator":{"post":{"operationId":"run_timer_555_calculator","summary":"555 Timer Calculator","tags":["Calculators"],"description":"Calculate 555 timer IC output frequency, period and duty cycle for an astable (oscillator) circuit, or pulse width for a monostable (one-shot) circuit, from resistor and capacitor values.\n\n[Try 555 Timer Calculator in your browser →](https://iotools.cloud/tool/timer-555-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["astable","monostable"],"description":"Circuit Mode"},"r1":{"type":"number","description":"R1 (Charge Resistor)","minimum":0},"r2":{"type":"number","description":"R2 (Discharge Resistor)","minimum":0},"rMono":{"type":"number","description":"R (Timing Resistor)","minimum":0},"resistanceUnit":{"enum":["ohm","kohm","megaohm"],"description":"Resistance Unit"},"capacitance":{"type":"number","description":"Capacitance (C)","minimum":0},"capacitanceUnit":{"enum":["pf","nf","uf","mf","f"],"description":"Capacitance Unit"}},"required":["capacitance"]},"examples":{"astable_r1_1k_r2_10k_c_1_f":{"summary":"Astable — R1 1kΩ, R2 10kΩ, C 1µF","value":{"mode":"astable","r1":"1","r2":"10","rMono":"10","resistanceUnit":"kohm","capacitance":"1","capacitanceUnit":"uf"}},"monostable_r_100k_c_10_f":{"summary":"Monostable — R 100kΩ, C 10µF","value":{"mode":"monostable","r1":"1","r2":"10","rMono":"100","resistanceUnit":"kohm","capacitance":"10","capacitanceUnit":"uf"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"astable_r1_1k_r2_10k_c_1_f":{"summary":"Astable — R1 1kΩ, R2 10kΩ, C 1µF","value":{"tool":"timer-555-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Frequency","value":"68.7144 Hz"},{"metric":"Period","value":"14.553 ms"},{"metric":"Time High","value":"7.623 ms"},{"metric":"Time Low","value":"6.93 ms"},{"metric":"Duty Cycle","value":"52.38%"}]},"credits_used":5,"credits_remaining":null}},"monostable_r_100k_c_10_f":{"summary":"Monostable — R 100kΩ, C 10µF","value":{"tool":"timer-555-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Pulse Width","value":"1.1 s"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/times-interest-earned-ratio-calculator":{"post":{"operationId":"run_times_interest_earned_ratio_calculator","summary":"Times Interest Earned Ratio Calculator","tags":["Calculators"],"description":"Calculate your Times Interest Earned (TIE) ratio — also called the Interest Coverage Ratio — from EBIT and annual interest expense. Get a dollar safety margin, a maximum-EBIT-decline headroom figure, and a coverage rating.\n\n[Try Times Interest Earned Ratio Calculator in your browser →](https://iotools.cloud/tool/times-interest-earned-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ebit":{"type":"number","description":"EBIT (Operating Income)"},"interestExpense":{"type":"number","description":"Annual Interest Expense","minimum":0,"maximum":999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["ebit","interestExpense"]},"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"ebit":"300000","interestExpense":"60000","currency":"USD"}},"marginal_coverage":{"summary":"Marginal coverage","value":{"ebit":"90000","interestExpense":"50000","currency":"USD"}},"insufficient_coverage_negative_ebit":{"summary":"Insufficient coverage (negative EBIT)","value":{"ebit":"-20000","interestExpense":"50000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"strong_coverage":{"summary":"Strong coverage","value":{"tool":"times-interest-earned-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"EBIT (Operating Income)","value":"$300,000.00"},{"metric":"Annual Interest Expense","value":"$60,000.00"},{"metric":"Times Interest Earned Ratio","value":"5.00x"},{"metric":"Interest Safety Margin","value":"$240,000.00"},{"metric":"Max. EBIT Decline Before Default Risk","value":"80.0%"},{"metric":"TIE Rating","value":"Strong"}]},"credits_used":5,"credits_remaining":null}},"marginal_coverage":{"summary":"Marginal coverage","value":{"tool":"times-interest-earned-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"EBIT (Operating Income)","value":"$90,000.00"},{"metric":"Annual Interest Expense","value":"$50,000.00"},{"metric":"Times Interest Earned Ratio","value":"1.80x"},{"metric":"Interest Safety Margin","value":"$40,000.00"},{"metric":"Max. EBIT Decline Before Default Risk","value":"44.4%"},{"metric":"TIE Rating","value":"Marginal"}]},"credits_used":5,"credits_remaining":null}},"insufficient_coverage_negative_ebit":{"summary":"Insufficient coverage (negative EBIT)","value":{"tool":"times-interest-earned-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"EBIT (Operating Income)","value":"-$20,000.00"},{"metric":"Annual Interest Expense","value":"$50,000.00"},{"metric":"Times Interest Earned Ratio","value":"-0.40x"},{"metric":"Interest Safety Margin","value":"-$70,000.00"},{"metric":"Max. EBIT Decline Before Default Risk","value":"N/A"},{"metric":"TIE Rating","value":"Insufficient"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"TIE Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/triangle-calculator":{"post":{"operationId":"run_triangle_calculator","summary":"Triangle Calculator","tags":["Calculators"],"description":"Solve a triangle from any three known values (with at least one side): SSS, SAS, ASA, AAS, or the ambiguous SSA case. Computes the missing sides and angles, area, perimeter, heights, inradius, circumradius, and classifies the triangle by sides and angles.\n\n[Try Triangle Calculator in your browser →](https://iotools.cloud/tool/triangle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sideA":{"type":"number","description":"Side a","minimum":0},"sideB":{"type":"number","description":"Side b","minimum":0},"sideC":{"type":"number","description":"Side c","minimum":0},"angleA":{"type":"number","description":"Angle A (opposite a)","minimum":0},"angleB":{"type":"number","description":"Angle B (opposite b)","minimum":0},"angleC":{"type":"number","description":"Angle C (opposite c)","minimum":0},"angleUnit":{"enum":["degrees","radians"],"description":"Angle unit"}},"required":[]},"examples":{"sss_3_4_5_right_triangle":{"summary":"SSS (3-4-5 right triangle)","value":{"sideA":"3","sideB":"4","sideC":"5","angleUnit":"degrees"}},"sas_two_sides_included_angle_c":{"summary":"SAS (two sides + included angle C)","value":{"sideA":"4","sideB":"5","angleC":"60","angleUnit":"degrees"}},"asa_two_angles_included_side_c":{"summary":"ASA (two angles + included side c)","value":{"angleA":"50","angleB":"60","sideC":"10","angleUnit":"degrees"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sss_3_4_5_right_triangle":{"summary":"SSS (3-4-5 right triangle)","value":{"tool":"triangle-calculator","tool_version":"1.0.2","outputs":{"result":"Configuration: SSS (three sides)\n\nSides\n  a = 3\n  b = 4\n  c = 5\n\nAngles\n  A = 36.869898°\n  B = 53.130102°\n  C = 90°\n\nProperties\n  Area          = 6\n  Perimeter     = 12\n  Type (sides)  = Scalene\n  Type (angles) = Right\n\nHeights\n  h_a = 4\n  h_b = 3\n  h_c = 2.4\n\nRadii\n  Inradius (r)     = 1\n  Circumradius (R) = 2.5","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"triangle-svg\" viewBox=\"-80.00 -84.00 163.00 164.00\"><polygon points=\"0.00,-4.00 3.00,0.00 0.00,0.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><path d=\"M 0.27 -3.64 A 0.45 0.45 0 0 1 0.00 -3.55\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 2.55 0.00 A 0.45 0.45 0 0 1 2.73 -0.36\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 0.00 -0.45 A 0.45 0.45 0 0 1 0.45 0.00\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><circle cx=\"0.00\" cy=\"-4.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"3.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><text x=\"7.82\" y=\"16.85\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 3</text><text x=\"-14.98\" y=\"-11.98\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 4</text><text x=\"12.30\" y=\"-16.40\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">c = 5</text><text x=\"7.72\" y=\"16.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">A</text><text x=\"-15.31\" y=\"-12.20\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">B</text><text x=\"13.20\" y=\"-17.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">C</text></svg>"},"credits_used":5,"credits_remaining":null}},"sas_two_sides_included_angle_c":{"summary":"SAS (two sides + included angle C)","value":{"tool":"triangle-calculator","tool_version":"1.0.2","outputs":{"result":"Configuration: SAS (two sides and included angle C)\n\nSides\n  a = 4\n  b = 5\n  c = 4.5825757\n\nAngles\n  A = 49.106605°\n  B = 70.893395°\n  C = 60°\n\nProperties\n  Area          = 8.660254\n  Perimeter     = 13.582576\n  Type (sides)  = Scalene\n  Type (angles) = Acute\n\nHeights\n  h_a = 4.330127\n  h_b = 3.4641016\n  h_c = 3.7796447\n\nRadii\n  Inradius (r)     = 1.2752006\n  Circumradius (R) = 2.6457513","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"triangle-svg\" viewBox=\"-80.00 -84.33 164.00 164.33\"><polygon points=\"2.50,-4.33 4.00,0.00 0.00,0.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><path d=\"M 2.70 -3.76 A 0.60 0.60 0 0 1 2.20 -3.81\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 3.40 0.00 A 0.60 0.60 0 0 1 3.80 -0.57\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 0.30 -0.52 A 0.60 0.60 0 0 1 0.60 0.00\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><circle cx=\"2.50\" cy=\"-4.33\" r=\"3\" fill=\"#464aff\"/><circle cx=\"4.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><text x=\"-0.06\" y=\"17.88\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 4</text><text x=\"-12.89\" y=\"-13.30\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 5</text><text x=\"18.23\" y=\"-12.14\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">c = 4.5825757</text><text x=\"-0.02\" y=\"17.52\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">A</text><text x=\"-13.29\" y=\"-13.61\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">B</text><text x=\"18.31\" y=\"-12.20\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">C</text></svg>"},"credits_used":5,"credits_remaining":null}},"asa_two_angles_included_side_c":{"summary":"ASA (two angles + included side c)","value":{"tool":"triangle-calculator","tool_version":"1.0.2","outputs":{"result":"Configuration: ASA/AAS (two angles and a side)\n\nSides\n  a = 8.1520747\n  b = 9.2160499\n  c = 10\n\nAngles\n  A = 50°\n  B = 60°\n  C = 70°\n\nProperties\n  Area          = 35.299519\n  Perimeter     = 27.368125\n  Type (sides)  = Scalene\n  Type (angles) = Acute\n\nHeights\n  h_a = 8.660254\n  h_b = 7.6604444\n  h_c = 7.0599038\n\nRadii\n  Inradius (r)     = 2.5796082\n  Circumradius (R) = 5.3208889","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"triangle-svg\" viewBox=\"-80.00 -88.66 168.15 168.66\"><polygon points=\"3.15,-8.66 8.15,0.00 0.00,0.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><path d=\"M 3.76 -7.60 A 1.22 1.22 0 0 1 2.73 -7.51\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 6.93 0.00 A 1.22 1.22 0 0 1 7.54 -1.06\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><path d=\"M 0.42 -1.15 A 1.22 1.22 0 0 1 1.22 0.00\" fill=\"none\" stroke=\"#ff6b6b\" stroke-width=\"1.5\"/><circle cx=\"3.15\" cy=\"-8.66\" r=\"3\" fill=\"#464aff\"/><circle cx=\"8.15\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><text x=\"5.99\" y=\"17.90\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 8.1520747</text><text x=\"-13.46\" y=\"-14.23\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 9.2160499</text><text x=\"19.94\" y=\"-15.28\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">c = 10</text><text x=\"5.49\" y=\"13.22\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">A</text><text x=\"-10.22\" y=\"-12.10\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">B</text><text x=\"17.46\" y=\"-13.38\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">C</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Solution"},"svg":{"type":"string","description":"Diagram (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/uptime-sla-calculator":{"post":{"operationId":"run_uptime_sla_calculator","summary":"Uptime & SLA Calculator","tags":["Calculators"],"description":"Calculate allowed downtime for an SLA uptime percentage (99.9%, 99.99%, five nines) across day, week, month, quarter and year — or the reverse: the SLA % a downtime target requires, plus your remaining error budget.\n\n[Try Uptime & SLA Calculator in your browser →](https://iotools.cloud/tool/uptime-sla-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["downtime","sla","budget"],"description":"Calculate"},"slaPreset":{"enum":["99","99.5","99.9","99.95","99.99","99.999","custom"],"description":"Common tier"},"slaPct":{"type":"number","description":"SLA %","minimum":0,"maximum":100},"targetDowntime":{"type":"number","description":"Max downtime","minimum":0},"targetDowntimeUnit":{"enum":["1","60","3600","86400"],"description":"Unit"},"targetPeriod":{"enum":["31557600","7889400","2592000","604800","86400"],"description":"Per period"},"budgetPeriod":{"enum":["31557600","7889400","2592000","604800","86400"],"description":"Budget period"},"elapsedDowntime":{"type":"number","description":"Downtime used so far","minimum":0},"elapsedDowntimeUnit":{"enum":["1","60","3600","86400"],"description":"Unit"}},"required":[]},"examples":{"99_9_uptime_allowed_downtime":{"summary":"99.9% uptime — allowed downtime","value":{"mode":"downtime","slaPreset":"99.9"}},"99_99_uptime_allowed_downtime":{"summary":"99.99% uptime — allowed downtime","value":{"mode":"downtime","slaPreset":"99.99"}},"required_sla_for_5_min_downtime_month":{"summary":"Required SLA for 5 min downtime / month","value":{"mode":"sla","targetDowntime":"5","targetDowntimeUnit":"60","targetPeriod":"2592000"}},"error_budget_99_9_monthly_10_min_used":{"summary":"Error budget — 99.9% monthly, 10 min used","value":{"mode":"budget","slaPreset":"99.9","budgetPeriod":"2592000","elapsedDowntime":"10","elapsedDowntimeUnit":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"99_9_uptime_allowed_downtime":{"summary":"99.9% uptime — allowed downtime","value":{"tool":"uptime-sla-calculator","tool_version":"1.0.2","outputs":{"summary":"8h 45m 58s of allowed downtime per year at 99.9% uptime.","periodTable":[{"period":"Per year","allowed-downtime":"8h 45m 58s","of-period":"0.100000%"},{"period":"Per quarter","allowed-downtime":"2h 11m 29s","of-period":"0.100000%"},{"period":"Per month","allowed-downtime":"43m 12s","of-period":"0.100000%"},{"period":"Per week","allowed-downtime":"10m 5s","of-period":"0.100000%"},{"period":"Per day","allowed-downtime":"1m 26s","of-period":"0.100000%"},{"period":"Per hour","allowed-downtime":"4s","of-period":"0.100000%"}],"tierTable":[{"sla-tier":"99%","per-year":"3d 15h 39m 36s","per-quarter":"21h 54m 54s","per-month":"7h 12m","per-week":"1h 40m 48s","per-day":"14m 24s"},{"sla-tier":"99.5%","per-year":"1d 19h 49m 48s","per-quarter":"10h 57m 27s","per-month":"3h 36m","per-week":"50m 24s","per-day":"7m 12s"},{"sla-tier":"99.9%","per-year":"8h 45m 58s","per-quarter":"2h 11m 29s","per-month":"43m 12s","per-week":"10m 5s","per-day":"1m 26s"},{"sla-tier":"99.95%","per-year":"4h 22m 59s","per-quarter":"1h 5m 45s","per-month":"21m 36s","per-week":"5m 2s","per-day":"43s"},{"sla-tier":"99.99%","per-year":"52m 36s","per-quarter":"13m 9s","per-month":"4m 19s","per-week":"1m","per-day":"9s"},{"sla-tier":"99.999%","per-year":"5m 16s","per-quarter":"1m 19s","per-month":"26s","per-week":"6s","per-day":"864ms"}]},"credits_used":5,"credits_remaining":null}},"99_99_uptime_allowed_downtime":{"summary":"99.99% uptime — allowed downtime","value":{"tool":"uptime-sla-calculator","tool_version":"1.0.2","outputs":{"summary":"52m 36s of allowed downtime per year at 99.99% uptime.","periodTable":[{"period":"Per year","allowed-downtime":"52m 36s","of-period":"0.010000%"},{"period":"Per quarter","allowed-downtime":"13m 9s","of-period":"0.010000%"},{"period":"Per month","allowed-downtime":"4m 19s","of-period":"0.010000%"},{"period":"Per week","allowed-downtime":"1m","of-period":"0.010000%"},{"period":"Per day","allowed-downtime":"9s","of-period":"0.010000%"},{"period":"Per hour","allowed-downtime":"360ms","of-period":"0.010000%"}],"tierTable":[{"sla-tier":"99%","per-year":"3d 15h 39m 36s","per-quarter":"21h 54m 54s","per-month":"7h 12m","per-week":"1h 40m 48s","per-day":"14m 24s"},{"sla-tier":"99.5%","per-year":"1d 19h 49m 48s","per-quarter":"10h 57m 27s","per-month":"3h 36m","per-week":"50m 24s","per-day":"7m 12s"},{"sla-tier":"99.9%","per-year":"8h 45m 58s","per-quarter":"2h 11m 29s","per-month":"43m 12s","per-week":"10m 5s","per-day":"1m 26s"},{"sla-tier":"99.95%","per-year":"4h 22m 59s","per-quarter":"1h 5m 45s","per-month":"21m 36s","per-week":"5m 2s","per-day":"43s"},{"sla-tier":"99.99%","per-year":"52m 36s","per-quarter":"13m 9s","per-month":"4m 19s","per-week":"1m","per-day":"9s"},{"sla-tier":"99.999%","per-year":"5m 16s","per-quarter":"1m 19s","per-month":"26s","per-week":"6s","per-day":"864ms"}]},"credits_used":5,"credits_remaining":null}},"required_sla_for_5_min_downtime_month":{"summary":"Required SLA for 5 min downtime / month","value":{"tool":"uptime-sla-calculator","tool_version":"1.0.2","outputs":{"summary":"99.9884% uptime required to allow at most 5m of downtime per month — meets the 99.99% tier.","slaTable":[{"period":"Per year","equivalent-downtime":"1h 53s"},{"period":"Per quarter","equivalent-downtime":"15m 13s"},{"period":"Per month","equivalent-downtime":"5m"},{"period":"Per week","equivalent-downtime":"1m 10s"},{"period":"Per day","equivalent-downtime":"10s"},{"period":"Per hour","equivalent-downtime":"417ms"}]},"credits_used":5,"credits_remaining":null}},"error_budget_99_9_monthly_10_min_used":{"summary":"Error budget — 99.9% monthly, 10 min used","value":{"tool":"uptime-sla-calculator","tool_version":"1.0.2","outputs":{"summary":"33m 12s of error budget remaining (99.9% SLA, 10m used of 43m 12s).","budgetTable":[{"metric":"Total budget for this period","value":"43m 12s"},{"metric":"Downtime used so far","value":"10m"},{"metric":"Remaining","value":"33m 12s"},{"metric":"Budget used","value":"23.15%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"periodTable":{"type":"array","description":"Allowed downtime by period","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"allowed-downtime":{"type":"string","description":"Allowed downtime"},"of-period":{"type":"string","description":"% of period"}}},"x-iotools-columns":["period","allowed-downtime","of-period"]},"tierTable":{"type":"array","description":"SLA tier comparison","items":{"type":"object","properties":{"sla-tier":{"type":"string","description":"SLA tier"},"per-year":{"type":"string","description":"Per year"},"per-quarter":{"type":"string","description":"Per quarter"},"per-month":{"type":"string","description":"Per month"},"per-week":{"type":"string","description":"Per week"},"per-day":{"type":"string","description":"Per day"}}},"x-iotools-columns":["sla-tier","per-year","per-quarter","per-month","per-week","per-day"]},"slaTable":{"type":"array","description":"Equivalent downtime across periods","items":{"type":"object","properties":{"period":{"type":"string","description":"Period"},"equivalent-downtime":{"type":"string","description":"Equivalent downtime"}}},"x-iotools-columns":["period","equivalent-downtime"]},"budgetTable":{"type":"array","description":"Error budget breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/utm-zone-finder":{"post":{"operationId":"run_utm_zone_finder","summary":"UTM Zone Finder","tags":["Calculators"],"description":"Find the Universal Transverse Mercator (UTM) zone, latitude band and hemisphere for any latitude/longitude — including the Norway and Svalbard grid exceptions most simple zone finders miss. Coordinates accept decimal degrees or DMS.\n\n[Try UTM Zone Finder in your browser →](https://iotools.cloud/tool/utm-zone-finder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}},"required":["latitude","longitude"]},"examples":{"oslo_norway_zone_32_exception":{"summary":"Oslo, Norway (zone-32 exception)","value":{"latitude":"59.9139","longitude":"10.7522"}},"new_york_city":{"summary":"New York City","value":{"latitude":"40.7128","longitude":"-74.0060"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"oslo_norway_zone_32_exception":{"summary":"Oslo, Norway (zone-32 exception)","value":{"tool":"utm-zone-finder","tool_version":"1.0.2","outputs":{"result":[{"metric":"UTM zone","value":"32"},{"metric":"Latitude band","value":"V"},{"metric":"Hemisphere","value":"N"},{"metric":"Zone designation","value":"32V"},{"metric":"Central meridian","value":"9°"},{"metric":"Note","value":"Norway exception: band V widens zone 32 to cover 3°E–12°E."}]},"credits_used":5,"credits_remaining":null}},"new_york_city":{"summary":"New York City","value":{"tool":"utm-zone-finder","tool_version":"1.0.2","outputs":{"result":[{"metric":"UTM zone","value":"18"},{"metric":"Latitude band","value":"T"},{"metric":"Hemisphere","value":"N"},{"metric":"Zone designation","value":"18T"},{"metric":"Central meridian","value":"-75°"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"UTM Zone","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vo2-max-estimator-calculator":{"post":{"operationId":"run_vo2_max_estimator_calculator","summary":"VO2 Max Estimator Calculator","tags":["Calculators"],"description":"Estimate your VO₂ max (maximal oxygen uptake, ml/kg/min) from a Cooper 12-minute run, a 1.5-mile run, a YMCA 3-minute step test, or your resting heart rate (Uth–Sørensen). Also shows your fitness category by age and sex plus five heart-rate training zones.\n\n[Try VO2 Max Estimator Calculator in your browser →](https://iotools.cloud/tool/vo2-max-estimator-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"testMethod":{"enum":["cooper","mile15","ymca","uth"],"description":"Test Method"},"age":{"type":"number","description":"Age (years)","minimum":10,"maximum":100},"sex":{"enum":["male","female"],"description":"Sex"},"restingHr":{"type":"number","description":"Resting HR (BPM)","minimum":30,"maximum":120},"cooperDistance":{"type":"number","description":"Distance run in 12 min (m)","minimum":500,"maximum":5000},"mileMinutes":{"type":"number","description":"1.5-mile time — Minutes","minimum":5,"maximum":30},"mileSeconds":{"type":"number","description":"1.5-mile time — Seconds","minimum":0,"maximum":59},"ymcaRecoveryHr":{"type":"number","description":"1-min recovery HR (BPM)","minimum":50,"maximum":220}},"required":["age","restingHr"]},"examples":{"cooper_12_minute_run_2400_m_male_age_30":{"summary":"Cooper 12-minute run — 2400 m, male, age 30","value":{"testMethod":"cooper","age":"30","sex":"male","restingHr":"60","cooperDistance":"2400"}},"1_5_mile_run_12_30_male_age_30":{"summary":"1.5-mile run — 12:30, male, age 30","value":{"testMethod":"mile15","age":"30","sex":"male","restingHr":"60","mileMinutes":"12","mileSeconds":"30"}},"ymca_step_test_recovery_hr_120_female_age_45":{"summary":"YMCA step test — recovery HR 120, female, age 45","value":{"testMethod":"ymca","age":"45","sex":"female","restingHr":"65","ymcaRecoveryHr":"120"}},"uth_s_rensen_resting_hr_50_male_age_40":{"summary":"Uth–Sørensen — resting HR 50, male, age 40","value":{"testMethod":"uth","age":"40","sex":"male","restingHr":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cooper_12_minute_run_2400_m_male_age_30":{"summary":"Cooper 12-minute run — 2400 m, male, age 30","value":{"tool":"vo2-max-estimator-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"VO₂ Max","value":"42.4 ml/kg/min"},{"metric":"Fitness Category","value":"Good"},{"metric":"Test Method","value":"Cooper 12-minute run"},{"metric":"Age Group","value":"30–39"},{"metric":"Sex","value":"Male"}],"norms":[{"age":"20–29","poor":"0–37","fair":"38–43","good":"44–51","excellent":"52–56","superior":"57+"},{"age":"30–39","poor":"0–33","fair":"34–39","good":"40–47 (you)","excellent":"48–51","superior":"52+"},{"age":"40–49","poor":"0–29","fair":"30–35","good":"36–43","excellent":"44–47","superior":"48+"},{"age":"50–59","poor":"0–24","fair":"25–31","good":"32–39","excellent":"40–43","superior":"44+"},{"age":"60+","poor":"0–20","fair":"21–26","good":"27–35","excellent":"36–39","superior":"40+"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"124–136 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"136–149 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"149–162 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"162–174 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"174–187 BPM","training-purpose":"VO₂ max, peak power"}],"interpretation":"A VO₂ max of 42.4 ml/kg/min is above average for your age group (male, age 30). Based on the Cooper 12-minute run.\n\nTraining tip: Mix two Zone 2 base sessions with one VO₂-max interval workout and one tempo session each week to keep improving.\n\nEstimated values are not a substitute for a graded exercise test in a clinical setting. Consult a physician before starting a new exercise programme."},"credits_used":5,"credits_remaining":null}},"1_5_mile_run_12_30_male_age_30":{"summary":"1.5-mile run — 12:30, male, age 30","value":{"tool":"vo2-max-estimator-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"VO₂ Max","value":"42.1 ml/kg/min"},{"metric":"Fitness Category","value":"Good"},{"metric":"Test Method","value":"1.5-mile run"},{"metric":"Age Group","value":"30–39"},{"metric":"Sex","value":"Male"}],"norms":[{"age":"20–29","poor":"0–37","fair":"38–43","good":"44–51","excellent":"52–56","superior":"57+"},{"age":"30–39","poor":"0–33","fair":"34–39","good":"40–47 (you)","excellent":"48–51","superior":"52+"},{"age":"40–49","poor":"0–29","fair":"30–35","good":"36–43","excellent":"44–47","superior":"48+"},{"age":"50–59","poor":"0–24","fair":"25–31","good":"32–39","excellent":"40–43","superior":"44+"},{"age":"60+","poor":"0–20","fair":"21–26","good":"27–35","excellent":"36–39","superior":"40+"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"124–136 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"136–149 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"149–162 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"162–174 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"174–187 BPM","training-purpose":"VO₂ max, peak power"}],"interpretation":"A VO₂ max of 42.1 ml/kg/min is above average for your age group (male, age 30). Based on the 1.5-mile run.\n\nTraining tip: Mix two Zone 2 base sessions with one VO₂-max interval workout and one tempo session each week to keep improving.\n\nEstimated values are not a substitute for a graded exercise test in a clinical setting. Consult a physician before starting a new exercise programme."},"credits_used":5,"credits_remaining":null}},"ymca_step_test_recovery_hr_120_female_age_45":{"summary":"YMCA step test — recovery HR 120, female, age 45","value":{"tool":"vo2-max-estimator-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"VO₂ Max","value":"43.6 ml/kg/min"},{"metric":"Fitness Category","value":"Superior"},{"metric":"Test Method","value":"YMCA 3-minute step test"},{"metric":"Age Group","value":"40–49"},{"metric":"Sex","value":"Female"}],"norms":[{"age":"20–29","poor":"0–27","fair":"28–33","good":"34–41","excellent":"42–46","superior":"47+"},{"age":"30–39","poor":"0–26","fair":"27–32","good":"33–39","excellent":"40–44","superior":"45+"},{"age":"40–49","poor":"0–24","fair":"25–30","good":"31–37","excellent":"38–41","superior":"42+ (you)"},{"age":"50–59","poor":"0–20","fair":"21–26","good":"27–33","excellent":"34–37","superior":"38+"},{"age":"60+","poor":"0–18","fair":"19–23","good":"24–30","excellent":"31–34","superior":"35+"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"121–132 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"132–143 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"143–154 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"154–165 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"165–177 BPM","training-purpose":"VO₂ max, peak power"}],"interpretation":"A VO₂ max of 43.6 ml/kg/min places you among the most aerobically fit for your age group (female, age 45). Based on the YMCA 3-minute step test.\n\nTraining tip: Focus on race-specific quality, recovery, and sleep — gains at this level are small but come from periodisation and consistency.\n\nEstimated values are not a substitute for a graded exercise test in a clinical setting. Consult a physician before starting a new exercise programme."},"credits_used":5,"credits_remaining":null}},"uth_s_rensen_resting_hr_50_male_age_40":{"summary":"Uth–Sørensen — resting HR 50, male, age 40","value":{"tool":"vo2-max-estimator-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"VO₂ Max","value":"55.1 ml/kg/min"},{"metric":"Fitness Category","value":"Superior"},{"metric":"Test Method","value":"Uth–Sørensen (resting HR)"},{"metric":"Age Group","value":"40–49"},{"metric":"Sex","value":"Male"}],"norms":[{"age":"20–29","poor":"0–37","fair":"38–43","good":"44–51","excellent":"52–56","superior":"57+"},{"age":"30–39","poor":"0–33","fair":"34–39","good":"40–47","excellent":"48–51","superior":"52+"},{"age":"40–49","poor":"0–29","fair":"30–35","good":"36–43","excellent":"44–47","superior":"48+ (you)"},{"age":"50–59","poor":"0–24","fair":"25–31","good":"32–39","excellent":"40–43","superior":"44+"},{"age":"60+","poor":"0–20","fair":"21–26","good":"27–35","excellent":"36–39","superior":"40+"}],"zones":[{"zone":"Zone 1 — Very Light","intensity-of-max-hr":"50–60%","bpm-range":"115–128 BPM","training-purpose":"Recovery, warm-up, cool-down"},{"zone":"Zone 2 — Light","intensity-of-max-hr":"60–70%","bpm-range":"128–141 BPM","training-purpose":"Fat burn, base endurance"},{"zone":"Zone 3 — Moderate","intensity-of-max-hr":"70–80%","bpm-range":"141–154 BPM","training-purpose":"Aerobic capacity, stamina"},{"zone":"Zone 4 — Hard","intensity-of-max-hr":"80–90%","bpm-range":"154–167 BPM","training-purpose":"Lactate threshold, speed"},{"zone":"Zone 5 — Maximum","intensity-of-max-hr":"90–100%","bpm-range":"167–180 BPM","training-purpose":"VO₂ max, peak power"}],"interpretation":"A VO₂ max of 55.1 ml/kg/min places you among the most aerobically fit for your age group (male, age 40). Based on the Uth–Sørensen (resting HR).\n\nTraining tip: Focus on race-specific quality, recovery, and sleep — gains at this level are small but come from periodisation and consistency.\n\nEstimated values are not a substitute for a graded exercise test in a clinical setting. Consult a physician before starting a new exercise programme."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"norms":{"type":"array","description":"Fitness Category by Age & Sex","items":{"type":"object","properties":{"age":{"type":"string","description":"Age"},"poor":{"type":"string","description":"Poor"},"fair":{"type":"string","description":"Fair"},"good":{"type":"string","description":"Good"},"excellent":{"type":"string","description":"Excellent"},"superior":{"type":"string","description":"Superior"}}},"x-iotools-columns":["age","poor","fair","good","excellent","superior"]},"zones":{"type":"array","description":"Heart Rate Training Zones","items":{"type":"object","properties":{"zone":{"type":"string","description":"Zone"},"intensity-of-max-hr":{"type":"string","description":"Intensity (% of Max HR)"},"bpm-range":{"type":"string","description":"BPM Range"},"training-purpose":{"type":"string","description":"Training Purpose"}}},"x-iotools-columns":["zone","intensity-of-max-hr","bpm-range","training-purpose"]},"interpretation":{"type":"string","description":"Interpretation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/water-liquid-tank-volume-calculator":{"post":{"operationId":"run_water_liquid_tank_volume_calculator","summary":"Water & Liquid Tank Volume Calculator","tags":["Calculators"],"description":"Calculate the total and currently-filled volume of a liquid storage tank in liters, US/UK gallons, cubic meters, cubic feet and fluid ounces, plus the liquid's weight. Supports rectangular, vertical/horizontal cylinder, cone-frustum and capsule tanks.\n\n[Try Water & Liquid Tank Volume Calculator in your browser →](https://iotools.cloud/tool/water-liquid-tank-volume-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tankShape":{"enum":["rectangular","vertical-cylinder","horizontal-cylinder","cone-frustum","capsule"],"description":"Tank Shape"},"lengthUnit":{"enum":["m","cm","mm","in","ft"],"description":"Length Unit"},"rectLength":{"type":"number","description":"Length","minimum":0},"rectWidth":{"type":"number","description":"Width","minimum":0},"rectHeight":{"type":"number","description":"Height","minimum":0},"cylDiameter":{"type":"number","description":"Diameter","minimum":0},"cylHeight":{"type":"number","description":"Height","minimum":0},"cylLength":{"type":"number","description":"Length","minimum":0},"frustumTop":{"type":"number","description":"Top Diameter","minimum":0},"frustumBottom":{"type":"number","description":"Bottom Diameter","minimum":0},"frustumHeight":{"type":"number","description":"Height","minimum":0},"fillLevel":{"type":"number","description":"Fill Level (%)","minimum":0,"maximum":100},"liquidType":{"enum":["water","gasoline","diesel","kerosene","crude-oil","vegetable-oil","milk","ethanol","sea-water","mercury"],"description":"Liquid Type"}},"required":[]},"examples":{"rectangular_tank_100_50_60_cm_full_of_water":{"summary":"Rectangular tank, 100×50×60 cm, full of water","value":{"tankShape":"rectangular","lengthUnit":"cm","rectLength":"100","rectWidth":"50","rectHeight":"60","fillLevel":"100","liquidType":"water"}},"horizontal_cylinder_200_300_cm_25_full_of_diesel_segment_fill":{"summary":"Horizontal cylinder, Ø200×300 cm, 25% full of diesel (segment fill)","value":{"tankShape":"horizontal-cylinder","lengthUnit":"cm","cylDiameter":"200","cylLength":"300","fillLevel":"25","liquidType":"diesel"}},"vertical_cylinder_2_3_m_80_full_of_water":{"summary":"Vertical cylinder, Ø2×3 m, 80% full of water","value":{"tankShape":"vertical-cylinder","lengthUnit":"m","cylDiameter":"2","cylHeight":"3","fillLevel":"80","liquidType":"water"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangular_tank_100_50_60_cm_full_of_water":{"summary":"Rectangular tank, 100×50×60 cm, full of water","value":{"tool":"water-liquid-tank-volume-calculator","tool_version":"1.0.2","outputs":{"resultsTable":[{"property":"Total Volume (Liters)","value":"300"},{"property":"Total Volume (US Gallons)","value":"79.252"},{"property":"Total Volume (UK Gallons)","value":"65.991"},{"property":"Total Volume (m³)","value":"0.3"},{"property":"Total Volume (ft³)","value":"10.594"},{"property":"Total Volume (US fl oz)","value":"10,144.21"},{"property":"Filled Volume (Liters)","value":"300"},{"property":"Filled Volume (US Gallons)","value":"79.252"},{"property":"Liquid Weight (kg)","value":"300"},{"property":"Liquid Weight (lbs)","value":"661.387"}]},"credits_used":5,"credits_remaining":null}},"horizontal_cylinder_200_300_cm_25_full_of_diesel_segment_fill":{"summary":"Horizontal cylinder, Ø200×300 cm, 25% full of diesel (segment fill)","value":{"tool":"water-liquid-tank-volume-calculator","tool_version":"1.0.2","outputs":{"resultsTable":[{"property":"Total Volume (Liters)","value":"9,424.78"},{"property":"Total Volume (US Gallons)","value":"2,489.76"},{"property":"Total Volume (UK Gallons)","value":"2,073.16"},{"property":"Total Volume (m³)","value":"9.4248"},{"property":"Total Volume (ft³)","value":"332.833"},{"property":"Total Volume (US fl oz)","value":"318,689.66"},{"property":"Filled Volume (Liters)","value":"1,842.55"},{"property":"Filled Volume (US Gallons)","value":"486.751"},{"property":"Liquid Weight (kg)","value":"1,533.01"},{"property":"Liquid Weight (lbs)","value":"3,379.7"}]},"credits_used":5,"credits_remaining":null}},"vertical_cylinder_2_3_m_80_full_of_water":{"summary":"Vertical cylinder, Ø2×3 m, 80% full of water","value":{"tool":"water-liquid-tank-volume-calculator","tool_version":"1.0.2","outputs":{"resultsTable":[{"property":"Total Volume (Liters)","value":"9,424.78"},{"property":"Total Volume (US Gallons)","value":"2,489.76"},{"property":"Total Volume (UK Gallons)","value":"2,073.16"},{"property":"Total Volume (m³)","value":"9.4248"},{"property":"Total Volume (ft³)","value":"332.833"},{"property":"Total Volume (US fl oz)","value":"318,689.66"},{"property":"Filled Volume (Liters)","value":"7,539.82"},{"property":"Filled Volume (US Gallons)","value":"1,991.81"},{"property":"Liquid Weight (kg)","value":"7,539.82"},{"property":"Liquid Weight (lbs)","value":"16,622.46"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultsTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wavelength-frequency-calculator":{"post":{"operationId":"run_wavelength_frequency_calculator","summary":"Wavelength to Frequency Calculator","tags":["Calculators"],"description":"Convert between wavelength and frequency of electromagnetic waves using c = λf. Get the photon energy, the electromagnetic spectrum band (radio, microwave, infrared, visible, UV, X-ray, gamma) and an approximate colour for visible light.\n\n[Try Wavelength to Frequency Calculator in your browser →](https://iotools.cloud/tool/wavelength-frequency-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["wavelength","frequency"],"description":"Convert"},"wavelength":{"type":"number","description":"Wavelength","minimum":0},"wavelengthUnit":{"enum":["1e-9","1e-6","1e-3","1e-2","1"],"description":"Wavelength unit"},"frequency":{"type":"number","description":"Frequency","minimum":0},"frequencyUnit":{"enum":["1","1e3","1e6","1e9","1e12"],"description":"Frequency unit"}},"required":[]},"examples":{"visible_green_light_550_nm":{"summary":"Visible green light (550 nm)","value":{"inputMode":"wavelength","wavelength":"550","wavelengthUnit":"1e-9"}},"fm_radio_100_mhz":{"summary":"FM radio (100 MHz)","value":{"inputMode":"frequency","frequency":"100","frequencyUnit":"1e6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"visible_green_light_550_nm":{"summary":"Visible green light (550 nm)","value":{"tool":"wavelength-frequency-calculator","tool_version":"1.0.2","outputs":{"summary":"550 nm ↔ 545.1 THz","results":[{"property":"Spectrum band","value":"Visible"},{"property":"Wavelength","value":"550 nm"},{"property":"Frequency","value":"545.1 THz"},{"property":"Photon energy","value":"2.254 eV"},{"property":"Photon energy (joules)","value":"3.6117e-19 J"},{"property":"Approx. visible colour","value":"rgb(163,255,0)"}]},"credits_used":5,"credits_remaining":null}},"fm_radio_100_mhz":{"summary":"FM radio (100 MHz)","value":{"tool":"wavelength-frequency-calculator","tool_version":"1.0.2","outputs":{"summary":"2.998 m ↔ 100 MHz","results":[{"property":"Spectrum band","value":"Radio"},{"property":"Wavelength","value":"2.998 m"},{"property":"Frequency","value":"100 MHz"},{"property":"Photon energy","value":"4.136e-7 eV"},{"property":"Photon energy (joules)","value":"6.6261e-26 J"},{"property":"Approx. visible colour","value":"Not visible to the human eye"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"results":{"type":"array","description":"Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/web-vitals-score-calculator":{"post":{"operationId":"run_web_vitals_score_calculator","summary":"Web Vitals Score Calculator","tags":["Calculators"],"description":"Grade your Core Web Vitals against Google's Good / Needs-Improvement / Poor thresholds. Enter LCP, INP, and CLS (plus optional FCP, TTFB, and TBT) to get an overall pass/fail verdict, a per-metric rating breakdown, and targeted improvement suggestions.\n\n[Try Web Vitals Score Calculator in your browser →](https://iotools.cloud/tool/web-vitals-score-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"lcp":{"type":"number","description":"LCP (ms)","minimum":0},"inp":{"type":"number","description":"INP (ms)","minimum":0},"cls":{"type":"number","description":"CLS","minimum":0},"fcp":{"type":"number","description":"FCP (ms)","minimum":0},"ttfb":{"type":"number","description":"TTFB (ms)","minimum":0},"tbt":{"type":"number","description":"TBT (ms)","minimum":0}},"required":[]},"examples":{"good_scores_passes_core_web_vitals":{"summary":"Good scores — passes Core Web Vitals","value":{"lcp":"2000","inp":"150","cls":"0.05","fcp":"","ttfb":"","tbt":""}},"poor_scores_fails_core_web_vitals":{"summary":"Poor scores — fails Core Web Vitals","value":{"lcp":"5000","inp":"600","cls":"0.3","fcp":"3500","ttfb":"2000","tbt":"700"}},"mixed_needs_improvement":{"summary":"Mixed — needs improvement","value":{"lcp":"3000","inp":"150","cls":"0.05","fcp":"","ttfb":"","tbt":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"good_scores_passes_core_web_vitals":{"summary":"Good scores — passes Core Web Vitals","value":{"tool":"web-vitals-score-calculator","tool_version":"1.0.2","outputs":{"verdict":"Passes Core Web Vitals","summary":"3 of 3 core metrics rated Good. A site passes Core Web Vitals only when LCP, INP, and CLS are all Good.","metrics":[{"metric":"LCP — Largest Contentful Paint","value":"2000 ms","rating":"Good","what-it-means":"Time until the largest visible element finishes rendering. Lower is faster perceived loading."},{"metric":"INP — Interaction to Next Paint","value":"150 ms","rating":"Good","what-it-means":"Worst-case latency between a user interaction and the next visual update."},{"metric":"CLS — Cumulative Layout Shift","value":"0.050","rating":"Good","what-it-means":"How much visible content unexpectedly shifts during page life. Lower is more stable."},{"metric":"FCP — First Contentful Paint","value":"—","rating":"Not Provided","what-it-means":"Time until the first text/image is painted. Signals early visual feedback."},{"metric":"TTFB — Time to First Byte","value":"—","rating":"Not Provided","what-it-means":"Server response latency: time from request to first byte received."},{"metric":"TBT — Total Blocking Time","value":"—","rating":"Not Provided","what-it-means":"Total time the main thread was blocked (>50 ms tasks) between FCP and TTI in lab tests."}],"suggestions":"No issues detected. Keep monitoring with real user data."},"credits_used":5,"credits_remaining":null}},"poor_scores_fails_core_web_vitals":{"summary":"Poor scores — fails Core Web Vitals","value":{"tool":"web-vitals-score-calculator","tool_version":"1.0.2","outputs":{"verdict":"Fails Core Web Vitals","summary":"0 of 3 core metrics rated Good. A site passes Core Web Vitals only when LCP, INP, and CLS are all Good.","metrics":[{"metric":"LCP — Largest Contentful Paint","value":"5000 ms","rating":"Poor","what-it-means":"Time until the largest visible element finishes rendering. Lower is faster perceived loading."},{"metric":"INP — Interaction to Next Paint","value":"600 ms","rating":"Poor","what-it-means":"Worst-case latency between a user interaction and the next visual update."},{"metric":"CLS — Cumulative Layout Shift","value":"0.300","rating":"Poor","what-it-means":"How much visible content unexpectedly shifts during page life. Lower is more stable."},{"metric":"FCP — First Contentful Paint","value":"3500 ms","rating":"Poor","what-it-means":"Time until the first text/image is painted. Signals early visual feedback."},{"metric":"TTFB — Time to First Byte","value":"2000 ms","rating":"Poor","what-it-means":"Server response latency: time from request to first byte received."},{"metric":"TBT — Total Blocking Time","value":"700 ms","rating":"Poor","what-it-means":"Total time the main thread was blocked (>50 ms tasks) between FCP and TTI in lab tests."}],"suggestions":"LCP — Poor\n  • Preload your hero image or critical web font.\n  • Serve responsive images (srcset) and modern formats like WebP/AVIF.\n  • Move slow third-party scripts behind defer/async or remove them.\n  • Improve server response time (caching, CDN, faster origin).\n\nINP — Poor\n  • Break up long JavaScript tasks (>50 ms) with scheduling APIs or yield points.\n  • Defer non-critical work in event handlers; do heavy work in a Web Worker.\n  • Avoid layout thrashing by batching DOM reads then writes.\n  • Trim or lazy-load third-party scripts that block the main thread.\n\nCLS — Poor\n  • Set explicit width/height (or aspect-ratio) on images, videos, and ads.\n  • Reserve space for late-loading embeds, banners, and consent UIs.\n  • Use font-display: optional/swap with size-adjust or font preloading to limit FOUT shifts.\n  • Avoid inserting content above existing content unless triggered by user input.\n\nFCP — Poor\n  • Inline critical CSS and defer non-critical CSS.\n  • Eliminate render-blocking resources in the head.\n  • Use a CDN and HTTP/2 or HTTP/3 to reduce request latency.\n\nTTFB — Poor\n  • Cache HTML at the edge (CDN) when possible.\n  • Optimize backend queries and reduce server-side rendering work.\n  • Use HTTP/2 or HTTP/3 and persistent connections; serve from a region close to users.\n\nTBT — Poor\n  • Code-split large bundles and load modules on demand.\n  • Defer or remove unused third-party scripts.\n  • Reduce JavaScript execution by simplifying components and hydration."},"credits_used":5,"credits_remaining":null}},"mixed_needs_improvement":{"summary":"Mixed — needs improvement","value":{"tool":"web-vitals-score-calculator","tool_version":"1.0.2","outputs":{"verdict":"Needs Improvement","summary":"2 of 3 core metrics rated Good. A site passes Core Web Vitals only when LCP, INP, and CLS are all Good.","metrics":[{"metric":"LCP — Largest Contentful Paint","value":"3000 ms","rating":"Needs Improvement","what-it-means":"Time until the largest visible element finishes rendering. Lower is faster perceived loading."},{"metric":"INP — Interaction to Next Paint","value":"150 ms","rating":"Good","what-it-means":"Worst-case latency between a user interaction and the next visual update."},{"metric":"CLS — Cumulative Layout Shift","value":"0.050","rating":"Good","what-it-means":"How much visible content unexpectedly shifts during page life. Lower is more stable."},{"metric":"FCP — First Contentful Paint","value":"—","rating":"Not Provided","what-it-means":"Time until the first text/image is painted. Signals early visual feedback."},{"metric":"TTFB — Time to First Byte","value":"—","rating":"Not Provided","what-it-means":"Server response latency: time from request to first byte received."},{"metric":"TBT — Total Blocking Time","value":"—","rating":"Not Provided","what-it-means":"Total time the main thread was blocked (>50 ms tasks) between FCP and TTI in lab tests."}],"suggestions":"LCP — Needs Improvement\n  • Preload your hero image or critical web font.\n  • Serve responsive images (srcset) and modern formats like WebP/AVIF.\n  • Move slow third-party scripts behind defer/async or remove them.\n  • Improve server response time (caching, CDN, faster origin)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Verdict"},"summary":{"type":"string","description":"Summary"},"metrics":{"type":"array","description":"Metric breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"},"rating":{"type":"string","description":"Rating"},"what-it-means":{"type":"string","description":"What it means"}}},"x-iotools-columns":["metric","value","rating","what-it-means"]},"suggestions":{"type":"string","description":"Suggestions"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/weighted-grade-average-calculator":{"post":{"operationId":"run_weighted_grade_average_calculator","summary":"Weighted Grade Average Calculator","tags":["Calculators"],"description":"Calculate a weighted grade average from a list of assignments or categories, each with its grade and weight. Shows a per-item breakdown, checks whether your weights sum to 100%, converts to a letter grade, and solves what score you still need to reach a target.\n\n[Try Weighted Grade Average Calculator in your browser →](https://iotools.cloud/tool/weighted-grade-average-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"assignments":{"type":"string","description":"Assignments"},"letterScale":{"enum":["standard","plus-minus"],"description":"Letter grade scale"},"targetGrade":{"type":"number","description":"Target final grade %","minimum":0,"maximum":100}},"required":[]},"examples":{"weights_sum_to_100":{"summary":"Weights sum to 100%","value":{"assignments":"Homework, 90, 20\nMidterm, 85, 30\nFinal Exam, 78, 50","letterScale":"standard"}},"weights_do_not_sum_to_100":{"summary":"Weights do not sum to 100%","value":{"assignments":"Quiz 1, 88, 15\nQuiz 2, 92, 15\nMidterm, 79, 25","letterScale":"standard"}},"target_solver_with_a_pending_final":{"summary":"Target solver with a pending final","value":{"assignments":"Homework, 90, 20\nMidterm, 85, 30\nFinal Exam, , 50","letterScale":"standard","targetGrade":"88"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"weights_sum_to_100":{"summary":"Weights sum to 100%","value":{"tool":"weighted-grade-average-calculator","tool_version":"1.0.2","outputs":{"result":"82.5% (B)","breakdown":[{"assignment":"Homework","grade":"90%","weight":"20%","weighted-points":"18"},{"assignment":"Midterm","grade":"85%","weight":"30%","weighted-points":"25.5"},{"assignment":"Final Exam","grade":"78%","weight":"50%","weighted-points":"39"}],"summary":"Weight check\n  Total weight: 100%\n  Graded: 100% (3 assignments)\n  OK Weights sum to 100%."},"credits_used":5,"credits_remaining":null}},"weights_do_not_sum_to_100":{"summary":"Weights do not sum to 100%","value":{"tool":"weighted-grade-average-calculator","tool_version":"1.0.2","outputs":{"result":"85% (B)","breakdown":[{"assignment":"Quiz 1","grade":"88%","weight":"15%","weighted-points":"13.2"},{"assignment":"Quiz 2","grade":"92%","weight":"15%","weighted-points":"13.8"},{"assignment":"Midterm","grade":"79%","weight":"25%","weighted-points":"19.75"}],"summary":"Weight check\n  Total weight: 55%\n  Graded: 55% (3 assignments)\n  ! Weights do not sum to 100% (-45%) — the average is normalized by total weight."},"credits_used":5,"credits_remaining":null}},"target_solver_with_a_pending_final":{"summary":"Target solver with a pending final","value":{"tool":"weighted-grade-average-calculator","tool_version":"1.0.2","outputs":{"result":"87% (B)","breakdown":[{"assignment":"Homework","grade":"90%","weight":"20%","weighted-points":"18"},{"assignment":"Midterm","grade":"85%","weight":"30%","weighted-points":"25.5"},{"assignment":"Final Exam","grade":"Pending","weight":"50%","weighted-points":"—"}],"summary":"Weight check\n  Total weight: 100%\n  Graded: 50% (2 assignments)\n  Pending: 50% (1 assignment)\n  OK Weights sum to 100%.\n\nFinal grade projections\n  If you score 0% on the rest: 43.5% (F)\n  If you score 100% on the rest: 93.5% (A)\n\nWhat-if: target 88%\n  Need 89% average across the 1 remaining assignment (B)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Weighted average"},"breakdown":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"assignment":{"type":"string","description":"Assignment"},"grade":{"type":"string","description":"Grade"},"weight":{"type":"string","description":"Weight"},"weighted-points":{"type":"string","description":"Weighted points"}}},"x-iotools-columns":["assignment","grade","weight","weighted-points"]},"summary":{"type":"string","description":"Details"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/weld-size-calculator":{"post":{"operationId":"run_weld_size_calculator","summary":"Weld Size Calculator","tags":["Calculators"],"description":"Size a fillet weld from a joint load, or check the load capacity of a chosen weld size. Covers the standard AISC/AWS longitudinal-shear check (leg, effective throat, allowable stress by electrode class) plus an optional AWS D1.1 code-minimum fillet-size check. Runs entirely in your browser.\n\n[Try Weld Size Calculator in your browser →](https://iotools.cloud/tool/weld-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["size","capacity"],"description":"What do you want to find?"},"jointLoad":{"type":"number","description":"Joint load to carry (kN)","minimum":0.01,"maximum":100000},"weldLegSize":{"type":"number","description":"Fillet weld leg size (mm)","minimum":1,"maximum":50},"weldLength":{"type":"number","description":"Total effective weld length (mm)","minimum":1,"maximum":100000},"electrode":{"enum":["E60XX","E70XX","E80XX","E90XX","E100XX","E110XX","custom"],"description":"Electrode classification"},"customStrength":{"type":"number","description":"Electrode tensile strength F_EXX (MPa)","minimum":1,"maximum":2000},"thickerPartThickness":{"type":"number","description":"Thickness of the thicker part joined (mm) — optional","minimum":0.1,"maximum":500}},"required":[]},"examples":{"size_a_fillet_weld_for_a_50_kn_load":{"summary":"Size a fillet weld for a 50 kN load","value":{"mode":"size","jointLoad":"50","weldLength":"200","electrode":"E70XX","thickerPartThickness":""}},"check_a_6mm_weld_against_a_20mm_thicker_part_below_code_minimum":{"summary":"Check a 6mm weld against a 20mm thicker part (below code minimum)","value":{"mode":"capacity","weldLegSize":"6","weldLength":"150","electrode":"E60XX","thickerPartThickness":"20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"size_a_fillet_weld_for_a_50_kn_load":{"summary":"Size a fillet weld for a 50 kN load","value":{"tool":"weld-size-calculator","tool_version":"1.0.2","outputs":{"legSize":"3 mm","throatThickness":"2.12 mm","loadCapacity":"61.47 kN","summaryTable":[{"metric":"Mode","value":"Find required weld size"},{"metric":"Total effective weld length","value":"200.00 mm"},{"metric":"Electrode","value":"E70XX (483 MPa)"},{"metric":"Allowable shear stress (0.30 × Fexx)","value":"144.90 MPa"},{"metric":"Fillet weld leg size","value":"3 mm"},{"metric":"Effective throat thickness","value":"2.12 mm"},{"metric":"Load capacity","value":"61.47 kN"}],"notes":"Calculated minimum leg size = required throat ÷ 0.707 = 1.73 mm ÷ 0.707 = 2.44 mm — rounded up to the nearest practical fillet size (3 mm).\nAt the recommended 3 mm leg, this weld carries 61.47 kN — a margin of 11.47 kN (23%) above the 50.00 kN design load.\nThis uses the AISC/AWS allowable-stress-design shear check (0.30 × electrode tensile strength) for a longitudinally loaded fillet weld — transverse loading, fatigue and other code provisions (AWS D1.1 §5, Eurocode 3) can change the governing size. Verify against your project's applicable code and a qualified welding engineer before fabrication."},"credits_used":5,"credits_remaining":null}},"check_a_6mm_weld_against_a_20mm_thicker_part_below_code_minimum":{"summary":"Check a 6mm weld against a 20mm thicker part (below code minimum)","value":{"tool":"weld-size-calculator","tool_version":"1.0.2","outputs":{"legSize":"6 mm","throatThickness":"4.24 mm","loadCapacity":"79.03 kN","summaryTable":[{"metric":"Mode","value":"Check capacity of a given weld size"},{"metric":"Total effective weld length","value":"150.00 mm"},{"metric":"Electrode","value":"E60XX (414 MPa)"},{"metric":"Allowable shear stress (0.30 × Fexx)","value":"124.20 MPa"},{"metric":"Fillet weld leg size","value":"6 mm"},{"metric":"Effective throat thickness","value":"4.24 mm"},{"metric":"Load capacity","value":"79.03 kN"},{"metric":"AWS D1.1 minimum leg (Table 5.7)","value":"8 mm"},{"metric":"Meets code minimum?","value":"No — increase to at least 8 mm"}],"notes":"Load capacity = allowable shear stress × throat × weld length = 124.20 MPa × 4.24 mm × 150.00 mm = 79,028 N (79.03 kN).\n⚠ This 6 mm leg is below the AWS D1.1 Table 5.7 code-minimum of 8 mm for a 20 mm thicker part — increase the leg size regardless of the calculated capacity.\nThis uses the AISC/AWS allowable-stress-design shear check (0.30 × electrode tensile strength) for a longitudinally loaded fillet weld — transverse loading, fatigue and other code provisions (AWS D1.1 §5, Eurocode 3) can change the governing size. Verify against your project's applicable code and a qualified welding engineer before fabrication."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"legSize":{"type":"string","description":"Fillet weld leg size"},"throatThickness":{"type":"string","description":"Effective throat thickness"},"loadCapacity":{"type":"string","description":"Load capacity"},"summaryTable":{"type":"array","description":"Sizing breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wire-size-calculator":{"post":{"operationId":"run_wire_size_calculator","summary":"Wire Size Calculator","tags":["Calculators"],"description":"Find the right wire gauge (AWG) for a circuit from its current, one-way run length, supply voltage, and acceptable voltage drop. Uses the NEC resistance and ampacity tables for copper and aluminum, in conduit, free air, or direct burial.\n\n[Try Wire Size Calculator in your browser →](https://iotools.cloud/tool/wire-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"loadCurrent":{"type":"number","description":"Load Current (A)","minimum":0.01},"supplyVoltage":{"type":"number","description":"Supply Voltage (V)","minimum":0.1},"cableLength":{"type":"number","description":"One-way Cable Length","minimum":0.1},"lengthUnit":{"enum":["ft","m"],"description":"Length Unit"},"voltageSystem":{"enum":["ac1","ac3","dc"],"description":"Voltage System"},"conductor":{"enum":["copper","aluminum"],"description":"Conductor Material"},"installation":{"enum":["conduit","free_air","buried"],"description":"Installation"},"maxVdPercent":{"type":"number","description":"Max Voltage Drop (%)","minimum":0.1,"maximum":20}},"required":["loadCurrent","supplyVoltage","cableLength"]},"examples":{"15_a_50_ft_120_v_3_drop":{"summary":"15 A, 50 ft, 120 V, 3% drop","value":{"loadCurrent":"15","supplyVoltage":"120","cableLength":"50","lengthUnit":"ft","voltageSystem":"ac1","conductor":"copper","installation":"conduit","maxVdPercent":"3"}},"aluminum_feeder_100_ft":{"summary":"Aluminum feeder, 100 ft","value":{"loadCurrent":"40","supplyVoltage":"240","cableLength":"100","lengthUnit":"ft","voltageSystem":"ac1","conductor":"aluminum","installation":"conduit","maxVdPercent":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"15_a_50_ft_120_v_3_drop":{"summary":"15 A, 50 ft, 120 V, 3% drop","value":{"tool":"wire-size-calculator","tool_version":"1.0.2","outputs":{"status":"Use 12 AWG copper (3.31 mm²) for 15 A at 120 V AC 1-phase, 50 ft (50 ft) in conduit. Voltage drop 2.41% (within your 3% limit).","result":[{"property":"Recommended Wire (AWG)","value":"12 AWG"},{"property":"Cross-section (mm²)","value":"3.31 mm²"},{"property":"Wire Ampacity","value":"25 A"},{"property":"Voltage Drop","value":"2.895 V"},{"property":"Voltage Drop (%)","value":"2.41 %"},{"property":"Voltage at Load","value":"117.11 V"},{"property":"Power Loss (heat)","value":"43.42 W"},{"property":"Voltage Drop Formula","value":"Vd = 2 × L × I × R = 2 × 0.05 kft × 15 A × 1.93 Ω/kft"}],"awgTable":[{"awg":"14","mm2":"2.08","ampacity-a":"20","v-drop-v":"4.6 V / 3.84%","status":"V-drop exceeds limit"},{"awg":"12","mm2":"3.31","ampacity-a":"25","v-drop-v":"2.9 V / 2.41%","status":"Recommended"},{"awg":"10","mm2":"5.26","ampacity-a":"35","v-drop-v":"1.81 V / 1.51%","status":"OK"},{"awg":"8","mm2":"8.37","ampacity-a":"50","v-drop-v":"1.17 V / 0.97%","status":"OK"},{"awg":"6","mm2":"13.3","ampacity-a":"65","v-drop-v":"0.74 V / 0.61%","status":"OK"},{"awg":"4","mm2":"21.2","ampacity-a":"85","v-drop-v":"0.46 V / 0.38%","status":"OK"},{"awg":"3","mm2":"26.7","ampacity-a":"100","v-drop-v":"0.37 V / 0.31%","status":"OK"},{"awg":"2","mm2":"33.6","ampacity-a":"115","v-drop-v":"0.29 V / 0.24%","status":"OK"},{"awg":"1","mm2":"42.4","ampacity-a":"130","v-drop-v":"0.23 V / 0.19%","status":"OK"},{"awg":"1/0","mm2":"53.5","ampacity-a":"150","v-drop-v":"0.18 V / 0.15%","status":"OK"},{"awg":"2/0","mm2":"67.4","ampacity-a":"175","v-drop-v":"0.15 V / 0.12%","status":"OK"},{"awg":"3/0","mm2":"85","ampacity-a":"200","v-drop-v":"0.11 V / 0.1%","status":"OK"},{"awg":"4/0","mm2":"107.2","ampacity-a":"230","v-drop-v":"0.09 V / 0.08%","status":"OK"}]},"credits_used":5,"credits_remaining":null}},"aluminum_feeder_100_ft":{"summary":"Aluminum feeder, 100 ft","value":{"tool":"wire-size-calculator","tool_version":"1.0.2","outputs":{"status":"Use 6 AWG aluminum (13.3 mm²) for 40 A at 240 V AC 1-phase, 100 ft (100 ft) in conduit. Voltage drop 2.69% (within your 3% limit).","result":[{"property":"Recommended Wire (AWG)","value":"6 AWG"},{"property":"Cross-section (mm²)","value":"13.3 mm²"},{"property":"Wire Ampacity","value":"50 A"},{"property":"Voltage Drop","value":"6.464 V"},{"property":"Voltage Drop (%)","value":"2.69 %"},{"property":"Voltage at Load","value":"233.54 V"},{"property":"Power Loss (heat)","value":"258.56 W"},{"property":"Voltage Drop Formula","value":"Vd = 2 × L × I × R = 2 × 0.1 kft × 40 A × 0.808 Ω/kft"}],"awgTable":[{"awg":"14","mm2":"2.08","ampacity-a":"-","v-drop-v":"-","status":"Not standard in aluminum"},{"awg":"12","mm2":"3.31","ampacity-a":"20","v-drop-v":"25.44 V / 10.6%","status":"Under-ampacity"},{"awg":"10","mm2":"5.26","ampacity-a":"30","v-drop-v":"16 V / 6.67%","status":"Under-ampacity"},{"awg":"8","mm2":"8.37","ampacity-a":"40","v-drop-v":"10.24 V / 4.27%","status":"V-drop exceeds limit"},{"awg":"6","mm2":"13.3","ampacity-a":"50","v-drop-v":"6.46 V / 2.69%","status":"Recommended"},{"awg":"4","mm2":"21.2","ampacity-a":"65","v-drop-v":"4.06 V / 1.69%","status":"OK"},{"awg":"3","mm2":"26.7","ampacity-a":"75","v-drop-v":"3.22 V / 1.34%","status":"OK"},{"awg":"2","mm2":"33.6","ampacity-a":"90","v-drop-v":"2.55 V / 1.06%","status":"OK"},{"awg":"1","mm2":"42.4","ampacity-a":"100","v-drop-v":"2.02 V / 0.84%","status":"OK"},{"awg":"1/0","mm2":"53.5","ampacity-a":"120","v-drop-v":"1.61 V / 0.67%","status":"OK"},{"awg":"2/0","mm2":"67.4","ampacity-a":"135","v-drop-v":"1.27 V / 0.53%","status":"OK"},{"awg":"3/0","mm2":"85","ampacity-a":"155","v-drop-v":"1.01 V / 0.42%","status":"OK"},{"awg":"4/0","mm2":"107.2","ampacity-a":"180","v-drop-v":"0.8 V / 0.33%","status":"OK"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Recommendation"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"awgTable":{"type":"array","description":"AWG Reference Table","items":{"type":"object","properties":{"awg":{"type":"string","description":"AWG"},"mm2":{"type":"string","description":"mm²"},"ampacity-a":{"type":"string","description":"Ampacity (A)"},"v-drop-v":{"type":"string","description":"V-Drop (V / %)"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["awg","mm2","ampacity-a","v-drop-v","status"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/working-hours-overtime-calculator":{"post":{"operationId":"run_working_hours_overtime_calculator","summary":"Working Hours & Overtime Calculator","tags":["Calculators"],"description":"Calculate regular hours, overtime hours and gross pay from a clock-in/clock-out shift, a break duration, and an overtime rule (daily 8h/10h or weekly 40h threshold) with a custom overtime rate multiplier.\n\n[Try Working Hours & Overtime Calculator in your browser →](https://iotools.cloud/tool/working-hours-overtime-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"timeIn":{"type":"string","description":"Clock In"},"timeOut":{"type":"string","description":"Clock Out"},"breakMinutes":{"type":"number","description":"Break (minutes)","minimum":0,"maximum":480},"overtimeRule":{"enum":["daily_8","daily_10","weekly_40","none"],"description":"Overtime Rule"},"hoursWorkedThisWeek":{"type":"number","description":"Hours already worked this week","minimum":0,"maximum":168},"overtimeMultiplier":{"type":"number","description":"Overtime Multiplier","minimum":1,"maximum":5},"hourlyRate":{"type":"number","description":"Hourly Rate ($)","minimum":0}},"required":[]},"examples":{"daily_8h_rule_with_pay":{"summary":"Daily >8h rule, with pay","value":{"timeIn":"09:00","timeOut":"18:00","breakMinutes":"30","overtimeRule":"daily_8","hoursWorkedThisWeek":"0","overtimeMultiplier":"1.5","hourlyRate":"20"}},"weekly_40h_rule_already_worked_38h_double_time":{"summary":"Weekly >40h rule, already worked 38h, double time","value":{"timeIn":"09:00","timeOut":"17:00","breakMinutes":"0","overtimeRule":"weekly_40","hoursWorkedThisWeek":"38","overtimeMultiplier":"2","hourlyRate":"25"}},"overnight_shift_no_overtime_rule_no_rate":{"summary":"Overnight shift, no overtime rule, no rate","value":{"timeIn":"22:00","timeOut":"06:00","breakMinutes":"30","overtimeRule":"none","hoursWorkedThisWeek":"0","overtimeMultiplier":"1.5","hourlyRate":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"daily_8h_rule_with_pay":{"summary":"Daily >8h rule, with pay","value":{"tool":"working-hours-overtime-calculator","tool_version":"1.0.2","outputs":{"hoursWorked":"8h 30m (8.50 hrs)","regularHours":"8h 00m (8.00 hrs)","overtimeHours":"0h 30m (0.50 hrs)","regularPay":"$160.00","overtimePay":"$15.00","grossPay":"$175.00","payBreakdown":[{"type":"Regular","hours":"8h 00m (8.00 hrs)","rate":"$20.00/hr","pay":"$160.00"},{"type":"Overtime","hours":"0h 30m (0.50 hrs)","rate":"$30.00/hr (1.5×)","pay":"$15.00"},{"type":"Total","hours":"8h 30m (8.50 hrs)","rate":"-","pay":"$175.00"}]},"credits_used":5,"credits_remaining":null}},"weekly_40h_rule_already_worked_38h_double_time":{"summary":"Weekly >40h rule, already worked 38h, double time","value":{"tool":"working-hours-overtime-calculator","tool_version":"1.0.2","outputs":{"hoursWorked":"8h 00m (8.00 hrs)","regularHours":"2h 00m (2.00 hrs)","overtimeHours":"6h 00m (6.00 hrs)","regularPay":"$50.00","overtimePay":"$300.00","grossPay":"$350.00","payBreakdown":[{"type":"Regular","hours":"2h 00m (2.00 hrs)","rate":"$25.00/hr","pay":"$50.00"},{"type":"Overtime","hours":"6h 00m (6.00 hrs)","rate":"$50.00/hr (2×)","pay":"$300.00"},{"type":"Total","hours":"8h 00m (8.00 hrs)","rate":"-","pay":"$350.00"}]},"credits_used":5,"credits_remaining":null}},"overnight_shift_no_overtime_rule_no_rate":{"summary":"Overnight shift, no overtime rule, no rate","value":{"tool":"working-hours-overtime-calculator","tool_version":"1.0.2","outputs":{"hoursWorked":"7h 30m (7.50 hrs)","regularHours":"7h 30m (7.50 hrs)","overtimeHours":"0h 00m (0.00 hrs)","regularPay":"-","overtimePay":"-","grossPay":"-","payBreakdown":[{"type":"Regular","hours":"7h 30m (7.50 hrs)","rate":"-","pay":"-"},{"type":"Overtime","hours":"0h 00m (0.00 hrs)","rate":"-","pay":"-"},{"type":"Total","hours":"7h 30m (7.50 hrs)","rate":"-","pay":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hoursWorked":{"type":"string","description":"Hours Worked"},"regularHours":{"type":"string","description":"Regular Hours"},"overtimeHours":{"type":"string","description":"Overtime Hours"},"regularPay":{"type":"string","description":"Regular Pay"},"overtimePay":{"type":"string","description":"Overtime Pay"},"grossPay":{"type":"string","description":"Gross Pay"},"payBreakdown":{"type":"array","description":"Pay Breakdown","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"hours":{"type":"string","description":"Hours"},"rate":{"type":"string","description":"Rate"},"pay":{"type":"string","description":"Pay"}}},"x-iotools-columns":["type","hours","rate","pay"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/string-similarity-calculator":{"post":{"operationId":"run_string_similarity_calculator","summary":"String Similarity Calculator","tags":["Calculators"],"description":"Compare two strings with exact numeric similarity metrics: Levenshtein edit distance (with an insert/delete/substitute operation breakdown and a visual DP matrix), Jaro and Jaro-Winkler similarity, Hamming distance, and bigram cosine similarity.\n\n[Try String Similarity Calculator in your browser →](https://iotools.cloud/tool/string-similarity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"stringA":{"type":"string","description":"String A"},"stringB":{"type":"string","description":"String B"},"caseInsensitive":{"type":"boolean","description":"Ignore case"}},"required":["stringA","stringB"]},"examples":{"classic_example_kitten_sitting":{"summary":"Classic example (kitten → sitting)","value":{"stringA":"kitten","stringB":"sitting","caseInsensitive":""}},"same_length_case_insensitive":{"summary":"Same length, case-insensitive","value":{"stringA":"Roberto","stringB":"robert","caseInsensitive":"true"}},"identical_strings":{"summary":"Identical strings","value":{"stringA":"hello","stringB":"hello","caseInsensitive":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"classic_example_kitten_sitting":{"summary":"Classic example (kitten → sitting)","value":{"tool":"string-similarity-calculator","tool_version":"1.0.2","outputs":{"metrics":[{"metric":"Levenshtein Distance","value":"3"},{"metric":"Levenshtein Similarity","value":"57.14%"},{"metric":"Jaro Similarity","value":"74.60%"},{"metric":"Jaro-Winkler Similarity","value":"74.60%"},{"metric":"Hamming Distance","value":"N/A (different lengths)"},{"metric":"Cosine Similarity (bigrams)","value":"36.51%"}],"operations":[{"operation":"Substitutions","count":"2"},{"operation":"Insertions","count":"1"},{"operation":"Deletions","count":"0"},{"operation":"Matches","count":"4"}],"matrix":"   ∅  s  i  t  t  i  n  g\n∅  0  1  2  3  4  5  6  7\nk  1  1  2  3  4  5  6  7\ni  2  2  1  2  3  4  5  6\nt  3  3  2  1  2  3  4  5\nt  4  4  3  2  1  2  3  4\ne  5  5  4  3  2  2  3  4\nn  6  6  5  4  3  3  2  3"},"credits_used":5,"credits_remaining":null}},"same_length_case_insensitive":{"summary":"Same length, case-insensitive","value":{"tool":"string-similarity-calculator","tool_version":"1.0.2","outputs":{"metrics":[{"metric":"Levenshtein Distance","value":"1"},{"metric":"Levenshtein Similarity","value":"85.71%"},{"metric":"Jaro Similarity","value":"95.24%"},{"metric":"Jaro-Winkler Similarity","value":"97.14%"},{"metric":"Hamming Distance","value":"N/A (different lengths)"},{"metric":"Cosine Similarity (bigrams)","value":"91.29%"}],"operations":[{"operation":"Substitutions","count":"0"},{"operation":"Insertions","count":"0"},{"operation":"Deletions","count":"1"},{"operation":"Matches","count":"6"}],"matrix":"   ∅  r  o  b  e  r  t\n∅  0  1  2  3  4  5  6\nr  1  0  1  2  3  4  5\no  2  1  0  1  2  3  4\nb  3  2  1  0  1  2  3\ne  4  3  2  1  0  1  2\nr  5  4  3  2  1  0  1\nt  6  5  4  3  2  1  0\no  7  6  5  4  3  2  1"},"credits_used":5,"credits_remaining":null}},"identical_strings":{"summary":"Identical strings","value":{"tool":"string-similarity-calculator","tool_version":"1.0.2","outputs":{"metrics":[{"metric":"Levenshtein Distance","value":"0"},{"metric":"Levenshtein Similarity","value":"100.00%"},{"metric":"Jaro Similarity","value":"100.00%"},{"metric":"Jaro-Winkler Similarity","value":"100.00%"},{"metric":"Hamming Distance","value":"0"},{"metric":"Cosine Similarity (bigrams)","value":"100.00%"}],"operations":[{"operation":"Substitutions","count":"0"},{"operation":"Insertions","count":"0"},{"operation":"Deletions","count":"0"},{"operation":"Matches","count":"5"}],"matrix":"   ∅  h  e  l  l  o\n∅  0  1  2  3  4  5\nh  1  0  1  2  3  4\ne  2  1  0  1  2  3\nl  3  2  1  0  1  2\nl  4  3  2  1  0  1\no  5  4  3  2  1  0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"metrics":{"type":"array","description":"Similarity Metrics","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"operations":{"type":"array","description":"Levenshtein Edit Operations (A → B)","items":{"type":"object","properties":{"operation":{"type":"string","description":"Operation"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["operation","count"]},"matrix":{"type":"string","description":"Levenshtein Distance Matrix"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/voltage-divider-calculator":{"post":{"operationId":"run_voltage_divider_calculator","summary":"Voltage Divider Calculator","tags":["Calculators"],"description":"Calculate a two-resistor voltage divider's output voltage and current — Vin × R2 ÷ (R1 + R2). Add an optional load resistance to see how much a real downstream circuit (an ADC input, a sensor) shifts the output from the ideal, unloaded value.\n\n[Try Voltage Divider Calculator in your browser →](https://iotools.cloud/tool/voltage-divider-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"vin":{"type":"number","description":"Input Voltage (Vin)"},"r1":{"type":"number","description":"R1 — top resistor","minimum":0},"r2":{"type":"number","description":"R2 — bottom resistor","minimum":0},"rLoad":{"type":"number","description":"Load Resistance (optional)","minimum":0}},"required":[]},"examples":{"equal_resistors_unloaded_5v_10k_10k":{"summary":"Equal resistors, unloaded (5V, 10kΩ/10kΩ)","value":{"vin":"5","r1":"10000","r2":"10000","rLoad":""}},"adc_reference_divider_with_a_100k_load_5v_10k_10k_100k_load":{"summary":"ADC reference divider with a 100kΩ load (5V, 10kΩ/10kΩ, 100kΩ load)","value":{"vin":"5","r1":"10000","r2":"10000","rLoad":"100000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"equal_resistors_unloaded_5v_10k_10k":{"summary":"Equal resistors, unloaded (5V, 10kΩ/10kΩ)","value":{"tool":"voltage-divider-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Vout (ideal, unloaded)","value":"2.5 V"},{"quantity":"Divider Current (unloaded)","value":"0.25 mA"},{"quantity":"Power in R1","value":"0.625 mW"},{"quantity":"Power in R2","value":"0.625 mW"}],"formulas":"Formulas:\n  Vout = Vin × R2 ÷ (R1 + R2)\n  I = Vin ÷ (R1 + R2)\n  P = I² × R\n\nSteps:\n  Vout = 5 V × 10000 Ω ÷ (10000 Ω + 10000 Ω) = 2.5 V\n  I = 5 V ÷ (10000 Ω + 10000 Ω) = 0.25 mA"},"credits_used":5,"credits_remaining":null}},"adc_reference_divider_with_a_100k_load_5v_10k_10k_100k_load":{"summary":"ADC reference divider with a 100kΩ load (5V, 10kΩ/10kΩ, 100kΩ load)","value":{"tool":"voltage-divider-calculator","tool_version":"1.0.2","outputs":{"resultTable":[{"quantity":"Vout (ideal, unloaded)","value":"2.5 V"},{"quantity":"Divider Current (unloaded)","value":"0.25 mA"},{"quantity":"Power in R1","value":"0.625 mW"},{"quantity":"Power in R2","value":"0.625 mW"},{"quantity":"R2 ∥ Load Resistance","value":"9090.91 Ω"},{"quantity":"Vout (loaded)","value":"2.38095 V"},{"quantity":"Loading Error","value":"4.7619 %"}],"formulas":"Formulas:\n  Vout = Vin × R2 ÷ (R1 + R2)\n  I = Vin ÷ (R1 + R2)\n  P = I² × R\n\nSteps:\n  Vout = 5 V × 10000 Ω ÷ (10000 Ω + 10000 Ω) = 2.5 V\n  I = 5 V ÷ (10000 Ω + 10000 Ω) = 0.25 mA\n\nWith a load (R2 ∥ Rload replaces R2):\n  R2∥Rload = (R2 × Rload) ÷ (R2 + Rload)\n  Vout(loaded) = Vin × (R2∥Rload) ÷ (R1 + R2∥Rload)\n  Loading error % = (Vout_ideal − Vout_loaded) ÷ Vout_ideal × 100\n  R2∥Rload = (10000 Ω × 100000 Ω) ÷ (10000 Ω + 100000 Ω) = 9090.91 Ω\n  Vout(loaded) = 5 V × 9090.91 Ω ÷ (10000 Ω + 9090.91 Ω) = 2.38095 V"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Results","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"formulas":{"type":"string","description":"Formulas & Steps"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/reynolds-number-calculator":{"post":{"operationId":"run_reynolds_number_calculator","summary":"Reynolds Number Calculator","tags":["Calculators"],"description":"Calculate the Reynolds number for pipe or duct flow and see whether it is laminar, transitional or turbulent. Enter a velocity or a volumetric flow rate, pick a fluid preset (water, air, oil, glycerin) or your own density and viscosity, and work in metric or imperial units.\n\n[Try Reynolds Number Calculator in your browser →](https://iotools.cloud/tool/reynolds-number-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["velocity","flow"],"description":"Known Quantity"},"velocity":{"type":"number","description":"Mean Velocity","minimum":0},"velocityUnit":{"enum":["mps","fps"],"description":"Velocity Unit"},"flowRate":{"type":"number","description":"Volumetric Flow Rate","minimum":0},"flowUnit":{"enum":["lpm","m3h","gpm","cfm"],"description":"Flow Unit"},"geometry":{"enum":["circular","rectangular","hydraulic"],"description":"Cross-section"},"pipeDiameter":{"type":"number","description":"Inside Diameter","minimum":0},"ductWidth":{"type":"number","description":"Duct Width","minimum":0},"ductHeight":{"type":"number","description":"Duct Height","minimum":0},"hydraulicDiameter":{"type":"number","description":"Hydraulic Diameter","minimum":0},"lengthUnit":{"enum":["mm","in","m"],"description":"Length Unit"},"fluid":{"enum":["water20","water60","seawater20","air20","air100","ethanol20","sae30","glycerin20","mercury20","custom"],"description":"Fluid"},"density":{"type":"number","description":"Density (kg/m³)","minimum":0},"viscosity":{"type":"number","description":"Viscosity","minimum":0},"viscosityUnit":{"enum":["cp","pas","cst"],"description":"Viscosity Unit"}},"required":[]},"examples":{"water_at_2_m_s_in_a_50_mm_pipe":{"summary":"Water at 2 m/s in a 50 mm pipe","value":{"inputMode":"velocity","velocity":"2","velocityUnit":"mps","geometry":"circular","pipeDiameter":"50","lengthUnit":"mm","fluid":"water20"}},"100_l_min_of_sae_30_oil_in_a_25_mm_pipe":{"summary":"100 L/min of SAE 30 oil in a 25 mm pipe","value":{"inputMode":"flow","flowRate":"100","flowUnit":"lpm","geometry":"circular","pipeDiameter":"25","lengthUnit":"mm","fluid":"sae30"}},"air_in_a_300_200_mm_duct":{"summary":"Air in a 300 × 200 mm duct","value":{"inputMode":"velocity","velocity":"5","velocityUnit":"mps","geometry":"rectangular","ductWidth":"300","ductHeight":"200","lengthUnit":"mm","fluid":"air20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"water_at_2_m_s_in_a_50_mm_pipe":{"summary":"Water at 2 m/s in a 50 mm pipe","value":{"tool":"reynolds-number-calculator","tool_version":"1.0.2","outputs":{"status":"Re = 99,621 — turbulent flow. Water, 20 °C at 2 m/s, hydraulic diameter 0.05 m. Chaotic mixing — use Colebrook/Moody for the friction factor.","result":[{"property":"Reynolds number","value":"99,621"},{"property":"Flow regime","value":"Turbulent"},{"property":"Velocity","value":"2 m/s"},{"property":"Hydraulic diameter","value":"0.05 m"},{"property":"Density","value":"998.2 kg/m³"},{"property":"Dynamic viscosity","value":"0.001002 Pa·s"},{"property":"Kinematic viscosity","value":"1.004e-6 m²/s"},{"property":"Flow area","value":"0.001963 m²"},{"property":"Volumetric flow","value":"0.003927 m³/s (235.62 L/min)"},{"property":"Formula","value":"Re = ρVD/μ = 998.2 × 2 × 0.05 / 0.001002"}],"regimeTable":[{"regime":"Laminar","reynolds-range":"Re < 2300","behaviour":"Smooth, orderly layers — friction factor f = 64/Re.","this-flow":""},{"regime":"Transitional","reynolds-range":"2300 – 4000","behaviour":"Unstable — may switch between laminar and turbulent. Avoid designing here.","this-flow":""},{"regime":"Turbulent","reynolds-range":"Re > 4000","behaviour":"Chaotic mixing — use Colebrook/Moody for the friction factor.","this-flow":"◄ This flow"}]},"credits_used":5,"credits_remaining":null}},"100_l_min_of_sae_30_oil_in_a_25_mm_pipe":{"summary":"100 L/min of SAE 30 oil in a 25 mm pipe","value":{"tool":"reynolds-number-calculator","tool_version":"1.0.2","outputs":{"status":"Re = 943 — laminar flow. SAE 30 engine oil, 40 °C at 100 L/min (3.395 m/s), hydraulic diameter 0.025 m. Smooth, orderly layers — friction factor f = 64/Re.","result":[{"property":"Reynolds number","value":"943"},{"property":"Flow regime","value":"Laminar"},{"property":"Velocity","value":"3.395 m/s"},{"property":"Hydraulic diameter","value":"0.025 m"},{"property":"Density","value":"875 kg/m³"},{"property":"Dynamic viscosity","value":"0.0788 Pa·s"},{"property":"Kinematic viscosity","value":"9.006e-5 m²/s"},{"property":"Flow area","value":"0.0004909 m²"},{"property":"Volumetric flow","value":"0.001667 m³/s (100 L/min)"},{"property":"Formula","value":"Re = ρVD/μ = 875 × 3.395 × 0.025 / 0.0788"}],"regimeTable":[{"regime":"Laminar","reynolds-range":"Re < 2300","behaviour":"Smooth, orderly layers — friction factor f = 64/Re.","this-flow":"◄ This flow"},{"regime":"Transitional","reynolds-range":"2300 – 4000","behaviour":"Unstable — may switch between laminar and turbulent. Avoid designing here.","this-flow":""},{"regime":"Turbulent","reynolds-range":"Re > 4000","behaviour":"Chaotic mixing — use Colebrook/Moody for the friction factor.","this-flow":""}]},"credits_used":5,"credits_remaining":null}},"air_in_a_300_200_mm_duct":{"summary":"Air in a 300 × 200 mm duct","value":{"tool":"reynolds-number-calculator","tool_version":"1.0.2","outputs":{"status":"Re = 79,167 — turbulent flow. Air, 20 °C at 5 m/s, hydraulic diameter 0.24 m. Chaotic mixing — use Colebrook/Moody for the friction factor.","result":[{"property":"Reynolds number","value":"79,167"},{"property":"Flow regime","value":"Turbulent"},{"property":"Velocity","value":"5 m/s"},{"property":"Hydraulic diameter","value":"0.24 m"},{"property":"Density","value":"1.204 kg/m³"},{"property":"Dynamic viscosity","value":"1.825e-5 Pa·s"},{"property":"Kinematic viscosity","value":"1.516e-5 m²/s"},{"property":"Flow area","value":"0.06 m²"},{"property":"Volumetric flow","value":"0.3 m³/s (18000 L/min)"},{"property":"Formula","value":"Re = ρVD/μ = 1.204 × 5 × 0.24 / 1.825e-5"}],"regimeTable":[{"regime":"Laminar","reynolds-range":"Re < 2300","behaviour":"Smooth, orderly layers — friction factor f = 64/Re.","this-flow":""},{"regime":"Transitional","reynolds-range":"2300 – 4000","behaviour":"Unstable — may switch between laminar and turbulent. Avoid designing here.","this-flow":""},{"regime":"Turbulent","reynolds-range":"Re > 4000","behaviour":"Chaotic mixing — use Colebrook/Moody for the friction factor.","this-flow":"◄ This flow"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"regimeTable":{"type":"array","description":"Flow Regimes","items":{"type":"object","properties":{"regime":{"type":"string","description":"Regime"},"reynolds-range":{"type":"string","description":"Reynolds Range"},"behaviour":{"type":"string","description":"Behaviour"},"this-flow":{"type":"string","description":"This Flow"}}},"x-iotools-columns":["regime","reynolds-range","behaviour","this-flow"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tap-drill-size-calculator":{"post":{"operationId":"run_tap_drill_size_calculator","summary":"Tap Drill Size Calculator","tags":["Calculators"],"description":"Find the correct tap drill size for any metric or imperial thread. Pick a thread from the ISO metric coarse/fine and UNC/UNF tables (or enter a custom major diameter and pitch), set the thread engagement you want, and get the theoretical hole size plus the nearest real drill — metric, fractional, number or letter — with the engagement it actually delivers.\n\n[Try Tap Drill Size Calculator in your browser →](https://iotools.cloud/tool/tap-drill-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"standard":{"enum":["metric","imperial","custom"],"description":"Thread Standard"},"metricThread":{"enum":["M1.6x0.35","M2x0.4","M2.5x0.45","M3x0.5","M3.5x0.6","M4x0.7","M5x0.8","M6x1","M8x1.25","M10x1.5","M12x1.75","M14x2","M16x2","M18x2.5","M20x2.5","M22x2.5","M24x3","M27x3","M30x3.5","M33x3.5","M36x4","M4x0.5","M5x0.5","M6x0.75","M8x1","M10x1.25","M10x1","M12x1.5","M12x1.25","M14x1.5","M16x1.5","M18x1.5","M20x1.5","M22x1.5","M24x2","M27x2","M30x2","M33x2","M36x3"],"description":"Metric Thread"},"imperialThread":{"enum":["#1-64-UNC","#2-56-UNC","#3-48-UNC","#4-40-UNC","#5-40-UNC","#6-32-UNC","#8-32-UNC","#10-24-UNC","#12-24-UNC","1/4-20-UNC","5/16-18-UNC","3/8-16-UNC","7/16-14-UNC","1/2-13-UNC","9/16-12-UNC","5/8-11-UNC","3/4-10-UNC","7/8-9-UNC","1-8-UNC","#0-80-UNF","#1-72-UNF","#2-64-UNF","#3-56-UNF","#4-48-UNF","#5-44-UNF","#6-40-UNF","#8-36-UNF","#10-32-UNF","#12-28-UNF","1/4-28-UNF","5/16-24-UNF","3/8-24-UNF","7/16-20-UNF","1/2-20-UNF","9/16-18-UNF","5/8-18-UNF","3/4-16-UNF","7/8-14-UNF","1-12-UNF"],"description":"Imperial Thread"},"customUnit":{"enum":["mm","in"],"description":"Custom Thread Units"},"majorDiameter":{"type":"number","description":"Major Diameter","minimum":0},"pitch":{"type":"number","description":"Pitch (mm) or TPI","minimum":0},"engagement":{"type":"number","description":"Thread Engagement (%)","minimum":50,"maximum":100},"drillSet":{"enum":["auto","metric","imperial"],"description":"Available Drills"}},"required":[]},"examples":{"m8_1_25_at_75":{"summary":"M8 × 1.25 at 75%","value":{"standard":"metric","metricThread":"M8x1.25","engagement":"75","drillSet":"auto"}},"1_4_20_unc_at_75":{"summary":"1/4-20 UNC at 75%","value":{"standard":"imperial","imperialThread":"1/4-20-UNC","engagement":"75","drillSet":"auto"}},"m10_1_5_at_65_tough_material":{"summary":"M10 × 1.5 at 65% (tough material)","value":{"standard":"metric","metricThread":"M10x1.5","engagement":"65","drillSet":"auto"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"m8_1_25_at_75":{"summary":"M8 × 1.25 at 75%","value":{"tool":"tap-drill-size-calculator","tool_version":"1.0.2","outputs":{"status":"Drill 6.8 mm (0.2677 in) for M8 × 1.25 (coarse). Theoretical hole 6.782 mm at 75% engagement; this drill gives 73.9%.","result":[{"property":"Thread","value":"M8 × 1.25 (coarse) — Metric coarse"},{"property":"Major diameter","value":"8 mm (0.315 in)"},{"property":"Pitch","value":"1.25 mm"},{"property":"Target engagement","value":"75 %"},{"property":"Theoretical tap drill","value":"6.782 mm (0.267 in)"},{"property":"Recommended drill","value":"6.8 mm"},{"property":"Drill diameter","value":"6.8 mm (0.2677 in)"},{"property":"Actual engagement","value":"73.9 %"},{"property":"Formula","value":"d = D − (%/100) × 1.299 × P = 8 − 0.75 × 1.299 × 1.25"}],"alternatives":[{"drill":"6.5 mm","mm":"6.5","in":"0.2559","engagement":"92.4 %","note":"High torque, tap breakage risk"},{"drill":"6.6 mm","mm":"6.6","in":"0.2598","engagement":"86.2 %","note":"High torque, tap breakage risk"},{"drill":"6.7 mm","mm":"6.7","in":"0.2638","engagement":"80.1 %","note":"High torque, tap breakage risk"},{"drill":"6.8 mm","mm":"6.8","in":"0.2677","engagement":"73.9 %","note":"◄ Recommended"},{"drill":"6.9 mm","mm":"6.9","in":"0.2717","engagement":"67.7 %","note":"Usable"},{"drill":"7 mm","mm":"7","in":"0.2756","engagement":"61.6 %","note":"Usable"},{"drill":"7.1 mm","mm":"7.1","in":"0.2795","engagement":"55.4 %","note":"Usable"}]},"credits_used":5,"credits_remaining":null}},"1_4_20_unc_at_75":{"summary":"1/4-20 UNC at 75%","value":{"tool":"tap-drill-size-calculator","tool_version":"1.0.2","outputs":{"status":"Drill #7 (5.105 mm) for 1/4-20 UNC. Theoretical hole 5.113 mm at 75% engagement; this drill gives 75.4%.","result":[{"property":"Thread","value":"1/4-20 UNC — Unified UNC"},{"property":"Major diameter","value":"6.35 mm (0.25 in)"},{"property":"Pitch","value":"1.27 mm (20 TPI)"},{"property":"Target engagement","value":"75 %"},{"property":"Theoretical tap drill","value":"5.113 mm (0.2013 in)"},{"property":"Recommended drill","value":"#7"},{"property":"Drill diameter","value":"5.105 mm (0.201 in)"},{"property":"Actual engagement","value":"75.4 %"},{"property":"Formula","value":"d = D − (%/100) × 1.299 × P = 6.35 − 0.75 × 1.299 × 1.27"}],"alternatives":[{"drill":"#10","mm":"4.915","in":"0.1935","engagement":"87 %","note":"High torque, tap breakage risk"},{"drill":"#9","mm":"4.978","in":"0.196","engagement":"83.1 %","note":"High torque, tap breakage risk"},{"drill":"#8","mm":"5.055","in":"0.199","engagement":"78.5 %","note":"Usable"},{"drill":"#7","mm":"5.105","in":"0.201","engagement":"75.4 %","note":"◄ Recommended"},{"drill":"13/64\"","mm":"5.159","in":"0.2031","engagement":"72.2 %","note":"Usable"},{"drill":"#6","mm":"5.182","in":"0.204","engagement":"70.8 %","note":"Usable"},{"drill":"#5","mm":"5.22","in":"0.2055","engagement":"68.5 %","note":"Usable"}]},"credits_used":5,"credits_remaining":null}},"m10_1_5_at_65_tough_material":{"summary":"M10 × 1.5 at 65% (tough material)","value":{"tool":"tap-drill-size-calculator","tool_version":"1.0.2","outputs":{"status":"Drill 8.7 mm (0.3425 in) for M10 × 1.5 (coarse). Theoretical hole 8.733 mm at 65% engagement; this drill gives 66.7%.","result":[{"property":"Thread","value":"M10 × 1.5 (coarse) — Metric coarse"},{"property":"Major diameter","value":"10 mm (0.3937 in)"},{"property":"Pitch","value":"1.5 mm"},{"property":"Target engagement","value":"65 %"},{"property":"Theoretical tap drill","value":"8.733 mm (0.3438 in)"},{"property":"Recommended drill","value":"8.7 mm"},{"property":"Drill diameter","value":"8.7 mm (0.3425 in)"},{"property":"Actual engagement","value":"66.7 %"},{"property":"Formula","value":"d = D − (%/100) × 1.299 × P = 10 − 0.65 × 1.299 × 1.5"}],"alternatives":[{"drill":"8.4 mm","mm":"8.4","in":"0.3307","engagement":"82.1 %","note":"High torque, tap breakage risk"},{"drill":"8.5 mm","mm":"8.5","in":"0.3346","engagement":"77 %","note":"Usable"},{"drill":"8.6 mm","mm":"8.6","in":"0.3386","engagement":"71.9 %","note":"Usable"},{"drill":"8.7 mm","mm":"8.7","in":"0.3425","engagement":"66.7 %","note":"◄ Recommended"},{"drill":"8.8 mm","mm":"8.8","in":"0.3465","engagement":"61.6 %","note":"Usable"},{"drill":"8.9 mm","mm":"8.9","in":"0.3504","engagement":"56.5 %","note":"Usable"},{"drill":"9 mm","mm":"9","in":"0.3543","engagement":"51.3 %","note":"Weak thread"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Recommended Drill"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"alternatives":{"type":"array","description":"Nearby Drills","items":{"type":"object","properties":{"drill":{"type":"string","description":"Drill"},"mm":{"type":"string","description":"Ø (mm)"},"in":{"type":"string","description":"Ø (in)"},"engagement":{"type":"string","description":"Engagement"},"note":{"type":"string","description":"Note"}}},"x-iotools-columns":["drill","mm","in","engagement","note"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/short-circuit-current-estimator":{"post":{"operationId":"run_short_circuit_current_estimator","summary":"Short Circuit Current Estimator","tags":["Calculators"],"description":"Estimate the prospective short-circuit current (PSCC) at a point in a low-voltage circuit, from the upstream transformer's rating and impedance plus the cable run to the fault point. A quick planning estimate, not a full fault-current study.\n\n[Try Short Circuit Current Estimator in your browser →](https://iotools.cloud/tool/short-circuit-current-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"circuitType":{"enum":["three","single"],"description":"Fault Type"},"voltage":{"type":"number","description":"Voltage at Fault Point (V)","minimum":0},"transformerKva":{"type":"number","description":"Transformer Rating (kVA)","minimum":0},"transformerImpedancePercent":{"type":"number","description":"Transformer Impedance (%Z)","minimum":0.1,"maximum":20},"cableLength":{"type":"number","description":"Cable Length to Fault Point (m)","minimum":0},"conductorMaterial":{"enum":["copper","aluminum"],"description":"Conductor Material"},"conductorSize":{"type":"number","description":"Conductor Cross-Sectional Area (mm²)","minimum":0.1}},"required":["voltage","transformerKva","transformerImpedancePercent","cableLength","conductorSize"]},"examples":{"500_kva_transformer_three_phase_50_m_of_25_mm_copper":{"summary":"500 kVA transformer, three-phase, 50 m of 25 mm² copper","value":{"circuitType":"three","voltage":"400","transformerKva":"500","transformerImpedancePercent":"5","cableLength":"50","conductorMaterial":"copper","conductorSize":"25"}},"200_kva_transformer_single_phase_l_n_30_m_of_16_mm_aluminum":{"summary":"200 kVA transformer, single-phase L-N, 30 m of 16 mm² aluminum","value":{"circuitType":"single","voltage":"230","transformerKva":"200","transformerImpedancePercent":"4","cableLength":"30","conductorMaterial":"aluminum","conductorSize":"16"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"500_kva_transformer_three_phase_50_m_of_25_mm_copper":{"summary":"500 kVA transformer, three-phase, 50 m of 25 mm² copper","value":{"tool":"short-circuit-current-estimator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Fault Type","value":"Three-phase"},{"metric":"Transformer Impedance","value":"16.00 mΩ"},{"metric":"Cable Resistance","value":"34.48 mΩ"},{"metric":"Total Impedance","value":"50.48 mΩ"},{"metric":"Prospective Short-Circuit Current","value":"4.57 kA (4575 A)"}]},"credits_used":5,"credits_remaining":null}},"200_kva_transformer_single_phase_l_n_30_m_of_16_mm_aluminum":{"summary":"200 kVA transformer, single-phase L-N, 30 m of 16 mm² aluminum","value":{"tool":"short-circuit-current-estimator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Fault Type","value":"Single-phase (line-to-neutral)"},{"metric":"Transformer Impedance","value":"10.58 mΩ"},{"metric":"Cable Loop Resistance (line + neutral)","value":"105.75 mΩ"},{"metric":"Total Impedance","value":"116.33 mΩ"},{"metric":"Prospective Short-Circuit Current","value":"1.98 kA (1977 A)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/slope-grade-calculator":{"post":{"operationId":"run_slope_grade_calculator","summary":"Slope Grade Calculator","tags":["Calculators"],"description":"Calculate slope ratio, grade percentage, angle, and slope length from a rise and run (including negative rise for downhill grades), and see how it compares to common ramp, roof, road, and driveway slope standards.\n\n[Try Slope Grade Calculator in your browser →](https://iotools.cloud/tool/slope-grade-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rise":{"type":"number","description":"Rise (vertical change / elevation change)"},"run":{"type":"number","description":"Run (horizontal distance)","minimum":0.01},"unit":{"enum":["ft","m","in","mm",""],"description":"Unit"}},"required":["rise","run"]},"examples":{"wheelchair_ramp_4_in_48":{"summary":"Wheelchair ramp (4 in 48)","value":{"rise":"4","run":"48","unit":"in"}},"steep_roof_pitch_6_in_12":{"summary":"Steep roof pitch (6 in 12)","value":{"rise":"6","run":"12","unit":"in"}},"downhill_trail_elevation_drops_4_in_over_a_48_in_run":{"summary":"Downhill trail (elevation drops 4 in over a 48 in run)","value":{"rise":"-4","run":"48","unit":"in"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"wheelchair_ramp_4_in_48":{"summary":"Wheelchair ramp (4 in 48)","value":{"tool":"slope-grade-calculator","tool_version":"1.0.2","outputs":{"status":"A rise of 4 in over a run of 48 in is a 1 : 12 slope — 8.33% grade, 4.76° from horizontal.","result":[{"property":"Slope Ratio","value":"1 : 12"},{"property":"Grade (%)","value":"8.33%"},{"property":"Angle","value":"4.76°"},{"property":"Slope Length","value":"48.17 in"}],"reference":[{"standard":"ADA accessible ramp (max)","grade":"8.33","your-slope":"Same"},{"standard":"Recommended wheelchair ramp","grade":"6.25","your-slope":"2.08% steeper"},{"standard":"Typical driveway (max)","grade":"12","your-slope":"3.67% gentler"},{"standard":"Highway (max grade)","grade":"6","your-slope":"2.33% steeper"},{"standard":"Low-slope roof (min for drainage)","grade":"16.7","your-slope":"8.37% gentler"}]},"credits_used":5,"credits_remaining":null}},"steep_roof_pitch_6_in_12":{"summary":"Steep roof pitch (6 in 12)","value":{"tool":"slope-grade-calculator","tool_version":"1.0.2","outputs":{"status":"A rise of 6 in over a run of 12 in is a 1 : 2 slope — 50% grade, 26.57° from horizontal.","result":[{"property":"Slope Ratio","value":"1 : 2"},{"property":"Grade (%)","value":"50%"},{"property":"Angle","value":"26.57°"},{"property":"Slope Length","value":"13.42 in"}],"reference":[{"standard":"ADA accessible ramp (max)","grade":"8.33","your-slope":"41.67% steeper"},{"standard":"Recommended wheelchair ramp","grade":"6.25","your-slope":"43.75% steeper"},{"standard":"Typical driveway (max)","grade":"12","your-slope":"38% steeper"},{"standard":"Highway (max grade)","grade":"6","your-slope":"44% steeper"},{"standard":"Low-slope roof (min for drainage)","grade":"16.7","your-slope":"33.3% steeper"}]},"credits_used":5,"credits_remaining":null}},"downhill_trail_elevation_drops_4_in_over_a_48_in_run":{"summary":"Downhill trail (elevation drops 4 in over a 48 in run)","value":{"tool":"slope-grade-calculator","tool_version":"1.0.2","outputs":{"status":"A rise of -4 in over a run of 48 in is a downhill 1 : 12 slope — -8.33% grade, -4.76° from horizontal.","result":[{"property":"Slope Ratio","value":"1 : 12"},{"property":"Grade (%)","value":"-8.33%"},{"property":"Angle","value":"-4.76°"},{"property":"Slope Length","value":"48.17 in"}],"reference":[{"standard":"ADA accessible ramp (max)","grade":"8.33","your-slope":"Same"},{"standard":"Recommended wheelchair ramp","grade":"6.25","your-slope":"2.08% steeper"},{"standard":"Typical driveway (max)","grade":"12","your-slope":"3.67% gentler"},{"standard":"Highway (max grade)","grade":"6","your-slope":"2.33% steeper"},{"standard":"Low-slope roof (min for drainage)","grade":"16.7","your-slope":"8.37% gentler"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"reference":{"type":"array","description":"Common Slope Standards","items":{"type":"object","properties":{"standard":{"type":"string","description":"Standard"},"grade":{"type":"string","description":"Grade (%)"},"your-slope":{"type":"string","description":"Your Slope"}}},"x-iotools-columns":["standard","grade","your-slope"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/voltage-drop-calculator":{"post":{"operationId":"run_voltage_drop_calculator","summary":"Voltage Drop Calculator","tags":["Calculators"],"description":"Calculate the voltage drop, voltage at the load, and heat loss across a cable run from its load current, wire gauge, and one-way length — and check it against the NEC's recommended voltage drop limits.\n\n[Try Voltage Drop Calculator in your browser →](https://iotools.cloud/tool/voltage-drop-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"loadCurrent":{"type":"number","description":"Load Current (A)","minimum":0.01},"supplyVoltage":{"type":"number","description":"Supply Voltage (V)","minimum":0.1},"cableLength":{"type":"number","description":"One-way Cable Length","minimum":0.1},"lengthUnit":{"enum":["ft","m"],"description":"Length Unit"},"wireGauge":{"enum":["1","2","3","4","6","8","10","12","14","1/0","2/0","3/0","4/0"],"description":"Wire Gauge (AWG)"},"conductor":{"enum":["copper","aluminum"],"description":"Conductor Material"},"voltageSystem":{"enum":["ac1","ac3","dc"],"description":"Voltage System"},"maxVdPercent":{"type":"number","description":"Max Voltage Drop (%)","minimum":0.1,"maximum":20}},"required":["loadCurrent","supplyVoltage","cableLength"]},"examples":{"15_a_12_awg_copper_50_ft":{"summary":"15 A, 12 AWG copper, 50 ft","value":{"loadCurrent":"15","supplyVoltage":"120","cableLength":"50","lengthUnit":"ft","wireGauge":"12","conductor":"copper","voltageSystem":"ac1","maxVdPercent":"3"}},"40_a_6_awg_aluminum_100_ft":{"summary":"40 A, 6 AWG aluminum, 100 ft","value":{"loadCurrent":"40","supplyVoltage":"240","cableLength":"100","lengthUnit":"ft","wireGauge":"6","conductor":"aluminum","voltageSystem":"ac1","maxVdPercent":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"15_a_12_awg_copper_50_ft":{"summary":"15 A, 12 AWG copper, 50 ft","value":{"tool":"voltage-drop-calculator","tool_version":"1.0.2","outputs":{"status":"12 AWG copper carrying 15 A over 50 ft (AC 1-phase) drops 2.9 V (2.41%) — within your 3% limit.","result":[{"property":"Voltage Drop","value":"2.895 V"},{"property":"Voltage Drop (%)","value":"2.41 %"},{"property":"Voltage at Load","value":"117.11 V"},{"property":"Power Loss (heat)","value":"43.42 W"},{"property":"Status","value":"Within 3% limit"}]},"credits_used":5,"credits_remaining":null}},"40_a_6_awg_aluminum_100_ft":{"summary":"40 A, 6 AWG aluminum, 100 ft","value":{"tool":"voltage-drop-calculator","tool_version":"1.0.2","outputs":{"status":"6 AWG aluminum carrying 40 A over 100 ft (AC 1-phase) drops 6.46 V (2.69%) — within your 3% limit.","result":[{"property":"Voltage Drop","value":"6.464 V"},{"property":"Voltage Drop (%)","value":"2.69 %"},{"property":"Voltage at Load","value":"233.54 V"},{"property":"Power Loss (heat)","value":"258.56 W"},{"property":"Status","value":"Within 3% limit"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/center-of-gravity-calculator":{"post":{"operationId":"run_center_of_gravity_calculator","summary":"Center of Gravity Calculator","tags":["Calculators"],"description":"Calculate the weighted center of gravity (centroid) of a set of point masses. Enter each point as X, Y, Mass (label optional, negative mass for a cutout) — get the total mass, the CG coordinates, a per-point contribution breakdown, and a plotted diagram.\n\n[Try Center of Gravity Calculator in your browser →](https://iotools.cloud/tool/center-of-gravity-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"points":{"type":"string","description":"Points (Label, X, Y, Mass)"}},"required":[]},"examples":{"four_point_bracket_assembly":{"summary":"Four-point bracket assembly","value":{"points":"Bracket, 0, 0, 1\nFlange, 1.2, 0.8, 8\nBoss, 2.4, 0.2, 10\nWasher, 1.1, 1.7, 6"}},"plate_with_a_cutout_negative_mass":{"summary":"Plate with a cutout (negative mass)","value":{"points":"Plate, 0, 0, 100\nHole, 3, 2, -20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"four_point_bracket_assembly":{"summary":"Four-point bracket assembly","value":{"tool":"center-of-gravity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Point Count","value":"4"},{"metric":"Total Mass","value":"25"},{"metric":"Center of Gravity X","value":"1.608"},{"metric":"Center of Gravity Y","value":"0.744"}],"breakdown":[{"point":"Bracket","x":"0","y":"0","mass":"1","of-total-mass":"4%","distance-from-cg":"1.77178"},{"point":"Flange","x":"1.2","y":"0.8","mass":"8","of-total-mass":"32%","distance-from-cg":"0.411825"},{"point":"Boss","x":"2.4","y":"0.2","mass":"10","of-total-mass":"40%","distance-from-cg":"0.960833"},{"point":"Washer","x":"1.1","y":"1.7","mass":"6","of-total-mass":"24%","distance-from-cg":"1.08259"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"320\" viewBox=\"0 0 320 320\"><rect width=\"320\" height=\"320\" fill=\"#ffffff\"/><rect x=\"40.00\" y=\"40.00\" width=\"240.00\" height=\"240.00\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\"/><line x1=\"67.69\" y1=\"40.00\" x2=\"67.69\" y2=\"280.00\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><line x1=\"40.00\" y1=\"252.31\" x2=\"280.00\" y2=\"252.31\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><circle cx=\"67.69\" cy=\"252.31\" r=\"4.60\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"67.69\" y=\"243.71\" font-size=\"10\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">1</text><circle cx=\"160.00\" cy=\"165.43\" r=\"8.80\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"160.00\" y=\"152.63\" font-size=\"10\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">2</text><circle cx=\"252.31\" cy=\"230.59\" r=\"10.00\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"252.31\" y=\"216.59\" font-size=\"10\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">3</text><circle cx=\"152.31\" cy=\"67.69\" r=\"7.60\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"152.31\" y=\"56.09\" font-size=\"10\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">4</text><line x1=\"182.38\" y1=\"171.51\" x2=\"200.38\" y2=\"171.51\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><line x1=\"191.38\" y1=\"162.51\" x2=\"191.38\" y2=\"180.51\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><circle cx=\"191.38\" cy=\"171.51\" r=\"4\" fill=\"#ffffff\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><text x=\"191.38\" y=\"156.51\" font-size=\"11\" text-anchor=\"middle\" fill=\"#ff6b6b\" font-weight=\"700\">CG</text></svg>"},"credits_used":5,"credits_remaining":null}},"plate_with_a_cutout_negative_mass":{"summary":"Plate with a cutout (negative mass)","value":{"tool":"center-of-gravity-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Point Count","value":"2"},{"metric":"Total Mass","value":"80"},{"metric":"Center of Gravity X","value":"-0.75"},{"metric":"Center of Gravity Y","value":"-0.5"}],"breakdown":[{"point":"Plate","x":"0","y":"0","mass":"100","of-total-mass":"125%","distance-from-cg":"0.901388"},{"point":"Hole","x":"3","y":"2","mass":"-20","of-total-mass":"-25%","distance-from-cg":"4.50694"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"320\" height=\"320\" viewBox=\"0 0 320 320\"><rect width=\"320\" height=\"320\" fill=\"#ffffff\"/><rect x=\"40.00\" y=\"40.00\" width=\"240.00\" height=\"240.00\" fill=\"none\" stroke=\"#e2e2f0\" stroke-width=\"1\"/><line x1=\"104.62\" y1=\"40.00\" x2=\"104.62\" y2=\"280.00\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><line x1=\"40.00\" y1=\"215.38\" x2=\"280.00\" y2=\"215.38\" stroke=\"#e2e2f0\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><circle cx=\"104.62\" cy=\"215.38\" r=\"10.00\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"104.62\" y=\"201.38\" font-size=\"10\" text-anchor=\"middle\" fill=\"#464aff\" font-weight=\"600\">1</text><circle cx=\"252.31\" cy=\"67.69\" r=\"5.20\" fill=\"#f59e0b\" fill-opacity=\"0.25\" stroke=\"#f59e0b\" stroke-width=\"1.5\" stroke-dasharray=\"3 2\"/><text x=\"252.31\" y=\"58.49\" font-size=\"10\" text-anchor=\"middle\" fill=\"#f59e0b\" font-weight=\"600\">2</text><line x1=\"58.69\" y1=\"252.31\" x2=\"76.69\" y2=\"252.31\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><line x1=\"67.69\" y1=\"243.31\" x2=\"67.69\" y2=\"261.31\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><circle cx=\"67.69\" cy=\"252.31\" r=\"4\" fill=\"#ffffff\" stroke=\"#ff6b6b\" stroke-width=\"2\"/><text x=\"67.69\" y=\"237.31\" font-size=\"11\" text-anchor=\"middle\" fill=\"#ff6b6b\" font-weight=\"700\">CG</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"svg":{"type":"string","description":"Diagram (SVG source)"},"breakdown":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string","description":"Point"},"x":{"type":"string","description":"X"},"y":{"type":"string","description":"Y"},"mass":{"type":"string","description":"Mass"},"of-total-mass":{"type":"string","description":"% of Total Mass"},"distance-from-cg":{"type":"string","description":"Distance from CG"}}},"x-iotools-columns":["point","x","y","mass","of-total-mass","distance-from-cg"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/iso-fit-calculator":{"post":{"operationId":"run_iso_fit_calculator","summary":"ISO Fit Calculator","tags":["Calculators"],"description":"Calculate ISO 286 hole-basis fit limits for a nominal diameter — H7 hole against g6, h6, k6 and m6 shafts, compared side by side. Get physical size limits, min/max clearance or interference, an explicit fit classification, and a plotted tolerance-zone diagram.\n\n[Try ISO Fit Calculator in your browser →](https://iotools.cloud/tool/iso-fit-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"nominalDiameter":{"type":"number","description":"Nominal Diameter (mm)","minimum":0.001,"maximum":500}},"required":[]},"examples":{"25_mm_shaft_hole_18_30_mm_step":{"summary":"25 mm shaft/hole (18–30 mm step)","value":{"nominalDiameter":"25"}},"60_mm_shaft_hole_50_80_mm_step":{"summary":"60 mm shaft/hole (50–80 mm step)","value":{"nominalDiameter":"60"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"25_mm_shaft_hole_18_30_mm_step":{"summary":"25 mm shaft/hole (18–30 mm step)","value":{"tool":"iso-fit-calculator","tool_version":"1.0.2","outputs":{"results":[{"fit":"H7/g6","hole-limits":"25.000 – 25.021 mm","shaft-limits":"24.980 – 24.993 mm","min-fit":"7 µm","max-fit":"41 µm","fit-type":"Clearance"},{"fit":"H7/h6","hole-limits":"25.000 – 25.021 mm","shaft-limits":"24.987 – 25.000 mm","min-fit":"0 µm","max-fit":"34 µm","fit-type":"Clearance"},{"fit":"H7/k6","hole-limits":"25.000 – 25.021 mm","shaft-limits":"25.002 – 25.015 mm","min-fit":"-15 µm","max-fit":"19 µm","fit-type":"Transition"},{"fit":"H7/m6","hole-limits":"25.000 – 25.021 mm","shaft-limits":"25.008 – 25.021 mm","min-fit":"-21 µm","max-fit":"13 µm","fit-type":"Transition"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"420\" height=\"194\" viewBox=\"0 0 420 194\"><rect width=\"420\" height=\"194\" fill=\"#ffffff\"/><line x1=\"239.04\" y1=\"18.00\" x2=\"239.04\" y2=\"174.00\" stroke=\"#9ca3af\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><text x=\"76.00\" y=\"42.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#464aff\" font-weight=\"600\">H7 (hole)</text><rect x=\"239.04\" y=\"32.00\" width=\"124.50\" height=\"14.00\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"239.04\" y=\"28.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#464aff\">+0</text><text x=\"363.54\" y=\"28.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#464aff\">+21</text><text x=\"76.00\" y=\"72.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#22c55e\" font-weight=\"600\">g6</text><rect x=\"120.46\" y=\"62.00\" width=\"77.07\" height=\"14.00\" fill=\"#22c55e\" fill-opacity=\"0.25\" stroke=\"#22c55e\" stroke-width=\"1.5\"/><text x=\"120.46\" y=\"87.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-20</text><text x=\"197.53\" y=\"87.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-7</text><text x=\"76.00\" y=\"102.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#22c55e\" font-weight=\"600\">h6</text><rect x=\"161.96\" y=\"92.00\" width=\"77.07\" height=\"14.00\" fill=\"#22c55e\" fill-opacity=\"0.25\" stroke=\"#22c55e\" stroke-width=\"1.5\"/><text x=\"161.96\" y=\"117.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-13</text><text x=\"239.04\" y=\"117.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">+0</text><text x=\"76.00\" y=\"132.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#f59e0b\" font-weight=\"600\">k6</text><rect x=\"250.89\" y=\"122.00\" width=\"77.07\" height=\"14.00\" fill=\"#f59e0b\" fill-opacity=\"0.25\" stroke=\"#f59e0b\" stroke-width=\"1.5\"/><text x=\"250.89\" y=\"147.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+2</text><text x=\"327.97\" y=\"147.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+15</text><text x=\"76.00\" y=\"162.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#f59e0b\" font-weight=\"600\">m6</text><rect x=\"286.47\" y=\"152.00\" width=\"77.07\" height=\"14.00\" fill=\"#f59e0b\" fill-opacity=\"0.25\" stroke=\"#f59e0b\" stroke-width=\"1.5\"/><text x=\"286.47\" y=\"177.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+8</text><text x=\"363.54\" y=\"177.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+21</text></svg>"},"credits_used":5,"credits_remaining":null}},"60_mm_shaft_hole_50_80_mm_step":{"summary":"60 mm shaft/hole (50–80 mm step)","value":{"tool":"iso-fit-calculator","tool_version":"1.0.2","outputs":{"results":[{"fit":"H7/g6","hole-limits":"60.000 – 60.030 mm","shaft-limits":"59.971 – 59.990 mm","min-fit":"10 µm","max-fit":"59 µm","fit-type":"Clearance"},{"fit":"H7/h6","hole-limits":"60.000 – 60.030 mm","shaft-limits":"59.981 – 60.000 mm","min-fit":"0 µm","max-fit":"49 µm","fit-type":"Clearance"},{"fit":"H7/k6","hole-limits":"60.000 – 60.030 mm","shaft-limits":"60.002 – 60.021 mm","min-fit":"-21 µm","max-fit":"28 µm","fit-type":"Transition"},{"fit":"H7/m6","hole-limits":"60.000 – 60.030 mm","shaft-limits":"60.011 – 60.030 mm","min-fit":"-30 µm","max-fit":"19 µm","fit-type":"Transition"}],"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"420\" height=\"194\" viewBox=\"0 0 420 194\"><rect width=\"420\" height=\"194\" fill=\"#ffffff\"/><line x1=\"239.94\" y1=\"18.00\" x2=\"239.94\" y2=\"174.00\" stroke=\"#9ca3af\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><text x=\"76.00\" y=\"42.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#464aff\" font-weight=\"600\">H7 (hole)</text><rect x=\"239.94\" y=\"32.00\" width=\"123.60\" height=\"14.00\" fill=\"#464aff\" fill-opacity=\"0.25\" stroke=\"#464aff\" stroke-width=\"1.5\"/><text x=\"239.94\" y=\"28.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#464aff\">+0</text><text x=\"363.54\" y=\"28.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#464aff\">+30</text><text x=\"76.00\" y=\"72.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#22c55e\" font-weight=\"600\">g6</text><rect x=\"120.46\" y=\"62.00\" width=\"78.28\" height=\"14.00\" fill=\"#22c55e\" fill-opacity=\"0.25\" stroke=\"#22c55e\" stroke-width=\"1.5\"/><text x=\"120.46\" y=\"87.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-29</text><text x=\"198.74\" y=\"87.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-10</text><text x=\"76.00\" y=\"102.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#22c55e\" font-weight=\"600\">h6</text><rect x=\"161.66\" y=\"92.00\" width=\"78.28\" height=\"14.00\" fill=\"#22c55e\" fill-opacity=\"0.25\" stroke=\"#22c55e\" stroke-width=\"1.5\"/><text x=\"161.66\" y=\"117.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">-19</text><text x=\"239.94\" y=\"117.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#22c55e\">+0</text><text x=\"76.00\" y=\"132.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#f59e0b\" font-weight=\"600\">k6</text><rect x=\"248.18\" y=\"122.00\" width=\"78.28\" height=\"14.00\" fill=\"#f59e0b\" fill-opacity=\"0.25\" stroke=\"#f59e0b\" stroke-width=\"1.5\"/><text x=\"248.18\" y=\"147.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+2</text><text x=\"326.46\" y=\"147.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+21</text><text x=\"76.00\" y=\"162.00\" font-size=\"11\" text-anchor=\"end\" fill=\"#f59e0b\" font-weight=\"600\">m6</text><rect x=\"285.26\" y=\"152.00\" width=\"78.28\" height=\"14.00\" fill=\"#f59e0b\" fill-opacity=\"0.25\" stroke=\"#f59e0b\" stroke-width=\"1.5\"/><text x=\"285.26\" y=\"177.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+11</text><text x=\"363.54\" y=\"177.00\" font-size=\"9\" text-anchor=\"middle\" fill=\"#f59e0b\">+30</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"fit":{"type":"string","description":"Fit"},"hole-limits":{"type":"string","description":"Hole Limits"},"shaft-limits":{"type":"string","description":"Shaft Limits"},"min-fit":{"type":"string","description":"Min Fit"},"max-fit":{"type":"string","description":"Max Fit"},"fit-type":{"type":"string","description":"Fit Type"}}},"x-iotools-columns":["fit","hole-limits","shaft-limits","min-fit","max-fit","fit-type"]},"svg":{"type":"string","description":"Diagram (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/earthing-grid-resistance-estimator":{"post":{"operationId":"run_earthing_grid_resistance_estimator","summary":"Earthing Grid Resistance Calculator","tags":["Calculators"],"description":"Estimate the resistance-to-earth of a buried earthing/grounding grid from soil resistivity, grid area, conductor length and ground rods, using the IEEE Std 80 Sverak equation — checked against a configurable target resistance.\n\n[Try Earthing Grid Resistance Calculator in your browser →](https://iotools.cloud/tool/earthing-grid-resistance-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"soilResistivity":{"type":"number","description":"Soil Resistivity ρ (Ω·m)","minimum":0.1},"gridArea":{"type":"number","description":"Grid Area A (m²)","minimum":0.1},"conductorLength":{"type":"number","description":"Grid Conductor Length (m)","minimum":0.1},"burialDepth":{"type":"number","description":"Burial Depth h (m)","minimum":0},"rodCount":{"type":"number","description":"Ground Rods","minimum":0,"maximum":50},"rodLength":{"type":"number","description":"Length per Rod (m)","minimum":0},"targetResistance":{"type":"number","description":"Target Resistance (Ω)","minimum":0.1}},"required":[]},"examples":{"100_m_soil_100_m_grid_200_m_conductor_4_rods_3_m":{"summary":"100 Ω·m soil, 100 m² grid, 200 m conductor, 4 rods × 3 m","value":{"soilResistivity":"100","gridArea":"100","conductorLength":"200","burialDepth":"0.5","rodCount":"4","rodLength":"3","targetResistance":"25"}},"1000_m_dry_sandy_soil_50_m_grid_no_rods_1_substation_target":{"summary":"1000 Ω·m dry sandy soil, 50 m² grid, no rods, 1 Ω substation target","value":{"soilResistivity":"1000","gridArea":"50","conductorLength":"80","burialDepth":"0.6","rodCount":"0","rodLength":"0","targetResistance":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_m_soil_100_m_grid_200_m_conductor_4_rods_3_m":{"summary":"100 Ω·m soil, 100 m² grid, 200 m conductor, 4 rods × 3 m","value":{"tool":"earthing-grid-resistance-estimator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Soil resistivity (ρ)","value":"100 Ω·m"},{"quantity":"Grid area (A)","value":"100 m²"},{"quantity":"Total buried conductor length (L)","value":"212 m (200 grid + 12 rods)"},{"quantity":"Burial depth (h)","value":"0.5 m"},{"quantity":"Estimated earthing resistance (Rg)","value":"4.53521 Ω"},{"quantity":"Target resistance (25 Ω)","value":"Meets target"}],"breakdown":"Rg = ρ × [ 1/L + 1/√(20A) × (1 + 1/(1 + h√(20/A))) ]  (IEEE Std 80 Sverak equation)\nL = conductor length + rods × rod length = 200 + 4 × 3 = 212 m\n1/L = 0.00471698\n1/√(20A) × (1 + 1/(1 + h√(20/A))) = 0.0406351\nRg = 100 × (0.00471698 + 0.0406351) = 4.53521 Ω\n4.53521 Ω is at or below the 25 Ω target.\nSingle-layer-soil screening estimate only — not a substitute for a full grounding/fault study."},"credits_used":5,"credits_remaining":null}},"1000_m_dry_sandy_soil_50_m_grid_no_rods_1_substation_target":{"summary":"1000 Ω·m dry sandy soil, 50 m² grid, no rods, 1 Ω substation target","value":{"tool":"earthing-grid-resistance-estimator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"Soil resistivity (ρ)","value":"1000 Ω·m"},{"quantity":"Grid area (A)","value":"50 m²"},{"quantity":"Total buried conductor length (L)","value":"80 m"},{"quantity":"Burial depth (h)","value":"0.6 m"},{"quantity":"Estimated earthing resistance (Rg)","value":"67.0466 Ω"},{"quantity":"Target resistance (1 Ω)","value":"Exceeds target — review grid size or add rods"}],"breakdown":"Rg = ρ × [ 1/L + 1/√(20A) × (1 + 1/(1 + h√(20/A))) ]  (IEEE Std 80 Sverak equation)\nL = conductor length + rods × rod length = 80 + 0 × 0 = 80 m\n1/L = 0.0125\n1/√(20A) × (1 + 1/(1 + h√(20/A))) = 0.0545466\nRg = 1000 × (0.0125 + 0.0545466) = 67.0466 Ω\n67.0466 Ω exceeds the 1 Ω target — a larger grid, deeper burial or more/longer rods will lower it.\nSingle-layer-soil screening estimate only — not a substitute for a full grounding/fault study."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Earthing Estimate","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/arc-flash-boundary-estimator":{"post":{"operationId":"run_arc_flash_boundary_estimator","summary":"Arc Flash Boundary Calculator","tags":["Calculators"],"description":"Estimate arc-flash incident energy and the arc-flash protection boundary from system voltage, fault current, arc duration and working distance, using the Lee method — with a PPE category estimate and safety disclaimer.\n\n[Try Arc Flash Boundary Calculator in your browser →](https://iotools.cloud/tool/arc-flash-boundary-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"systemVoltage":{"type":"number","description":"System Voltage (V)","minimum":1},"faultCurrent":{"type":"number","description":"Bolted Fault Current (kA)","minimum":0.1},"arcDuration":{"type":"number","description":"Arc Duration / Clearing Time (s)","minimum":0.001},"workingDistance":{"type":"number","description":"Working Distance (mm)","minimum":1}},"required":[]},"examples":{"480_v_lv_panel_20_ka_0_2_s_clearing_455_mm_working_distance":{"summary":"480 V LV panel, 20 kA, 0.2 s clearing, 455 mm working distance","value":{"systemVoltage":"480","faultCurrent":"20","arcDuration":"0.2","workingDistance":"455"}},"4160_v_mv_switchgear_25_ka_0_3_s_clearing_610_mm_working_distance":{"summary":"4160 V MV switchgear, 25 kA, 0.3 s clearing, 610 mm working distance","value":{"systemVoltage":"4160","faultCurrent":"25","arcDuration":"0.3","workingDistance":"610"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"480_v_lv_panel_20_ka_0_2_s_clearing_455_mm_working_distance":{"summary":"480 V LV panel, 20 kA, 0.2 s clearing, 455 mm working distance","value":{"tool":"arc-flash-boundary-estimator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"System voltage","value":"480 V"},{"quantity":"Bolted fault current","value":"20 kA"},{"quantity":"Arc duration (clearing time)","value":"0.2 s"},{"quantity":"Working distance","value":"455 mm"},{"quantity":"Incident energy at working distance","value":"4.74795 cal/cm²"},{"quantity":"Arc flash boundary (1.2 cal/cm²)","value":"905.053 mm (0.905053 m)"},{"quantity":"PPE category (simplified)","value":"Category 2 — arc rating ≥ 8 cal/cm²"}],"breakdown":"E (cal/cm²) = 2.142×10⁶ × V(kV) × I(kA) × t(s) / D(mm)² ÷ 4.184  (Lee method / IEEE 1584-2002 Annex D theoretical equation, open-air arc)\nV = 0.48 kV, I = 20 kA, t = 0.2 s, D = 455 mm\nE = 2.142e6 × 0.48 × 20 × 0.2 / 455² ÷ 4.184 = 4.74795 cal/cm²\nArc flash boundary = distance where E falls to 1.2 cal/cm² (curable-burn threshold) = 905.053 mm (0.905053 m)\nPPE category (simplified NFPA 70E cal/cm² bands): Category 2 — arc rating ≥ 8 cal/cm²\nTheoretical screening estimate only — not a substitute for a full IEEE 1584 arc-flash study with equipment class, gap, enclosure type and protective device coordination."},"credits_used":5,"credits_remaining":null}},"4160_v_mv_switchgear_25_ka_0_3_s_clearing_610_mm_working_distance":{"summary":"4160 V MV switchgear, 25 kA, 0.3 s clearing, 610 mm working distance","value":{"tool":"arc-flash-boundary-estimator","tool_version":"1.0.2","outputs":{"results":[{"quantity":"System voltage","value":"4160 V"},{"quantity":"Bolted fault current","value":"25 kA"},{"quantity":"Arc duration (clearing time)","value":"0.3 s"},{"quantity":"Working distance","value":"610 mm"},{"quantity":"Incident energy at working distance","value":"42.9262 cal/cm²"},{"quantity":"Arc flash boundary (1.2 cal/cm²)","value":"3648.38 mm (3.64838 m)"},{"quantity":"PPE category (simplified)","value":"Exceeds Category 4 — de-energized work practices required"}],"breakdown":"E (cal/cm²) = 2.142×10⁶ × V(kV) × I(kA) × t(s) / D(mm)² ÷ 4.184  (Lee method / IEEE 1584-2002 Annex D theoretical equation, open-air arc)\nV = 4.16 kV, I = 25 kA, t = 0.3 s, D = 610 mm\nE = 2.142e6 × 4.16 × 25 × 0.3 / 610² ÷ 4.184 = 42.9262 cal/cm²\nArc flash boundary = distance where E falls to 1.2 cal/cm² (curable-burn threshold) = 3648.38 mm (3.64838 m)\nPPE category (simplified NFPA 70E cal/cm² bands): Exceeds Category 4 — de-energized work practices required\nTheoretical screening estimate only — not a substitute for a full IEEE 1584 arc-flash study with equipment class, gap, enclosure type and protective device coordination."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Arc Flash Estimate","items":{"type":"object","properties":{"quantity":{"type":"string","description":"Quantity"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["quantity","value"]},"breakdown":{"type":"string","description":"Formula & Breakdown"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/current-ratio-calculator":{"post":{"operationId":"run_current_ratio_calculator","summary":"Current Ratio Calculator","tags":["Calculators"],"description":"Calculate the current ratio from current assets and current liabilities. Get the ratio, working capital, a liquidity rating, and how it compares against typical current ratio ranges by industry.\n\n[Try Current Ratio Calculator in your browser →](https://iotools.cloud/tool/current-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentAssets":{"type":"number","description":"Current Assets","minimum":0,"maximum":999999999999},"currentLiabilities":{"type":"number","description":"Current Liabilities","minimum":0.01,"maximum":999999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["currentAssets","currentLiabilities"]},"examples":{"healthy_liquidity_position":{"summary":"Healthy liquidity position","value":{"currentAssets":"150000","currentLiabilities":"100000","currency":"USD"}},"liquidity_risk":{"summary":"Liquidity risk","value":{"currentAssets":"80000","currentLiabilities":"100000","currency":"USD"}},"high_current_ratio_capital_tied_up":{"summary":"High current ratio, capital tied up","value":{"currentAssets":"500000","currentLiabilities":"100000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"healthy_liquidity_position":{"summary":"Healthy liquidity position","value":{"tool":"current-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$150,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Current Ratio","value":"1.50"},{"metric":"Working Capital","value":"$50,000.00"},{"metric":"Liquidity Rating","value":"Healthy"}],"benchmarks":[{"industry":"Utilities","typical-current-ratio-range":"0.80 – 1.20","your-ratio":"Above range"},{"industry":"Retail","typical-current-ratio-range":"1.00 – 1.50","your-ratio":"Within range"},{"industry":"Construction","typical-current-ratio-range":"1.20 – 2.00","your-ratio":"Within range"},{"industry":"Manufacturing","typical-current-ratio-range":"1.50 – 3.00","your-ratio":"Within range"},{"industry":"Technology / Software","typical-current-ratio-range":"2.00 – 4.00","your-ratio":"Below range"}]},"credits_used":5,"credits_remaining":null}},"liquidity_risk":{"summary":"Liquidity risk","value":{"tool":"current-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$80,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Current Ratio","value":"0.80"},{"metric":"Working Capital","value":"-$20,000.00"},{"metric":"Liquidity Rating","value":"Poor (Liquidity Risk)"}],"benchmarks":[{"industry":"Utilities","typical-current-ratio-range":"0.80 – 1.20","your-ratio":"Within range"},{"industry":"Retail","typical-current-ratio-range":"1.00 – 1.50","your-ratio":"Below range"},{"industry":"Construction","typical-current-ratio-range":"1.20 – 2.00","your-ratio":"Below range"},{"industry":"Manufacturing","typical-current-ratio-range":"1.50 – 3.00","your-ratio":"Below range"},{"industry":"Technology / Software","typical-current-ratio-range":"2.00 – 4.00","your-ratio":"Below range"}]},"credits_used":5,"credits_remaining":null}},"high_current_ratio_capital_tied_up":{"summary":"High current ratio, capital tied up","value":{"tool":"current-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$500,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Current Ratio","value":"5.00"},{"metric":"Working Capital","value":"$400,000.00"},{"metric":"Liquidity Rating","value":"High (Assets May Be Underutilized)"}],"benchmarks":[{"industry":"Utilities","typical-current-ratio-range":"0.80 – 1.20","your-ratio":"Above range"},{"industry":"Retail","typical-current-ratio-range":"1.00 – 1.50","your-ratio":"Above range"},{"industry":"Construction","typical-current-ratio-range":"1.20 – 2.00","your-ratio":"Above range"},{"industry":"Manufacturing","typical-current-ratio-range":"1.50 – 3.00","your-ratio":"Above range"},{"industry":"Technology / Software","typical-current-ratio-range":"2.00 – 4.00","your-ratio":"Above range"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Current Ratio Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"benchmarks":{"type":"array","description":"Industry Benchmark Comparison","items":{"type":"object","properties":{"industry":{"type":"string","description":"Industry"},"typical-current-ratio-range":{"type":"string","description":"Typical Current Ratio Range"},"your-ratio":{"type":"string","description":"Your Ratio"}}},"x-iotools-columns":["industry","typical-current-ratio-range","your-ratio"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/quick-ratio-calculator":{"post":{"operationId":"run_quick_ratio_calculator","summary":"Quick Ratio Calculator","tags":["Calculators"],"description":"Calculate the quick ratio (acid-test ratio) from current assets, inventory, and current liabilities. Get quick assets, the quick ratio, the current ratio for comparison, and a liquidity rating.\n\n[Try Quick Ratio Calculator in your browser →](https://iotools.cloud/tool/quick-ratio-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currentAssets":{"type":"number","description":"Current Assets","minimum":0,"maximum":999999999999},"inventory":{"type":"number","description":"Inventory","minimum":0,"maximum":999999999999},"currentLiabilities":{"type":"number","description":"Current Liabilities","minimum":0.01,"maximum":999999999999},"currency":{"enum":["USD","EUR","GBP","AUD","JPY","CAD"],"description":"Currency"}},"required":["currentAssets","inventory","currentLiabilities"]},"examples":{"healthy_quick_ratio":{"summary":"Healthy quick ratio","value":{"currentAssets":"150000","inventory":"40000","currentLiabilities":"100000","currency":"USD"}},"inventory_heavy_balance_sheet":{"summary":"Inventory-heavy balance sheet","value":{"currentAssets":"150000","inventory":"100000","currentLiabilities":"100000","currency":"USD"}},"liquidity_risk_minimal_inventory":{"summary":"Liquidity risk, minimal inventory","value":{"currentAssets":"40000","inventory":"5000","currentLiabilities":"100000","currency":"USD"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"healthy_quick_ratio":{"summary":"Healthy quick ratio","value":{"tool":"quick-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$150,000.00"},{"metric":"Inventory","value":"$40,000.00"},{"metric":"Quick Assets (Current Assets − Inventory)","value":"$110,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Quick Ratio","value":"1.10"},{"metric":"Current Ratio","value":"1.50"},{"metric":"Inventory Share of Current Assets","value":"26.7%"},{"metric":"Liquidity Rating","value":"Healthy"}]},"credits_used":5,"credits_remaining":null}},"inventory_heavy_balance_sheet":{"summary":"Inventory-heavy balance sheet","value":{"tool":"quick-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$150,000.00"},{"metric":"Inventory","value":"$100,000.00"},{"metric":"Quick Assets (Current Assets − Inventory)","value":"$50,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Quick Ratio","value":"0.50"},{"metric":"Current Ratio","value":"1.50"},{"metric":"Inventory Share of Current Assets","value":"66.7%"},{"metric":"Liquidity Rating","value":"Below Average"}]},"credits_used":5,"credits_remaining":null}},"liquidity_risk_minimal_inventory":{"summary":"Liquidity risk, minimal inventory","value":{"tool":"quick-ratio-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Current Assets","value":"$40,000.00"},{"metric":"Inventory","value":"$5,000.00"},{"metric":"Quick Assets (Current Assets − Inventory)","value":"$35,000.00"},{"metric":"Current Liabilities","value":"$100,000.00"},{"metric":"Quick Ratio","value":"0.35"},{"metric":"Current Ratio","value":"0.40"},{"metric":"Inventory Share of Current Assets","value":"12.5%"},{"metric":"Liquidity Rating","value":"Poor (High Risk)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Quick Ratio Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/quotient-and-remainder-calculator":{"post":{"operationId":"run_quotient_and_remainder_calculator","summary":"Quotient and Remainder Calculator","tags":["Calculators"],"description":"Compute the integer quotient and remainder of dividend ÷ divisor, with a plain-arithmetic verification line and the decimal result — exact for integers of any size.\n\n[Try Quotient and Remainder Calculator in your browser →](https://iotools.cloud/tool/quotient-and-remainder-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dividend":{"type":"string","description":"Dividend"},"divisor":{"type":"string","description":"Divisor"}},"required":["dividend","divisor"]},"examples":{"47_5":{"summary":"47 ÷ 5","value":{"dividend":"47","divisor":"5"}},"evenly_divisible_100_4":{"summary":"Evenly divisible (100 ÷ 4)","value":{"dividend":"100","divisor":"4"}},"negative_dividend_17_5":{"summary":"Negative dividend (-17 ÷ 5)","value":{"dividend":"-17","divisor":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"47_5":{"summary":"47 ÷ 5","value":{"tool":"quotient-and-remainder-calculator","tool_version":"1.0.2","outputs":{"quotient":"9","remainder":"2","isExact":"No","decimalResult":"9.4","verification":"47 = (5 × 9) + 2"},"credits_used":5,"credits_remaining":null}},"evenly_divisible_100_4":{"summary":"Evenly divisible (100 ÷ 4)","value":{"tool":"quotient-and-remainder-calculator","tool_version":"1.0.2","outputs":{"quotient":"25","remainder":"0","isExact":"Yes","decimalResult":"25","verification":"100 = (4 × 25) + 0"},"credits_used":5,"credits_remaining":null}},"negative_dividend_17_5":{"summary":"Negative dividend (-17 ÷ 5)","value":{"tool":"quotient-and-remainder-calculator","tool_version":"1.0.2","outputs":{"quotient":"-3","remainder":"-2","isExact":"No","decimalResult":"-3.4","verification":"-17 = (5 × -3) - 2"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"quotient":{"type":"string","description":"Quotient"},"remainder":{"type":"string","description":"Remainder"},"isExact":{"type":"string","description":"Evenly Divisible?"},"decimalResult":{"type":"string","description":"Decimal Result"},"verification":{"type":"string","description":"Verification"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bloom-filter-parameter-calculator":{"post":{"operationId":"run_bloom_filter_parameter_calculator","summary":"Bloom Filter Parameter Calculator","tags":["Calculators"],"description":"Calculate the optimal bit array size and hash function count for a Bloom filter from the expected number of items and a target false positive rate. Get an exact memory breakdown (bits, bytes, KB/MB/GB) and a false-positive-rate-vs-memory tradeoff chart.\n\n[Try Bloom Filter Parameter Calculator in your browser →](https://iotools.cloud/tool/bloom-filter-parameter-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"number","description":"Expected Number of Items (n)","minimum":1,"maximum":1000000000000},"targetFpRate":{"type":"number","description":"Target False Positive Rate (%)","minimum":0.01,"maximum":50}},"required":[]},"examples":{"10_000_items_1_target_false_positive_rate":{"summary":"10,000 items, 1% target false positive rate","value":{"n":"10000","targetFpRate":"1"}},"1_000_000_items_0_1_target_false_positive_rate":{"summary":"1,000,000 items, 0.1% target false positive rate","value":{"n":"1000000","targetFpRate":"0.1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10_000_items_1_target_false_positive_rate":{"summary":"10,000 items, 1% target false positive rate","value":{"tool":"bloom-filter-parameter-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Bit array size (m)","value":"95,851 bits"},{"metric":"Bits per item","value":"9.59 bits"},{"metric":"Hash functions (k)","value":"7"},{"metric":"Memory required","value":"11,982 bytes (11.70 KB)"},{"metric":"Actual false positive rate","value":"1.0039%"}],"chartSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"560\" height=\"300\" viewBox=\"0 0 560 300\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\"><rect width=\"560\" height=\"300\" fill=\"#ffffff\"/><line x1=\"70\" y1=\"256.00\" x2=\"532.00\" y2=\"256.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"259.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">0.00</text><line x1=\"70\" y1=\"197.00\" x2=\"532.00\" y2=\"197.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"200.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">6.32</text><line x1=\"70\" y1=\"138.00\" x2=\"532.00\" y2=\"138.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"141.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">12.6</text><line x1=\"70\" y1=\"79.00\" x2=\"532.00\" y2=\"79.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"82.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">19.0</text><line x1=\"70\" y1=\"20.00\" x2=\"532.00\" y2=\"20.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"23.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">25.3</text><line x1=\"70\" y1=\"20\" x2=\"70\" y2=\"256\" stroke=\"#9ca3af\" stroke-width=\"1\"/><line x1=\"70\" y1=\"256\" x2=\"532.00\" y2=\"256\" stroke=\"#9ca3af\" stroke-width=\"1\"/><line x1=\"70.00\" y1=\"256\" x2=\"70.00\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"70.00\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">50%</text><line x1=\"157.30\" y1=\"256\" x2=\"157.30\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"157.30\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">10%</text><line x1=\"282.20\" y1=\"256\" x2=\"282.20\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"282.20\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">1%</text><line x1=\"407.10\" y1=\"256\" x2=\"407.10\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"407.10\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">0.1%</text><line x1=\"532.00\" y1=\"256\" x2=\"532.00\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"532.00\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">0.01%</text><line x1=\"70.00\" y1=\"239.55\" x2=\"532.00\" y2=\"37.48\" stroke=\"#464aff\" stroke-width=\"2.5\"/><line x1=\"282.20\" y1=\"146.74\" x2=\"282.20\" y2=\"256\" stroke=\"#dc2626\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><line x1=\"70\" y1=\"146.74\" x2=\"282.20\" y2=\"146.74\" stroke=\"#dc2626\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><circle cx=\"282.20\" cy=\"146.74\" r=\"4.5\" fill=\"#dc2626\"/><text x=\"290.20\" y=\"138.74\" font-size=\"11\" font-weight=\"600\" fill=\"#dc2626\">11.7 KB</text><text x=\"301.00\" y=\"294.00\" font-size=\"11\" text-anchor=\"middle\" fill=\"#374151\">Target false positive rate (log scale)</text><text x=\"14\" y=\"138.00\" font-size=\"11\" text-anchor=\"middle\" fill=\"#374151\" transform=\"rotate(-90 14 138.00)\">Memory required (KB)</text></svg>"},"credits_used":5,"credits_remaining":null}},"1_000_000_items_0_1_target_false_positive_rate":{"summary":"1,000,000 items, 0.1% target false positive rate","value":{"tool":"bloom-filter-parameter-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Bit array size (m)","value":"14,377,588 bits"},{"metric":"Bits per item","value":"14.38 bits"},{"metric":"Hash functions (k)","value":"10"},{"metric":"Memory required","value":"1,797,199 bytes (1.71 MB)"},{"metric":"Actual false positive rate","value":"0.1000%"}],"chartSvg":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"560\" height=\"300\" viewBox=\"0 0 560 300\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\"><rect width=\"560\" height=\"300\" fill=\"#ffffff\"/><line x1=\"70\" y1=\"256.00\" x2=\"532.00\" y2=\"256.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"259.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">0.00</text><line x1=\"70\" y1=\"197.00\" x2=\"532.00\" y2=\"197.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"200.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">0.62</text><line x1=\"70\" y1=\"138.00\" x2=\"532.00\" y2=\"138.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"141.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">1.23</text><line x1=\"70\" y1=\"79.00\" x2=\"532.00\" y2=\"79.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"82.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">1.85</text><line x1=\"70\" y1=\"20.00\" x2=\"532.00\" y2=\"20.00\" stroke=\"#e5e7eb\" stroke-width=\"1\"/><text x=\"62.00\" y=\"23.00\" font-size=\"10\" text-anchor=\"end\" fill=\"#6b7280\">2.47</text><line x1=\"70\" y1=\"20\" x2=\"70\" y2=\"256\" stroke=\"#9ca3af\" stroke-width=\"1\"/><line x1=\"70\" y1=\"256\" x2=\"532.00\" y2=\"256\" stroke=\"#9ca3af\" stroke-width=\"1\"/><line x1=\"70.00\" y1=\"256\" x2=\"70.00\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"70.00\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">50%</text><line x1=\"157.30\" y1=\"256\" x2=\"157.30\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"157.30\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">10%</text><line x1=\"282.20\" y1=\"256\" x2=\"282.20\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"282.20\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">1%</text><line x1=\"407.10\" y1=\"256\" x2=\"407.10\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"407.10\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">0.1%</text><line x1=\"532.00\" y1=\"256\" x2=\"532.00\" y2=\"260.00\" stroke=\"#9ca3af\" stroke-width=\"1\"/><text x=\"532.00\" y=\"272.00\" font-size=\"10\" text-anchor=\"middle\" fill=\"#6b7280\">0.01%</text><line x1=\"70.00\" y1=\"239.55\" x2=\"532.00\" y2=\"37.48\" stroke=\"#464aff\" stroke-width=\"2.5\"/><line x1=\"407.10\" y1=\"92.11\" x2=\"407.10\" y2=\"256\" stroke=\"#dc2626\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><line x1=\"70\" y1=\"92.11\" x2=\"407.10\" y2=\"92.11\" stroke=\"#dc2626\" stroke-width=\"1\" stroke-dasharray=\"3 3\"/><circle cx=\"407.10\" cy=\"92.11\" r=\"4.5\" fill=\"#dc2626\"/><text x=\"415.10\" y=\"84.11\" font-size=\"11\" font-weight=\"600\" fill=\"#dc2626\">1.71 MB</text><text x=\"301.00\" y=\"294.00\" font-size=\"11\" text-anchor=\"middle\" fill=\"#374151\">Target false positive rate (log scale)</text><text x=\"14\" y=\"138.00\" font-size=\"11\" text-anchor=\"middle\" fill=\"#374151\" transform=\"rotate(-90 14 138.00)\">Memory required (MB)</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"chartSvg":{"type":"string","description":"Chart (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/point-slope-form-calculator":{"post":{"operationId":"run_point_slope_form_calculator","summary":"Point-Slope Form Calculator","tags":["Calculators"],"description":"Build a line's equation from a point (x₁, y₁) and its slope m. Returns the point-slope form, slope-intercept form, and standard form, with a step-by-step derivation.\n\n[Try Point-Slope Form Calculator in your browser →](https://iotools.cloud/tool/point-slope-form-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x1":{"type":"number","description":"x₁"},"y1":{"type":"number","description":"y₁"},"slope":{"type":"number","description":"m (slope)"}},"required":["x1","y1","slope"]},"examples":{"point_2_3_slope_4":{"summary":"Point (2, 3), slope 4","value":{"x1":"2","y1":"3","slope":"4"}},"negative_slope_through_1_2_slope_3":{"summary":"Negative slope through (-1, -2), slope -3","value":{"x1":"-1","y1":"-2","slope":"-3"}},"horizontal_line_through_5_7_slope_0":{"summary":"Horizontal line through (5, 7), slope 0","value":{"x1":"5","y1":"7","slope":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"point_2_3_slope_4":{"summary":"Point (2, 3), slope 4","value":{"tool":"point-slope-form-calculator","tool_version":"1.0.2","outputs":{"pointSlopeForm":"y - 3 = 4(x - 2)","slopeInterceptForm":"y = 4x - 5","standardForm":"4x - y = 5","steps":"Point: (x₁, y₁) = (2, 3), slope m = 4\nPoint-slope form: y − y₁ = m(x − x₁) → y - 3 = 4(x - 2)\nSlope-intercept form: solve for y → b = y₁ − m·x₁ = 3 − (4)(2) = -5\n  y = 4x - 5\nStandard form: rearrange mx − y = −b, keeping the x-coefficient non-negative → 4x - y = 5"},"credits_used":5,"credits_remaining":null}},"negative_slope_through_1_2_slope_3":{"summary":"Negative slope through (-1, -2), slope -3","value":{"tool":"point-slope-form-calculator","tool_version":"1.0.2","outputs":{"pointSlopeForm":"y + 2 = -3(x + 1)","slopeInterceptForm":"y = -3x - 5","standardForm":"3x + y = -5","steps":"Point: (x₁, y₁) = (-1, -2), slope m = -3\nPoint-slope form: y − y₁ = m(x − x₁) → y + 2 = -3(x + 1)\nSlope-intercept form: solve for y → b = y₁ − m·x₁ = -2 − (-3)(-1) = -5\n  y = -3x - 5\nStandard form: rearrange mx − y = −b, keeping the x-coefficient non-negative → 3x + y = -5"},"credits_used":5,"credits_remaining":null}},"horizontal_line_through_5_7_slope_0":{"summary":"Horizontal line through (5, 7), slope 0","value":{"tool":"point-slope-form-calculator","tool_version":"1.0.2","outputs":{"pointSlopeForm":"y - 7 = 0(x - 5)","slopeInterceptForm":"y = 7","standardForm":"y = 7","steps":"Point: (x₁, y₁) = (5, 7), slope m = 0\nPoint-slope form: y − y₁ = m(x − x₁) → y - 7 = 0(x - 5)\nSlope-intercept form: solve for y → b = y₁ − m·x₁ = 7 − (0)(5) = 7\n  y = 7\nStandard form: m = 0 → the line is horizontal → y = 7"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pointSlopeForm":{"type":"string","description":"Point-Slope Form"},"slopeInterceptForm":{"type":"string","description":"Slope-Intercept Form"},"standardForm":{"type":"string","description":"Standard Form"},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/point-to-plane-distance-calculator":{"post":{"operationId":"run_point_to_plane_distance_calculator","summary":"Point to Plane Distance Calculator","tags":["Calculators"],"description":"Calculate the shortest (perpendicular) distance from a 3D point to a plane given in general form Ax + By + Cz + D = 0, plus the foot of the perpendicular — the closest point on the plane.\n\n[Try Point to Plane Distance Calculator in your browser →](https://iotools.cloud/tool/point-to-plane-distance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"a":{"type":"number","description":"A (plane coefficient)"},"b":{"type":"number","description":"B (plane coefficient)"},"c":{"type":"number","description":"C (plane coefficient)"},"d":{"type":"number","description":"D (plane constant)"},"x0":{"type":"number","description":"Point x₀"},"y0":{"type":"number","description":"Point y₀"},"z0":{"type":"number","description":"Point z₀"}},"required":[]},"examples":{"point_1_2_3_plane_2x_y_2z_3_0":{"summary":"Point (1, 2, 3), plane 2x − y + 2z − 3 = 0","value":{"a":"2","b":"-1","c":"2","d":"-3","x0":"1","y0":"2","z0":"3"}},"origin_to_plane_x_y_z_3_0":{"summary":"Origin to plane x + y + z − 3 = 0","value":{"a":"1","b":"1","c":"1","d":"-3","x0":"0","y0":"0","z0":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"point_1_2_3_plane_2x_y_2z_3_0":{"summary":"Point (1, 2, 3), plane 2x − y + 2z − 3 = 0","value":{"tool":"point-to-plane-distance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Distance","value":"1"},{"metric":"Foot of Perpendicular","value":"(0.333333, 2.33333, 2.33333)"},{"metric":"Signed Distance","value":"1"}]},"credits_used":5,"credits_remaining":null}},"origin_to_plane_x_y_z_3_0":{"summary":"Origin to plane x + y + z − 3 = 0","value":{"tool":"point-to-plane-distance-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Distance","value":"1.73205"},{"metric":"Foot of Perpendicular","value":"(1, 1, 1)"},{"metric":"Signed Distance","value":"-1.73205"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/square-footage-calculator":{"post":{"operationId":"run_square_footage_calculator","summary":"Square Footage Calculator","tags":["Calculators"],"description":"Calculate square footage for a rectangle, triangle, circle, trapezoid or ellipse — enter dimensions in feet, inches, meters, centimeters or yards and get the area in square feet, square meters, square yards and square inches, with an optional cost estimate.\n\n[Try Square Footage Calculator in your browser →](https://iotools.cloud/tool/square-footage-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"shape":{"enum":["rectangle","triangle","circle","trapezoid","ellipse"],"description":"Shape"},"unit":{"enum":["feet","inches","meters","centimeters","yards"],"description":"Input unit"},"length":{"type":"number","description":"Length","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"base":{"type":"number","description":"Base","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"radius":{"type":"number","description":"Radius","minimum":0},"trapTop":{"type":"number","description":"Top side (a)","minimum":0},"trapBottom":{"type":"number","description":"Bottom side (b)","minimum":0},"trapHeight":{"type":"number","description":"Height","minimum":0},"semiMajor":{"type":"number","description":"Semi-major axis (a)","minimum":0},"semiMinor":{"type":"number","description":"Semi-minor axis (b)","minimum":0},"pricePerSqFt":{"type":"number","description":"Price per square foot (optional)","minimum":0}},"required":[]},"examples":{"rectangle_20ft_x_15ft_room":{"summary":"Rectangle — 20ft x 15ft room","value":{"shape":"rectangle","unit":"feet","length":"20","width":"15"}},"circle_6m_radius_4_50_sq_ft":{"summary":"Circle — 6m radius, $4.50/sq ft","value":{"shape":"circle","unit":"meters","radius":"6","pricePerSqFt":"4.50"}},"trapezoid_top_10ft_bottom_16ft_height_8ft":{"summary":"Trapezoid — top 10ft, bottom 16ft, height 8ft","value":{"shape":"trapezoid","unit":"feet","trapTop":"10","trapBottom":"16","trapHeight":"8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangle_20ft_x_15ft_room":{"summary":"Rectangle — 20ft x 15ft room","value":{"tool":"square-footage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Square feet","value":"300.00 sq ft"},{"metric":"Square meters","value":"27.87 m²"},{"metric":"Square yards","value":"33.33 sq yd"},{"metric":"Square inches","value":"43200.00 sq in"},{"metric":"Estimated cost","value":"-"}],"summary":"300.00 sq ft"},"credits_used":5,"credits_remaining":null}},"circle_6m_radius_4_50_sq_ft":{"summary":"Circle — 6m radius, $4.50/sq ft","value":{"tool":"square-footage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Square feet","value":"1217.37 sq ft"},{"metric":"Square meters","value":"113.10 m²"},{"metric":"Square yards","value":"135.26 sq yd"},{"metric":"Square inches","value":"175301.22 sq in"},{"metric":"Estimated cost","value":"$5478.16"}],"summary":"1217.37 sq ft · $5478.16"},"credits_used":5,"credits_remaining":null}},"trapezoid_top_10ft_bottom_16ft_height_8ft":{"summary":"Trapezoid — top 10ft, bottom 16ft, height 8ft","value":{"tool":"square-footage-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Square feet","value":"104.00 sq ft"},{"metric":"Square meters","value":"9.66 m²"},{"metric":"Square yards","value":"11.56 sq yd"},{"metric":"Square inches","value":"14976.00 sq in"},{"metric":"Estimated cost","value":"-"}],"summary":"104.00 sq ft"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/square-root-calculator":{"post":{"operationId":"run_square_root_calculator","summary":"Square Root Calculator","tags":["Calculators"],"description":"Calculate the principal and negative square roots of a non-negative number, with a perfect-square check and simplified radical form for whole numbers.\n\n[Try Square Root Calculator in your browser →](https://iotools.cloud/tool/square-root-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"number","description":"Number"}},"required":["number"]},"examples":{"perfect_square_144":{"summary":"Perfect square (144)","value":{"number":"144"}},"non_perfect_square_with_a_simplifiable_factor_72":{"summary":"Non-perfect square with a simplifiable factor (72)","value":{"number":"72"}},"zero":{"summary":"Zero","value":{"number":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"perfect_square_144":{"summary":"Perfect square (144)","value":{"tool":"square-root-calculator","tool_version":"1.0.2","outputs":{"principalRoot":"12","negativeRoot":"-12","isPerfectSquare":"Yes","simplifiedRadical":"12","steps":"n = 144\nPrincipal (positive) root: √144 = 12\nNegative root: -√144 = -12\n144 is a perfect square: 12² = 144."},"credits_used":5,"credits_remaining":null}},"non_perfect_square_with_a_simplifiable_factor_72":{"summary":"Non-perfect square with a simplifiable factor (72)","value":{"tool":"square-root-calculator","tool_version":"1.0.2","outputs":{"principalRoot":"8.48528","negativeRoot":"-8.48528","isPerfectSquare":"No","simplifiedRadical":"6√2","steps":"n = 72\nPrincipal (positive) root: √72 = 8.48528\nNegative root: -√72 = -8.48528\nLargest perfect-square factor: 6² = 36 → √72 = 6√2."},"credits_used":5,"credits_remaining":null}},"zero":{"summary":"Zero","value":{"tool":"square-root-calculator","tool_version":"1.0.2","outputs":{"principalRoot":"0","negativeRoot":"0","isPerfectSquare":"Yes","simplifiedRadical":"0","steps":"n = 0\nPrincipal (positive) root: √0 = 0\nNegative root: -√0 = 0\n0 is a perfect square (0² = 0)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"principalRoot":{"type":"string","description":"Principal Square Root"},"negativeRoot":{"type":"string","description":"Negative Square Root"},"isPerfectSquare":{"type":"string","description":"Perfect Square?"},"simplifiedRadical":{"type":"string","description":"Simplified Radical Form"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unsubscribe-rate-calculator":{"post":{"operationId":"run_unsubscribe_rate_calculator","summary":"Unsubscribe Rate Calculator","tags":["Calculators"],"description":"Calculate campaign unsubscribe rate and subscriber-list loss rate. Enter emails delivered and unsubscribes to get the unsubscribe rate, plus optionally add your list size for subscriber loss rate and remaining subscribers.\n\n[Try Unsubscribe Rate Calculator in your browser →](https://iotools.cloud/tool/unsubscribe-rate-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"emailsDelivered":{"type":"number","description":"Emails Delivered","minimum":0},"unsubscribes":{"type":"number","description":"Unsubscribes","minimum":0},"startingSubscribers":{"type":"number","description":"Subscriber List Size (Before)","minimum":0}},"required":["emailsDelivered","unsubscribes"]},"examples":{"9_600_delivered_48_unsubscribes_50_000_subscriber_list":{"summary":"9,600 delivered, 48 unsubscribes, 50,000-subscriber list","value":{"emailsDelivered":"9600","unsubscribes":"48","startingSubscribers":"50000"}},"no_list_size_given_unsubscribe_rate_only":{"summary":"No list size given — unsubscribe rate only","value":{"emailsDelivered":"5000","unsubscribes":"40","startingSubscribers":""}},"high_unsubscribe_rate_deliverability_warning_territory":{"summary":"High unsubscribe rate — deliverability warning territory","value":{"emailsDelivered":"12000","unsubscribes":"360","startingSubscribers":"80000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"9_600_delivered_48_unsubscribes_50_000_subscriber_list":{"summary":"9,600 delivered, 48 unsubscribes, 50,000-subscriber list","value":{"tool":"unsubscribe-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Unsubscribe Rate","value":"0.50%"},{"metric":"Subscriber Loss Rate","value":"0.10%"},{"metric":"Remaining Subscribers","value":"49,952"}]},"credits_used":5,"credits_remaining":null}},"no_list_size_given_unsubscribe_rate_only":{"summary":"No list size given — unsubscribe rate only","value":{"tool":"unsubscribe-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Unsubscribe Rate","value":"0.80%"}]},"credits_used":5,"credits_remaining":null}},"high_unsubscribe_rate_deliverability_warning_territory":{"summary":"High unsubscribe rate — deliverability warning territory","value":{"tool":"unsubscribe-rate-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Unsubscribe Rate","value":"3.00%"},{"metric":"Subscriber Loss Rate","value":"0.45%"},{"metric":"Remaining Subscribers","value":"79,640"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/customer-acquisition-cost-calculator":{"post":{"operationId":"run_customer_acquisition_cost_calculator","summary":"Customer Acquisition Cost Calculator","tags":["Calculators"],"description":"Calculate CAC from marketing spend, sales spend, and new customers. Enter your spend and customer count to get total acquisition spend, cost per customer, and the marketing/sales split of that cost.\n\n[Try Customer Acquisition Cost Calculator in your browser →](https://iotools.cloud/tool/customer-acquisition-cost-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"marketingSpend":{"type":"number","description":"Marketing Spend","minimum":0},"salesSpend":{"type":"number","description":"Sales Spend","minimum":0},"newCustomers":{"type":"number","description":"New Customers","minimum":0}},"required":["marketingSpend","salesSpend","newCustomers"]},"examples":{"5_000_marketing_3_000_sales_200_new_customers":{"summary":"$5,000 marketing, $3,000 sales, 200 new customers","value":{"marketingSpend":"5000","salesSpend":"3000","newCustomers":"200"}},"sales_led_no_marketing_spend":{"summary":"Sales-led — no marketing spend","value":{"marketingSpend":"0","salesSpend":"12000","newCustomers":"60"}},"high_volume_low_cost_self_serve_funnel":{"summary":"High-volume, low-cost self-serve funnel","value":{"marketingSpend":"25000","salesSpend":"5000","newCustomers":"3000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_000_marketing_3_000_sales_200_new_customers":{"summary":"$5,000 marketing, $3,000 sales, 200 new customers","value":{"tool":"customer-acquisition-cost-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Acquisition Spend","value":"$8,000.00"},{"metric":"Customer Acquisition Cost (CAC)","value":"$40.00"},{"metric":"New Customers","value":"200"},{"metric":"Marketing Share of Spend","value":"62.5%"},{"metric":"Sales Share of Spend","value":"37.5%"}]},"credits_used":5,"credits_remaining":null}},"sales_led_no_marketing_spend":{"summary":"Sales-led — no marketing spend","value":{"tool":"customer-acquisition-cost-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Acquisition Spend","value":"$12,000.00"},{"metric":"Customer Acquisition Cost (CAC)","value":"$200.00"},{"metric":"New Customers","value":"60"},{"metric":"Marketing Share of Spend","value":"0.0%"},{"metric":"Sales Share of Spend","value":"100.0%"}]},"credits_used":5,"credits_remaining":null}},"high_volume_low_cost_self_serve_funnel":{"summary":"High-volume, low-cost self-serve funnel","value":{"tool":"customer-acquisition-cost-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Acquisition Spend","value":"$30,000.00"},{"metric":"Customer Acquisition Cost (CAC)","value":"$10.00"},{"metric":"New Customers","value":"3,000"},{"metric":"Marketing Share of Spend","value":"83.3%"},{"metric":"Sales Share of Spend","value":"16.7%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/thread-pool-size-calculator":{"post":{"operationId":"run_thread_pool_size_calculator","summary":"Thread Pool Size Calculator","tags":["Calculators"],"description":"Calculate the optimal thread pool size from CPU core count, task type (CPU-bound, IO-bound, or mixed), and blocking coefficient. Shows the exact formula, a step-by-step derivation, and the Amdahl's Law speedup limit for CPU-bound work.\n\n[Try Thread Pool Size Calculator in your browser →](https://iotools.cloud/tool/thread-pool-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cpuCores":{"type":"number","description":"CPU Cores (N)","minimum":1,"maximum":256},"taskType":{"enum":["cpu","io","mixed"],"description":"Task Type"},"blockingCoefficient":{"type":"number","description":"Blocking Coefficient (W/S)","minimum":0,"maximum":10},"parallelizableFraction":{"type":"number","description":"Parallelizable Portion of Work (%)","minimum":50,"maximum":100}},"required":[]},"examples":{"cpu_bound_8_cores_95_parallelizable":{"summary":"CPU-bound, 8 cores, 95% parallelizable","value":{"cpuCores":"8","taskType":"cpu","blockingCoefficient":"4","parallelizableFraction":"95"}},"io_bound_8_cores_blocking_coefficient_4_db_heavy_web_service":{"summary":"IO-bound, 8 cores, blocking coefficient 4 (DB-heavy web service)","value":{"cpuCores":"8","taskType":"io","blockingCoefficient":"4","parallelizableFraction":"95"}},"mixed_4_cores_blocking_coefficient_1":{"summary":"Mixed, 4 cores, blocking coefficient 1","value":{"cpuCores":"4","taskType":"mixed","blockingCoefficient":"1","parallelizableFraction":"95"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cpu_bound_8_cores_95_parallelizable":{"summary":"CPU-bound, 8 cores, 95% parallelizable","value":{"tool":"thread-pool-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Task Type","value":"CPU-bound"},{"metric":"CPU Cores (N)","value":"8"},{"metric":"Formula","value":"pool = N + 1"},{"metric":"Step 1: N + 1","value":"9"},{"metric":"Optimal Thread Pool Size","value":"9"}],"amdahl":[{"metric":"Parallelizable Portion","value":"95%"},{"metric":"Serial (non-parallelizable) Portion","value":"5%"},{"metric":"Formula","value":"speedup(N) = 1 / ((1 - P) + P / N)"},{"metric":"Speedup at N = 8 cores","value":"5.93x"},{"metric":"Theoretical Max Speedup (N → ∞)","value":"20x"},{"metric":"Interpretation","value":"Adding threads beyond 9 won't meaningfully increase throughput — the serial 5% of the work caps total speedup at 20x no matter how many cores or threads compete for them."}]},"credits_used":5,"credits_remaining":null}},"io_bound_8_cores_blocking_coefficient_4_db_heavy_web_service":{"summary":"IO-bound, 8 cores, blocking coefficient 4 (DB-heavy web service)","value":{"tool":"thread-pool-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Task Type","value":"IO-bound"},{"metric":"CPU Cores (N)","value":"8"},{"metric":"Blocking Coefficient (W/S)","value":"4"},{"metric":"Formula","value":"pool = ceil(N × (1 + W/S))"},{"metric":"Step 1: 1 + W/S","value":"5"},{"metric":"Step 2: N × (1 + W/S)","value":"8 × 5 = 40"},{"metric":"Step 3: ceil(...)","value":"40"},{"metric":"Optimal Thread Pool Size","value":"40"}],"amdahl":[]},"credits_used":5,"credits_remaining":null}},"mixed_4_cores_blocking_coefficient_1":{"summary":"Mixed, 4 cores, blocking coefficient 1","value":{"tool":"thread-pool-size-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Task Type","value":"Mixed (CPU + IO)"},{"metric":"CPU Cores (N)","value":"4"},{"metric":"Blocking Coefficient (W/S)","value":"1"},{"metric":"Formula","value":"pool = ceil((CPU-bound estimate + IO-bound estimate) / 2)"},{"metric":"Step 1: CPU-bound estimate (N + 1)","value":"5"},{"metric":"Step 2: IO-bound estimate (ceil(N × (1 + W/S)))","value":"8"},{"metric":"Step 3: ceil((Step 1 + Step 2) / 2)","value":"ceil((5 + 8) / 2) = 7"},{"metric":"Optimal Thread Pool Size","value":"7"}],"amdahl":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Optimal Thread Pool Size","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"amdahl":{"type":"array","description":"Amdahl's Law — Speedup Limit (CPU-bound only)","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/earthing-conductor-sizing-calculator":{"post":{"operationId":"run_earthing_conductor_sizing_calculator","summary":"Earthing Conductor Sizing Calculator","tags":["Calculators"],"description":"Size an earthing/protective conductor from prospective fault current and disconnection time, using the IEC 60364-5-54 adiabatic equation (S = I x sqrt(t) / k). Pick a material/insulation preset instead of having to already know the k constant, and get the result rounded to the nearest standard IEC 60228 conductor size. Runs entirely in your browser.\n\n[Try Earthing Conductor Sizing Calculator in your browser →](https://iotools.cloud/tool/earthing-conductor-sizing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"faultCurrent":{"type":"number","description":"Prospective fault current (kA)","minimum":0.001,"maximum":1000},"clearingTime":{"type":"number","description":"Disconnection time (s)","minimum":0.001,"maximum":60},"materialPreset":{"enum":["copper-pvc","copper-xlpe","copper-bare","aluminum-pvc","aluminum-bare","steel-bare","custom"],"description":"Conductor material / insulation"},"customK":{"type":"number","description":"Custom k value","minimum":1,"maximum":600},"minSize":{"enum":["0","1.5","2.5","4","6","10","16","25","35","50","70","95","120","150","185","240","300","400","500","630"],"description":"Minimum standard size (mm²)"}},"required":["faultCurrent","clearingTime"]},"examples":{"10ka_fault_0_5s_clearing_copper_pvc_insulated":{"summary":"10kA fault, 0.5s clearing, copper PVC-insulated","value":{"faultCurrent":"10","clearingTime":"0.5","materialPreset":"copper-pvc","minSize":"0"}},"25ka_fault_0_2s_clearing_bare_copper_16mm_minimum":{"summary":"25kA fault, 0.2s clearing, bare copper, 16mm² minimum","value":{"faultCurrent":"25","clearingTime":"0.2","materialPreset":"copper-bare","minSize":"16"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"10ka_fault_0_5s_clearing_copper_pvc_insulated":{"summary":"10kA fault, 0.5s clearing, copper PVC-insulated","value":{"tool":"earthing-conductor-sizing-calculator","tool_version":"1.0.2","outputs":{"requiredArea":"49.45 mm²","recommendedSize":"50 mm² (next standard size ≥ 49.45 mm²)","breakdownTable":[{"item":"Fault current (I)","value":"10.000 kA (10,000 A)"},{"item":"Disconnection time (t)","value":"0.500 s"},{"item":"Material / insulation","value":"Copper, PVC insulated (70°C)"},{"item":"k constant","value":"143"},{"item":"Calculated theoretical area (S = I×√t / k)","value":"49.45 mm²"},{"item":"Recommended standard size","value":"50 mm²"},{"item":"Margin over theoretical minimum","value":"+0.55 mm² (1.1%)"}]},"credits_used":5,"credits_remaining":null}},"25ka_fault_0_2s_clearing_bare_copper_16mm_minimum":{"summary":"25kA fault, 0.2s clearing, bare copper, 16mm² minimum","value":{"tool":"earthing-conductor-sizing-calculator","tool_version":"1.0.2","outputs":{"requiredArea":"49.04 mm²","recommendedSize":"50 mm² (next standard size ≥ 49.04 mm²)","breakdownTable":[{"item":"Fault current (I)","value":"25.000 kA (25,000 A)"},{"item":"Disconnection time (t)","value":"0.200 s"},{"item":"Material / insulation","value":"Copper, bare (not touching combustibles)"},{"item":"k constant","value":"228"},{"item":"Calculated theoretical area (S = I×√t / k)","value":"49.04 mm²"},{"item":"Recommended standard size","value":"50 mm²"},{"item":"Margin over theoretical minimum","value":"+0.96 mm² (2.0%)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"requiredArea":{"type":"string","description":"Calculated theoretical area"},"recommendedSize":{"type":"string","description":"Recommended standard conductor size"},"breakdownTable":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["item","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/anchor-bolt-pullout-estimator":{"post":{"operationId":"run_anchor_bolt_pullout_estimator","summary":"Anchor Bolt Pullout Estimator","tags":["Calculators"],"description":"Estimate an anchor bolt's tensile capacity by comparing ACI 318 concrete breakout strength against the bolt's own steel tensile strength, reporting whichever governs plus an allowable working load at your chosen safety factor. Runs entirely in your browser.\n\n[Try Anchor Bolt Pullout Estimator in your browser →](https://iotools.cloud/tool/anchor-bolt-pullout-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"anchorType":{"enum":["cast-in","post-installed"],"description":"Anchor type"},"anchorDiameter":{"type":"number","description":"Anchor diameter (mm)","minimum":3,"maximum":100},"embedmentDepth":{"type":"number","description":"Effective embedment depth, hef (mm)","minimum":1,"maximum":2000},"concreteStrength":{"type":"number","description":"Concrete compressive strength, f'c (MPa)","minimum":10,"maximum":100},"boltGrade":{"enum":["4.6","5.8","8.8","10.9","custom"],"description":"Bolt grade"},"customFuta":{"type":"number","description":"Custom ultimate tensile strength, futa (MPa)","minimum":1,"maximum":2000},"safetyFactor":{"type":"number","description":"Overall safety factor","minimum":1,"maximum":8}},"required":["anchorDiameter","embedmentDepth","concreteStrength"]},"examples":{"m16_cast_in_100mm_embedment_25mpa_concrete_grade_8_8":{"summary":"M16 cast-in, 100mm embedment, 25MPa concrete, Grade 8.8","value":{"anchorType":"cast-in","anchorDiameter":"16","embedmentDepth":"100","concreteStrength":"25","boltGrade":"8.8","safetyFactor":"4"}},"m12_post_installed_60mm_embedment_30mpa_concrete_grade_5_8":{"summary":"M12 post-installed, 60mm embedment, 30MPa concrete, Grade 5.8","value":{"anchorType":"post-installed","anchorDiameter":"12","embedmentDepth":"60","concreteStrength":"30","boltGrade":"5.8","safetyFactor":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"m16_cast_in_100mm_embedment_25mpa_concrete_grade_8_8":{"summary":"M16 cast-in, 100mm embedment, 25MPa concrete, Grade 8.8","value":{"tool":"anchor-bolt-pullout-estimator","tool_version":"1.0.2","outputs":{"governingCapacity":"50.00 kN (11,240 lbf) — governed by Concrete breakout","allowableLoad":"12.50 kN (2,810 lbf) at safety factor 4.0","breakdownTable":[{"item":"Anchor type","value":"Cast-in headed anchor"},{"item":"kc constant","value":"10"},{"item":"Anchor diameter","value":"16.0 mm"},{"item":"Embedment depth (hef)","value":"100.0 mm"},{"item":"Concrete strength (f'c)","value":"25.0 MPa"},{"item":"Concrete breakout strength (Nb)","value":"50.00 kN (11,240 lbf)"},{"item":"Bolt grade","value":"Grade 8.8 (futa 800 MPa)"},{"item":"Approx. steel tensile area (Ase)","value":"150.8 mm²"},{"item":"Steel tensile strength (Nsa)","value":"120.64 kN (27,120 lbf)"},{"item":"Governing ultimate capacity","value":"50.00 kN — Concrete breakout"},{"item":"Safety factor","value":"4.0"},{"item":"Allowable working load","value":"12.50 kN (2,810 lbf)"}]},"credits_used":5,"credits_remaining":null}},"m12_post_installed_60mm_embedment_30mpa_concrete_grade_5_8":{"summary":"M12 post-installed, 60mm embedment, 30MPa concrete, Grade 5.8","value":{"tool":"anchor-bolt-pullout-estimator","tool_version":"1.0.2","outputs":{"governingCapacity":"17.82 kN (4,006 lbf) — governed by Concrete breakout","allowableLoad":"5.94 kN (1,335 lbf) at safety factor 3.0","breakdownTable":[{"item":"Anchor type","value":"Post-installed anchor"},{"item":"kc constant","value":"7"},{"item":"Anchor diameter","value":"12.0 mm"},{"item":"Embedment depth (hef)","value":"60.0 mm"},{"item":"Concrete strength (f'c)","value":"30.0 MPa"},{"item":"Concrete breakout strength (Nb)","value":"17.82 kN (4,006 lbf)"},{"item":"Bolt grade","value":"Grade 5.8 (futa 500 MPa)"},{"item":"Approx. steel tensile area (Ase)","value":"84.8 mm²"},{"item":"Steel tensile strength (Nsa)","value":"42.41 kN (9,534 lbf)"},{"item":"Governing ultimate capacity","value":"17.82 kN — Concrete breakout"},{"item":"Safety factor","value":"3.0"},{"item":"Allowable working load","value":"5.94 kN (1,335 lbf)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"governingCapacity":{"type":"string","description":"Governing ultimate capacity"},"allowableLoad":{"type":"string","description":"Allowable working load"},"breakdownTable":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"item":{"type":"string","description":"Item"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["item","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yarn-calculator":{"post":{"operationId":"run_yarn_calculator","summary":"Yarn Calculator","tags":["Calculators"],"description":"Estimate how much yarn a knitting or crochet project needs — yards, meters, grams and skeins — from the project type, yarn weight and stitch pattern, with a built-in safety buffer.\n\n[Try Yarn Calculator in your browser →](https://iotools.cloud/tool/yarn-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"projectType":{"enum":["sweater_m","cardigan_m","baby_blanket","throw_blanket","queen_blanket","scarf","hat_adult","mittens","socks_crew","pillow_18","dishcloth","market_bag","custom"],"description":"Project"},"customYards":{"type":"number","description":"Base yardage (yards)"},"yarnWeight":{"enum":["lace","super_fine","fine","light","medium","bulky","super_bulky","jumbo"],"description":"Yarn weight"},"stitchPattern":{"enum":["stockinette","ribbing","cables","lace","colorwork","textured","brioche"],"description":"Stitch pattern"},"skeinYards":{"type":"number","description":"Yards per skein"}},"required":[]},"examples":{"adult_sweater_worsted_stockinette":{"summary":"Adult sweater, worsted, stockinette","value":{"projectType":"sweater_m","yarnWeight":"medium","stitchPattern":"stockinette","skeinYards":"200"}},"scarf_fingering_weight_colorwork":{"summary":"Scarf, fingering weight, colorwork","value":{"projectType":"scarf","yarnWeight":"super_fine","stitchPattern":"colorwork","skeinYards":"230"}},"custom_pattern_850_yards_stated":{"summary":"Custom pattern, 850 yards stated","value":{"projectType":"custom","customYards":"850","yarnWeight":"medium","stitchPattern":"ribbing","skeinYards":"100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"adult_sweater_worsted_stockinette":{"summary":"Adult sweater, worsted, stockinette","value":{"tool":"yarn-calculator","tool_version":"1.0.2","outputs":{"result":"1320 yd (1207 m) · 7 skeins","breakdown":[{"metric":"Project","value":"Sweater (adult, medium)"},{"metric":"Base yardage","value":"1200 yd"},{"metric":"Pattern multiplier","value":"×1"},{"metric":"Yarn weight multiplier","value":"×1"},{"metric":"Before buffer","value":"1200 yd"},{"metric":"Buffer (10%)","value":"120 yd"},{"metric":"Total yards","value":"1320 yd"},{"metric":"Total meters","value":"1207 m"},{"metric":"Total grams (approx.)","value":"660 g"},{"metric":"Skeins needed","value":"7"},{"metric":"Skeins (exact)","value":"6.6"}]},"credits_used":5,"credits_remaining":null}},"scarf_fingering_weight_colorwork":{"summary":"Scarf, fingering weight, colorwork","value":{"tool":"yarn-calculator","tool_version":"1.0.2","outputs":{"result":"1010 yd (923 m) · 5 skeins","breakdown":[{"metric":"Project","value":"Scarf"},{"metric":"Base yardage","value":"400 yd"},{"metric":"Pattern multiplier","value":"×1.35"},{"metric":"Yarn weight multiplier","value":"×1.7"},{"metric":"Before buffer","value":"918 yd"},{"metric":"Buffer (10%)","value":"91.8 yd"},{"metric":"Total yards","value":"1009.8 yd"},{"metric":"Total meters","value":"923.4 m"},{"metric":"Total grams (approx.)","value":"232.3 g"},{"metric":"Skeins needed","value":"5"},{"metric":"Skeins (exact)","value":"4.4"}]},"credits_used":5,"credits_remaining":null}},"custom_pattern_850_yards_stated":{"summary":"Custom pattern, 850 yards stated","value":{"tool":"yarn-calculator","tool_version":"1.0.2","outputs":{"result":"1122 yd (1026 m) · 12 skeins","breakdown":[{"metric":"Project","value":"Custom (enter yardage below)"},{"metric":"Base yardage","value":"850 yd"},{"metric":"Pattern multiplier","value":"×1.2"},{"metric":"Yarn weight multiplier","value":"×1"},{"metric":"Before buffer","value":"1020 yd"},{"metric":"Buffer (10%)","value":"102 yd"},{"metric":"Total yards","value":"1122 yd"},{"metric":"Total meters","value":"1026 m"},{"metric":"Total grams (approx.)","value":"561 g"},{"metric":"Skeins needed","value":"12"},{"metric":"Skeins (exact)","value":"11.2"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"You'll need"},"breakdown":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/arpu-calculator":{"post":{"operationId":"run_arpu_calculator","summary":"ARPU Calculator","tags":["Calculators"],"description":"Calculate Average Revenue Per User (ARPU) from total revenue and active users, normalized to a monthly and an annualized figure — with an optional prior-period comparison to track ARPU growth over time.\n\n[Try ARPU Calculator in your browser →](https://iotools.cloud/tool/arpu-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalRevenue":{"type":"number","description":"Total Revenue ($)","minimum":0},"activeUsers":{"type":"number","description":"Active Users","minimum":1},"periodMonths":{"type":"number","description":"Period Length (months)","minimum":0},"previousArpu":{"type":"number","description":"Previous Period ARPU ($)","minimum":0}},"required":["totalRevenue","activeUsers"]},"examples":{"single_month_no_comparison":{"summary":"Single month, no comparison","value":{"totalRevenue":"25000","activeUsers":"5000","periodMonths":"1"}},"quarterly_revenue_normalized_to_monthly_with_growth_comparison":{"summary":"Quarterly revenue normalized to monthly, with growth comparison","value":{"totalRevenue":"90000","activeUsers":"6000","periodMonths":"3","previousArpu":"4.80"}},"zero_revenue":{"summary":"Zero revenue","value":{"totalRevenue":"0","activeUsers":"1000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"single_month_no_comparison":{"summary":"Single month, no comparison","value":{"tool":"arpu-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"ARPU (1 month)","value":"$5.00"},{"metric":"Monthly ARPU","value":"$5.00"},{"metric":"Annualized ARPU","value":"$60.00"}]},"credits_used":5,"credits_remaining":null}},"quarterly_revenue_normalized_to_monthly_with_growth_comparison":{"summary":"Quarterly revenue normalized to monthly, with growth comparison","value":{"tool":"arpu-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"ARPU (3 months)","value":"$15.00"},{"metric":"Monthly ARPU","value":"$5.00"},{"metric":"Annualized ARPU","value":"$60.00"},{"metric":"Previous Monthly ARPU","value":"$4.80"},{"metric":"ARPU Growth","value":"+4.2%"},{"metric":"Verdict","value":"Growing — revenue per user is increasing"}]},"credits_used":5,"credits_remaining":null}},"zero_revenue":{"summary":"Zero revenue","value":{"tool":"arpu-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"ARPU (1 month)","value":"$0.00"},{"metric":"Monthly ARPU","value":"$0.00"},{"metric":"Annualized ARPU","value":"$0.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"ARPU Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tire-size-calculator":{"post":{"operationId":"run_tire_size_calculator","summary":"Tire Size Calculator","tags":["Calculators"],"description":"Calculate tire sidewall height, overall diameter, circumference, revolutions per mile, and wheel RPM from a metric tire size (width, aspect ratio, rim diameter) — with an optional second size to compare and get the resulting speedometer error.\n\n[Try Tire Size Calculator in your browser →](https://iotools.cloud/tool/tire-size-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"widthMm":{"type":"number","description":"Tire Width (mm)","minimum":1},"aspectRatio":{"type":"number","description":"Aspect Ratio (%)","minimum":1,"maximum":100},"rimInches":{"type":"number","description":"Rim Diameter (in)","minimum":1},"speedMph":{"type":"number","description":"Speed (mph)","minimum":0},"widthMmB":{"type":"number","description":"Tire Width (mm)","minimum":0},"aspectRatioB":{"type":"number","description":"Aspect Ratio (%)","minimum":0,"maximum":100},"rimInchesB":{"type":"number","description":"Rim Diameter (in)","minimum":0}},"required":["widthMm","aspectRatio","rimInches"]},"examples":{"standard_225_50r17_at_60_mph":{"summary":"Standard 225/50R17 at 60 mph","value":{"widthMm":"225","aspectRatio":"50","rimInches":"17","speedMph":"60"}},"compare_225_50r17_to_235_45r18":{"summary":"Compare 225/50R17 to 235/45R18","value":{"widthMm":"225","aspectRatio":"50","rimInches":"17","speedMph":"60","widthMmB":"235","aspectRatioB":"45","rimInchesB":"18"}},"missing_required_fields":{"summary":"Missing required fields","value":{"widthMm":"","aspectRatio":"50","rimInches":"17"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_225_50r17_at_60_mph":{"summary":"Standard 225/50R17 at 60 mph","value":{"tool":"tire-size-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sidewall Height","value":"112.5 mm (4.43 in)"},{"metric":"Overall Diameter","value":"656.8 mm (25.86 in)"},{"metric":"Circumference","value":"2063.4 mm (81.24 in)"},{"metric":"Revolutions per Mile","value":"779.9"},{"metric":"Wheel RPM at 60 mph","value":"779.9 rpm"}]},"credits_used":5,"credits_remaining":null}},"compare_225_50r17_to_235_45r18":{"summary":"Compare 225/50R17 to 235/45R18","value":{"tool":"tire-size-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Sidewall Height","value":"112.5 mm (4.43 in)"},{"metric":"Overall Diameter","value":"656.8 mm (25.86 in)"},{"metric":"Circumference","value":"2063.4 mm (81.24 in)"},{"metric":"Revolutions per Mile","value":"779.9"},{"metric":"Wheel RPM at 60 mph","value":"779.9 rpm"},{"metric":"Comparison Diameter","value":"668.7 mm (26.33 in)"},{"metric":"Diameter Difference","value":"+1.81%"},{"metric":"Actual Speed (odometer shows 60 mph)","value":"61.1 mph"},{"metric":"Fitment Verdict","value":"Within the ~3% rule of thumb — safe for speedometer/ABS accuracy"}]},"credits_used":5,"credits_remaining":null}},"missing_required_fields":{"summary":"Missing required fields","value":{"tool":"tire-size-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Status","value":"Enter tire width, aspect ratio, and rim diameter (all greater than 0)."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Tire Size Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/slope-intercept-form-calculator":{"post":{"operationId":"run_slope_intercept_form_calculator","summary":"Slope Intercept Form Calculator","tags":["Calculators"],"description":"Build a line's slope-intercept form (y = mx + b) and standard form from its slope and y-intercept, or from any two points — with x-intercept, slope classification, angle, and a step-by-step derivation.\n\n[Try Slope Intercept Form Calculator in your browser →](https://iotools.cloud/tool/slope-intercept-form-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["slope-intercept","two-points"],"description":"Input Mode"},"slope":{"type":"number","description":"Slope (m)"},"yIntercept":{"type":"number","description":"Y-Intercept (b)"},"x1":{"type":"number","description":"Point 1 — x₁"},"y1":{"type":"number","description":"Point 1 — y₁"},"x2":{"type":"number","description":"Point 2 — x₂"},"y2":{"type":"number","description":"Point 2 — y₂"}},"required":[]},"examples":{"from_slope_and_y_intercept_m_2_b_3":{"summary":"From slope and y-intercept (m = 2, b = -3)","value":{"inputMode":"slope-intercept","slope":"2","yIntercept":"-3"}},"from_two_points_0_3_and_1_1":{"summary":"From two points ((0, -3) and (1, -1))","value":{"inputMode":"two-points","x1":"0","y1":"-3","x2":"1","y2":"-1"}},"vertical_line_3_1_and_3_5":{"summary":"Vertical line ((3, 1) and (3, 5))","value":{"inputMode":"two-points","x1":"3","y1":"1","x2":"3","y2":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"from_slope_and_y_intercept_m_2_b_3":{"summary":"From slope and y-intercept (m = 2, b = -3)","value":{"tool":"slope-intercept-form-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Slope (m)","value":"2"},{"metric":"Y-Intercept (b)","value":"-3"},{"metric":"X-Intercept","value":"1.5"},{"metric":"Equation (slope-intercept form)","value":"y = 2x - 3"},{"metric":"Standard Form","value":"-2x + y + 3 = 0"},{"metric":"Slope Type","value":"Positive (steep)"},{"metric":"Angle from X-Axis","value":"63.4349°"}],"steps":"Given m = 2, b = -3 — already in slope-intercept form."},"credits_used":5,"credits_remaining":null}},"from_two_points_0_3_and_1_1":{"summary":"From two points ((0, -3) and (1, -1))","value":{"tool":"slope-intercept-form-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Slope (m)","value":"2"},{"metric":"Y-Intercept (b)","value":"-3"},{"metric":"X-Intercept","value":"1.5"},{"metric":"Equation (slope-intercept form)","value":"y = 2x - 3"},{"metric":"Standard Form","value":"-2x + y + 3 = 0"},{"metric":"Slope Type","value":"Positive (steep)"},{"metric":"Angle from X-Axis","value":"63.4349°"}],"steps":"m = (y₂ − y₁) / (x₂ − x₁) = (-1 − -3) / (1 − 0) = 2\nb = y₁ − m·x₁ = -3 − 2 × 0 = -3"},"credits_used":5,"credits_remaining":null}},"vertical_line_3_1_and_3_5":{"summary":"Vertical line ((3, 1) and (3, 5))","value":{"tool":"slope-intercept-form-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Slope (m)","value":"Undefined"},{"metric":"Y-Intercept (b)","value":"N/A (vertical line)"},{"metric":"X-Intercept","value":"3"},{"metric":"Equation (slope-intercept form)","value":"x = 3"},{"metric":"Standard Form","value":"x - 3 = 0"},{"metric":"Slope Type","value":"Undefined (vertical)"},{"metric":"Angle from X-Axis","value":"90°"}],"steps":"x₁ = x₂ = 3 — the line is vertical, so the slope is undefined and there is no y = mx + b form."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/distance-speed-time-triangle-calculator":{"post":{"operationId":"run_distance_speed_time_triangle_calculator","summary":"Distance-Speed-Time Triangle Calculator","tags":["Calculators"],"description":"Solve distance, speed, or time from the other two — plus multi-leg average speed and there-and-back round-trip average speed (harmonic mean) — with automatic unit conversion between km/mi/m/ft and kmh/mph/m/s/ft/s.\n\n[Try Distance-Speed-Time Triangle Calculator in your browser →](https://iotools.cloud/tool/distance-speed-time-triangle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["solve_d","solve_s","solve_t","multi_leg","round_trip"],"description":"Solve For"},"distanceUnit":{"enum":["km","mi","m","ft"],"description":"Distance Unit"},"speedUnit":{"enum":["kmh","mph","ms","fts"],"description":"Speed Unit"},"distance":{"type":"number","description":"Distance"},"speed":{"type":"number","description":"Speed"},"timeHours":{"type":"number","description":"Time (hours)"},"legs":{"type":"string","description":"Legs (one \"distance,speed\" pair per line)"},"distanceOneWay":{"type":"number","description":"One-Way Distance"},"speedThere":{"type":"number","description":"Speed There"},"speedBack":{"type":"number","description":"Speed Back"}},"required":[]},"examples":{"solve_distance_60_km_h_for_2_5_hours":{"summary":"Solve distance (60 km/h for 2.5 hours)","value":{"mode":"solve_d","distanceUnit":"km","speedUnit":"kmh","speed":"60","timeHours":"2.5"}},"solve_time_150_km_at_60_km_h":{"summary":"Solve time (150 km at 60 km/h)","value":{"mode":"solve_t","distanceUnit":"km","speedUnit":"kmh","distance":"150","speed":"60"}},"multi_leg_average_speed_100_km_50_km_h_then_50_km_25_km_h":{"summary":"Multi-leg average speed (100 km @ 50 km/h, then 50 km @ 25 km/h)","value":{"mode":"multi_leg","distanceUnit":"km","speedUnit":"kmh","legs":"100,50\n50,25"}},"round_trip_average_speed_100_km_there_at_50_km_h_back_at_25_km_h":{"summary":"Round-trip average speed (100 km there at 50 km/h, back at 25 km/h)","value":{"mode":"round_trip","distanceUnit":"km","speedUnit":"kmh","distanceOneWay":"100","speedThere":"50","speedBack":"25"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_distance_60_km_h_for_2_5_hours":{"summary":"Solve distance (60 km/h for 2.5 hours)","value":{"tool":"distance-speed-time-triangle-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Distance","value":"150 km"},{"metric":"Speed","value":"60 km/h"},{"metric":"Time","value":"2.5 h (2h 30m)"}],"steps":"distance = speed × time"},"credits_used":5,"credits_remaining":null}},"solve_time_150_km_at_60_km_h":{"summary":"Solve time (150 km at 60 km/h)","value":{"tool":"distance-speed-time-triangle-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Distance","value":"150 km"},{"metric":"Speed","value":"60 km/h"},{"metric":"Time","value":"2.5 h (2h 30m)"}],"steps":"time = distance ÷ speed"},"credits_used":5,"credits_remaining":null}},"multi_leg_average_speed_100_km_50_km_h_then_50_km_25_km_h":{"summary":"Multi-leg average speed (100 km @ 50 km/h, then 50 km @ 25 km/h)","value":{"tool":"distance-speed-time-triangle-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Number of Legs","value":"2"},{"metric":"Total Distance","value":"150 km"},{"metric":"Total Time","value":"4 h (4h 0m)"},{"metric":"Average Speed","value":"37.5 km/h"}],"steps":"average speed = total distance ÷ total time"},"credits_used":5,"credits_remaining":null}},"round_trip_average_speed_100_km_there_at_50_km_h_back_at_25_km_h":{"summary":"Round-trip average speed (100 km there at 50 km/h, back at 25 km/h)","value":{"tool":"distance-speed-time-triangle-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"One-Way Distance","value":"100 km"},{"metric":"Round-Trip Distance","value":"200 km"},{"metric":"Round-Trip Time","value":"6 h (6h 0m)"},{"metric":"Average Speed (harmonic mean)","value":"33.3333 km/h"}],"steps":"average speed = 2 × v₁ × v₂ ÷ (v₁ + v₂)  [equal-distance harmonic mean]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Formula"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/destination-point-calculator":{"post":{"operationId":"run_destination_point_calculator","summary":"Destination Point Calculator","tags":["Calculators"],"description":"Find the destination latitude/longitude you'd reach travelling a given distance and compass bearing from a start point, along a great-circle path. Accepts decimal degrees or DMS, plus km/mi/nmi/m distances, and reports the arrival (final) bearing too.\n\n[Try Destination Point Calculator in your browser →](https://iotools.cloud/tool/destination-point-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lat":{"type":"string","description":"Start — Latitude"},"lon":{"type":"string","description":"Start — Longitude"},"bearing":{"type":"number","description":"Initial Bearing (°)","minimum":0,"maximum":360},"distance":{"type":"number","description":"Distance","minimum":0},"distanceUnit":{"enum":["km","mi","nmi","m"],"description":"Distance Unit"}},"required":["lat","lon","bearing","distance"]},"examples":{"500_km_ne_of_new_york":{"summary":"500 km NE of New York","value":{"lat":"40.7128","lon":"-74.0060","bearing":"51.21","distance":"500","distanceUnit":"km"}},"1000_miles_due_north_of_london":{"summary":"1000 miles due north of London","value":{"lat":"51.5074","lon":"-0.1278","bearing":"0","distance":"1000","distanceUnit":"mi"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"500_km_ne_of_new_york":{"summary":"500 km NE of New York","value":{"tool":"destination-point-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Latitude (DD)","value":"43.431650"},{"metric":"Longitude (DD)","value":"-69.178898"},{"metric":"Latitude (DMS)","value":"43°25'53.94\"N"},{"metric":"Longitude (DMS)","value":"69°10'44.03\"W"},{"metric":"Final bearing","value":"54.45°"}]},"credits_used":5,"credits_remaining":null}},"1000_miles_due_north_of_london":{"summary":"1000 miles due north of London","value":{"tool":"destination-point-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Latitude (DD)","value":"65.980542"},{"metric":"Longitude (DD)","value":"-0.127800"},{"metric":"Latitude (DMS)","value":"65°58'49.95\"N"},{"metric":"Longitude (DMS)","value":"0°7'40.08\"W"},{"metric":"Final bearing","value":"0.00°"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Destination Point","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/survey-traverse-closure-calculator":{"post":{"operationId":"run_survey_traverse_closure_calculator","summary":"Survey Traverse Closure Calculator","tags":["Calculators"],"description":"Check the closure error of a land-survey traverse from its leg bearings and distances — sums the latitude/departure components to give the linear misclosure, the industry-standard precision ratio (1:N), and the direction of the closure error.\n\n[Try Survey Traverse Closure Calculator in your browser →](https://iotools.cloud/tool/survey-traverse-closure-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"legs":{"type":"string","description":"Traverse Legs"}},"required":["legs"]},"examples":{"perfect_square_exact_closure":{"summary":"Perfect square (exact closure)","value":{"legs":"0,100\n90,100\n180,100\n270,100"}},"near_closed_triangle_small_error_on_one_leg":{"summary":"Near-closed triangle (small error on one leg)","value":{"legs":"0,300\n120,300\n240,300.5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"perfect_square_exact_closure":{"summary":"Perfect square (exact closure)","value":{"tool":"survey-traverse-closure-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Legs","value":"4"},{"metric":"Perimeter","value":"400"},{"metric":"ΣLatitude (N-S)","value":"0"},{"metric":"ΣDeparture (E-W)","value":"0"},{"metric":"Linear misclosure","value":"0"},{"metric":"Precision ratio","value":"Exact closure"},{"metric":"Closure bearing","value":"-"}]},"credits_used":5,"credits_remaining":null}},"near_closed_triangle_small_error_on_one_leg":{"summary":"Near-closed triangle (small error on one leg)","value":{"tool":"survey-traverse-closure-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Legs","value":"3"},{"metric":"Perimeter","value":"900.5"},{"metric":"ΣLatitude (N-S)","value":"-0.25"},{"metric":"ΣDeparture (E-W)","value":"-0.433"},{"metric":"Linear misclosure","value":"0.5"},{"metric":"Precision ratio","value":"1 : 1801"},{"metric":"Closure bearing","value":"240.00°"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/traverse-adjustment-bowditch":{"post":{"operationId":"run_traverse_adjustment_bowditch","summary":"Traverse Adjustment Bowditch","tags":["Calculators"],"description":"Adjust a closed land-survey traverse with the Bowditch (compass) rule — distributes the latitude/departure closure error across legs proportionally to leg length, and reports the per-leg correction, adjusted bearing/distance, and adjusted coordinates of every station.\n\n[Try Traverse Adjustment Bowditch in your browser →](https://iotools.cloud/tool/traverse-adjustment-bowditch/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"legs":{"type":"string","description":"Traverse Legs"},"startNorthing":{"type":"number","description":"Start Northing (Y)"},"startEasting":{"type":"number","description":"Start Easting (X)"}},"required":["legs"]},"examples":{"near_closed_triangle_small_error_on_one_leg":{"summary":"Near-closed triangle (small error on one leg)","value":{"legs":"0,300\n120,300\n240,300.5","startNorthing":"0","startEasting":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"near_closed_triangle_small_error_on_one_leg":{"summary":"Near-closed triangle (small error on one leg)","value":{"tool":"traverse-adjustment-bowditch","tool_version":"1.0.2","outputs":{"closure":[{"metric":"Legs","value":"3"},{"metric":"Perimeter","value":"900.5"},{"metric":"ΣLatitude (N-S)","value":"-0.25"},{"metric":"ΣDeparture (E-W)","value":"-0.433"},{"metric":"Linear misclosure","value":"0.5"},{"metric":"Precision ratio","value":"1 : 1801"},{"metric":"Closure bearing","value":"240.00°"}],"adjustment":[{"station":"0 (start)","raw-bearing":"-","raw-distance":"-","correction-lat":"-","correction-dep":"-","adjusted-bearing":"-","adjusted-distance":"-","northing":"0","easting":"0"},{"station":"1","raw-bearing":"0°","raw-distance":"300","correction-lat":"0.0833","correction-dep":"0.1443","adjusted-bearing":"0.0275°","adjusted-distance":"300.0833","northing":"300.0833","easting":"0.1443"},{"station":"2","raw-bearing":"120°","raw-distance":"300","correction-lat":"0.0833","correction-dep":"0.1443","adjusted-bearing":"119.9725°","adjusted-distance":"300.0833","northing":"150.1666","easting":"260.0961"},{"station":"3 (closing → 0)","raw-bearing":"240°","raw-distance":"300.5","correction-lat":"0.0834","correction-dep":"0.1445","adjusted-bearing":"240°","adjusted-distance":"300.3331","northing":"0","easting":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"closure":{"type":"array","description":"Closure Error","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"adjustment":{"type":"array","description":"Bowditch Adjustment","items":{"type":"object","properties":{"station":{"type":"string","description":"Station"},"raw-bearing":{"type":"string","description":"Raw Bearing"},"raw-distance":{"type":"string","description":"Raw Distance"},"correction-lat":{"type":"string","description":"Correction ΔLat"},"correction-dep":{"type":"string","description":"Correction ΔDep"},"adjusted-bearing":{"type":"string","description":"Adjusted Bearing"},"adjusted-distance":{"type":"string","description":"Adjusted Distance"},"northing":{"type":"string","description":"Northing"},"easting":{"type":"string","description":"Easting"}}},"x-iotools-columns":["station","raw-bearing","raw-distance","correction-lat","correction-dep","adjusted-bearing","adjusted-distance","northing","easting"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/contour-interval-volume-estimator":{"post":{"operationId":"run_contour_interval_volume_estimator","summary":"Contour Interval Volume Estimator","tags":["Calculators"],"description":"Estimate earthwork cut/fill volume from a series of contour-line areas at a fixed contour interval, using the standard average-end-area method with an optional cone correction for a closed hilltop or pit at either end.\n\n[Try Contour Interval Volume Estimator in your browser →](https://iotools.cloud/tool/contour-interval-volume-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contourInterval":{"type":"number","description":"Contour Interval"},"areas":{"type":"string","description":"Contour Areas"},"firstContourClosed":{"type":"boolean","description":"First area is a closed hilltop or pit (cone correction)"},"lastContourClosed":{"type":"boolean","description":"Last area is a closed hilltop or pit (cone correction)"}},"required":["contourInterval","areas"]},"examples":{"open_cut_fill_site_5_contours_average_end_area_only":{"summary":"Open cut/fill site (5 contours, average end area only)","value":{"contourInterval":"2","areas":"12500\n9800\n6400\n3100\n900"}},"isolated_hill_with_cone_correction_at_the_summit":{"summary":"Isolated hill with cone correction at the summit","value":{"contourInterval":"2","areas":"900\n3100\n6400\n9800\n12500","firstContourClosed":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"open_cut_fill_site_5_contours_average_end_area_only":{"summary":"Open cut/fill site (5 contours, average end area only)","value":{"tool":"contour-interval-volume-estimator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Contours","value":"5"},{"metric":"Segments","value":"4"},{"metric":"Contour interval","value":"2"},{"metric":"Total volume","value":"52000"}],"breakdown":[{"segment":"1 ↔ 2","area-1":"12500","area-2":"9800","method":"Average End Area","segment-volume":"22300"},{"segment":"2 ↔ 3","area-1":"9800","area-2":"6400","method":"Average End Area","segment-volume":"16200"},{"segment":"3 ↔ 4","area-1":"6400","area-2":"3100","method":"Average End Area","segment-volume":"9500"},{"segment":"4 ↔ 5","area-1":"3100","area-2":"900","method":"Average End Area","segment-volume":"4000"}]},"credits_used":5,"credits_remaining":null}},"isolated_hill_with_cone_correction_at_the_summit":{"summary":"Isolated hill with cone correction at the summit","value":{"tool":"contour-interval-volume-estimator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Contours","value":"5"},{"metric":"Segments","value":"4"},{"metric":"Contour interval","value":"2"},{"metric":"Total volume","value":"50066.6667"}],"breakdown":[{"segment":"1 ↔ 2","area-1":"900","area-2":"3100","method":"Cone Correction (closed top)","segment-volume":"2066.6667"},{"segment":"2 ↔ 3","area-1":"3100","area-2":"6400","method":"Average End Area","segment-volume":"9500"},{"segment":"3 ↔ 4","area-1":"6400","area-2":"9800","method":"Average End Area","segment-volume":"16200"},{"segment":"4 ↔ 5","area-1":"9800","area-2":"12500","method":"Average End Area","segment-volume":"22300"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Volume Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"breakdown":{"type":"array","description":"Per-Segment Breakdown","items":{"type":"object","properties":{"segment":{"type":"string","description":"Segment"},"area-1":{"type":"string","description":"Area 1"},"area-2":{"type":"string","description":"Area 2"},"method":{"type":"string","description":"Method"},"segment-volume":{"type":"string","description":"Segment Volume"}}},"x-iotools-columns":["segment","area-1","area-2","method","segment-volume"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/brick-block-calculator":{"post":{"operationId":"run_brick_block_calculator","summary":"Brick / Block Calculator","tags":["Calculators"],"description":"Estimate how many bricks or blocks you need for a wall — accounting for the mortar joint, an openings allowance for doors and windows, and a wastage percentage for cuts and breakage, in metric or imperial units.\n\n[Try Brick / Block Calculator in your browser →](https://iotools.cloud/tool/brick-block-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"wallLength":{"type":"number","description":"Wall length","minimum":0},"wallHeight":{"type":"number","description":"Wall height","minimum":0},"openingsArea":{"type":"number","description":"Openings area (doors, windows)","minimum":0},"unitLength":{"type":"number","description":"Brick/block length","minimum":0},"unitHeight":{"type":"number","description":"Brick/block height","minimum":0},"mortarJoint":{"type":"number","description":"Mortar joint","minimum":0},"wastagePct":{"type":"number","description":"Wastage %","minimum":0,"maximum":30}},"required":["wallLength","wallHeight","unitLength","unitHeight"]},"examples":{"metric_5m_x_3m_wall_standard_brick_10mm_joint":{"summary":"Metric — 5m x 3m wall, standard brick, 10mm joint","value":{"unitSystem":"metric","wallLength":"5","wallHeight":"3","openingsArea":"3.5","unitLength":"215","unitHeight":"65","mortarJoint":"10","wastagePct":"5"}},"imperial_16ft_x_8ft_wall_modular_brick_3_8in_joint":{"summary":"Imperial — 16ft x 8ft wall, modular brick, 3/8in joint","value":{"unitSystem":"imperial","wallLength":"16","wallHeight":"8","openingsArea":"16","unitLength":"8","unitHeight":"2.25","mortarJoint":"0.375","wastagePct":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_5m_x_3m_wall_standard_brick_10mm_joint":{"summary":"Metric — 5m x 3m wall, standard brick, 10mm joint","value":{"tool":"brick-block-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross wall area","value":"15.00 m²"},{"metric":"Openings subtracted","value":"3.50 m²"},{"metric":"Net wall area","value":"11.50 m²"},{"metric":"Effective unit area (with mortar joint)","value":"0.02 m²"},{"metric":"Units needed (no wastage)","value":"682 units"},{"metric":"Units needed (with wastage)","value":"716 units (+5%)"},{"metric":"Extra units for waste","value":"34 units"}],"summary":"11.50 m² net wall · 716 units +5%"},"credits_used":5,"credits_remaining":null}},"imperial_16ft_x_8ft_wall_modular_brick_3_8in_joint":{"summary":"Imperial — 16ft x 8ft wall, modular brick, 3/8in joint","value":{"tool":"brick-block-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross wall area","value":"128.00 sq ft"},{"metric":"Openings subtracted","value":"16.00 sq ft"},{"metric":"Net wall area","value":"112.00 sq ft"},{"metric":"Effective unit area (with mortar joint)","value":"0.15 sq ft"},{"metric":"Units needed (no wastage)","value":"734 units"},{"metric":"Units needed (with wastage)","value":"807 units (+10%)"},{"metric":"Extra units for waste","value":"73 units"}],"summary":"112.00 sq ft net wall · 807 units +10%"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/manning-flow-calculator":{"post":{"operationId":"run_manning_flow_calculator","summary":"Manning Flow Calculator","tags":["Calculators"],"description":"Calculate open-channel flow velocity and discharge with Manning's equation, for rectangular, trapezoidal or triangular channels — enter depth, bottom width, side slope, roughness and bed slope.\n\n[Try Manning Flow Calculator in your browser →](https://iotools.cloud/tool/manning-flow-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["si","us"],"description":"Unit system"},"channelShape":{"enum":["rectangular","trapezoidal","triangular"],"description":"Channel shape"},"bottomWidth":{"type":"number","description":"Bottom width","minimum":0},"sideSlope":{"type":"number","description":"Side slope (z, horizontal:vertical)","minimum":0},"flowDepth":{"type":"number","description":"Flow depth","minimum":0},"manningN":{"type":"number","description":"Manning's roughness coefficient (n)","minimum":0},"channelSlope":{"type":"number","description":"Channel bed slope","minimum":0}},"required":["flowDepth","manningN","channelSlope"]},"examples":{"si_rectangular_2m_wide_1m_deep_concrete_0_5_slope":{"summary":"SI rectangular — 2m wide, 1m deep, concrete, 0.5% slope","value":{"unitSystem":"si","channelShape":"rectangular","bottomWidth":"2","flowDepth":"1","manningN":"0.013","channelSlope":"0.5"}},"si_trapezoidal_1_5m_bottom_z_1_5_0_8m_deep_earth_channel_0_2_slope":{"summary":"SI trapezoidal — 1.5m bottom, z=1.5, 0.8m deep, earth channel, 0.2% slope","value":{"unitSystem":"si","channelShape":"trapezoidal","bottomWidth":"1.5","sideSlope":"1.5","flowDepth":"0.8","manningN":"0.022","channelSlope":"0.2"}},"us_customary_triangular_z_2_0_6ft_deep_gravel_channel_1_slope":{"summary":"US customary triangular — z=2, 0.6ft deep, gravel channel, 1% slope","value":{"unitSystem":"us","channelShape":"triangular","sideSlope":"2","flowDepth":"0.6","manningN":"0.025","channelSlope":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"si_rectangular_2m_wide_1m_deep_concrete_0_5_slope":{"summary":"SI rectangular — 2m wide, 1m deep, concrete, 0.5% slope","value":{"tool":"manning-flow-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Flow area","value":"2.000 m²"},{"metric":"Wetted perimeter","value":"4.000 m"},{"metric":"Hydraulic radius","value":"0.500 m"},{"metric":"Velocity","value":"3.427 m/s"},{"metric":"Discharge (flow rate)","value":"6.853 m³/s"}],"summary":"V = 3.43 m/s · Q = 6.85 m³/s"},"credits_used":5,"credits_remaining":null}},"si_trapezoidal_1_5m_bottom_z_1_5_0_8m_deep_earth_channel_0_2_slope":{"summary":"SI trapezoidal — 1.5m bottom, z=1.5, 0.8m deep, earth channel, 0.2% slope","value":{"tool":"manning-flow-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Flow area","value":"2.160 m²"},{"metric":"Wetted perimeter","value":"4.384 m"},{"metric":"Hydraulic radius","value":"0.493 m"},{"metric":"Velocity","value":"1.268 m/s"},{"metric":"Discharge (flow rate)","value":"2.739 m³/s"}],"summary":"V = 1.27 m/s · Q = 2.74 m³/s"},"credits_used":5,"credits_remaining":null}},"us_customary_triangular_z_2_0_6ft_deep_gravel_channel_1_slope":{"summary":"US customary triangular — z=2, 0.6ft deep, gravel channel, 1% slope","value":{"tool":"manning-flow-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Flow area","value":"0.720 ft²"},{"metric":"Wetted perimeter","value":"2.683 ft"},{"metric":"Hydraulic radius","value":"0.268 ft"},{"metric":"Velocity","value":"2.473 ft/s"},{"metric":"Discharge (flow rate)","value":"1.780 ft³/s"}],"summary":"V = 2.47 ft/s · Q = 1.78 ft³/s"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/expand-polynomials-calculator":{"post":{"operationId":"run_expand_polynomials_calculator","summary":"Expand Polynomials Calculator","tags":["Calculators"],"description":"Expand a product of polynomial factors — like (x + 2)(x − 3)^2 — into standard form. Exact rational coefficients (never rounded), plus a term-by-term breakdown.\n\n[Try Expand Polynomials Calculator in your browser →](https://iotools.cloud/tool/expand-polynomials-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expression":{"type":"string","description":"Expression to expand"}},"required":["expression"]},"examples":{"x_2_x_3_2_factor_squared":{"summary":"(x + 2)(x - 3)^2 — factor squared","value":{"expression":"(x + 2)(x - 3)^2"}},"1_2x_1_x_2_exact_fraction_coefficient":{"summary":"(1/2x + 1)(x - 2) — exact fraction coefficient","value":{"expression":"(1/2x + 1)(x - 2)"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_2_x_3_2_factor_squared":{"summary":"(x + 2)(x - 3)^2 — factor squared","value":{"tool":"expand-polynomials-calculator","tool_version":"1.0.2","outputs":{"expanded":"x^3 - 4x^2 - 3x + 18","degree":"3","termCount":"4","terms":[{"term-x-k":"x^3","coefficient":"1"},{"term-x-k":"x^2","coefficient":"-4"},{"term-x-k":"x","coefficient":"-3"},{"term-x-k":"constant","coefficient":"18"}]},"credits_used":5,"credits_remaining":null}},"1_2x_1_x_2_exact_fraction_coefficient":{"summary":"(1/2x + 1)(x - 2) — exact fraction coefficient","value":{"tool":"expand-polynomials-calculator","tool_version":"1.0.2","outputs":{"expanded":"1/2x^2 - 2","degree":"2","termCount":"2","terms":[{"term-x-k":"x^2","coefficient":"1/2"},{"term-x-k":"constant","coefficient":"-2"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"expanded":{"type":"string","description":"Expanded polynomial (standard form)"},"degree":{"type":"string","description":"Degree"},"termCount":{"type":"string","description":"Number of terms"},"terms":{"type":"array","description":"Term-by-Term Breakdown","items":{"type":"object","properties":{"term-x-k":{"type":"string","description":"Term (x^k)"},"coefficient":{"type":"string","description":"Coefficient"}}},"x-iotools-columns":["term-x-k","coefficient"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/polynomial-long-division-calculator":{"post":{"operationId":"run_polynomial_long_division_calculator","summary":"Polynomial Long Division Calculator","tags":["Calculators"],"description":"Divide one polynomial by another of any degree — not just x − a — with exact rational arithmetic. Get the quotient, remainder, and the full step-by-step subtraction table.\n\n[Try Polynomial Long Division Calculator in your browser →](https://iotools.cloud/tool/polynomial-long-division-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dividend":{"type":"string","description":"Dividend coefficients (highest degree first)"},"divisor":{"type":"string","description":"Divisor coefficients (highest degree first)"}},"required":["dividend","divisor"]},"examples":{"x_3x_3x_1_x_1_exact_linear_divisor":{"summary":"(x³ − 3x² + 3x − 1) ÷ (x − 1) — exact, linear divisor","value":{"dividend":"1, -3, 3, -1","divisor":"1, -1"}},"x_4x_3_x_1_quadratic_divisor":{"summary":"(x⁴ − 4x² + 3) ÷ (x² − 1) — quadratic divisor","value":{"dividend":"1, 0, -4, 0, 3","divisor":"1, 0, -1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_3x_3x_1_x_1_exact_linear_divisor":{"summary":"(x³ − 3x² + 3x − 1) ÷ (x − 1) — exact, linear divisor","value":{"tool":"polynomial-long-division-calculator","tool_version":"1.0.2","outputs":{"quotient":"x^2 - 2x + 1","remainder":"0","isExact":"Yes — the divisor divides evenly (remainder = 0).","steps":[{"step":"1","quotient-term":"x^2","remainder-after-this-step":"-2x^2 + 3x - 1"},{"step":"2","quotient-term":"-2x","remainder-after-this-step":"x - 1"},{"step":"3","quotient-term":"1","remainder-after-this-step":"0"}]},"credits_used":5,"credits_remaining":null}},"x_4x_3_x_1_quadratic_divisor":{"summary":"(x⁴ − 4x² + 3) ÷ (x² − 1) — quadratic divisor","value":{"tool":"polynomial-long-division-calculator","tool_version":"1.0.2","outputs":{"quotient":"x^2 - 3","remainder":"0","isExact":"Yes — the divisor divides evenly (remainder = 0).","steps":[{"step":"1","quotient-term":"x^2","remainder-after-this-step":"-3x^2 + 3"},{"step":"2","quotient-term":"-3","remainder-after-this-step":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"quotient":{"type":"string","description":"Quotient"},"remainder":{"type":"string","description":"Remainder"},"isExact":{"type":"string","description":"Divides evenly?"},"steps":{"type":"array","description":"Long Division Steps","items":{"type":"object","properties":{"step":{"type":"string","description":"Step"},"quotient-term":{"type":"string","description":"Quotient term"},"remainder-after-this-step":{"type":"string","description":"Remainder after this step"}}},"x-iotools-columns":["step","quotient-term","remainder-after-this-step"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/polynomial-factoring-calculator":{"post":{"operationId":"run_polynomial_factoring_calculator","summary":"Polynomial Factoring Calculator","tags":["Calculators"],"description":"Factor an integer polynomial over the rationals: content (GCD), every rational root with multiplicity, the linear factors they give, and whatever's left over with no rational roots.\n\n[Try Polynomial Factoring Calculator in your browser →](https://iotools.cloud/tool/polynomial-factoring-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coefficients":{"type":"string","description":"Coefficients (highest degree first)"}},"required":["coefficients"]},"examples":{"x_3x_2_repeated_root_x_1_and_a_simple_root":{"summary":"x³ − 3x + 2 — repeated root (x - 1)² and a simple root","value":{"coefficients":"1, 0, -3, 2"}},"x_2_no_rational_roots_irreducible_remainder":{"summary":"x³ − 2 — no rational roots (irreducible remainder)","value":{"coefficients":"1, 0, 0, -2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"x_3x_2_repeated_root_x_1_and_a_simple_root":{"summary":"x³ − 3x + 2 — repeated root (x - 1)² and a simple root","value":{"tool":"polynomial-factoring-calculator","tool_version":"1.0.2","outputs":{"content":"1","factoredForm":"(x - 1)^2(x + 2)","roots":[{"root":"1","multiplicity":"2","linear-factor":"(x - 1)^2"},{"root":"-2","multiplicity":"1","linear-factor":"(x + 2)"}],"remainder":"Yes — no remainder; the polynomial factors completely into rational linear terms."},"credits_used":5,"credits_remaining":null}},"x_2_no_rational_roots_irreducible_remainder":{"summary":"x³ − 2 — no rational roots (irreducible remainder)","value":{"tool":"polynomial-factoring-calculator","tool_version":"1.0.2","outputs":{"content":"1","factoredForm":"(x^3 - 2)","roots":[],"remainder":"No — x^3 - 2 is left over (degree 3), with no rational roots."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"content":{"type":"string","description":"Content (GCF of coefficients)"},"factoredForm":{"type":"string","description":"Factored form"},"roots":{"type":"array","description":"Rational Roots Found","items":{"type":"object","properties":{"root":{"type":"string","description":"Root"},"multiplicity":{"type":"string","description":"Multiplicity"},"linear-factor":{"type":"string","description":"Linear factor"}}},"x-iotools-columns":["root","multiplicity","linear-factor"]},"remainder":{"type":"string","description":"Factors completely?"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/system-of-linear-equations-solver":{"post":{"operationId":"run_system_of_linear_equations_solver","summary":"System of Linear Equations Solver","tags":["Calculators"],"description":"Solve an n×n system of linear equations (2 to 8 unknowns) with exact fraction arithmetic — get the unique solution, a parametric form for infinitely many solutions, or confirmation that none exists.\n\n[Try System of Linear Equations Solver in your browser →](https://iotools.cloud/tool/system-of-linear-equations-solver/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"equations":{"type":"string","description":"Augmented matrix (one equation per line)"}},"required":["equations"]},"examples":{"2x_x_5_x_x_1_unique_solution":{"summary":"2x₁ + x₂ = 5, x₁ − x₂ = 1 — unique solution","value":{"equations":"2, 1, 5\n1, -1, 1"}},"x_x_3_2x_2x_6_dependent_equations_infinite_solutions":{"summary":"x₁ + x₂ = 3, 2x₁ + 2x₂ = 6 — dependent equations, infinite solutions","value":{"equations":"1, 1, 3\n2, 2, 6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_x_5_x_x_1_unique_solution":{"summary":"2x₁ + x₂ = 5, x₁ − x₂ = 1 — unique solution","value":{"tool":"system-of-linear-equations-solver","tool_version":"1.0.2","outputs":{"status":"Unique solution.","solution":[{"variable":"x1","value":"2"},{"variable":"x2","value":"1"}],"reducedMatrix":"1  0 | 2\n0  1 | 1"},"credits_used":5,"credits_remaining":null}},"x_x_3_2x_2x_6_dependent_equations_infinite_solutions":{"summary":"x₁ + x₂ = 3, 2x₁ + 2x₂ = 6 — dependent equations, infinite solutions","value":{"tool":"system-of-linear-equations-solver","tool_version":"1.0.2","outputs":{"status":"Infinitely many solutions — 1 free parameter.","solution":[{"variable":"x1","value":"3 - x2"},{"variable":"x2","value":"free — any value"}],"reducedMatrix":"1  1 | 3\n0  0 | 0"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"solution":{"type":"array","description":"Solution","items":{"type":"object","properties":{"variable":{"type":"string","description":"Variable"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["variable","value"]},"reducedMatrix":{"type":"string","description":"Row-reduced augmented matrix"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/roof-pitch-calculator":{"post":{"operationId":"run_roof_pitch_calculator","summary":"Roof Pitch Calculator","tags":["Calculators"],"description":"Calculate roof pitch as the standard \"X/12\" ratio, angle, slope percent, and the rafter length multiplier from a measured rise and run — plus how your pitch compares to common named roof slopes.\n\n[Try Roof Pitch Calculator in your browser →](https://iotools.cloud/tool/roof-pitch-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rise":{"type":"number","description":"Rise (vertical height)","minimum":0},"run":{"type":"number","description":"Run (horizontal distance)","minimum":0.01},"unit":{"enum":["in","ft","m","cm",""],"description":"Unit"}},"required":["rise","run"]},"examples":{"standard_walkable_roof_6_12":{"summary":"Standard walkable roof (6/12)","value":{"rise":"6","run":"12","unit":"in"}},"low_slope_shingle_roof_3_12_over_a_15_ft_run":{"summary":"Low-slope shingle roof (3/12) over a 15 ft run","value":{"rise":"3.75","run":"15","unit":"ft"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_walkable_roof_6_12":{"summary":"Standard walkable roof (6/12)","value":{"tool":"roof-pitch-calculator","tool_version":"1.0.2","outputs":{"status":"A rise of 6 in over a run of 12 in is a 6/12 roof pitch — 26.57° from horizontal, 50% slope. Each 12 in of run needs about 13.42 in of rafter (×1.118).","result":[{"property":"Roof Pitch","value":"6/12"},{"property":"Angle","value":"26.57°"},{"property":"Slope","value":"50%"},{"property":"Rafter Length Multiplier","value":"×1.118"},{"property":"Rafter Length (for your run)","value":"13.42 in"}],"reference":[{"pitch":"2/12","angle":"9.46°","notes-your-roof":"Yours is 4/12 steeper — Minimum slope for low-slope/membrane roofing"},{"pitch":"3/12","angle":"14.04°","notes-your-roof":"Yours is 3/12 steeper — Minimum slope for asphalt shingles"},{"pitch":"4/12","angle":"18.43°","notes-your-roof":"Yours is 2/12 steeper — Common on ranch-style homes"},{"pitch":"6/12","angle":"26.57°","notes-your-roof":"Same as yours — Most common residential pitch — comfortably walkable"},{"pitch":"9/12","angle":"36.87°","notes-your-roof":"Yours is 3/12 gentler — Steep — common on craftsman and A-frame styles"},{"pitch":"12/12","angle":"45°","notes-your-roof":"Yours is 6/12 gentler — 45° — very steep, chalet-style"}]},"credits_used":5,"credits_remaining":null}},"low_slope_shingle_roof_3_12_over_a_15_ft_run":{"summary":"Low-slope shingle roof (3/12) over a 15 ft run","value":{"tool":"roof-pitch-calculator","tool_version":"1.0.2","outputs":{"status":"A rise of 3.75 ft over a run of 15 ft is a 3/12 roof pitch — 14.04° from horizontal, 25% slope. Each 15 ft of run needs about 15.46 ft of rafter (×1.031).","result":[{"property":"Roof Pitch","value":"3/12"},{"property":"Angle","value":"14.04°"},{"property":"Slope","value":"25%"},{"property":"Rafter Length Multiplier","value":"×1.031"},{"property":"Rafter Length (for your run)","value":"15.46 ft"}],"reference":[{"pitch":"2/12","angle":"9.46°","notes-your-roof":"Yours is 1/12 steeper — Minimum slope for low-slope/membrane roofing"},{"pitch":"3/12","angle":"14.04°","notes-your-roof":"Same as yours — Minimum slope for asphalt shingles"},{"pitch":"4/12","angle":"18.43°","notes-your-roof":"Yours is 1/12 gentler — Common on ranch-style homes"},{"pitch":"6/12","angle":"26.57°","notes-your-roof":"Yours is 3/12 gentler — Most common residential pitch — comfortably walkable"},{"pitch":"9/12","angle":"36.87°","notes-your-roof":"Yours is 6/12 gentler — Steep — common on craftsman and A-frame styles"},{"pitch":"12/12","angle":"45°","notes-your-roof":"Yours is 9/12 gentler — 45° — very steep, chalet-style"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"reference":{"type":"array","description":"Common Roof Pitches","items":{"type":"object","properties":{"pitch":{"type":"string","description":"Pitch"},"angle":{"type":"string","description":"Angle"},"notes-your-roof":{"type":"string","description":"Notes / Your Roof"}}},"x-iotools-columns":["pitch","angle","notes-your-roof"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/fence-calculator":{"post":{"operationId":"run_fence_calculator","summary":"Fence Calculator","tags":["Calculators"],"description":"Estimate the posts, rails or pre-made panels, pickets, gate posts, and concrete needed to build a fence — for privacy, picket, post-and-rail, or panel styles, in feet or meters.\n\n[Try Fence Calculator in your browser →](https://iotools.cloud/tool/fence-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"style":{"enum":["privacy","picket","post-rail","panel"],"description":"Fence style"},"unitSystem":{"enum":["imperial","metric"],"description":"Unit system"},"length":{"type":"number","description":"Total fence length","minimum":0},"height":{"type":"number","description":"Fence height","minimum":0},"postSpacing":{"type":"number","description":"Post spacing","minimum":0},"panelWidth":{"type":"number","description":"Panel width","minimum":0},"railCount":{"type":"number","description":"Rails per section","minimum":1,"maximum":4},"picketWidth":{"type":"number","description":"Picket width (inches)","minimum":0.1},"picketGap":{"type":"number","description":"Gap between pickets (inches)","minimum":0},"numGates":{"type":"number","description":"Number of gates","minimum":0,"maximum":10},"gateWidth":{"type":"number","description":"Gate width (each)","minimum":0}},"required":["length","height"]},"examples":{"privacy_fence_100_ft_1_gate":{"summary":"Privacy fence, 100 ft, 1 gate","value":{"style":"privacy","unitSystem":"imperial","length":"100","height":"6","postSpacing":"8","railCount":"3","picketWidth":"5.5","picketGap":"0","numGates":"1","gateWidth":"4"}},"panel_fence_30_m_no_gates":{"summary":"Panel fence, 30 m, no gates","value":{"style":"panel","unitSystem":"metric","length":"30","height":"1.8","panelWidth":"1.8","numGates":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"privacy_fence_100_ft_1_gate":{"summary":"Privacy fence, 100 ft, 1 gate","value":{"tool":"fence-calculator","tool_version":"1.0.2","outputs":{"summary":"A 100 ft privacy fence, 6 ft tall, needs about 15 posts (13 line + 2 gate), 36 rails, 210 pickets, and 30 bags of concrete (80 lb, 2 per post).","results":[{"metric":"Effective fence length","value":"96 ft"},{"metric":"Number of sections","value":"12"},{"metric":"Line posts","value":"13"},{"metric":"Gate posts","value":"2"},{"metric":"Total posts","value":"15"},{"metric":"Post length (incl. embedment)","value":"8 ft"},{"metric":"Post embedment depth","value":"2 ft"},{"metric":"Rails needed","value":"36"},{"metric":"Pickets needed","value":"210"},{"metric":"Concrete (80 lb bags)","value":"30"},{"metric":"Bags per post","value":"2"}]},"credits_used":5,"credits_remaining":null}},"panel_fence_30_m_no_gates":{"summary":"Panel fence, 30 m, no gates","value":{"tool":"fence-calculator","tool_version":"1.0.2","outputs":{"summary":"A 30 m panel fence, 1.8 m tall, needs about 18 posts (18 line + 0 gate), 17 panels, and 36 bags of concrete (80 lb, 2 per post).","results":[{"metric":"Effective fence length","value":"30 m"},{"metric":"Number of sections","value":"17"},{"metric":"Line posts","value":"18"},{"metric":"Gate posts","value":"0"},{"metric":"Total posts","value":"18"},{"metric":"Post length (incl. embedment)","value":"2.4 m"},{"metric":"Post embedment depth","value":"0.6 m"},{"metric":"Panels needed","value":"17"},{"metric":"Concrete (80 lb bags)","value":"36"},{"metric":"Bags per post","value":"2"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"results":{"type":"array","description":"Materials","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/earthwork-cut-fill-calculator":{"post":{"operationId":"run_earthwork_cut_fill_calculator","summary":"Earthwork Cut/Fill Calculator","tags":["Calculators"],"description":"Estimate cut and fill earthwork volumes from a plan area and average depths, adjusted for soil swell and shrinkage, with a net surplus/deficit balance so you know at a glance whether to haul material off-site or bring in borrow.\n\n[Try Earthwork Cut/Fill Calculator in your browser →](https://iotools.cloud/tool/earthwork-cut-fill-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"planArea":{"type":"number","description":"Plan Area"},"cutDepth":{"type":"number","description":"Average Cut Depth"},"fillDepth":{"type":"number","description":"Average Fill Depth"},"swellPercent":{"type":"number","description":"Swell (%)","minimum":0,"maximum":50},"shrinkagePercent":{"type":"number","description":"Shrinkage (%)","minimum":0,"maximum":50}},"required":["planArea"]},"examples":{"balanced_cut_fill_site_with_typical_swell_shrinkage":{"summary":"Balanced cut/fill site with typical swell/shrinkage","value":{"planArea":"5000","cutDepth":"1.5","fillDepth":"1","swellPercent":"15","shrinkagePercent":"10"}},"fill_only_site_needing_imported_borrow":{"summary":"Fill-only site needing imported borrow","value":{"planArea":"2000","cutDepth":"0","fillDepth":"0.8","swellPercent":"15","shrinkagePercent":"12"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"balanced_cut_fill_site_with_typical_swell_shrinkage":{"summary":"Balanced cut/fill site with typical swell/shrinkage","value":{"tool":"earthwork-cut-fill-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Cut volume (bank)","value":"7500"},{"metric":"Fill volume (compacted)","value":"5000"},{"metric":"Loose cut volume (after swell)","value":"8625"},{"metric":"Borrow allowance (after shrinkage)","value":"5555.5556"},{"metric":"Net material balance","value":"Surplus 3069.4444 (haul off-site)"}]},"credits_used":5,"credits_remaining":null}},"fill_only_site_needing_imported_borrow":{"summary":"Fill-only site needing imported borrow","value":{"tool":"earthwork-cut-fill-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Cut volume (bank)","value":"0"},{"metric":"Fill volume (compacted)","value":"1600"},{"metric":"Loose cut volume (after swell)","value":"0"},{"metric":"Borrow allowance (after shrinkage)","value":"1818.1818"},{"metric":"Net material balance","value":"Deficit 1818.1818 (import borrow)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Volume Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/weir-discharge-calculator":{"post":{"operationId":"run_weir_discharge_calculator","summary":"Weir Discharge Calculator","tags":["Calculators"],"description":"Estimate open-channel flow rate over a rectangular or V-notch sharp-crested weir from the head, discharge coefficient, and weir geometry — with the result reported in m³/s, L/s, m³/h and US gpm at once.\n\n[Try Weir Discharge Calculator in your browser →](https://iotools.cloud/tool/weir-discharge-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"weirType":{"enum":["rectangular","vnotch"],"description":"Weir Type"},"head":{"type":"number","description":"Head Over Crest (H)"},"dischargeCoefficient":{"type":"number","description":"Discharge Coefficient (Cd)","minimum":0.3,"maximum":1},"crestWidth":{"type":"number","description":"Crest Width (L)"},"notchAngle":{"type":"number","description":"V-notch Angle (θ)","minimum":10,"maximum":170}},"required":["head"]},"examples":{"rectangular_weir_1_5_m_crest_0_3_m_head":{"summary":"Rectangular weir, 1.5 m crest, 0.3 m head","value":{"weirType":"rectangular","head":"0.3","dischargeCoefficient":"0.62","crestWidth":"1.5"}},"90_v_notch_weir_0_25_m_head":{"summary":"90° V-notch weir, 0.25 m head","value":{"weirType":"vnotch","head":"0.25","dischargeCoefficient":"0.58","notchAngle":"90"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rectangular_weir_1_5_m_crest_0_3_m_head":{"summary":"Rectangular weir, 1.5 m crest, 0.3 m head","value":{"tool":"weir-discharge-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Weir type","value":"Rectangular (full-width)"},{"metric":"Discharge (m³/s)","value":"0.4512"},{"metric":"Discharge (L/s)","value":"451.179"},{"metric":"Discharge (m³/h)","value":"1624.2445"},{"metric":"Discharge (US gpm)","value":"7151.3334"}]},"credits_used":5,"credits_remaining":null}},"90_v_notch_weir_0_25_m_head":{"summary":"90° V-notch weir, 0.25 m head","value":{"tool":"weir-discharge-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Weir type","value":"V-notch (90°)"},{"metric":"Discharge (m³/s)","value":"0.0428"},{"metric":"Discharge (L/s)","value":"42.8107"},{"metric":"Discharge (m³/h)","value":"154.1184"},{"metric":"Discharge (US gpm)","value":"678.563"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Discharge Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/polynomial-roots-calculator":{"post":{"operationId":"run_polynomial_roots_calculator","summary":"Polynomial Roots Calculator","tags":["Calculators"],"description":"Find every real and complex root of a polynomial of degree 1 to 12. Enter coefficients from the highest-degree term down to the constant, and get exact formulas for degree ≤ 2 or Durand–Kerner iteration for higher degrees.\n\n[Try Polynomial Roots Calculator in your browser →](https://iotools.cloud/tool/polynomial-roots-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coefficients":{"type":"string","description":"Coefficients (highest degree first)"}},"required":["coefficients"]},"examples":{"linear_x_5_0":{"summary":"Linear (x − 5 = 0)","value":{"coefficients":"1, -5"}},"quadratic_with_complex_roots_x_1_0":{"summary":"Quadratic with complex roots (x² + 1 = 0)","value":{"coefficients":"1, 0, 1"}},"cubic_with_three_real_roots_x_1_x_2_x_3":{"summary":"Cubic with three real roots (x − 1)(x − 2)(x − 3)","value":{"coefficients":"1, -6, 11, -6"}},"quartic_mixing_real_and_complex_roots_x_1_0":{"summary":"Quartic mixing real and complex roots (x⁴ − 1 = 0)","value":{"coefficients":"1, 0, 0, 0, -1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"linear_x_5_0":{"summary":"Linear (x − 5 = 0)","value":{"tool":"polynomial-roots-calculator","tool_version":"1.0.2","outputs":{"equation":"x - 5 = 0","roots":[{"root":"5","real-part":"5","imaginary-part":"0"}],"method":"Linear equation — solved directly: x = −b⁄a."},"credits_used":5,"credits_remaining":null}},"quadratic_with_complex_roots_x_1_0":{"summary":"Quadratic with complex roots (x² + 1 = 0)","value":{"tool":"polynomial-roots-calculator","tool_version":"1.0.2","outputs":{"equation":"x^2 + 1 = 0","roots":[{"root":"0 - 1i","real-part":"0","imaginary-part":"-1"},{"root":"0 + 1i","real-part":"0","imaginary-part":"1"}],"method":"Quadratic formula — complex conjugate pair (negative discriminant)."},"credits_used":5,"credits_remaining":null}},"cubic_with_three_real_roots_x_1_x_2_x_3":{"summary":"Cubic with three real roots (x − 1)(x − 2)(x − 3)","value":{"tool":"polynomial-roots-calculator","tool_version":"1.0.2","outputs":{"equation":"x^3 - 6x^2 + 11x - 6 = 0","roots":[{"root":"1","real-part":"1","imaginary-part":"0"},{"root":"2","real-part":"2","imaginary-part":"0"},{"root":"3","real-part":"3","imaginary-part":"0"}],"method":"Durand–Kerner iteration — all 3 roots (real and complex) refined simultaneously until convergence."},"credits_used":5,"credits_remaining":null}},"quartic_mixing_real_and_complex_roots_x_1_0":{"summary":"Quartic mixing real and complex roots (x⁴ − 1 = 0)","value":{"tool":"polynomial-roots-calculator","tool_version":"1.0.2","outputs":{"equation":"x^4 - 1 = 0","roots":[{"root":"-1","real-part":"-1","imaginary-part":"0"},{"root":"0 - 1i","real-part":"0","imaginary-part":"-1"},{"root":"0 + 1i","real-part":"0","imaginary-part":"1"},{"root":"1","real-part":"1","imaginary-part":"0"}],"method":"Durand–Kerner iteration — all 4 roots (real and complex) refined simultaneously until convergence."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"equation":{"type":"string","description":"Parsed equation"},"roots":{"type":"array","description":"Roots","items":{"type":"object","properties":{"root":{"type":"string","description":"Root"},"real-part":{"type":"string","description":"Real part"},"imaginary-part":{"type":"string","description":"Imaginary part"}}},"x-iotools-columns":["root","real-part","imaginary-part"]},"method":{"type":"string","description":"Method used"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/standard-form-to-slope-intercept-converter":{"post":{"operationId":"run_standard_form_to_slope_intercept_converter","summary":"Standard Form to Slope Intercept Converter","tags":["Calculators"],"description":"Convert a line from standard form (Ax + By = C) into slope-intercept form (y = mx + b), with the slope and y-intercept broken out — or a clear note when the line is vertical and has no slope-intercept form.\n\n[Try Standard Form to Slope Intercept Converter in your browser →](https://iotools.cloud/tool/standard-form-to-slope-intercept-converter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"coeffA":{"type":"number","description":"A"},"coeffB":{"type":"number","description":"B"},"coeffC":{"type":"number","description":"C"}},"required":["coeffA","coeffB","coeffC"]},"examples":{"2x_3y_6":{"summary":"2x + 3y = 6","value":{"coeffA":"2","coeffB":"3","coeffC":"6"}},"vertical_line_x_5":{"summary":"Vertical line (x = 5)","value":{"coeffA":"1","coeffB":"0","coeffC":"5"}},"horizontal_line_4y_8":{"summary":"Horizontal line (4y = 8)","value":{"coeffA":"0","coeffB":"4","coeffC":"8"}},"decimal_coefficients_1_5x_2y_4":{"summary":"Decimal coefficients (1.5x − 2y = 4)","value":{"coeffA":"1.5","coeffB":"-2","coeffC":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2x_3y_6":{"summary":"2x + 3y = 6","value":{"tool":"standard-form-to-slope-intercept-converter","tool_version":"1.0.2","outputs":{"standardForm":"2x + 3y = 6","slope":"-0.666667","yIntercept":"2","slopeInterceptForm":"y = -0.666667x + 2"},"credits_used":5,"credits_remaining":null}},"vertical_line_x_5":{"summary":"Vertical line (x = 5)","value":{"tool":"standard-form-to-slope-intercept-converter","tool_version":"1.0.2","outputs":{"standardForm":"x = 5","slope":"Undefined (vertical line)","yIntercept":"N/A (vertical line)","slopeInterceptForm":"No slope-intercept form exists — this is the vertical line x = 5."},"credits_used":5,"credits_remaining":null}},"horizontal_line_4y_8":{"summary":"Horizontal line (4y = 8)","value":{"tool":"standard-form-to-slope-intercept-converter","tool_version":"1.0.2","outputs":{"standardForm":"4y = 8","slope":"0","yIntercept":"2","slopeInterceptForm":"y = 2"},"credits_used":5,"credits_remaining":null}},"decimal_coefficients_1_5x_2y_4":{"summary":"Decimal coefficients (1.5x − 2y = 4)","value":{"tool":"standard-form-to-slope-intercept-converter","tool_version":"1.0.2","outputs":{"standardForm":"1.5x - 2y = 4","slope":"0.75","yIntercept":"-2","slopeInterceptForm":"y = 0.75x - 2"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"standardForm":{"type":"string","description":"Standard form"},"slope":{"type":"string","description":"Slope (m)"},"yIntercept":{"type":"string","description":"Y-Intercept (b)"},"slopeInterceptForm":{"type":"string","description":"Slope-intercept form"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/complex-numbers-calculator":{"post":{"operationId":"run_complex_numbers_calculator","summary":"Complex Numbers Calculator","tags":["Calculators"],"description":"Add, subtract, multiply, or divide two complex numbers (a + bi). Returns the result plus its modulus, conjugate, and polar form, with a step-by-step derivation.\n\n[Try Complex Numbers Calculator in your browser →](https://iotools.cloud/tool/complex-numbers-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operation":{"enum":["add","subtract","multiply","divide"],"description":"Operation"},"real1":{"type":"number","description":"z₁ real part (a)"},"imag1":{"type":"number","description":"z₁ imaginary part (b)"},"real2":{"type":"number","description":"z₂ real part (c)"},"imag2":{"type":"number","description":"z₂ imaginary part (d)"}},"required":["real1","imag1","real2","imag2"]},"examples":{"add_3_4i_1_2i":{"summary":"Add (3 + 4i) + (1 + 2i)","value":{"operation":"add","real1":"3","imag1":"4","real2":"1","imag2":"2"}},"subtract_3_4i_1_2i":{"summary":"Subtract (3 + 4i) − (1 + 2i)","value":{"operation":"subtract","real1":"3","imag1":"4","real2":"1","imag2":"2"}},"multiply_3_4i_1_2i":{"summary":"Multiply (3 + 4i) × (1 + 2i)","value":{"operation":"multiply","real1":"3","imag1":"4","real2":"1","imag2":"2"}},"divide_3_4i_1_2i":{"summary":"Divide (3 + 4i) / (1 + 2i)","value":{"operation":"divide","real1":"3","imag1":"4","real2":"1","imag2":"2"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"add_3_4i_1_2i":{"summary":"Add (3 + 4i) + (1 + 2i)","value":{"tool":"complex-numbers-calculator","tool_version":"1.0.2","outputs":{"result":"4 + 6i","modulus":"7.2111","conjugate":"4 - 6i","polar":"7.2111(cos 56.3099° + i sin 56.3099°)","steps":"Add (z₁ + z₂)\nz₁ = 3 + 4i, z₂ = 1 + 2i\nz₁ + z₂ = (3 + 1) + (4 + 2)i = 4 + 6i"},"credits_used":5,"credits_remaining":null}},"subtract_3_4i_1_2i":{"summary":"Subtract (3 + 4i) − (1 + 2i)","value":{"tool":"complex-numbers-calculator","tool_version":"1.0.2","outputs":{"result":"2 + 2i","modulus":"2.82843","conjugate":"2 - 2i","polar":"2.82843(cos 45° + i sin 45°)","steps":"Subtract (z₁ − z₂)\nz₁ = 3 + 4i, z₂ = 1 + 2i\nz₁ − z₂ = (3 − 1) + (4 − 2)i = 2 + 2i"},"credits_used":5,"credits_remaining":null}},"multiply_3_4i_1_2i":{"summary":"Multiply (3 + 4i) × (1 + 2i)","value":{"tool":"complex-numbers-calculator","tool_version":"1.0.2","outputs":{"result":"-5 + 10i","modulus":"11.1803","conjugate":"-5 - 10i","polar":"11.1803(cos 116.565° + i sin 116.565°)","steps":"Multiply (z₁ × z₂)\nz₁ = 3 + 4i, z₂ = 1 + 2i\nz₁ × z₂ = (3×1 − 4×2) + (3×2 + 4×1)i = -5 + 10i"},"credits_used":5,"credits_remaining":null}},"divide_3_4i_1_2i":{"summary":"Divide (3 + 4i) / (1 + 2i)","value":{"tool":"complex-numbers-calculator","tool_version":"1.0.2","outputs":{"result":"2.2 - 0.4i","modulus":"2.23607","conjugate":"2.2 + 0.4i","polar":"2.23607(cos -10.3048° + i sin -10.3048°)","steps":"Divide (z₁ / z₂)\nz₁ = 3 + 4i, z₂ = 1 + 2i\nz₁ / z₂ = (z₁ × z̄₂) / |z₂|² = 2.2 - 0.4i"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Result"},"modulus":{"type":"string","description":"Modulus |result|"},"conjugate":{"type":"string","description":"Conjugate"},"polar":{"type":"string","description":"Polar form"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/derangement-calculator":{"post":{"operationId":"run_derangement_calculator","summary":"Derangement (Subfactorial) Calculator","tags":["Calculators"],"description":"Calculate !n, the number of derangements of n elements — permutations that leave no item in its original position. Returns the exact count, n!, and the derangement probability, computed with arbitrary-precision arithmetic.\n\n[Try Derangement (Subfactorial) Calculator in your browser →](https://iotools.cloud/tool/derangement-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"number","description":"n (number of elements)","minimum":0,"maximum":1000}},"required":["n"]},"examples":{"5_44":{"summary":"!5 = 44","value":{"n":"5"}},"base_case_0_1":{"summary":"Base case: !0 = 1","value":{"n":"0"}},"base_case_1_0":{"summary":"Base case: !1 = 0","value":{"n":"1"}},"10_1_334_961":{"summary":"!10 = 1,334,961","value":{"n":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"5_44":{"summary":"!5 = 44","value":{"tool":"derangement-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Derangements !n","value":"44"},{"metric":"Total permutations n!","value":"120"},{"metric":"Probability (!n / n!)","value":"0.366666"}],"steps":"!5 = (n − 1) × (!(n − 1) + !(n − 2))\nBuilt up from !0 = 1 and !1 = 0 to !5 = 44\nn! = 120\nDerangement probability = !n / n! = 44 / 120 ≈ 0.366666"},"credits_used":5,"credits_remaining":null}},"base_case_0_1":{"summary":"Base case: !0 = 1","value":{"tool":"derangement-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Derangements !n","value":"1"},{"metric":"Total permutations n!","value":"1"},{"metric":"Probability (!n / n!)","value":"1.000000"}],"steps":"!0 = (n − 1) × (!(n − 1) + !(n − 2))\n!0 = 1 (base case: the empty permutation trivially has no fixed points)\nn! = 1\nDerangement probability = !n / n! = 1 / 1 ≈ 1.000000"},"credits_used":5,"credits_remaining":null}},"base_case_1_0":{"summary":"Base case: !1 = 0","value":{"tool":"derangement-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Derangements !n","value":"0"},{"metric":"Total permutations n!","value":"1"},{"metric":"Probability (!n / n!)","value":"0.000000"}],"steps":"!1 = (n − 1) × (!(n − 1) + !(n − 2))\n!1 = 0 (base case: the single element has nowhere else to go)\nn! = 1\nDerangement probability = !n / n! = 0 / 1 ≈ 0.000000"},"credits_used":5,"credits_remaining":null}},"10_1_334_961":{"summary":"!10 = 1,334,961","value":{"tool":"derangement-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Derangements !n","value":"1,334,961"},{"metric":"Total permutations n!","value":"3,628,800"},{"metric":"Probability (!n / n!)","value":"0.367879"}],"steps":"!10 = (n − 1) × (!(n − 1) + !(n − 2))\nBuilt up from !0 = 1 and !1 = 0 to !10 = 1,334,961\nn! = 3,628,800\nDerangement probability = !n / n! = 1,334,961 / 3,628,800 ≈ 0.367879"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/eulers-method-calculator":{"post":{"operationId":"run_eulers_method_calculator","summary":"Euler's Method Calculator","tags":["Calculators"],"description":"Solve an initial value problem dy/dx = f(x, y), y(x0) = y0 with the explicit (forward) Euler method — get a full step-by-step table of x, y and slope, an optional error column against a known exact solution, and a summary of the final and maximum error.\n\n[Try Euler's Method Calculator in your browser →](https://iotools.cloud/tool/eulers-method-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"functionExpr":{"type":"string","description":"dy/dx = f(x, y)"},"x0":{"type":"number","description":"x0 (initial x)"},"y0":{"type":"number","description":"y0 (initial y)"},"stepSize":{"type":"number","description":"Step size (h)","minimum":0.000001},"numSteps":{"type":"number","description":"Number of steps (n)","minimum":1,"maximum":500},"exactSolution":{"type":"string","description":"Exact solution y(x) (optional)"}},"required":["functionExpr","x0","y0","stepSize","numSteps"]},"examples":{"dy_dx_x_y_y_0_1_h_0_1_5_steps":{"summary":"dy/dx = x + y, y(0) = 1, h = 0.1, 5 steps","value":{"functionExpr":"x + y","x0":"0","y0":"1","stepSize":"0.1","numSteps":"5","exactSolution":""}},"dy_dx_y_y_0_1_h_0_5_4_steps_exact_y_e_x":{"summary":"dy/dx = -y, y(0) = 1, h = 0.5, 4 steps, exact y = e^-x","value":{"functionExpr":"-y","x0":"0","y0":"1","stepSize":"0.5","numSteps":"4","exactSolution":"exp(-x)"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"dy_dx_x_y_y_0_1_h_0_1_5_steps":{"summary":"dy/dx = x + y, y(0) = 1, h = 0.1, 5 steps","value":{"tool":"eulers-method-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Method","value":"Explicit (forward) Euler"},{"metric":"Step size (h)","value":"0.1"},{"metric":"Steps completed","value":"5 of 5"},{"metric":"Final approximation y(0.5)","value":"1.72102"}],"steps":[{"n":"0","x":"0","y-euler":"1","f-x-y":"1","exact-y-x":"-","absolute-error":"-","relative-error":"-"},{"n":"1","x":"0.1","y-euler":"1.1","f-x-y":"1.2","exact-y-x":"-","absolute-error":"-","relative-error":"-"},{"n":"2","x":"0.2","y-euler":"1.22","f-x-y":"1.42","exact-y-x":"-","absolute-error":"-","relative-error":"-"},{"n":"3","x":"0.3","y-euler":"1.362","f-x-y":"1.662","exact-y-x":"-","absolute-error":"-","relative-error":"-"},{"n":"4","x":"0.4","y-euler":"1.5282","f-x-y":"1.9282","exact-y-x":"-","absolute-error":"-","relative-error":"-"},{"n":"5","x":"0.5","y-euler":"1.72102","f-x-y":"2.22102","exact-y-x":"-","absolute-error":"-","relative-error":"-"}]},"credits_used":5,"credits_remaining":null}},"dy_dx_y_y_0_1_h_0_5_4_steps_exact_y_e_x":{"summary":"dy/dx = -y, y(0) = 1, h = 0.5, 4 steps, exact y = e^-x","value":{"tool":"eulers-method-calculator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Method","value":"Explicit (forward) Euler"},{"metric":"Step size (h)","value":"0.5"},{"metric":"Steps completed","value":"4 of 4"},{"metric":"Final approximation y(2)","value":"0.0625"},{"metric":"Exact y(2)","value":"0.135335"},{"metric":"Final absolute error","value":"0.0728353"},{"metric":"Max absolute error over all steps","value":"0.117879"}],"steps":[{"n":"0","x":"0","y-euler":"1","f-x-y":"-1","exact-y-x":"1","absolute-error":"0","relative-error":"0%"},{"n":"1","x":"0.5","y-euler":"0.5","f-x-y":"-0.5","exact-y-x":"0.606531","absolute-error":"0.106531","relative-error":"17.5639%"},{"n":"2","x":"1","y-euler":"0.25","f-x-y":"-0.25","exact-y-x":"0.367879","absolute-error":"0.117879","relative-error":"32.043%"},{"n":"3","x":"1.5","y-euler":"0.125","f-x-y":"-0.125","exact-y-x":"0.22313","absolute-error":"0.0981302","relative-error":"43.9789%"},{"n":"4","x":"2","y-euler":"0.0625","f-x-y":"-0.0625","exact-y-x":"0.135335","absolute-error":"0.0728353","relative-error":"53.8184%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"steps":{"type":"array","items":{"type":"object","properties":{"n":{"type":"string","description":"n"},"x":{"type":"string","description":"x"},"y-euler":{"type":"string","description":"y (Euler)"},"f-x-y":{"type":"string","description":"f(x, y)"},"exact-y-x":{"type":"string","description":"Exact y(x)"},"absolute-error":{"type":"string","description":"Absolute Error"},"relative-error":{"type":"string","description":"Relative Error"}}},"x-iotools-columns":["n","x","y-euler","f-x-y","exact-y-x","absolute-error","relative-error"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/trapezoid-calculator":{"post":{"operationId":"run_trapezoid_calculator","summary":"Trapezoid Calculator","tags":["Calculators"],"description":"Solve a trapezoid's area, height, or either base from the other three values. Reports the median (midsegment) length, and — with leg lengths — the perimeter and isosceles/scalene classification, plus a labeled diagram.\n\n[Try Trapezoid Calculator in your browser →](https://iotools.cloud/tool/trapezoid-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"base1":{"type":"number","description":"Base a (top)","minimum":0},"base2":{"type":"number","description":"Base b (bottom)","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"area":{"type":"number","description":"Area","minimum":0},"leg1":{"type":"number","description":"Leg 1 (optional)","minimum":0},"leg2":{"type":"number","description":"Leg 2 (optional)","minimum":0}},"required":[]},"examples":{"solve_area_bases_height":{"summary":"Solve area (bases + height)","value":{"base1":"6","base2":"10","height":"4"}},"solve_height_area_bases":{"summary":"Solve height (area + bases)","value":{"area":"32","base1":"6","base2":"10"}},"with_legs_perimeter_isosceles_check":{"summary":"With legs (perimeter + isosceles check)","value":{"base1":"6","base2":"10","height":"4","leg1":"4.472136","leg2":"4.472136"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_area_bases_height":{"summary":"Solve area (bases + height)","value":{"tool":"trapezoid-calculator","tool_version":"1.0.2","outputs":{"result":"Bases\n  a (top)    = 6\n  b (bottom) = 10\n\nHeight\n  h = 4\n\nResults\n  Area                = 32\n  Median (midsegment) = 8","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"trapezoid-svg\" viewBox=\"-56.00 -56.00 122.00 116.00\"><polygon points=\"2.00,0.00 8.00,0.00 10.00,4.00 0.00,4.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><line x1=\"2.00\" y1=\"0.00\" x2=\"2.00\" y2=\"4.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"2.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"8.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"10.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><text x=\"5.00\" y=\"-15.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 6</text><text x=\"5.00\" y=\"19.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 10</text><text x=\"-20.80\" y=\"2.00\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 4</text></svg>"},"credits_used":5,"credits_remaining":null}},"solve_height_area_bases":{"summary":"Solve height (area + bases)","value":{"tool":"trapezoid-calculator","tool_version":"1.0.2","outputs":{"result":"Bases\n  a (top)    = 6\n  b (bottom) = 10\n\nHeight\n  h = 4\n\nResults\n  Area                = 32\n  Median (midsegment) = 8","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"trapezoid-svg\" viewBox=\"-56.00 -56.00 122.00 116.00\"><polygon points=\"2.00,0.00 8.00,0.00 10.00,4.00 0.00,4.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><line x1=\"2.00\" y1=\"0.00\" x2=\"2.00\" y2=\"4.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"2.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"8.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"10.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><text x=\"5.00\" y=\"-15.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 6</text><text x=\"5.00\" y=\"19.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 10</text><text x=\"-20.80\" y=\"2.00\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 4</text></svg>"},"credits_used":5,"credits_remaining":null}},"with_legs_perimeter_isosceles_check":{"summary":"With legs (perimeter + isosceles check)","value":{"tool":"trapezoid-calculator","tool_version":"1.0.2","outputs":{"result":"Bases\n  a (top)    = 6\n  b (bottom) = 10\n\nHeight\n  h = 4\n\nResults\n  Area                = 32\n  Median (midsegment) = 8\n  Perimeter           = 24.944272\n  Type                = Isosceles trapezoid (equal legs)","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"trapezoid-svg\" viewBox=\"-56.00 -56.00 122.00 116.00\"><polygon points=\"2.00,0.00 8.00,0.00 10.00,4.00 0.00,4.00\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linejoin=\"round\"/><line x1=\"2.00\" y1=\"0.00\" x2=\"2.00\" y2=\"4.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"2.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"8.00\" cy=\"0.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"0.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><circle cx=\"10.00\" cy=\"4.00\" r=\"3\" fill=\"#464aff\"/><text x=\"5.00\" y=\"-15.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">a = 6</text><text x=\"5.00\" y=\"19.60\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#464aff\" font-weight=\"600\">b = 10</text><text x=\"-20.80\" y=\"2.00\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 4</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Solution"},"svg":{"type":"string","description":"Diagram (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cylinder-calculator":{"post":{"operationId":"run_cylinder_calculator","summary":"Cylinder Calculator","tags":["Calculators"],"description":"Solve a right circular cylinder's radius, height, or volume from the other two values, plus its base area, lateral (side) area, and total surface area — with a labeled diagram.\n\n[Try Cylinder Calculator in your browser →](https://iotools.cloud/tool/cylinder-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"radius":{"type":"number","description":"Radius","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"volume":{"type":"number","description":"Volume","minimum":0}},"required":[]},"examples":{"solve_volume_radius_height":{"summary":"Solve volume (radius + height)","value":{"radius":"3","height":"5"}},"solve_height_radius_volume":{"summary":"Solve height (radius + volume)","value":{"radius":"3","volume":"141.37167"}},"solve_radius_height_volume":{"summary":"Solve radius (height + volume)","value":{"height":"5","volume":"141.37167"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"solve_volume_radius_height":{"summary":"Solve volume (radius + height)","value":{"tool":"cylinder-calculator","tool_version":"1.0.2","outputs":{"result":"Dimensions\n  Radius = 3\n  Height = 5\n\nResults\n  Volume              = 141.37167\n  Base area           = 28.274334\n  Lateral (side) area = 94.24778\n  Total surface area  = 150.79645","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"cylinder-svg\" viewBox=\"-59.00 -57.05 118.00 119.10\"><rect x=\"-3.00\" y=\"0\" width=\"6.00\" height=\"5.00\" fill=\"#f0f4ff\" stroke=\"none\"/><ellipse cx=\"0\" cy=\"5.00\" rx=\"3.00\" ry=\"1.05\" fill=\"#e4e9ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"-3.00\" y1=\"0\" x2=\"-3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"3.00\" y1=\"0\" x2=\"3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><ellipse cx=\"0\" cy=\"0\" rx=\"3.00\" ry=\"1.05\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"0\" y1=\"0\" x2=\"3.00\" y2=\"0\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><line x1=\"-15.00\" y1=\"0\" x2=\"-15.00\" y2=\"5.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"0\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><circle cx=\"3.00\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><text x=\"1.50\" y=\"-10.40\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">r = 3</text><text x=\"-29.00\" y=\"2.50\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 5</text></svg>"},"credits_used":5,"credits_remaining":null}},"solve_height_radius_volume":{"summary":"Solve height (radius + volume)","value":{"tool":"cylinder-calculator","tool_version":"1.0.2","outputs":{"result":"Dimensions\n  Radius = 3\n  Height = 5\n\nResults\n  Volume              = 141.37167\n  Base area           = 28.274334\n  Lateral (side) area = 94.24778\n  Total surface area  = 150.79645","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"cylinder-svg\" viewBox=\"-59.00 -57.05 118.00 119.10\"><rect x=\"-3.00\" y=\"0\" width=\"6.00\" height=\"5.00\" fill=\"#f0f4ff\" stroke=\"none\"/><ellipse cx=\"0\" cy=\"5.00\" rx=\"3.00\" ry=\"1.05\" fill=\"#e4e9ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"-3.00\" y1=\"0\" x2=\"-3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"3.00\" y1=\"0\" x2=\"3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><ellipse cx=\"0\" cy=\"0\" rx=\"3.00\" ry=\"1.05\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"0\" y1=\"0\" x2=\"3.00\" y2=\"0\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><line x1=\"-15.00\" y1=\"0\" x2=\"-15.00\" y2=\"5.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"0\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><circle cx=\"3.00\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><text x=\"1.50\" y=\"-10.40\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">r = 3</text><text x=\"-29.00\" y=\"2.50\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 5</text></svg>"},"credits_used":5,"credits_remaining":null}},"solve_radius_height_volume":{"summary":"Solve radius (height + volume)","value":{"tool":"cylinder-calculator","tool_version":"1.0.2","outputs":{"result":"Dimensions\n  Radius = 3\n  Height = 5\n\nResults\n  Volume              = 141.37167\n  Base area           = 28.274334\n  Lateral (side) area = 94.24778\n  Total surface area  = 150.79645","svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"cylinder-svg\" viewBox=\"-59.00 -57.05 118.00 119.10\"><rect x=\"-3.00\" y=\"0\" width=\"6.00\" height=\"5.00\" fill=\"#f0f4ff\" stroke=\"none\"/><ellipse cx=\"0\" cy=\"5.00\" rx=\"3.00\" ry=\"1.05\" fill=\"#e4e9ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"-3.00\" y1=\"0\" x2=\"-3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"3.00\" y1=\"0\" x2=\"3.00\" y2=\"5.00\" stroke=\"#464aff\" stroke-width=\"2\"/><ellipse cx=\"0\" cy=\"0\" rx=\"3.00\" ry=\"1.05\" fill=\"#f0f4ff\" stroke=\"#464aff\" stroke-width=\"2\"/><line x1=\"0\" y1=\"0\" x2=\"3.00\" y2=\"0\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><line x1=\"-15.00\" y1=\"0\" x2=\"-15.00\" y2=\"5.00\" stroke=\"#ff6b6b\" stroke-width=\"1.5\" stroke-dasharray=\"4 3\"/><circle cx=\"0\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><circle cx=\"3.00\" cy=\"0\" r=\"3\" fill=\"#464aff\"/><text x=\"1.50\" y=\"-10.40\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">r = 3</text><text x=\"-29.00\" y=\"2.50\" font-size=\"10.0\" text-anchor=\"middle\" dominant-baseline=\"middle\" fill=\"#ff6b6b\" font-weight=\"600\">h = 5</text></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Solution"},"svg":{"type":"string","description":"Diagram (SVG source)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/slope-calculator":{"post":{"operationId":"run_slope_calculator","summary":"Slope Calculator","tags":["Calculators"],"description":"Find the slope between two points (x₁, y₁) and (x₂, y₂), the line's slope-intercept equation, its angle of inclination, and the distance between the points — with vertical and horizontal lines called out explicitly.\n\n[Try Slope Calculator in your browser →](https://iotools.cloud/tool/slope-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x1":{"type":"number","description":"x₁"},"y1":{"type":"number","description":"y₁"},"x2":{"type":"number","description":"x₂"},"y2":{"type":"number","description":"y₂"}},"required":["x1","y1","x2","y2"]},"examples":{"rising_line_through_2_3_and_6_11":{"summary":"Rising line through (2, 3) and (6, 11)","value":{"x1":"2","y1":"3","x2":"6","y2":"11"}},"vertical_line_through_3_1_and_3_5":{"summary":"Vertical line through (3, 1) and (3, 5)","value":{"x1":"3","y1":"1","x2":"3","y2":"5"}},"horizontal_line_through_2_4_and_5_4":{"summary":"Horizontal line through (-2, 4) and (5, 4)","value":{"x1":"-2","y1":"4","x2":"5","y2":"4"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rising_line_through_2_3_and_6_11":{"summary":"Rising line through (2, 3) and (6, 11)","value":{"tool":"slope-calculator","tool_version":"1.0.2","outputs":{"slope":"2","equation":"y = 2x - 1","angle":"63.4349°","distance":"8.94427","steps":"m = (y₂ − y₁) / (x₂ − x₁) = (11 − 3) / (6 − 2) = 2\nb = y₁ − m·x₁ = 3 − 2 × 2 = -1 → y = 2x - 1\nAngle of inclination = arctan(m) = arctan(2) = 63.4349°\nDistance = √[(x₂ − x₁)² + (y₂ − y₁)²] = √[(6 − 2)² + (11 − 3)²] = 8.94427"},"credits_used":5,"credits_remaining":null}},"vertical_line_through_3_1_and_3_5":{"summary":"Vertical line through (3, 1) and (3, 5)","value":{"tool":"slope-calculator","tool_version":"1.0.2","outputs":{"slope":"Undefined (vertical line)","equation":"x = 3","angle":"90°","distance":"4","steps":"x₁ = x₂ = 3 — the line is vertical, so the slope (rise over a zero run) is undefined.\nEquation: a vertical line has no y = mx + b form — it is simply x = 3.\nAngle of inclination: a vertical line is 90° from the x-axis.\nDistance = √[(x₂ − x₁)² + (y₂ − y₁)²] = √[(3 − 3)² + (5 − 1)²] = 4"},"credits_used":5,"credits_remaining":null}},"horizontal_line_through_2_4_and_5_4":{"summary":"Horizontal line through (-2, 4) and (5, 4)","value":{"tool":"slope-calculator","tool_version":"1.0.2","outputs":{"slope":"0 (horizontal line)","equation":"y = 4","angle":"0°","distance":"7","steps":"m = (y₂ − y₁) / (x₂ − x₁) = (4 − 4) / (5 − -2) = 0\ny₁ = y₂ = 4 — the line is horizontal, so the slope is 0 and the equation is y = 4.\nAngle of inclination = arctan(m) = arctan(0) = 0°\nDistance = √[(x₂ − x₁)² + (y₂ − y₁)²] = √[(5 − -2)² + (4 − 4)²] = 7"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"slope":{"type":"string","description":"Slope (m)"},"equation":{"type":"string","description":"Line Equation"},"angle":{"type":"string","description":"Angle of Inclination"},"distance":{"type":"string","description":"Distance Between Points"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/distance-between-two-points-calculator":{"post":{"operationId":"run_distance_between_two_points_calculator","summary":"Distance Between Two Points Calculator","tags":["Calculators"],"description":"Find the Euclidean distance and midpoint between two points (x₁, y₁) and (x₂, y₂), with a step-by-step worked formula. Optional z-coordinates extend it to 3D.\n\n[Try Distance Between Two Points Calculator in your browser →](https://iotools.cloud/tool/distance-between-two-points-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"x1":{"type":"number","description":"x₁"},"y1":{"type":"number","description":"y₁"},"z1":{"type":"number","description":"z₁"},"x2":{"type":"number","description":"x₂"},"y2":{"type":"number","description":"y₂"},"z2":{"type":"number","description":"z₂"}},"required":["x1","y1","x2","y2"]},"examples":{"2d_1_2_and_4_6":{"summary":"2D: (1, 2) and (4, 6)","value":{"x1":"1","y1":"2","x2":"4","y2":"6"}},"3d_1_2_3_and_4_6_15":{"summary":"3D: (1, 2, 3) and (4, 6, 15)","value":{"x1":"1","y1":"2","z1":"3","x2":"4","y2":"6","z2":"15"}},"identical_points_3_5_and_3_5":{"summary":"Identical points: (-3, 5) and (-3, 5)","value":{"x1":"-3","y1":"5","x2":"-3","y2":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2d_1_2_and_4_6":{"summary":"2D: (1, 2) and (4, 6)","value":{"tool":"distance-between-two-points-calculator","tool_version":"1.0.2","outputs":{"distance":"5","midpoint":"(2.5, 4)","steps":"Distance = √[(x₂ − x₁)² + (y₂ − y₁)²] = √[(4 − 1)² + (6 − 2)²] = √[(3)² + (4)²] = 5\nMidpoint = ((x₁ + x₂)/2, (y₁ + y₂)/2) = ((1 + 4)/2, (2 + 6)/2) = (2.5, 4)"},"credits_used":5,"credits_remaining":null}},"3d_1_2_3_and_4_6_15":{"summary":"3D: (1, 2, 3) and (4, 6, 15)","value":{"tool":"distance-between-two-points-calculator","tool_version":"1.0.2","outputs":{"distance":"13","midpoint":"(2.5, 4, 9)","steps":"Distance = √[(x₂ − x₁)² + (y₂ − y₁)² + (z₂ − z₁)²] = √[(4 − 1)² + (6 − 2)² + (15 − 3)²] = √[(3)² + (4)² + (12)²] = 13\nMidpoint = ((x₁ + x₂)/2, (y₁ + y₂)/2, (z₁ + z₂)/2) = ((1 + 4)/2, (2 + 6)/2, (3 + 15)/2) = (2.5, 4, 9)"},"credits_used":5,"credits_remaining":null}},"identical_points_3_5_and_3_5":{"summary":"Identical points: (-3, 5) and (-3, 5)","value":{"tool":"distance-between-two-points-calculator","tool_version":"1.0.2","outputs":{"distance":"0","midpoint":"(-3, 5)","steps":"Distance = √[(x₂ − x₁)² + (y₂ − y₁)²] = √[(-3 − -3)² + (5 − 5)²] = √[(0)² + (0)²] = 0\nMidpoint = ((x₁ + x₂)/2, (y₁ + y₂)/2) = ((-3 + -3)/2, (5 + 5)/2) = (-3, 5)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"distance":{"type":"string","description":"Distance"},"midpoint":{"type":"string","description":"Midpoint"},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/paver-calculator":{"post":{"operationId":"run_paver_calculator","summary":"Paver Calculator","tags":["Calculators"],"description":"Estimate how many pavers you need for a patio, walkway or driveway — accounting for the joint gap between pavers, a wastage percentage for cuts and breakage, and an optional price per paver, in metric or imperial units.\n\n[Try Paver Calculator in your browser →](https://iotools.cloud/tool/paver-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"projectLength":{"type":"number","description":"Project length","minimum":0},"projectWidth":{"type":"number","description":"Project width","minimum":0},"paverLength":{"type":"number","description":"Paver length","minimum":0},"paverWidth":{"type":"number","description":"Paver width","minimum":0},"jointGap":{"type":"number","description":"Joint gap","minimum":0},"wastagePct":{"type":"number","description":"Wastage %","minimum":0,"maximum":30},"pricePerPaver":{"type":"number","description":"Price per paver (optional)","minimum":0}},"required":["projectLength","projectWidth","paverLength","paverWidth"]},"examples":{"metric_6m_x_4m_patio_400x200mm_paver_5mm_joint_2_50_paver":{"summary":"Metric — 6m x 4m patio, 400x200mm paver, 5mm joint, $2.50/paver","value":{"unitSystem":"metric","projectLength":"6","projectWidth":"4","paverLength":"400","paverWidth":"200","jointGap":"5","wastagePct":"10","pricePerPaver":"2.50"}},"imperial_20ft_x_12ft_driveway_8x4in_paver_1_4in_joint_no_price":{"summary":"Imperial — 20ft x 12ft driveway, 8x4in paver, 1/4in joint, no price","value":{"unitSystem":"imperial","projectLength":"20","projectWidth":"12","paverLength":"8","paverWidth":"4","jointGap":"0.25","wastagePct":"10","pricePerPaver":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_6m_x_4m_patio_400x200mm_paver_5mm_joint_2_50_paver":{"summary":"Metric — 6m x 4m patio, 400x200mm paver, 5mm joint, $2.50/paver","value":{"tool":"paver-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Project area","value":"24.00 m²"},{"metric":"Effective paver footprint (with joint gap)","value":"0.08 m²"},{"metric":"Pavers needed (no wastage)","value":"290 pavers"},{"metric":"Pavers needed (with wastage)","value":"318 pavers (+10%)"},{"metric":"Extra pavers for waste","value":"28 pavers"},{"metric":"Estimated coverage from purchase","value":"26.40 m²"},{"metric":"Estimated cost","value":"$795.00"}],"summary":"24.00 m² project · 318 pavers +10%"},"credits_used":5,"credits_remaining":null}},"imperial_20ft_x_12ft_driveway_8x4in_paver_1_4in_joint_no_price":{"summary":"Imperial — 20ft x 12ft driveway, 8x4in paver, 1/4in joint, no price","value":{"tool":"paver-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Project area","value":"240.00 sq ft"},{"metric":"Effective paver footprint (with joint gap)","value":"0.24 sq ft"},{"metric":"Pavers needed (no wastage)","value":"986 pavers"},{"metric":"Pavers needed (with wastage)","value":"1085 pavers (+10%)"},{"metric":"Extra pavers for waste","value":"99 pavers"},{"metric":"Estimated coverage from purchase","value":"264.19 sq ft"},{"metric":"Estimated cost","value":"-"}],"summary":"240.00 sq ft project · 1085 pavers +10%"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/exponents-calculator":{"post":{"operationId":"run_exponents_calculator","summary":"Exponents Calculator","tags":["Calculators"],"description":"Raise a base to an integer power with exact big-integer arithmetic — accurate for exponents up to ±500 with no floating-point rounding or overflow — showing the result in plain and scientific notation at your chosen precision.\n\n[Try Exponents Calculator in your browser →](https://iotools.cloud/tool/exponents-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base":{"type":"number","description":"Base"},"exponent":{"type":"number","description":"Exponent","minimum":-500,"maximum":500},"precision":{"enum":["6","10","15","20","50"],"description":"Precision"}},"required":["base"]},"examples":{"2_10_exact_integer_power":{"summary":"2^10 (exact integer power)","value":{"base":"2","exponent":"10","precision":"10"}},"1_5_500_large_exponent_no_overflow":{"summary":"1.5^500 (large exponent, no overflow)","value":{"base":"1.5","exponent":"500","precision":"10"}},"2_3_negative_exponent_reciprocal":{"summary":"2^-3 (negative exponent -> reciprocal)","value":{"base":"2","exponent":"-3","precision":"10"}},"1_5_500_non_terminating_reciprocal_rounded_to_15_digits":{"summary":"1.5^-500 (non-terminating reciprocal, rounded to 15 digits)","value":{"base":"1.5","exponent":"-500","precision":"15"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"2_10_exact_integer_power":{"summary":"2^10 (exact integer power)","value":{"tool":"exponents-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Expression","value":"2^10 = 1024.000000"},{"metric":"Result","value":"1024.000000"},{"metric":"Scientific Notation","value":"1.024000000e+3"},{"metric":"Precision","value":"10 significant digits"}]},"credits_used":5,"credits_remaining":null}},"1_5_500_large_exponent_no_overflow":{"summary":"1.5^500 (large exponent, no overflow)","value":{"tool":"exponents-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Expression","value":"1.5^500 = 11107837760000000000000000000000000000000000000000000000000000000000000000000000000000000"},{"metric":"Result","value":"11107837760000000000000000000000000000000000000000000000000000000000000000000000000000000"},{"metric":"Scientific Notation","value":"1.110783776e+88"},{"metric":"Precision","value":"10 significant digits"}]},"credits_used":5,"credits_remaining":null}},"2_3_negative_exponent_reciprocal":{"summary":"2^-3 (negative exponent -> reciprocal)","value":{"tool":"exponents-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Expression","value":"2^-3 = 0.1250000000"},{"metric":"Result","value":"0.1250000000"},{"metric":"Scientific Notation","value":"1.250000000e-1"},{"metric":"Precision","value":"10 significant digits"}]},"credits_used":5,"credits_remaining":null}},"1_5_500_non_terminating_reciprocal_rounded_to_15_digits":{"summary":"1.5^-500 (non-terminating reciprocal, rounded to 15 digits)","value":{"tool":"exponents-calculator","tool_version":"1.0.2","outputs":{"result":[{"metric":"Expression","value":"1.5^-500 = 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900265219617395"},{"metric":"Result","value":"0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900265219617395"},{"metric":"Scientific Notation","value":"9.00265219617395e-89"},{"metric":"Precision","value":"15 significant digits"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hazen-williams-calculator":{"post":{"operationId":"run_hazen_williams_calculator","summary":"Hazen-Williams Calculator","tags":["Calculators"],"description":"Calculate head loss, hydraulic slope and velocity for water flowing in a closed pipe with the Hazen-Williams equation — enter pipe diameter, length, flow rate and the C roughness coefficient.\n\n[Try Hazen-Williams Calculator in your browser →](https://iotools.cloud/tool/hazen-williams-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["si","us"],"description":"Unit system"},"pipeDiameter":{"type":"number","description":"Pipe internal diameter","minimum":0},"pipeLength":{"type":"number","description":"Pipe length","minimum":0},"flowRate":{"type":"number","description":"Flow rate","minimum":0},"hazenC":{"type":"number","description":"Hazen-Williams C coefficient","minimum":0}},"required":["pipeDiameter","pipeLength","flowRate","hazenC"]},"examples":{"si_150mm_cast_iron_pipe_500m_20_l_s_c_130":{"summary":"SI — 150mm cast-iron pipe, 500m, 20 L/s, C=130","value":{"unitSystem":"si","pipeDiameter":"150","pipeLength":"500","flowRate":"20","hazenC":"130"}},"si_100mm_new_pvc_pipe_200m_8_l_s_c_150":{"summary":"SI — 100mm new PVC pipe, 200m, 8 L/s, C=150","value":{"unitSystem":"si","pipeDiameter":"100","pipeLength":"200","flowRate":"8","hazenC":"150"}},"us_customary_6in_steel_pipe_1000ft_300_gpm_c_120":{"summary":"US customary — 6in steel pipe, 1000ft, 300 gpm, C=120","value":{"unitSystem":"us","pipeDiameter":"6","pipeLength":"1000","flowRate":"300","hazenC":"120"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"si_150mm_cast_iron_pipe_500m_20_l_s_c_130":{"summary":"SI — 150mm cast-iron pipe, 500m, 20 L/s, C=130","value":{"tool":"hazen-williams-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Velocity","value":"1.132 m/s"},{"metric":"Head loss","value":"4.769 m"},{"metric":"Hydraulic slope","value":"0.9537%"}],"summary":"V = 1.13 m/s · hf = 4.77 m over 500 m"},"credits_used":5,"credits_remaining":null}},"si_100mm_new_pvc_pipe_200m_8_l_s_c_150":{"summary":"SI — 100mm new PVC pipe, 200m, 8 L/s, C=150","value":{"tool":"hazen-williams-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Velocity","value":"1.019 m/s"},{"metric":"Head loss","value":"1.932 m"},{"metric":"Hydraulic slope","value":"0.9660%"}],"summary":"V = 1.02 m/s · hf = 1.93 m over 200 m"},"credits_used":5,"credits_remaining":null}},"us_customary_6in_steel_pipe_1000ft_300_gpm_c_120":{"summary":"US customary — 6in steel pipe, 1000ft, 300 gpm, C=120","value":{"tool":"hazen-williams-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Velocity","value":"3.404 ft/s"},{"metric":"Head loss","value":"9.248 ft"},{"metric":"Hydraulic slope","value":"0.9248%"}],"summary":"V = 3.40 ft/s · hf = 9.25 ft over 1000 ft"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/chainage-stationing-calculator":{"post":{"operationId":"run_chainage_stationing_calculator","summary":"Chainage / Stationing Calculator","tags":["Calculators"],"description":"Calculate cumulative chainage and surveying station notation along a road, rail or pipeline alignment — enter a starting chainage plus each point's distance from the one before it, in metric (km+m) or US customary (station+ft) stationing.\n\n[Try Chainage / Stationing Calculator in your browser →](https://iotools.cloud/tool/chainage-stationing-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["si","us"],"description":"Unit system"},"startingChainage":{"type":"number","description":"Starting chainage","minimum":0},"points":{"type":"string","description":"Points along the alignment (distance from previous point)"}},"required":["points"]},"examples":{"metric_road_alignment_with_a_curve_starting_at_0":{"summary":"Metric — road alignment with a curve, starting at 0","value":{"unitSystem":"si","startingChainage":"0","points":"Start, 0\nPC of curve 1, 150\nPT of curve 1, 350.5\nBridge abutment, 500\nEnd of survey, 300"}},"us_customary_starting_at_station_5_00":{"summary":"US customary — starting at station 5+00","value":{"unitSystem":"us","startingChainage":"500","points":"Start, 0\nPC of curve 1, 245.30\nPT of curve 1, 300\nEnd of survey, 700"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_road_alignment_with_a_curve_starting_at_0":{"summary":"Metric — road alignment with a curve, starting at 0","value":{"tool":"chainage-stationing-calculator","tool_version":"1.0.2","outputs":{"results":[{"point":"Start","distance":"0.000 m","chainage":"0.000 m","station":"0+000.000"},{"point":"PC of curve 1","distance":"150.000 m","chainage":"150.000 m","station":"0+150.000"},{"point":"PT of curve 1","distance":"350.500 m","chainage":"500.500 m","station":"0+500.500"},{"point":"Bridge abutment","distance":"500.000 m","chainage":"1000.500 m","station":"1+000.500"},{"point":"End of survey","distance":"300.000 m","chainage":"1300.500 m","station":"1+300.500"}],"summary":"Total length 1300.500 m · Final chainage 1300.500 m (1+300.500)"},"credits_used":5,"credits_remaining":null}},"us_customary_starting_at_station_5_00":{"summary":"US customary — starting at station 5+00","value":{"tool":"chainage-stationing-calculator","tool_version":"1.0.2","outputs":{"results":[{"point":"Start","distance":"0.00 ft","chainage":"500.00 ft","station":"5+00.00"},{"point":"PC of curve 1","distance":"245.30 ft","chainage":"745.30 ft","station":"7+45.30"},{"point":"PT of curve 1","distance":"300.00 ft","chainage":"1045.30 ft","station":"10+45.30"},{"point":"End of survey","distance":"700.00 ft","chainage":"1745.30 ft","station":"17+45.30"}],"summary":"Total length 1245.30 ft · Final chainage 1745.30 ft (17+45.30)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"point":{"type":"string","description":"Point"},"distance":{"type":"string","description":"Distance"},"chainage":{"type":"string","description":"Chainage"},"station":{"type":"string","description":"Station"}}},"x-iotools-columns":["point","distance","chainage","station"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pipe-pressure-drop-calculator":{"post":{"operationId":"run_pipe_pressure_drop_calculator","summary":"Pipe Pressure Drop Calculator","tags":["Calculators"],"description":"Calculate the friction-loss pressure drop and head loss along a pipe run from its flow rate (or velocity), diameter, length, material roughness and fluid, using the Darcy–Weisbach equation with a Colebrook-equivalent (Swamee–Jain) friction factor. Works in metric or imperial units and shows the Reynolds number, flow regime and friction factor behind the result.\n\n[Try Pipe Pressure Drop Calculator in your browser →](https://iotools.cloud/tool/pipe-pressure-drop-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputMode":{"enum":["flow","velocity"],"description":"Known Quantity"},"flowRate":{"type":"number","description":"Volumetric Flow Rate","minimum":0},"flowUnit":{"enum":["lpm","lps","m3h","m3s","gpm","cfm"],"description":"Flow Unit"},"velocity":{"type":"number","description":"Mean Velocity","minimum":0},"velocityUnit":{"enum":["mps","fps"],"description":"Velocity Unit"},"pipeDiameter":{"type":"number","description":"Inside Diameter","minimum":0},"diameterUnit":{"enum":["mm","in","m","ft"],"description":"Diameter Unit"},"pipeLength":{"type":"number","description":"Pipe Run Length","minimum":0},"lengthUnit":{"enum":["m","ft","km","mi"],"description":"Length Unit"},"material":{"enum":["pvc","copper","steel","galvanized","castiron","concrete","riveted","custom"],"description":"Pipe Material"},"roughness":{"type":"number","description":"Absolute Roughness (mm)","minimum":0},"fluid":{"enum":["water20","water60","seawater20","air20","ethanol20","sae30","glycerin20","custom"],"description":"Fluid"},"density":{"type":"number","description":"Density (kg/m³)","minimum":0},"viscosity":{"type":"number","description":"Viscosity","minimum":0},"viscosityUnit":{"enum":["cp","pas","cst"],"description":"Viscosity Unit"}},"required":["pipeDiameter","pipeLength"]},"examples":{"100_l_min_of_water_in_a_50_mm_steel_pipe_100_m":{"summary":"100 L/min of water in a 50 mm steel pipe, 100 m","value":{"inputMode":"flow","flowRate":"100","flowUnit":"lpm","pipeDiameter":"50","diameterUnit":"mm","pipeLength":"100","lengthUnit":"m","material":"steel","fluid":"water20"}},"100_l_min_of_sae_30_oil_in_a_25_mm_pvc_pipe_50_m_laminar":{"summary":"100 L/min of SAE 30 oil in a 25 mm PVC pipe, 50 m (laminar)","value":{"inputMode":"flow","flowRate":"100","flowUnit":"lpm","pipeDiameter":"25","diameterUnit":"mm","pipeLength":"50","lengthUnit":"m","material":"pvc","fluid":"sae30"}},"2_m_s_of_water_in_a_4_in_steel_pipe_200_m":{"summary":"2 m/s of water in a 4 in steel pipe, 200 m","value":{"inputMode":"velocity","velocity":"2","velocityUnit":"mps","pipeDiameter":"4","diameterUnit":"in","pipeLength":"200","lengthUnit":"m","material":"steel","fluid":"water20"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100_l_min_of_water_in_a_50_mm_steel_pipe_100_m":{"summary":"100 L/min of water in a 50 mm steel pipe, 100 m","value":{"tool":"pipe-pressure-drop-calculator","tool_version":"1.0.2","outputs":{"status":"100 L/min through a 50 mm commercial steel (new) pipe, 100 m long, drops 17,605 Pa (17.61 kPa, 0.1761 bar, 2.553 psi) — head loss 1.798 m (5.901 ft). Re = 42,280 (turbulent flow), f = 0.02448.","result":[{"property":"Velocity","value":"0.8488 m/s"},{"property":"Reynolds number","value":"42,280"},{"property":"Flow regime","value":"Turbulent"},{"property":"Relative roughness (ε/D)","value":"0.0009"},{"property":"Friction factor (f)","value":"0.02448"},{"property":"Pressure drop","value":"17,605 Pa (17.61 kPa, 0.1761 bar, 2.553 psi)"},{"property":"Head loss","value":"1.798 m (5.901 ft)"},{"property":"Formula","value":"ΔP = f(L/D)(ρV²/2) = 0.02448 × (100/0.05) × (998.2 × 0.8488² / 2)"}],"materialTable":[{"material":"PVC / plastic (smooth)","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":""},{"material":"Copper / brass","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":""},{"material":"Commercial steel (new)","roughness-mm":"0.045","roughness-in":"0.001772","this-pipe":"◄ Selected"},{"material":"Galvanized steel","roughness-mm":"0.15","roughness-in":"0.005906","this-pipe":""},{"material":"Cast iron","roughness-mm":"0.26","roughness-in":"0.010236","this-pipe":""},{"material":"Concrete","roughness-mm":"1","roughness-in":"0.03937","this-pipe":""},{"material":"Riveted steel","roughness-mm":"3","roughness-in":"0.11811","this-pipe":""}]},"credits_used":5,"credits_remaining":null}},"100_l_min_of_sae_30_oil_in_a_25_mm_pvc_pipe_50_m_laminar":{"summary":"100 L/min of SAE 30 oil in a 25 mm PVC pipe, 50 m (laminar)","value":{"tool":"pipe-pressure-drop-calculator","tool_version":"1.0.2","outputs":{"status":"100 L/min through a 25 mm pvc / plastic (smooth) pipe, 50 m long, drops 684,928 Pa (684.9 kPa, 6.849 bar, 99.34 psi) — head loss 79.82 m (261.9 ft). Re = 943 (laminar flow), f = 0.0679.","result":[{"property":"Velocity","value":"3.395 m/s"},{"property":"Reynolds number","value":"943"},{"property":"Flow regime","value":"Laminar"},{"property":"Relative roughness (ε/D)","value":"6.000e-5"},{"property":"Friction factor (f)","value":"0.0679"},{"property":"Pressure drop","value":"684,928 Pa (684.9 kPa, 6.849 bar, 99.34 psi)"},{"property":"Head loss","value":"79.82 m (261.9 ft)"},{"property":"Formula","value":"f = 64/Re = 64/942.5; ΔP = f(L/D)(ρV²/2)"}],"materialTable":[{"material":"PVC / plastic (smooth)","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":"◄ Selected"},{"material":"Copper / brass","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":""},{"material":"Commercial steel (new)","roughness-mm":"0.045","roughness-in":"0.001772","this-pipe":""},{"material":"Galvanized steel","roughness-mm":"0.15","roughness-in":"0.005906","this-pipe":""},{"material":"Cast iron","roughness-mm":"0.26","roughness-in":"0.010236","this-pipe":""},{"material":"Concrete","roughness-mm":"1","roughness-in":"0.03937","this-pipe":""},{"material":"Riveted steel","roughness-mm":"3","roughness-in":"0.11811","this-pipe":""}]},"credits_used":5,"credits_remaining":null}},"2_m_s_of_water_in_a_4_in_steel_pipe_200_m":{"summary":"2 m/s of water in a 4 in steel pipe, 200 m","value":{"tool":"pipe-pressure-drop-calculator","tool_version":"1.0.2","outputs":{"status":"2 m/s through a 4 in commercial steel (new) pipe, 200 m long, drops 73,116 Pa (73.12 kPa, 0.7312 bar, 10.6 psi) — head loss 7.469 m (24.51 ft). Re = 202,429 (turbulent flow), f = 0.0186.","result":[{"property":"Velocity","value":"2 m/s"},{"property":"Reynolds number","value":"202,429"},{"property":"Flow regime","value":"Turbulent"},{"property":"Relative roughness (ε/D)","value":"0.0004429"},{"property":"Friction factor (f)","value":"0.0186"},{"property":"Pressure drop","value":"73,116 Pa (73.12 kPa, 0.7312 bar, 10.6 psi)"},{"property":"Head loss","value":"7.469 m (24.51 ft)"},{"property":"Formula","value":"ΔP = f(L/D)(ρV²/2) = 0.0186 × (200/0.1016) × (998.2 × 2² / 2)"}],"materialTable":[{"material":"PVC / plastic (smooth)","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":""},{"material":"Copper / brass","roughness-mm":"0.0015","roughness-in":"0.000059","this-pipe":""},{"material":"Commercial steel (new)","roughness-mm":"0.045","roughness-in":"0.001772","this-pipe":"◄ Selected"},{"material":"Galvanized steel","roughness-mm":"0.15","roughness-in":"0.005906","this-pipe":""},{"material":"Cast iron","roughness-mm":"0.26","roughness-in":"0.010236","this-pipe":""},{"material":"Concrete","roughness-mm":"1","roughness-in":"0.03937","this-pipe":""},{"material":"Riveted steel","roughness-mm":"3","roughness-in":"0.11811","this-pipe":""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"result":{"type":"array","description":"Breakdown","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"materialTable":{"type":"array","description":"Pipe Roughness Reference","items":{"type":"object","properties":{"material":{"type":"string","description":"Material"},"roughness-mm":{"type":"string","description":"Roughness (mm)"},"roughness-in":{"type":"string","description":"Roughness (in)"},"this-pipe":{"type":"string","description":"This Pipe"}}},"x-iotools-columns":["material","roughness-mm","roughness-in","this-pipe"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/boq-estimator":{"post":{"operationId":"run_boq_estimator","summary":"BOQ Estimator","tags":["Calculators"],"description":"Estimate a construction bill of quantities from a list of line items — description, quantity, unit and unit rate — with contingency, overhead/profit and tax markups applied on top of the material and labour subtotal. Paste items straight from a spreadsheet, one per line.\n\n[Try BOQ Estimator in your browser →](https://iotools.cloud/tool/boq-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"string","description":"Bill of Quantities Items"},"currencySymbol":{"type":"string","description":"Currency Symbol"},"contingencyPercent":{"type":"number","description":"Contingency (%)","minimum":0},"overheadProfitPercent":{"type":"number","description":"Overhead & Profit (%)","minimum":0},"taxPercent":{"type":"number","description":"Tax (%)","minimum":0}},"required":["items"]},"examples":{"4_items_5_contingency_15_overhead_profit":{"summary":"4 items, 5% contingency, 15% overhead & profit","value":{"items":"Concrete C25/30 | 12 | m³ | 145.50\nReinforcement steel 12mm | 850 | kg | 1.85\nFormwork | 60 | m² | 22.00\nSite labour | 40 | hr | 18.00","currencySymbol":"$","contingencyPercent":"5","overheadProfitPercent":"15","taxPercent":"0"}},"3_items_with_8_5_tax_euro_symbol":{"summary":"3 items with 8.5% tax, euro symbol","value":{"items":"Excavation | 250 | m³ | 8.40\nStructural steel beams | 6 | no. | 1250\nSite supervision | 3 | week | 900","currencySymbol":"€","contingencyPercent":"10","overheadProfitPercent":"20","taxPercent":"8.5"}},"single_lump_sum_item_no_markups":{"summary":"Single lump-sum item, no markups","value":{"items":"Site clearance | 1 | ls | 3200","currencySymbol":"$","contingencyPercent":"0","overheadProfitPercent":"0","taxPercent":"0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"4_items_5_contingency_15_overhead_profit":{"summary":"4 items, 5% contingency, 15% overhead & profit","value":{"tool":"boq-estimator","tool_version":"1.0.2","outputs":{"status":"4 items — subtotal $5,358.50 + 5% contingency + 15% overhead & profit = estimated total $6,430.20.","itemsTable":[{"description":"Concrete C25/30","quantity":"12","unit":"m³","unit-rate":"$145.50","amount":"$1,746.00"},{"description":"Reinforcement steel 12mm","quantity":"850","unit":"kg","unit-rate":"$1.85","amount":"$1,572.50"},{"description":"Formwork","quantity":"60","unit":"m²","unit-rate":"$22.00","amount":"$1,320.00"},{"description":"Site labour","quantity":"40","unit":"hr","unit-rate":"$18.00","amount":"$720.00"}],"summaryTable":[{"line":"Subtotal","amount":"$5,358.50"},{"line":"Contingency (5%)","amount":"$267.93"},{"line":"Overhead & Profit (15%)","amount":"$803.77"},{"line":"Total before tax","amount":"$6,430.20"},{"line":"Tax (0%)","amount":"$0.00"},{"line":"Estimated Total","amount":"$6,430.20"}]},"credits_used":5,"credits_remaining":null}},"3_items_with_8_5_tax_euro_symbol":{"summary":"3 items with 8.5% tax, euro symbol","value":{"tool":"boq-estimator","tool_version":"1.0.2","outputs":{"status":"3 items — subtotal €12,300.00 + 10% contingency + 20% overhead & profit + 8.5% tax = estimated total €17,349.15.","itemsTable":[{"description":"Excavation","quantity":"250","unit":"m³","unit-rate":"€8.40","amount":"€2,100.00"},{"description":"Structural steel beams","quantity":"6","unit":"no.","unit-rate":"€1,250.00","amount":"€7,500.00"},{"description":"Site supervision","quantity":"3","unit":"week","unit-rate":"€900.00","amount":"€2,700.00"}],"summaryTable":[{"line":"Subtotal","amount":"€12,300.00"},{"line":"Contingency (10%)","amount":"€1,230.00"},{"line":"Overhead & Profit (20%)","amount":"€2,460.00"},{"line":"Total before tax","amount":"€15,990.00"},{"line":"Tax (8.5%)","amount":"€1,359.15"},{"line":"Estimated Total","amount":"€17,349.15"}]},"credits_used":5,"credits_remaining":null}},"single_lump_sum_item_no_markups":{"summary":"Single lump-sum item, no markups","value":{"tool":"boq-estimator","tool_version":"1.0.2","outputs":{"status":"1 item — subtotal $3,200.00 + 0% contingency + 0% overhead & profit = estimated total $3,200.00.","itemsTable":[{"description":"Site clearance","quantity":"1","unit":"ls","unit-rate":"$3,200.00","amount":"$3,200.00"}],"summaryTable":[{"line":"Subtotal","amount":"$3,200.00"},{"line":"Contingency (0%)","amount":"$0.00"},{"line":"Overhead & Profit (0%)","amount":"$0.00"},{"line":"Total before tax","amount":"$3,200.00"},{"line":"Tax (0%)","amount":"$0.00"},{"line":"Estimated Total","amount":"$3,200.00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"itemsTable":{"type":"array","description":"Items","items":{"type":"object","properties":{"description":{"type":"string","description":"Description"},"quantity":{"type":"string","description":"Quantity"},"unit":{"type":"string","description":"Unit"},"unit-rate":{"type":"string","description":"Unit Rate"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["description","quantity","unit","unit-rate","amount"]},"summaryTable":{"type":"array","description":"Summary","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"amount":{"type":"string","description":"Amount"}}},"x-iotools-columns":["line","amount"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/earned-value-calculator":{"post":{"operationId":"run_earned_value_calculator","summary":"Earned Value Calculator","tags":["Calculators"],"description":"Calculate project earned value management (EVM) metrics — PV, EV, CV, SV, CPI, SPI, EAC, ETC, VAC and TCPI — from a project's budget, percent complete and actual cost.\n\n[Try Earned Value Calculator in your browser →](https://iotools.cloud/tool/earned-value-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"budgetAtCompletion":{"type":"number","description":"Budget at completion (BAC)","minimum":0},"plannedPercentComplete":{"type":"number","description":"Planned % complete","minimum":0,"maximum":100},"actualPercentComplete":{"type":"number","description":"Actual % complete","minimum":0,"maximum":100},"actualCost":{"type":"number","description":"Actual cost (AC)","minimum":0}},"required":["budgetAtCompletion","plannedPercentComplete","actualPercentComplete","actualCost"]},"examples":{"100k_budget_50_planned_40_actual_45k_spent":{"summary":"$100k budget, 50% planned / 40% actual, $45k spent","value":{"budgetAtCompletion":"100000","plannedPercentComplete":"50","actualPercentComplete":"40","actualCost":"45000"}},"200k_budget_30_planned_35_actual_55k_spent":{"summary":"$200k budget, 30% planned / 35% actual, $55k spent","value":{"budgetAtCompletion":"200000","plannedPercentComplete":"30","actualPercentComplete":"35","actualCost":"55000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"100k_budget_50_planned_40_actual_45k_spent":{"summary":"$100k budget, 50% planned / 40% actual, $45k spent","value":{"tool":"earned-value-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Planned value (PV)","value":"$50,000.00"},{"metric":"Earned value (EV)","value":"$40,000.00"},{"metric":"Actual cost (AC)","value":"$45,000.00"},{"metric":"Cost variance (CV)","value":"-$5,000.00"},{"metric":"Schedule variance (SV)","value":"-$10,000.00"},{"metric":"Cost performance index (CPI)","value":"0.889"},{"metric":"Schedule performance index (SPI)","value":"0.800"},{"metric":"Estimate at completion (EAC)","value":"$112,500.00"},{"metric":"Estimate to complete (ETC)","value":"$67,500.00"},{"metric":"Variance at completion (VAC)","value":"-$12,500.00"},{"metric":"To-complete performance index (TCPI)","value":"1.091"}],"summary":"CPI 0.889 (over budget), SPI 0.800 (behind schedule) — forecast EAC $112,500.00"},"credits_used":5,"credits_remaining":null}},"200k_budget_30_planned_35_actual_55k_spent":{"summary":"$200k budget, 30% planned / 35% actual, $55k spent","value":{"tool":"earned-value-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Planned value (PV)","value":"$60,000.00"},{"metric":"Earned value (EV)","value":"$70,000.00"},{"metric":"Actual cost (AC)","value":"$55,000.00"},{"metric":"Cost variance (CV)","value":"$15,000.00"},{"metric":"Schedule variance (SV)","value":"$10,000.00"},{"metric":"Cost performance index (CPI)","value":"1.273"},{"metric":"Schedule performance index (SPI)","value":"1.167"},{"metric":"Estimate at completion (EAC)","value":"$157,142.86"},{"metric":"Estimate to complete (ETC)","value":"$102,142.86"},{"metric":"Variance at completion (VAC)","value":"$42,857.14"},{"metric":"To-complete performance index (TCPI)","value":"0.897"}],"summary":"CPI 1.273 (under budget), SPI 1.167 (ahead of schedule) — forecast EAC $157,142.86"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/npsh-available-calculator":{"post":{"operationId":"run_npsh_available_calculator","summary":"NPSH Available Calculator","tags":["Calculators"],"description":"Calculate net positive suction head available (NPSHa) for a pump system from source pressure, vapor pressure, specific gravity, static suction head and suction-line friction loss.\n\n[Try NPSH Available Calculator in your browser →](https://iotools.cloud/tool/npsh-available-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["si","us"],"description":"Unit system"},"atmosphericPressure":{"type":"number","description":"Source pressure","minimum":0},"vaporPressure":{"type":"number","description":"Liquid vapor pressure","minimum":0},"specificGravity":{"type":"number","description":"Specific gravity","minimum":0.001},"staticSuctionHead":{"type":"number","description":"Static suction head"},"frictionLossSuction":{"type":"number","description":"Suction-line friction loss","minimum":0}},"required":["atmosphericPressure","vaporPressure","specificGravity","staticSuctionHead","frictionLossSuction"]},"examples":{"si_open_tank_at_sea_level_2m_flooded_suction_20_c_water":{"summary":"SI — open tank at sea level, 2m flooded suction, 20°C water","value":{"unitSystem":"si","atmosphericPressure":"101.325","vaporPressure":"2.339","specificGravity":"1.0","staticSuctionHead":"2","frictionLossSuction":"1.2"}},"us_sea_level_5ft_suction_lift":{"summary":"US — sea level, 5ft suction lift","value":{"unitSystem":"us","atmosphericPressure":"14.7","vaporPressure":"0.5","specificGravity":"1.0","staticSuctionHead":"-5","frictionLossSuction":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"si_open_tank_at_sea_level_2m_flooded_suction_20_c_water":{"summary":"SI — open tank at sea level, 2m flooded suction, 20°C water","value":{"tool":"npsh-available-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Source pressure head (Ha)","value":"10.332 m"},{"metric":"Vapor pressure head (Hvp)","value":"0.239 m"},{"metric":"Static suction head (Hs)","value":"2.000 m"},{"metric":"Suction friction loss (Hf)","value":"1.200 m"},{"metric":"NPSH available (NPSHa)","value":"10.894 m"}],"summary":"NPSHa = 10.89 m (positive margin)"},"credits_used":5,"credits_remaining":null}},"us_sea_level_5ft_suction_lift":{"summary":"US — sea level, 5ft suction lift","value":{"tool":"npsh-available-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Source pressure head (Ha)","value":"33.923 ft"},{"metric":"Vapor pressure head (Hvp)","value":"1.154 ft"},{"metric":"Static suction head (Hs)","value":"-5.000 ft"},{"metric":"Suction friction loss (Hf)","value":"3.000 ft"},{"metric":"NPSH available (NPSHa)","value":"24.769 ft"}],"summary":"NPSHa = 24.77 ft (positive margin)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/miter-angle-calculator":{"post":{"operationId":"run_miter_angle_calculator","summary":"Miter Angle Calculator","tags":["Calculators"],"description":"Calculate miter saw angles for flat trim, or the compound miter + bevel pair for crown molding, from a wall corner angle reading and (for crown) the molding's spring angle.\n\n[Try Miter Angle Calculator in your browser →](https://iotools.cloud/tool/miter-angle-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"wallAngle":{"type":"number","description":"Wall / Corner Angle (°)","minimum":1,"maximum":179},"cornerType":{"enum":["inside","outside"],"description":"Corner Type"},"cutType":{"enum":["flat","crown"],"description":"Trim Type"},"springAngle":{"type":"number","description":"Spring Angle (°)","minimum":1,"maximum":89}},"required":["wallAngle"]},"examples":{"standard_90_inside_corner_flat_trim":{"summary":"Standard 90° inside corner, flat trim","value":{"wallAngle":"90","cornerType":"inside","cutType":"flat","springAngle":"45"}},"90_inside_corner_crown_molding_38_spring_angle":{"summary":"90° inside corner, crown molding, 38° spring angle","value":{"wallAngle":"90","cornerType":"inside","cutType":"crown","springAngle":"38"}},"120_obtuse_outside_corner_flat_trim":{"summary":"120° obtuse outside corner, flat trim","value":{"wallAngle":"120","cornerType":"outside","cutType":"flat","springAngle":"45"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_90_inside_corner_flat_trim":{"summary":"Standard 90° inside corner, flat trim","value":{"tool":"miter-angle-calculator","tool_version":"1.0.2","outputs":{"status":"A 90° inside corner needs a 45° miter cut on each piece of trim — no bevel required.","result":[{"property":"Half Angle","value":"45°"},{"property":"Miter Angle (saw setting)","value":"45°"},{"property":"Bevel Angle (saw setting)","value":"0° — no bevel needed for flat trim"}],"reference":[{"corner":"60° reading (sharp corner)","miter":"60°","bevel":"0°"},{"corner":"90° reading (standard square corner)","miter":"45°","bevel":"0°"},{"corner":"120° reading (obtuse corner)","miter":"30°","bevel":"0°"},{"corner":"135° reading (octagon / bay window)","miter":"22.5°","bevel":"0°"},{"corner":"145° reading (shallow bay window)","miter":"17.5°","bevel":"0°"}]},"credits_used":5,"credits_remaining":null}},"90_inside_corner_crown_molding_38_spring_angle":{"summary":"90° inside corner, crown molding, 38° spring angle","value":{"tool":"miter-angle-calculator","tool_version":"1.0.2","outputs":{"status":"A 90° inside corner with a 38° spring angle needs a 31.62° miter and a 33.86° bevel — cut the crown molding flat on the table, upside down and backward.","result":[{"property":"Half Angle","value":"45°"},{"property":"Miter Angle (saw setting)","value":"31.62°"},{"property":"Bevel Angle (saw setting)","value":"33.86°"}],"reference":[{"corner":"60° reading (sharp corner)","miter":"46.84°","bevel":"23.2°"},{"corner":"90° reading (standard square corner)","miter":"31.62°","bevel":"33.86°"},{"corner":"120° reading (obtuse corner)","miter":"19.57°","bevel":"43.03°"},{"corner":"135° reading (octagon / bay window)","miter":"14.31°","bevel":"46.72°"},{"corner":"145° reading (shallow bay window)","miter":"10.99°","bevel":"48.72°"}]},"credits_used":5,"credits_remaining":null}},"120_obtuse_outside_corner_flat_trim":{"summary":"120° obtuse outside corner, flat trim","value":{"tool":"miter-angle-calculator","tool_version":"1.0.2","outputs":{"status":"A 120° outside corner needs a 60° miter cut on each piece of trim — no bevel required.","result":[{"property":"Half Angle","value":"60°"},{"property":"Miter Angle (saw setting)","value":"60°"},{"property":"Bevel Angle (saw setting)","value":"0° — no bevel needed for flat trim"}],"reference":[{"corner":"60° reading (sharp corner)","miter":"30°","bevel":"0°"},{"corner":"90° reading (standard square corner)","miter":"45°","bevel":"0°"},{"corner":"120° reading (obtuse corner)","miter":"60°","bevel":"0°"},{"corner":"135° reading (octagon / bay window)","miter":"67.5°","bevel":"0°"},{"corner":"145° reading (shallow bay window)","miter":"72.5°","bevel":"0°"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Saw Settings","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"reference":{"type":"array","description":"Common Corner Angles","items":{"type":"object","properties":{"corner":{"type":"string","description":"Corner"},"miter":{"type":"string","description":"Miter"},"bevel":{"type":"string","description":"Bevel"}}},"x-iotools-columns":["corner","miter","bevel"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/squareness-checker":{"post":{"operationId":"run_squareness_checker","summary":"Squareness Checker","tags":["Calculators"],"description":"Check whether a corner is truly square using the 3-4-5 rule: enter the two legs and the measured diagonal, and get the expected diagonal, deviation, actual corner angle, and a squareness rating.\n\n[Try Squareness Checker in your browser →](https://iotools.cloud/tool/squareness-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sideA":{"type":"number","description":"Side A (leg 1)","minimum":0.0001},"sideB":{"type":"number","description":"Side B (leg 2)","minimum":0.0001},"diagonal":{"type":"number","description":"Diagonal (measured)","minimum":0.0001},"unitSystem":{"enum":["customary","metric"],"description":"Unit System"},"tolerance":{"type":"number","description":"Tolerance","minimum":0}},"required":["sideA","sideB","diagonal"]},"examples":{"textbook_3_4_5_corner_perfectly_square":{"summary":"Textbook 3-4-5 corner (perfectly square)","value":{"sideA":"3","sideB":"4","diagonal":"5","unitSystem":"customary","tolerance":"0.125"}},"deck_layout_9_12_15_scaled_3_4_5_diagonal_slightly_long":{"summary":"Deck layout (9-12-15 scaled 3-4-5), diagonal slightly long","value":{"sideA":"9","sideB":"12","diagonal":"15.2","unitSystem":"customary","tolerance":"0.125"}},"metric_layout_diagonal_slightly_short":{"summary":"Metric layout, diagonal slightly short","value":{"sideA":"3","sideB":"4","diagonal":"4.97","unitSystem":"metric","tolerance":"0.3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"textbook_3_4_5_corner_perfectly_square":{"summary":"Textbook 3-4-5 corner (perfectly square)","value":{"tool":"squareness-checker","tool_version":"1.0.2","outputs":{"status":"Square: the measured diagonal of 5 ft is within 0.125 in of the expected 5 ft — corner angle 90°.","result":[{"property":"Expected Diagonal","value":"5 ft"},{"property":"Deviation","value":"+0 ft (0 in)"},{"property":"Corner Angle","value":"90°"},{"property":"Angle Deviation (from 90°)","value":"+0°"},{"property":"Percent Error","value":"0%"},{"property":"Within Tolerance?","value":"Yes"},{"property":"Rating","value":"Excellent — effectively square"},{"property":"Suggested Adjustment","value":"No adjustment needed."}]},"credits_used":5,"credits_remaining":null}},"deck_layout_9_12_15_scaled_3_4_5_diagonal_slightly_long":{"summary":"Deck layout (9-12-15 scaled 3-4-5), diagonal slightly long","value":{"tool":"squareness-checker","tool_version":"1.0.2","outputs":{"status":"Not square: the measured diagonal of 15.2 ft is off by 2.4 in from the expected 15 ft — corner angle 91.6°.","result":[{"property":"Expected Diagonal","value":"15 ft"},{"property":"Deviation","value":"+0.2 ft (2.4 in)"},{"property":"Corner Angle","value":"91.602°"},{"property":"Angle Deviation (from 90°)","value":"+1.602°"},{"property":"Percent Error","value":"1.333%"},{"property":"Within Tolerance?","value":"No"},{"property":"Rating","value":"Out of square — recheck your measurements"},{"property":"Suggested Adjustment","value":"Diagonal is too long by 2.4 in — the corner is slightly obtuse (>90°). Pull that corner inward."}]},"credits_used":5,"credits_remaining":null}},"metric_layout_diagonal_slightly_short":{"summary":"Metric layout, diagonal slightly short","value":{"tool":"squareness-checker","tool_version":"1.0.2","outputs":{"status":"Not square: the measured diagonal of 4.97 m is off by 3 cm from the expected 5 m — corner angle 89.29°.","result":[{"property":"Expected Diagonal","value":"5 m"},{"property":"Deviation","value":"-0.03 m (3 cm)"},{"property":"Corner Angle","value":"89.286°"},{"property":"Angle Deviation (from 90°)","value":"-0.714°"},{"property":"Percent Error","value":"0.6%"},{"property":"Within Tolerance?","value":"No"},{"property":"Rating","value":"Out of square — recheck your measurements"},{"property":"Suggested Adjustment","value":"Diagonal is too short by 3 cm — the corner is slightly acute (<90°). Push that corner outward."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Summary"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sphere-calculator":{"post":{"operationId":"run_sphere_calculator","summary":"Sphere Calculator","tags":["Calculators"],"description":"Calculate a sphere's radius, diameter, circumference, surface area and volume from any single known value — enter one measurement and the other four are derived instantly.\n\n[Try Sphere Calculator in your browser →](https://iotools.cloud/tool/sphere-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["mm","cm","m","in","ft","yd"],"description":"Unit"},"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"},"solveFrom":{"enum":["radius","diameter","circumference","surfaceArea","volume"],"description":"Solve from"},"radius":{"type":"number","description":"Radius","minimum":0},"diameter":{"type":"number","description":"Diameter","minimum":0},"circumference":{"type":"number","description":"Circumference","minimum":0},"surfaceAreaInput":{"type":"number","description":"Surface Area","minimum":0},"volumeInput":{"type":"number","description":"Volume","minimum":0}},"required":[]},"examples":{"from_radius":{"summary":"From radius","value":{"unit":"cm","precision":"2","solveFrom":"radius","radius":"5"}},"from_volume":{"summary":"From volume","value":{"unit":"cm","precision":"2","solveFrom":"volume","volumeInput":"523.6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"from_radius":{"summary":"From radius","value":{"tool":"sphere-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Radius","value":"5 cm"},{"property":"Diameter","value":"10 cm"},{"property":"Circumference","value":"31.42 cm"},{"property":"Surface Area","value":"314.16 cm²"},{"property":"Volume","value":"523.6 cm³"}]},"credits_used":5,"credits_remaining":null}},"from_volume":{"summary":"From volume","value":{"tool":"sphere-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Radius","value":"5 cm"},{"property":"Diameter","value":"10 cm"},{"property":"Circumference","value":"31.42 cm"},{"property":"Surface Area","value":"314.16 cm²"},{"property":"Volume","value":"523.6 cm³"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/triangle-centroid-calculator":{"post":{"operationId":"run_triangle_centroid_calculator","summary":"Triangle Centroid Calculator","tags":["Calculators"],"description":"Calculate a triangle's centroid, side lengths, perimeter, area and the three medians from its three vertex coordinates on the Cartesian plane.\n\n[Try Triangle Centroid Calculator in your browser →](https://iotools.cloud/tool/triangle-centroid-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"},"ax":{"type":"number","description":"Vertex A — x"},"ay":{"type":"number","description":"Vertex A — y"},"bx":{"type":"number","description":"Vertex B — x"},"by":{"type":"number","description":"Vertex B — y"},"cx":{"type":"number","description":"Vertex C — x"},"cy":{"type":"number","description":"Vertex C — y"}},"required":[]},"examples":{"triangle_0_0_6_0_3_6":{"summary":"Triangle (0,0), (6,0), (3,6)","value":{"precision":"4","ax":"0","ay":"0","bx":"6","by":"0","cx":"3","cy":"6"}},"right_triangle_0_0_4_0_0_3":{"summary":"Right triangle (0,0), (4,0), (0,3)","value":{"precision":"2","ax":"0","ay":"0","bx":"4","by":"0","cx":"0","cy":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"triangle_0_0_6_0_3_6":{"summary":"Triangle (0,0), (6,0), (3,6)","value":{"tool":"triangle-centroid-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Centroid","value":"(3, 2)"},{"property":"Side a (BC, opposite A)","value":"6.7082"},{"property":"Side b (CA, opposite B)","value":"6.7082"},{"property":"Side c (AB, opposite C)","value":"6"},{"property":"Perimeter","value":"19.4164"},{"property":"Area","value":"18"},{"property":"Median from A","value":"5.4083"},{"property":"Median from B","value":"5.4083"},{"property":"Median from C","value":"6"}]},"credits_used":5,"credits_remaining":null}},"right_triangle_0_0_4_0_0_3":{"summary":"Right triangle (0,0), (4,0), (0,3)","value":{"tool":"triangle-centroid-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Centroid","value":"(1.33, 1)"},{"property":"Side a (BC, opposite A)","value":"5"},{"property":"Side b (CA, opposite B)","value":"3"},{"property":"Side c (AB, opposite C)","value":"4"},{"property":"Perimeter","value":"12"},{"property":"Area","value":"6"},{"property":"Median from A","value":"2.5"},{"property":"Median from B","value":"4.27"},{"property":"Median from C","value":"3.61"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/steel-weight-calculator":{"post":{"operationId":"run_steel_weight_calculator","summary":"Steel Weight Calculator","tags":["Calculators"],"description":"Calculate the weight of steel, stainless, aluminium or other metal bar, tube and angle stock — round, square, hex or flat bar, round/square/rectangular tube, or equal-leg angle — from its dimensions, stock length and material density, with 17 built-in materials, a quantity multiplier, and results in both kg and lb.\n\n[Try Steel Weight Calculator in your browser →](https://iotools.cloud/tool/steel-weight-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"units":{"enum":["metric","imperial"],"description":"Units"},"shape":{"enum":["round-bar","square-bar","hex-bar","flat-bar","round-tube","square-tube","rectangular-tube","angle"],"description":"Shape"},"diameter":{"type":"number","description":"Diameter","minimum":0},"side":{"type":"number","description":"Side","minimum":0},"acrossFlats":{"type":"number","description":"Across Flats","minimum":0},"width":{"type":"number","description":"Width","minimum":0},"height":{"type":"number","description":"Height","minimum":0},"legLength":{"type":"number","description":"Leg Length","minimum":0},"thickness":{"type":"number","description":"Thickness","minimum":0},"wallThickness":{"type":"number","description":"Wall Thickness","minimum":0},"length":{"type":"number","description":"Length","minimum":0},"material":{"enum":["carbon-steel","stainless-304","stainless-316","stainless-430","tool-steel","cast-iron","aluminium-6061","aluminium-5052","aluminium-7075","copper","brass","bronze","titanium-gr5","nickel","zinc","lead","magnesium-az31","custom"],"description":"Material"},"density":{"type":"number","description":"Density","minimum":0},"quantity":{"type":"number","description":"Quantity","minimum":1}},"required":[]},"examples":{"25_mm_round_bar_6000_mm_mild_steel":{"summary":"25 mm round bar, 6000 mm, mild steel","value":{"units":"metric","shape":"round-bar","diameter":"25","side":"","acrossFlats":"","width":"","height":"","legLength":"","thickness":"","wallThickness":"","length":"6000","material":"carbon-steel","density":"","quantity":"1"}},"50x25x3_mm_rectangular_tube_3000_mm_4_off":{"summary":"50x25x3 mm rectangular tube, 3000 mm, 4 off","value":{"units":"metric","shape":"rectangular-tube","diameter":"","side":"","acrossFlats":"","width":"50","height":"25","legLength":"","thickness":"","wallThickness":"3","length":"3000","material":"carbon-steel","density":"","quantity":"4"}},"aluminium_6061_50x50x5_mm_equal_leg_angle_2000_mm":{"summary":"Aluminium 6061 50x50x5 mm equal-leg angle, 2000 mm","value":{"units":"metric","shape":"angle","diameter":"","side":"","acrossFlats":"","width":"","height":"","legLength":"50","thickness":"5","wallThickness":"","length":"2000","material":"aluminium-6061","density":"","quantity":"1"}},"imperial_1_in_round_tube_0_065_in_wall_240_in":{"summary":"Imperial — 1 in round tube, 0.065 in wall, 240 in","value":{"units":"imperial","shape":"round-tube","diameter":"1","side":"","acrossFlats":"","width":"","height":"","legLength":"","thickness":"","wallThickness":"0.065","length":"240","material":"carbon-steel","density":"","quantity":"1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"25_mm_round_bar_6000_mm_mild_steel":{"summary":"25 mm round bar, 6000 mm, mild steel","value":{"tool":"steel-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"23.12 kg (50.97 lb)"},{"metric":"Unit Weight","value":"3.853 kg/m (2.589 lb/ft)"},{"metric":"Cross-Section Area","value":"4.909 cm² (0.7609 in²)"},{"metric":"Volume (each)","value":"2,945 cm³ (179.7 in³)"},{"metric":"Density Used","value":"7,850 kg/m³ (490.1 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"50x25x3_mm_rectangular_tube_3000_mm_4_off":{"summary":"50x25x3 mm rectangular tube, 3000 mm, 4 off","value":{"tool":"steel-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"9.750 kg (21.49 lb)"},{"metric":"Total Weight (4 pcs)","value":"39.00 kg (85.98 lb)"},{"metric":"Unit Weight","value":"3.250 kg/m (2.184 lb/ft)"},{"metric":"Cross-Section Area","value":"4.140 cm² (0.6417 in²)"},{"metric":"Volume (each)","value":"1,242 cm³ (75.79 in³)"},{"metric":"Density Used","value":"7,850 kg/m³ (490.1 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"aluminium_6061_50x50x5_mm_equal_leg_angle_2000_mm":{"summary":"Aluminium 6061 50x50x5 mm equal-leg angle, 2000 mm","value":{"tool":"steel-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"2.565 kg (5.655 lb)"},{"metric":"Unit Weight","value":"1.282 kg/m (0.8618 lb/ft)"},{"metric":"Cross-Section Area","value":"4.750 cm² (0.7363 in²)"},{"metric":"Volume (each)","value":"950.0 cm³ (57.97 in³)"},{"metric":"Density Used","value":"2,700 kg/m³ (168.6 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}},"imperial_1_in_round_tube_0_065_in_wall_240_in":{"summary":"Imperial — 1 in round tube, 0.065 in wall, 240 in","value":{"tool":"steel-weight-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Weight (each)","value":"5.895 kg (13.00 lb)"},{"metric":"Unit Weight","value":"0.9670 kg/m (0.6498 lb/ft)"},{"metric":"Cross-Section Area","value":"1.232 cm² (0.1909 in²)"},{"metric":"Volume (each)","value":"750.9 cm³ (45.82 in³)"},{"metric":"Density Used","value":"7,850 kg/m³ (490.1 lb/ft³)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wallpaper-calculator":{"post":{"operationId":"run_wallpaper_calculator","summary":"Wallpaper Calculator","tags":["Calculators"],"description":"Estimate the drops, rolls, waste and coverage needed to wallpaper a room from its wall length and height, roll dimensions and pattern repeat — with an optional cost estimate.\n\n[Try Wallpaper Calculator in your browser →](https://iotools.cloud/tool/wallpaper-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"perimeter":{"type":"number","description":"Room perimeter","minimum":0},"wallHeight":{"type":"number","description":"Wall height","minimum":0},"rollWidth":{"type":"number","description":"Roll width","minimum":0},"rollLength":{"type":"number","description":"Roll length","minimum":0},"patternRepeat":{"type":"number","description":"Pattern repeat","minimum":0},"wastagePct":{"type":"number","description":"Wastage %","minimum":0,"maximum":30},"pricePerRoll":{"type":"number","description":"Price per roll","minimum":0}},"required":["perimeter","wallHeight","rollWidth","rollLength"]},"examples":{"metric_16m_perimeter_2_4m_walls_plain_53x1005cm_roll":{"summary":"Metric — 16m perimeter, 2.4m walls, plain 53x1005cm roll","value":{"unitSystem":"metric","perimeter":"16","wallHeight":"2.4","rollWidth":"53","rollLength":"1005","patternRepeat":"0","wastagePct":"10","pricePerRoll":"25"}},"metric_with_a_64cm_pattern_repeat_no_cost":{"summary":"Metric with a 64cm pattern repeat, no cost","value":{"unitSystem":"metric","perimeter":"16","wallHeight":"2.4","rollWidth":"53","rollLength":"1005","patternRepeat":"64","wastagePct":"10","pricePerRoll":""}},"imperial_52ft_perimeter_8ft_walls_20_5x396in_roll":{"summary":"Imperial — 52ft perimeter, 8ft walls, 20.5x396in roll","value":{"unitSystem":"imperial","perimeter":"52","wallHeight":"8","rollWidth":"20.5","rollLength":"396","patternRepeat":"0","wastagePct":"10","pricePerRoll":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_16m_perimeter_2_4m_walls_plain_53x1005cm_roll":{"summary":"Metric — 16m perimeter, 2.4m walls, plain 53x1005cm roll","value":{"tool":"wallpaper-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Wall length","value":"16.00 m"},{"metric":"Drop length (with pattern repeat)","value":"240.0 cm"},{"metric":"Drops needed (no wastage)","value":"31 drops"},{"metric":"Drops needed (with wastage)","value":"35 drops (+10%)"},{"metric":"Drops per roll","value":"4 drops"},{"metric":"Rolls to buy","value":"9 rolls"},{"metric":"Coverage from purchase","value":"47.94 m²"},{"metric":"Estimated cost","value":"$225.00"}],"summary":"35 drops +10% · 9 rolls · $225.00 total"},"credits_used":5,"credits_remaining":null}},"metric_with_a_64cm_pattern_repeat_no_cost":{"summary":"Metric with a 64cm pattern repeat, no cost","value":{"tool":"wallpaper-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Wall length","value":"16.00 m"},{"metric":"Drop length (with pattern repeat)","value":"256.0 cm"},{"metric":"Drops needed (no wastage)","value":"31 drops"},{"metric":"Drops needed (with wastage)","value":"35 drops (+10%)"},{"metric":"Drops per roll","value":"3 drops"},{"metric":"Rolls to buy","value":"12 rolls"},{"metric":"Coverage from purchase","value":"63.92 m²"},{"metric":"Estimated cost","value":"-"}],"summary":"35 drops +10% · 12 rolls"},"credits_used":5,"credits_remaining":null}},"imperial_52ft_perimeter_8ft_walls_20_5x396in_roll":{"summary":"Imperial — 52ft perimeter, 8ft walls, 20.5x396in roll","value":{"tool":"wallpaper-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Wall length","value":"52.00 ft"},{"metric":"Drop length (with pattern repeat)","value":"96.0 in"},{"metric":"Drops needed (no wastage)","value":"31 drops"},{"metric":"Drops needed (with wastage)","value":"35 drops (+10%)"},{"metric":"Drops per roll","value":"4 drops"},{"metric":"Rolls to buy","value":"9 rolls"},{"metric":"Coverage from purchase","value":"507.37 sq ft"},{"metric":"Estimated cost","value":"-"}],"summary":"35 drops +10% · 9 rolls"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/frustum-calculator":{"post":{"operationId":"run_frustum_calculator","summary":"Frustum Calculator","tags":["Calculators"],"description":"Calculate the volume, slant height, lateral surface area and total surface area of a conical frustum from its two base radii and height, with a step-by-step derivation.\n\n[Try Frustum Calculator in your browser →](https://iotools.cloud/tool/frustum-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"radius1":{"type":"number","description":"r1 (top radius)","minimum":0},"radius2":{"type":"number","description":"r2 (bottom radius)","minimum":0},"height":{"type":"number","description":"h (height)","minimum":0},"precision":{"enum":["0","1","2","3","4","6","8","10"],"description":"Decimal Precision"}},"required":["radius1","radius2","height"]},"examples":{"r1_5_r2_3_h_10_default":{"summary":"r1 = 5, r2 = 3, h = 10 (default)","value":{"radius1":"5","radius2":"3","height":"10","precision":"4"}},"r1_r2_4_h_6_degenerates_to_a_cylinder":{"summary":"r1 = r2 = 4, h = 6 (degenerates to a cylinder)","value":{"radius1":"4","radius2":"4","height":"6","precision":"2"}},"r1_6_r2_0_h_8_degenerates_to_a_cone":{"summary":"r1 = 6, r2 = 0, h = 8 (degenerates to a cone)","value":{"radius1":"6","radius2":"0","height":"8","precision":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"r1_5_r2_3_h_10_default":{"summary":"r1 = 5, r2 = 3, h = 10 (default)","value":{"tool":"frustum-calculator","tool_version":"1.0.2","outputs":{"slantHeight":"10.198","volume":"513.1268","lateralArea":"256.3047","totalArea":"363.1188","result":[{"property":"Slant height (l)","value":"10.198"},{"property":"Volume","value":"513.1268"},{"property":"Lateral surface area","value":"256.3047"},{"property":"Top base area","value":"78.5398"},{"property":"Bottom base area","value":"28.2743"},{"property":"Total surface area","value":"363.1188"}],"steps":"r1 = 5, r2 = 3, h = 10\nl = √((r1 - r2)² + h²) = √((5 - 3)² + 10²) = 10.198\nV = (π·h/3) · (r1² + r1·r2 + r2²) = (π × 10/3) × (5² + 5×3 + 3²) = 513.1268\nLateral area = π · (r1 + r2) · l = π × (5 + 3) × 10.198 = 256.3047\nTotal area = Lateral area + π·r1² + π·r2² = 256.3047 + 78.5398 + 28.2743 = 363.1188"},"credits_used":5,"credits_remaining":null}},"r1_r2_4_h_6_degenerates_to_a_cylinder":{"summary":"r1 = r2 = 4, h = 6 (degenerates to a cylinder)","value":{"tool":"frustum-calculator","tool_version":"1.0.2","outputs":{"slantHeight":"6","volume":"301.59","lateralArea":"150.8","totalArea":"251.33","result":[{"property":"Slant height (l)","value":"6"},{"property":"Volume","value":"301.59"},{"property":"Lateral surface area","value":"150.8"},{"property":"Top base area","value":"50.27"},{"property":"Bottom base area","value":"50.27"},{"property":"Total surface area","value":"251.33"}],"steps":"r1 = 4, r2 = 4, h = 6\nl = √((r1 - r2)² + h²) = √((4 - 4)² + 6²) = 6\nV = (π·h/3) · (r1² + r1·r2 + r2²) = (π × 6/3) × (4² + 4×4 + 4²) = 301.59\nLateral area = π · (r1 + r2) · l = π × (4 + 4) × 6 = 150.8\nTotal area = Lateral area + π·r1² + π·r2² = 150.8 + 50.27 + 50.27 = 251.33"},"credits_used":5,"credits_remaining":null}},"r1_6_r2_0_h_8_degenerates_to_a_cone":{"summary":"r1 = 6, r2 = 0, h = 8 (degenerates to a cone)","value":{"tool":"frustum-calculator","tool_version":"1.0.2","outputs":{"slantHeight":"10","volume":"301.593","lateralArea":"188.496","totalArea":"301.593","result":[{"property":"Slant height (l)","value":"10"},{"property":"Volume","value":"301.593"},{"property":"Lateral surface area","value":"188.496"},{"property":"Top base area","value":"113.097"},{"property":"Bottom base area","value":"0"},{"property":"Total surface area","value":"301.593"}],"steps":"r1 = 6, r2 = 0, h = 8\nl = √((r1 - r2)² + h²) = √((6 - 0)² + 8²) = 10\nV = (π·h/3) · (r1² + r1·r2 + r2²) = (π × 8/3) × (6² + 6×0 + 0²) = 301.593\nLateral area = π · (r1 + r2) · l = π × (6 + 0) × 10 = 188.496\nTotal area = Lateral area + π·r1² + π·r2² = 188.496 + 113.097 + 0 = 301.593"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"volume":{"type":"string","description":"Volume"},"slantHeight":{"type":"string","description":"Slant Height"},"lateralArea":{"type":"string","description":"Lateral Surface Area"},"totalArea":{"type":"string","description":"Total Surface Area"},"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Step-by-Step Derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/decking-calculator":{"post":{"operationId":"run_decking_calculator","summary":"Decking Calculator","tags":["Calculators"],"description":"Estimate the boards, joists, beams, posts, and fasteners needed to build a deck from its dimensions, board size, board gap, and framing spacing, in imperial or metric units.\n\n[Try Decking Calculator in your browser →](https://iotools.cloud/tool/decking-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["imperial","metric"],"description":"Unit system"},"deckLength":{"type":"number","description":"Deck length","minimum":0},"deckWidth":{"type":"number","description":"Deck width","minimum":0},"boardWidth":{"type":"number","description":"Board width","minimum":0},"boardLength":{"type":"number","description":"Board length (as sold)","minimum":0},"boardGap":{"type":"number","description":"Gap between boards","minimum":0},"joistSpacing":{"type":"number","description":"Joist spacing (on-center)","minimum":0},"beamSpacing":{"type":"number","description":"Beam spacing (on-center)","minimum":0},"wastePercent":{"type":"number","description":"Waste %","minimum":0,"maximum":30},"fastenerDensity":{"type":"number","description":"Fasteners per unit area","minimum":0}},"required":["deckLength","deckWidth","boardWidth","boardLength"]},"examples":{"imperial_12ft_x_10ft_deck_5_5in_boards_16in_joists_8ft_beams":{"summary":"Imperial — 12ft x 10ft deck, 5.5in boards, 16in joists, 8ft beams","value":{"unitSystem":"imperial","deckLength":"12","deckWidth":"10","boardWidth":"5.5","boardLength":"12","boardGap":"0.125","joistSpacing":"16","beamSpacing":"8","wastePercent":"10","fastenerDensity":"3.5"}},"metric_4m_x_3m_deck_14cm_boards_40cm_joists_2_4m_beams":{"summary":"Metric — 4m x 3m deck, 14cm boards, 40cm joists, 2.4m beams","value":{"unitSystem":"metric","deckLength":"4","deckWidth":"3","boardWidth":"14","boardLength":"4","boardGap":"0.3","joistSpacing":"40","beamSpacing":"2.4","wastePercent":"5","fastenerDensity":"35"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"imperial_12ft_x_10ft_deck_5_5in_boards_16in_joists_8ft_beams":{"summary":"Imperial — 12ft x 10ft deck, 5.5in boards, 16in joists, 8ft beams","value":{"tool":"decking-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Deck area","value":"120.00 sq ft"},{"metric":"Board rows across width","value":"22"},{"metric":"Boards per row (end to end)","value":"1"},{"metric":"Boards needed (no waste)","value":"22 boards"},{"metric":"Waste boards","value":"3 boards"},{"metric":"Total boards (with waste)","value":"25 boards (+10%)"},{"metric":"Joist count","value":"11"},{"metric":"Total joist length","value":"110.00 ft"},{"metric":"Beam count","value":"3"},{"metric":"Total beam length","value":"36.00 ft"},{"metric":"Posts needed","value":"6"},{"metric":"Fasteners needed","value":"420"}],"summary":"120.00 sq ft deck · 25 boards +10%"},"credits_used":5,"credits_remaining":null}},"metric_4m_x_3m_deck_14cm_boards_40cm_joists_2_4m_beams":{"summary":"Metric — 4m x 3m deck, 14cm boards, 40cm joists, 2.4m beams","value":{"tool":"decking-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Deck area","value":"12.00 m²"},{"metric":"Board rows across width","value":"21"},{"metric":"Boards per row (end to end)","value":"1"},{"metric":"Boards needed (no waste)","value":"21 boards"},{"metric":"Waste boards","value":"2 boards"},{"metric":"Total boards (with waste)","value":"23 boards (+5%)"},{"metric":"Joist count","value":"11"},{"metric":"Total joist length","value":"33.00 m"},{"metric":"Beam count","value":"3"},{"metric":"Total beam length","value":"12.00 m"},{"metric":"Posts needed","value":"6"},{"metric":"Fasteners needed","value":"420"}],"summary":"12.00 m² deck · 23 boards +5%"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/brick-and-mortar-calculator":{"post":{"operationId":"run_brick_and_mortar_calculator","summary":"Brick and Mortar Calculator","tags":["Calculators"],"description":"Estimate both the bricks and the mortar (volume and bag count) needed for a wall from its dimensions, brick size, joint thickness, and wall type, in metric or imperial units.\n\n[Try Brick and Mortar Calculator in your browser →](https://iotools.cloud/tool/brick-and-mortar-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"unitSystem":{"enum":["metric","imperial"],"description":"Unit system"},"wallType":{"enum":["single","double"],"description":"Wall type"},"wallLength":{"type":"number","description":"Wall length","minimum":0},"wallHeight":{"type":"number","description":"Wall height","minimum":0},"openingsArea":{"type":"number","description":"Openings area (doors, windows)","minimum":0},"brickLength":{"type":"number","description":"Brick length","minimum":0},"brickHeight":{"type":"number","description":"Brick height","minimum":0},"brickDepth":{"type":"number","description":"Brick depth","minimum":0},"mortarJointMetric":{"type":"number","description":"Mortar joint (mm)","minimum":0},"mortarJointImperial":{"type":"number","description":"Mortar joint (in)","minimum":0},"wastagePct":{"type":"number","description":"Wastage %","minimum":0,"maximum":30},"mortarYieldPerBagMetric":{"type":"number","description":"Mortar yield per bag (m³)","minimum":0},"mortarYieldPerBagImperial":{"type":"number","description":"Mortar yield per bag (cu ft)","minimum":0}},"required":["wallLength","wallHeight","brickLength","brickHeight","brickDepth"]},"examples":{"metric_5m_x_3m_single_wythe_wall_standard_brick_10mm_joint":{"summary":"Metric — 5m x 3m single wythe wall, standard brick, 10mm joint","value":{"unitSystem":"metric","wallType":"single","wallLength":"5","wallHeight":"3","openingsArea":"3.5","brickLength":"215","brickHeight":"65","brickDepth":"102.5","mortarJointMetric":"10","wastagePct":"5","mortarYieldPerBagMetric":"0.017"}},"imperial_16ft_x_8ft_double_wythe_wall_modular_brick_3_8in_joint":{"summary":"Imperial — 16ft x 8ft double wythe wall, modular brick, 3/8in joint","value":{"unitSystem":"imperial","wallType":"double","wallLength":"16","wallHeight":"8","openingsArea":"16","brickLength":"8","brickHeight":"2.25","brickDepth":"3.625","mortarJointImperial":"0.375","wastagePct":"10","mortarYieldPerBagImperial":"0.6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"metric_5m_x_3m_single_wythe_wall_standard_brick_10mm_joint":{"summary":"Metric — 5m x 3m single wythe wall, standard brick, 10mm joint","value":{"tool":"brick-and-mortar-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross wall area","value":"15.00 m²"},{"metric":"Openings subtracted","value":"3.50 m²"},{"metric":"Net wall area","value":"11.50 m²"},{"metric":"Effective brick face (with joint)","value":"0.02 m²"},{"metric":"Brick wythes","value":"1"},{"metric":"Bricks needed (no waste)","value":"682 bricks"},{"metric":"Bricks needed (with waste)","value":"716 bricks (+5%)"},{"metric":"Mortar volume needed","value":"0.213 m³"},{"metric":"Mortar bags needed","value":"13 bags"}],"summary":"11.50 m² net wall · 716 bricks · 13 mortar bags"},"credits_used":5,"credits_remaining":null}},"imperial_16ft_x_8ft_double_wythe_wall_modular_brick_3_8in_joint":{"summary":"Imperial — 16ft x 8ft double wythe wall, modular brick, 3/8in joint","value":{"tool":"brick-and-mortar-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Gross wall area","value":"128.00 sq ft"},{"metric":"Openings subtracted","value":"16.00 sq ft"},{"metric":"Net wall area","value":"112.00 sq ft"},{"metric":"Effective brick face (with joint)","value":"0.15 sq ft"},{"metric":"Brick wythes","value":"2"},{"metric":"Bricks needed (no waste)","value":"1468 bricks"},{"metric":"Bricks needed (with waste)","value":"1614 bricks (+10%)"},{"metric":"Mortar volume needed","value":"13.49 cu ft"},{"metric":"Mortar bags needed","value":"23 bags"}],"summary":"112.00 sq ft net wall · 1614 bricks · 23 mortar bags"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/polygon-diagonals-calculator":{"post":{"operationId":"run_polygon_diagonals_calculator","summary":"Polygon Diagonals Calculator","tags":["Calculators"],"description":"Calculate the number of diagonals in a polygon from its number of sides, plus the triangulation count and sum of interior angles. For small polygons, lists every individual diagonal as a vertex pair.\n\n[Try Polygon Diagonals Calculator in your browser →](https://iotools.cloud/tool/polygon-diagonals-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sides":{"type":"number","description":"Number of sides (n)","minimum":3}},"required":["sides"]},"examples":{"hexagon_6_sides":{"summary":"Hexagon (6 sides)","value":{"sides":"6"}},"triangle_3_sides_no_diagonals":{"summary":"Triangle (3 sides, no diagonals)","value":{"sides":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hexagon_6_sides":{"summary":"Hexagon (6 sides)","value":{"tool":"polygon-diagonals-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Diagonals","value":"9"},{"metric":"Diagonals per Vertex","value":"3"},{"metric":"Triangles (from one vertex)","value":"4"},{"metric":"Sum of Interior Angles","value":"720°"}],"diagonals":"1-3, 1-4, 1-5, 2-4, 2-5, 2-6, 3-5, 3-6, 4-6"},"credits_used":5,"credits_remaining":null}},"triangle_3_sides_no_diagonals":{"summary":"Triangle (3 sides, no diagonals)","value":{"tool":"polygon-diagonals-calculator","tool_version":"1.0.2","outputs":{"results":[{"metric":"Total Diagonals","value":"0"},{"metric":"Diagonals per Vertex","value":"0"},{"metric":"Triangles (from one vertex)","value":"1"},{"metric":"Sum of Interior Angles","value":"180°"}],"diagonals":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"diagonals":{"type":"string","description":"Diagonals (vertex pairs)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/series-convergence-test-calculator":{"post":{"operationId":"run_series_convergence_test_calculator","summary":"Series Convergence Test Calculator","tags":["Calculators"],"description":"Classify a p-series, geometric series, alternating series, or three other standard infinite series families as absolutely convergent, conditionally convergent, or divergent — with the exact ratio/root/divergence test limits and a step-by-step reason, plus the running partial sums.\n\n[Try Series Convergence Test Calculator in your browser →](https://iotools.cloud/tool/series-convergence-test-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"series":{"enum":["p_series","geometric","alt_p_series","n_power_r","exp_over_factorial","alt_rational"],"description":"Series family"},"p":{"type":"number","description":"Exponent p"},"r":{"type":"number","description":"Ratio r"},"polyExp":{"type":"number","description":"Polynomial exponent a"},"base":{"type":"number","description":"Base b"},"denomShift":{"type":"number","description":"Denominator constant a","minimum":0},"n0":{"type":"number","description":"Starting index n₀","minimum":1,"maximum":50},"numTerms":{"type":"number","description":"Partial sums to show","minimum":5,"maximum":30}},"required":[]},"examples":{"p_series_with_p_2_converges_absolutely":{"summary":"p-series with p = 2 (converges absolutely)","value":{"series":"p_series","p":"2","n0":"1","numTerms":"5"}},"p_series_with_p_1_the_harmonic_series_diverges":{"summary":"p-series with p = 1 — the harmonic series (diverges)","value":{"series":"p_series","p":"1","n0":"1","numTerms":"5"}},"alternating_p_series_with_p_0_5_converges_conditionally":{"summary":"Alternating p-series with p = 0.5 (converges conditionally)","value":{"series":"alt_p_series","p":"0.5","n0":"1","numTerms":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"p_series_with_p_2_converges_absolutely":{"summary":"p-series with p = 2 (converges absolutely)","value":{"tool":"series-convergence-test-calculator","tool_version":"1.0.2","outputs":{"verdict":"Converges absolutely","decisiveRule":"p-series test: Σ 1/n^p converges because p = 2 > 1.","generalTerm":"aₙ = 1 / n^2","divergenceTest":"lim aₙ = 0","ratioTest":"L = 1 (inconclusive)","rootTest":"L = 1 (inconclusive)","partialSums":[{"n":"1","an":"1","sn-partial-sum":"1"},{"n":"2","an":"0.25","sn-partial-sum":"1.25"},{"n":"3","an":"0.111111","sn-partial-sum":"1.36111"},{"n":"4","an":"0.0625","sn-partial-sum":"1.42361"},{"n":"5","an":"0.04","sn-partial-sum":"1.46361"}],"steps":"Series: p-series (Σ 1/nᵖ)\nGeneral term: aₙ = 1 / n^2\nStarting index n₀ = 1\n\nDivergence (nth-term) test: lim aₙ = 0\nRatio test: L = 1 (inconclusive)\nRoot test: L = 1 (inconclusive)\n\nVerdict: Converges absolutely\nReason: p-series test: Σ 1/n^p converges because p = 2 > 1.\n\nPartial sums:\n  S(1) = 1   (aₙ = 1)\n  S(2) = 1.25   (aₙ = 0.25)\n  S(3) = 1.36111   (aₙ = 0.111111)\n  S(4) = 1.42361   (aₙ = 0.0625)\n  S(5) = 1.46361   (aₙ = 0.04)"},"credits_used":5,"credits_remaining":null}},"p_series_with_p_1_the_harmonic_series_diverges":{"summary":"p-series with p = 1 — the harmonic series (diverges)","value":{"tool":"series-convergence-test-calculator","tool_version":"1.0.2","outputs":{"verdict":"Diverges","decisiveRule":"p-series test: Σ 1/n^p diverges because 0 < p = 1 ≤ 1 (harmonic-type growth).","generalTerm":"aₙ = 1 / n^1","divergenceTest":"lim aₙ = 0","ratioTest":"L = 1 (inconclusive)","rootTest":"L = 1 (inconclusive)","partialSums":[{"n":"1","an":"1","sn-partial-sum":"1"},{"n":"2","an":"0.5","sn-partial-sum":"1.5"},{"n":"3","an":"0.333333","sn-partial-sum":"1.83333"},{"n":"4","an":"0.25","sn-partial-sum":"2.08333"},{"n":"5","an":"0.2","sn-partial-sum":"2.28333"}],"steps":"Series: p-series (Σ 1/nᵖ)\nGeneral term: aₙ = 1 / n^1\nStarting index n₀ = 1\n\nDivergence (nth-term) test: lim aₙ = 0\nRatio test: L = 1 (inconclusive)\nRoot test: L = 1 (inconclusive)\n\nVerdict: Diverges\nReason: p-series test: Σ 1/n^p diverges because 0 < p = 1 ≤ 1 (harmonic-type growth).\n\nPartial sums:\n  S(1) = 1   (aₙ = 1)\n  S(2) = 1.5   (aₙ = 0.5)\n  S(3) = 1.83333   (aₙ = 0.333333)\n  S(4) = 2.08333   (aₙ = 0.25)\n  S(5) = 2.28333   (aₙ = 0.2)"},"credits_used":5,"credits_remaining":null}},"alternating_p_series_with_p_0_5_converges_conditionally":{"summary":"Alternating p-series with p = 0.5 (converges conditionally)","value":{"tool":"series-convergence-test-calculator","tool_version":"1.0.2","outputs":{"verdict":"Converges conditionally","decisiveRule":"Alternating Series Test (Leibniz): 1/n^p decreases to 0 for 0 < p ≤ 1, but Σ 1/n^p itself diverges at p = 0.5, so convergence is conditional, not absolute.","generalTerm":"aₙ = (-1)^n / n^0.5","divergenceTest":"lim aₙ = 0","ratioTest":"L = 1 (inconclusive)","rootTest":"L = 1 (inconclusive)","partialSums":[{"n":"1","an":"-1","sn-partial-sum":"-1"},{"n":"2","an":"0.707107","sn-partial-sum":"-0.292893"},{"n":"3","an":"-0.57735","sn-partial-sum":"-0.870243"},{"n":"4","an":"0.5","sn-partial-sum":"-0.370243"},{"n":"5","an":"-0.447214","sn-partial-sum":"-0.817457"}],"steps":"Series: Alternating p-series (Σ (-1)ⁿ/nᵖ)\nGeneral term: aₙ = (-1)^n / n^0.5\nStarting index n₀ = 1\n\nDivergence (nth-term) test: lim aₙ = 0\nRatio test: L = 1 (inconclusive)\nRoot test: L = 1 (inconclusive)\n\nVerdict: Converges conditionally\nReason: Alternating Series Test (Leibniz): 1/n^p decreases to 0 for 0 < p ≤ 1, but Σ 1/n^p itself diverges at p = 0.5, so convergence is conditional, not absolute.\n\nPartial sums:\n  S(1) = -1   (aₙ = -1)\n  S(2) = -0.292893   (aₙ = 0.707107)\n  S(3) = -0.870243   (aₙ = -0.57735)\n  S(4) = -0.370243   (aₙ = 0.5)\n  S(5) = -0.817457   (aₙ = -0.447214)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Verdict"},"decisiveRule":{"type":"string","description":"Decisive rule"},"generalTerm":{"type":"string","description":"General term"},"divergenceTest":{"type":"string","description":"Divergence (nth-term) test"},"ratioTest":{"type":"string","description":"Ratio test"},"rootTest":{"type":"string","description":"Root test"},"partialSums":{"type":"array","description":"Partial sums","items":{"type":"object","properties":{"n":{"type":"string","description":"n"},"an":{"type":"string","description":"aₙ"},"sn-partial-sum":{"type":"string","description":"Sₙ (partial sum)"}}},"x-iotools-columns":["n","an","sn-partial-sum"]},"steps":{"type":"string","description":"Step-by-step derivation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/stirling-numbers-calculator":{"post":{"operationId":"run_stirling_numbers_calculator","summary":"Stirling Numbers Calculator","tags":["Calculators"],"description":"Calculate the unsigned Stirling number of the first kind, c(n,k), and the Stirling number of the second kind, S(n,k), with exact arbitrary-precision arithmetic and the surrounding rows of both triangles.\n\n[Try Stirling Numbers Calculator in your browser →](https://iotools.cloud/tool/stirling-numbers-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"n":{"type":"number","description":"n (set size)","minimum":0,"maximum":60},"k":{"type":"number","description":"k (cycles / subsets)","minimum":0,"maximum":60}},"required":["n","k"]},"examples":{"n_6_k_3":{"summary":"n = 6, k = 3","value":{"n":"6","k":"3"}},"n_5_k_2":{"summary":"n = 5, k = 2","value":{"n":"5","k":"2"}},"k_n_both_are_0_by_convention":{"summary":"k > n: both are 0 by convention","value":{"n":"3","k":"5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"n_6_k_3":{"summary":"n = 6, k = 3","value":{"tool":"stirling-numbers-calculator","tool_version":"1.0.2","outputs":{"firstKind":"225","secondKind":"90","triangleRows":[{"n":"0","c-n-0-n-first-kind":"1","s-n-0-n-second-kind":"1"},{"n":"1","c-n-0-n-first-kind":"0, 1","s-n-0-n-second-kind":"0, 1"},{"n":"2","c-n-0-n-first-kind":"0, 1, 1","s-n-0-n-second-kind":"0, 1, 1"},{"n":"3","c-n-0-n-first-kind":"0, 2, 3, 1","s-n-0-n-second-kind":"0, 1, 3, 1"},{"n":"4","c-n-0-n-first-kind":"0, 6, 11, 6, 1","s-n-0-n-second-kind":"0, 1, 7, 6, 1"},{"n":"5","c-n-0-n-first-kind":"0, 24, 50, 35, 10, 1","s-n-0-n-second-kind":"0, 1, 15, 25, 10, 1"},{"n":"6","c-n-0-n-first-kind":"0, 120, 274, 225, 85, 15, 1","s-n-0-n-second-kind":"0, 1, 31, 90, 65, 15, 1"}],"steps":"c(n, k) = c(n-1, k-1) + (n-1)·c(n-1, k)   [unsigned Stirling number of the first kind]\nS(n, k) = S(n-1, k-1) +    k·S(n-1, k)    [Stirling number of the second kind]\nBase case: c(0, 0) = S(0, 0) = 1\n\nc(6, 3) = 225 — permutations of 6 elements with exactly 3 cycles\nS(6, 3) = 90 — ways to partition a 6-element set into 3 non-empty subsets\n\nTriangle rows 0..6 (row i lists c(i,0)..c(i,i) and S(i,0)..S(i,i)):\n  n=0:  c = 1  |  S = 1\n  n=1:  c = 0, 1  |  S = 0, 1\n  n=2:  c = 0, 1, 1  |  S = 0, 1, 1\n  n=3:  c = 0, 2, 3, 1  |  S = 0, 1, 3, 1\n  n=4:  c = 0, 6, 11, 6, 1  |  S = 0, 1, 7, 6, 1\n  n=5:  c = 0, 24, 50, 35, 10, 1  |  S = 0, 1, 15, 25, 10, 1\n  n=6:  c = 0, 120, 274, 225, 85, 15, 1  |  S = 0, 1, 31, 90, 65, 15, 1"},"credits_used":5,"credits_remaining":null}},"n_5_k_2":{"summary":"n = 5, k = 2","value":{"tool":"stirling-numbers-calculator","tool_version":"1.0.2","outputs":{"firstKind":"50","secondKind":"15","triangleRows":[{"n":"0","c-n-0-n-first-kind":"1","s-n-0-n-second-kind":"1"},{"n":"1","c-n-0-n-first-kind":"0, 1","s-n-0-n-second-kind":"0, 1"},{"n":"2","c-n-0-n-first-kind":"0, 1, 1","s-n-0-n-second-kind":"0, 1, 1"},{"n":"3","c-n-0-n-first-kind":"0, 2, 3, 1","s-n-0-n-second-kind":"0, 1, 3, 1"},{"n":"4","c-n-0-n-first-kind":"0, 6, 11, 6, 1","s-n-0-n-second-kind":"0, 1, 7, 6, 1"},{"n":"5","c-n-0-n-first-kind":"0, 24, 50, 35, 10, 1","s-n-0-n-second-kind":"0, 1, 15, 25, 10, 1"}],"steps":"c(n, k) = c(n-1, k-1) + (n-1)·c(n-1, k)   [unsigned Stirling number of the first kind]\nS(n, k) = S(n-1, k-1) +    k·S(n-1, k)    [Stirling number of the second kind]\nBase case: c(0, 0) = S(0, 0) = 1\n\nc(5, 2) = 50 — permutations of 5 elements with exactly 2 cycles\nS(5, 2) = 15 — ways to partition a 5-element set into 2 non-empty subsets\n\nTriangle rows 0..5 (row i lists c(i,0)..c(i,i) and S(i,0)..S(i,i)):\n  n=0:  c = 1  |  S = 1\n  n=1:  c = 0, 1  |  S = 0, 1\n  n=2:  c = 0, 1, 1  |  S = 0, 1, 1\n  n=3:  c = 0, 2, 3, 1  |  S = 0, 1, 3, 1\n  n=4:  c = 0, 6, 11, 6, 1  |  S = 0, 1, 7, 6, 1\n  n=5:  c = 0, 24, 50, 35, 10, 1  |  S = 0, 1, 15, 25, 10, 1"},"credits_used":5,"credits_remaining":null}},"k_n_both_are_0_by_convention":{"summary":"k > n: both are 0 by convention","value":{"tool":"stirling-numbers-calculator","tool_version":"1.0.2","outputs":{"firstKind":"0","secondKind":"0","triangleRows":[{"n":"0","c-n-0-n-first-kind":"1","s-n-0-n-second-kind":"1"},{"n":"1","c-n-0-n-first-kind":"0, 1","s-n-0-n-second-kind":"0, 1"},{"n":"2","c-n-0-n-first-kind":"0, 1, 1","s-n-0-n-second-kind":"0, 1, 1"},{"n":"3","c-n-0-n-first-kind":"0, 2, 3, 1","s-n-0-n-second-kind":"0, 1, 3, 1"}],"steps":"c(n, k) = c(n-1, k-1) + (n-1)·c(n-1, k)   [unsigned Stirling number of the first kind]\nS(n, k) = S(n-1, k-1) +    k·S(n-1, k)    [Stirling number of the second kind]\nBase case: c(0, 0) = S(0, 0) = 1\n\nc(3, 5) = 0 — permutations of 3 elements with exactly 5 cycles\nS(3, 5) = 0 — ways to partition a 3-element set into 5 non-empty subsets\n\nTriangle rows 0..3 (row i lists c(i,0)..c(i,i) and S(i,0)..S(i,i)):\n  n=0:  c = 1  |  S = 1\n  n=1:  c = 0, 1  |  S = 0, 1\n  n=2:  c = 0, 1, 1  |  S = 0, 1, 1\n  n=3:  c = 0, 2, 3, 1  |  S = 0, 1, 3, 1"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"firstKind":{"type":"string","description":"Unsigned Stirling number of the first kind — c(n, k)"},"secondKind":{"type":"string","description":"Stirling number of the second kind — S(n, k)"},"triangleRows":{"type":"array","description":"Triangle rows (around n)","items":{"type":"object","properties":{"n":{"type":"string","description":"n"},"c-n-0-n-first-kind":{"type":"string","description":"c(n, 0..n) — first kind"},"s-n-0-n-second-kind":{"type":"string","description":"S(n, 0..n) — second kind"}}},"x-iotools-columns":["n","c-n-0-n-first-kind","s-n-0-n-second-kind"]},"steps":{"type":"string","description":"Step-by-Step Solution"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/torus-calculator":{"post":{"operationId":"run_torus_calculator","summary":"Torus Calculator","tags":["Calculators"],"description":"Calculate the volume, surface area, outer/inner radius and circumferences of a torus (donut shape) from its major radius (center to tube) and minor radius (tube radius).\n\n[Try Torus Calculator in your browser →](https://iotools.cloud/tool/torus-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"unit":{"enum":["mm","cm","m","km","in","ft","yd"],"description":"Unit"},"majorRadius":{"type":"number","description":"Major radius (center to tube)","minimum":0},"minorRadius":{"type":"number","description":"Minor radius (tube radius)","minimum":0}},"required":[]},"examples":{"major_radius_5_minor_radius_2_cm":{"summary":"Major radius 5, minor radius 2 (cm)","value":{"unit":"cm","majorRadius":"5","minorRadius":"2"}},"major_radius_10_minor_radius_3_in":{"summary":"Major radius 10, minor radius 3 (in)","value":{"unit":"in","majorRadius":"10","minorRadius":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"major_radius_5_minor_radius_2_cm":{"summary":"Major radius 5, minor radius 2 (cm)","value":{"tool":"torus-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Outer radius","value":"7 cm"},{"property":"Inner radius","value":"3 cm"},{"property":"Volume","value":"394.7842 cm³"},{"property":"Surface area","value":"394.7842 cm²"},{"property":"Tube circumference","value":"12.5664 cm"},{"property":"Centerline circumference","value":"31.4159 cm"}]},"credits_used":5,"credits_remaining":null}},"major_radius_10_minor_radius_3_in":{"summary":"Major radius 10, minor radius 3 (in)","value":{"tool":"torus-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Outer radius","value":"13 in"},{"property":"Inner radius","value":"7 in"},{"property":"Volume","value":"1776.5288 in³"},{"property":"Surface area","value":"1184.3525 in²"},{"property":"Tube circumference","value":"18.8496 in"},{"property":"Centerline circumference","value":"62.8319 in"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/triangle-orthocenter-calculator":{"post":{"operationId":"run_triangle_orthocenter_calculator","summary":"Triangle Orthocenter Calculator","tags":["Calculators"],"description":"Calculate a triangle's orthocenter, altitude feet and lengths, side lengths, area, and side/angle classifications from its three vertex coordinates on the Cartesian plane.\n\n[Try Triangle Orthocenter Calculator in your browser →](https://iotools.cloud/tool/triangle-orthocenter-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"precision":{"enum":["0","1","2","3","4","5","6","8","10"],"description":"Decimal precision"},"ax":{"type":"number","description":"Vertex A — x"},"ay":{"type":"number","description":"Vertex A — y"},"bx":{"type":"number","description":"Vertex B — x"},"by":{"type":"number","description":"Vertex B — y"},"cx":{"type":"number","description":"Vertex C — x"},"cy":{"type":"number","description":"Vertex C — y"}},"required":[]},"examples":{"triangle_0_0_6_0_2_5":{"summary":"Triangle (0,0), (6,0), (2,5)","value":{"precision":"4","ax":"0","ay":"0","bx":"6","by":"0","cx":"2","cy":"5"}},"right_triangle_0_0_4_0_0_3":{"summary":"Right triangle (0,0), (4,0), (0,3)","value":{"precision":"2","ax":"0","ay":"0","bx":"4","by":"0","cx":"0","cy":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"triangle_0_0_6_0_2_5":{"summary":"Triangle (0,0), (6,0), (2,5)","value":{"tool":"triangle-orthocenter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Orthocenter","value":"(2, 1.6)"},{"property":"Centroid","value":"(2.6667, 1.6667)"},{"property":"Foot of altitude from A","value":"(3.6585, 2.9268)"},{"property":"Foot of altitude from B","value":"(0.8276, 2.069)"},{"property":"Foot of altitude from C","value":"(2, 0)"},{"property":"Side a (BC, opposite A)","value":"6.4031"},{"property":"Side b (CA, opposite B)","value":"5.3852"},{"property":"Side c (AB, opposite C)","value":"6"},{"property":"Perimeter","value":"17.7883"},{"property":"Area","value":"15"},{"property":"Altitude from A","value":"4.6852"},{"property":"Altitude from B","value":"5.5709"},{"property":"Altitude from C","value":"5"},{"property":"Classification (sides)","value":"Scalene"},{"property":"Classification (angles)","value":"Acute"},{"property":"Orthocenter position","value":"Inside the triangle"}]},"credits_used":5,"credits_remaining":null}},"right_triangle_0_0_4_0_0_3":{"summary":"Right triangle (0,0), (4,0), (0,3)","value":{"tool":"triangle-orthocenter-calculator","tool_version":"1.0.2","outputs":{"results":[{"property":"Orthocenter","value":"(0, 0)"},{"property":"Centroid","value":"(1.33, 1)"},{"property":"Foot of altitude from A","value":"(1.44, 1.92)"},{"property":"Foot of altitude from B","value":"(0, 0)"},{"property":"Foot of altitude from C","value":"(0, 0)"},{"property":"Side a (BC, opposite A)","value":"5"},{"property":"Side b (CA, opposite B)","value":"3"},{"property":"Side c (AB, opposite C)","value":"4"},{"property":"Perimeter","value":"12"},{"property":"Area","value":"6"},{"property":"Altitude from A","value":"2.4"},{"property":"Altitude from B","value":"4"},{"property":"Altitude from C","value":"3"},{"property":"Classification (sides)","value":"Scalene"},{"property":"Classification (angles)","value":"Right"},{"property":"Orthocenter position","value":"On the triangle (at the right-angle vertex)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Results","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/3-way-text-diff-merge-viewer":{"post":{"operationId":"run_3_way_text_diff_merge_viewer","summary":"3-Way Text Diff & Merge Viewer","tags":["Editors"],"description":"Merge two edited versions of a text against their common base (a 3-way diff, like a Git merge). Auto-resolves non-overlapping edits and reports conflicts with a line-by-line status table.\n\n[Try 3-Way Text Diff & Merge Viewer in your browser →](https://iotools.cloud/tool/3-way-text-diff-merge-viewer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseText":{"type":"string","description":"Base (Common Ancestor)"},"localText":{"type":"string","description":"Local Version"},"remoteText":{"type":"string","description":"Remote Version"},"conflictStrategy":{"enum":["markers","local","remote","base"],"description":"On Conflict"}},"required":[]},"examples":{"sample_merge_with_a_conflict":{"summary":"Sample merge with a conflict","value":{"baseText":"Line1\nLine2\nLine3","localText":"Line1\nLine2 changed by local\nLine3 local edit","remoteText":"Line1\nLine2\nLine3 remote edit\nLine4","conflictStrategy":"markers"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_merge_with_a_conflict":{"summary":"Sample merge with a conflict","value":{"tool":"3-way-text-diff-merge-viewer","tool_version":"1.0.2","outputs":{"mergedText":"Line1\n<<<<<<< LOCAL\nLine2 changed by local\nLine3 local edit\n||||||| BASE\nLine2\nLine3\n=======\nLine2\nLine3 remote edit\nLine4\n>>>>>>> REMOTE","summary":[{"metric":"Unchanged lines","value":"1"},{"metric":"Local-only changes","value":"0"},{"metric":"Remote-only changes","value":"0"},{"metric":"Changed identically in both","value":"0"},{"metric":"Conflicting lines","value":"3"},{"metric":"Conflicts","value":"1"},{"metric":"Result","value":"1 conflict — resolve before finalizing"}],"diffTable":[{"status":"Unchanged","base":"Line1","local":"Line1","remote":"Line1"},{"status":"Conflict","base":"Line2\nLine3","local":"Line2 changed by local\nLine3 local edit","remote":"Line2\nLine3 remote edit\nLine4"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mergedText":{"type":"string","description":"Merged Text"},"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"diffTable":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"base":{"type":"string","description":"Base"},"local":{"type":"string","description":"Local"},"remote":{"type":"string","description":"Remote"}}},"x-iotools-columns":["status","base","local","remote"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/duplicate-lines-remover":{"post":{"operationId":"run_duplicate_lines_remover","summary":"Duplicate Lines Remover","tags":["Editors"],"description":"Remove duplicate lines from pasted or uploaded text. Choose case-sensitive or case-insensitive matching, trim whitespace before comparing, keep the first or last occurrence, drop blank lines, and preserve or sort the output order — with a lines-in/lines-out summary.\n\n[Try Duplicate Lines Remover in your browser →](https://iotools.cloud/tool/duplicate-lines-remover/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to Deduplicate"},"caseSensitive":{"type":"boolean","description":"Case-sensitive comparison"},"trimWhitespace":{"type":"boolean","description":"Trim whitespace before comparing"},"removeBlankLines":{"type":"boolean","description":"Remove blank lines"},"keepOccurrence":{"enum":["first","last"],"description":"Which occurrence to keep"},"orderMode":{"enum":["preserve","sort"],"description":"Output order"}},"required":[]},"examples":{"case_sensitive":{"summary":"Case-sensitive","value":{"inputText":"apple\nApple\nbanana\nBanana\ngrape\napple","caseSensitive":"true","trimWhitespace":"","removeBlankLines":"","keepOccurrence":"first","orderMode":"preserve"}},"case_insensitive":{"summary":"Case-insensitive","value":{"inputText":"apple\nApple\nbanana\nBanana\ngrape\napple","caseSensitive":"","trimWhitespace":"","removeBlankLines":"","keepOccurrence":"first","orderMode":"preserve"}},"keep_last_trim_remove_blanks_sort":{"summary":"Keep last, trim, remove blanks, sort","value":{"inputText":"banana\n apple \ngrape\n\napple\nbanana \n  \ncherry","caseSensitive":"true","trimWhitespace":"true","removeBlankLines":"true","keepOccurrence":"last","orderMode":"sort"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"case_sensitive":{"summary":"Case-sensitive","value":{"tool":"duplicate-lines-remover","tool_version":"1.0.2","outputs":{"outputText":"apple\nApple\nbanana\nBanana\ngrape","stats":[{"metric":"Lines in","value":"6"},{"metric":"Blank lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"1"},{"metric":"Lines out","value":"5"}]},"credits_used":5,"credits_remaining":null}},"case_insensitive":{"summary":"Case-insensitive","value":{"tool":"duplicate-lines-remover","tool_version":"1.0.2","outputs":{"outputText":"apple\nbanana\ngrape","stats":[{"metric":"Lines in","value":"6"},{"metric":"Blank lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"3"},{"metric":"Lines out","value":"3"}]},"credits_used":5,"credits_remaining":null}},"keep_last_trim_remove_blanks_sort":{"summary":"Keep last, trim, remove blanks, sort","value":{"tool":"duplicate-lines-remover","tool_version":"1.0.2","outputs":{"outputText":"apple\nbanana \ncherry\ngrape","stats":[{"metric":"Lines in","value":"8"},{"metric":"Blank lines removed","value":"2"},{"metric":"Duplicate lines removed","value":"2"},{"metric":"Lines out","value":"4"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Deduplicated Text"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/git-conflict-remover":{"post":{"operationId":"run_git_conflict_remover","summary":"Git Conflict Remover","tags":["Editors"],"description":"Resolve Git merge conflicts in pasted code. Parses &lt;&lt;&lt;&lt;&lt;&lt;&lt;, =======, >>>>>>> (and optional diff3 |||||||) markers and rewrites every conflict block by keeping ours, theirs, both sides, or neither — removing all markers.\n\n[Try Git Conflict Remover in your browser →](https://iotools.cloud/tool/git-conflict-remover/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Code with Conflict Markers"},"mode":{"enum":["ours","theirs","both","none"],"description":"Resolve conflicts by keeping"}},"required":[]},"examples":{"keep_ours":{"summary":"Keep ours","value":{"mode":"ours","inputText":"function greet() {\n<<<<<<< HEAD\n  return \"Hello from main\";\n=======\n  return \"Hi from feature\";\n>>>>>>> feature/greeting\n}"}},"keep_theirs":{"summary":"Keep theirs","value":{"mode":"theirs","inputText":"function greet() {\n<<<<<<< HEAD\n  return \"Hello from main\";\n=======\n  return \"Hi from feature\";\n>>>>>>> feature/greeting\n}"}},"multiple_conflicts_keep_ours":{"summary":"Multiple conflicts, keep ours","value":{"mode":"ours","inputText":"const config = {\n<<<<<<< HEAD\n  timeout: 3000,\n=======\n  timeout: 5000,\n>>>>>>> develop\n  retries: 3,\n<<<<<<< HEAD\n  debug: false,\n=======\n  debug: true,\n>>>>>>> develop\n};"}},"keep_both_sides":{"summary":"Keep both sides","value":{"mode":"both","inputText":"<<<<<<< HEAD\napple\n=======\nbanana\n>>>>>>> feature"}},"diff3_markers_remove_keeping_neither":{"summary":"diff3 markers, remove keeping neither","value":{"mode":"none","inputText":"color: red;\n<<<<<<< HEAD\ncolor: blue;\n||||||| merged common ancestors\ncolor: green;\n=======\ncolor: purple;\n>>>>>>> branch\nmargin: 0;"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"keep_ours":{"summary":"Keep ours","value":{"tool":"git-conflict-remover","tool_version":"1.0.2","outputs":{"resolvedOutput":"function greet() {\n  return \"Hello from main\";\n}"},"credits_used":5,"credits_remaining":null}},"keep_theirs":{"summary":"Keep theirs","value":{"tool":"git-conflict-remover","tool_version":"1.0.2","outputs":{"resolvedOutput":"function greet() {\n  return \"Hi from feature\";\n}"},"credits_used":5,"credits_remaining":null}},"multiple_conflicts_keep_ours":{"summary":"Multiple conflicts, keep ours","value":{"tool":"git-conflict-remover","tool_version":"1.0.2","outputs":{"resolvedOutput":"const config = {\n  timeout: 3000,\n  retries: 3,\n  debug: false,\n};"},"credits_used":5,"credits_remaining":null}},"keep_both_sides":{"summary":"Keep both sides","value":{"tool":"git-conflict-remover","tool_version":"1.0.2","outputs":{"resolvedOutput":"apple\nbanana"},"credits_used":5,"credits_remaining":null}},"diff3_markers_remove_keeping_neither":{"summary":"diff3 markers, remove keeping neither","value":{"tool":"git-conflict-remover","tool_version":"1.0.2","outputs":{"resolvedOutput":"color: red;\nmargin: 0;"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resolvedOutput":{"type":"string","description":"Resolved Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/line-tools":{"post":{"operationId":"run_line_tools","summary":"Line Tools","tags":["Editors"],"description":"Clean up and reorder lines of text in one pass: trim whitespace, drop empty or duplicate lines, sort alphabetically/numerically/by length, reverse or shuffle the order, and add line numbers — combine any of them and see a lines-in/lines-out summary. Runs entirely in your browser, no sign-up.\n\n[Try Line Tools in your browser →](https://iotools.cloud/tool/line-tools/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Lines"},"trimLines":{"type":"boolean","description":"Trim whitespace from each line"},"removeEmptyLines":{"type":"boolean","description":"Remove empty lines"},"dedupe":{"type":"boolean","description":"Remove duplicate lines"},"sortMode":{"enum":["none","az","za","numeric-asc","numeric-desc","length-asc","length-desc","reverse","shuffle"],"description":"Sort / shuffle"},"addNumbers":{"type":"boolean","description":"Add line numbers"}},"required":[]},"examples":{"clean_up_sort_a_z":{"summary":"Clean up + sort A → Z","value":{"inputText":"banana\n  apple \ncherry\napple\n\ncherry","trimLines":"true","removeEmptyLines":"true","dedupe":"true","sortMode":"az","addNumbers":""}},"sort_z_a":{"summary":"Sort Z → A","value":{"inputText":"banana\napple\ncherry","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"za","addNumbers":""}},"sort_numerically_low_high":{"summary":"Sort numerically (low → high)","value":{"inputText":"10\n2\nbanana\n33\n4","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"numeric-asc","addNumbers":""}},"sort_numerically_high_low_add_line_numbers":{"summary":"Sort numerically (high → low) + add line numbers","value":{"inputText":"10\n2\nbanana\n33\n4","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"numeric-desc","addNumbers":"true"}},"sort_by_length_short_long":{"summary":"Sort by length (short → long)","value":{"inputText":"ccc\na\nbb","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"length-asc","addNumbers":""}},"reverse_order":{"summary":"Reverse order","value":{"inputText":"one\ntwo\nthree","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"reverse","addNumbers":""}},"shuffle_randomly":{"summary":"Shuffle randomly","value":{"inputText":"John\nJane\nDoe","trimLines":"","removeEmptyLines":"","dedupe":"","sortMode":"shuffle","addNumbers":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"clean_up_sort_a_z":{"summary":"Clean up + sort A → Z","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"apple\nbanana\ncherry","stats":[{"metric":"Lines in","value":"6"},{"metric":"Empty lines removed","value":"1"},{"metric":"Duplicate lines removed","value":"2"},{"metric":"Lines out","value":"3"}]},"credits_used":5,"credits_remaining":null}},"sort_z_a":{"summary":"Sort Z → A","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"cherry\nbanana\napple","stats":[{"metric":"Lines in","value":"3"},{"metric":"Empty lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"0"},{"metric":"Lines out","value":"3"}]},"credits_used":5,"credits_remaining":null}},"sort_numerically_low_high":{"summary":"Sort numerically (low → high)","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"2\n4\n10\n33\nbanana","stats":[{"metric":"Lines in","value":"5"},{"metric":"Empty lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"0"},{"metric":"Lines out","value":"5"}]},"credits_used":5,"credits_remaining":null}},"sort_numerically_high_low_add_line_numbers":{"summary":"Sort numerically (high → low) + add line numbers","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"1. 33\n2. 10\n3. 4\n4. 2\n5. banana","stats":[{"metric":"Lines in","value":"5"},{"metric":"Empty lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"0"},{"metric":"Lines out","value":"5"}]},"credits_used":5,"credits_remaining":null}},"sort_by_length_short_long":{"summary":"Sort by length (short → long)","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"a\nbb\nccc","stats":[{"metric":"Lines in","value":"3"},{"metric":"Empty lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"0"},{"metric":"Lines out","value":"3"}]},"credits_used":5,"credits_remaining":null}},"reverse_order":{"summary":"Reverse order","value":{"tool":"line-tools","tool_version":"1.0.2","outputs":{"outputText":"three\ntwo\none","stats":[{"metric":"Lines in","value":"3"},{"metric":"Empty lines removed","value":"0"},{"metric":"Duplicate lines removed","value":"0"},{"metric":"Lines out","value":"3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outputText":{"type":"string","description":"Result"},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-editor":{"post":{"operationId":"run_markdown_editor","summary":"Markdown Editor","tags":["Editors"],"description":"Write Markdown and render it to HTML with fine-grained Showdown options — autolinks, literal mid-word underscores/asterisks, strikethrough, tables, simple line breaks, open-links-in-new-window and emoji. Preview live and copy the source.\n\n[Try Markdown Editor in your browser →](https://iotools.cloud/tool/markdown-editor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown"},"simplifiedAutoLink":{"type":"boolean","description":"Simplified auto-link — turn bare URLs into clickable links"},"literalMidWordUnderscores":{"type":"boolean","description":"Literal mid-word underscores — don't treat some_long_name as emphasis"},"literalMidWordAsterisks":{"type":"boolean","description":"Literal mid-word asterisks — don't treat a*b*c as emphasis"},"supportStrikethrough":{"type":"boolean","description":"Strikethrough — render ~~text~~ as struck-out text"},"supportTables":{"type":"boolean","description":"Tables — render GFM pipe tables (delimiter row needs |---|---|)"},"simpleLineBreaks":{"type":"boolean","description":"Simple line breaks — turn a single newline into &lt;br> (GitHub comment style)"},"openLinksInNewWindow":{"type":"boolean","description":"Open links in new window — add target=\"_blank\" to output links"},"supportEmoji":{"type":"boolean","description":"Emoji — convert shortcodes like :smile: to 😄"}},"required":[]},"examples":{"release_notes_default_options":{"summary":"Release notes (default options)","value":{"markdown":"# Release notes\n\nRead the docs at https://iotools.cloud\n\nStatus: ~~beta~~ stable :tada:\n\n| Feature | State |\n|---|---|\n| Editor | live |","simplifiedAutoLink":"true","literalMidWordUnderscores":"","literalMidWordAsterisks":"","supportStrikethrough":"true","supportTables":"true","simpleLineBreaks":"","openLinksInNewWindow":"true","supportEmoji":"true"}},"literal_mid_word_underscores_code_identifiers":{"summary":"Literal mid-word underscores (code identifiers)","value":{"markdown":"Call some_long_function_name() then read user_id.","simplifiedAutoLink":"","literalMidWordUnderscores":"true","literalMidWordAsterisks":"","supportStrikethrough":"","supportTables":"","simpleLineBreaks":"","openLinksInNewWindow":"","supportEmoji":""}},"simple_line_breaks":{"summary":"Simple line breaks","value":{"markdown":"Roses are red\nViolets are blue","simplifiedAutoLink":"","literalMidWordUnderscores":"","literalMidWordAsterisks":"","supportStrikethrough":"","supportTables":"","simpleLineBreaks":"true","openLinksInNewWindow":"","supportEmoji":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"release_notes_default_options":{"summary":"Release notes (default options)","value":{"tool":"markdown-editor","tool_version":"1.0.2","outputs":{"html":"<h1 id=\"releasenotes\">Release notes</h1>\n<p>Read the docs at <a href=\"https://iotools.cloud\" rel=\"noopener noreferrer\" target=\"_blank\">https://iotools.cloud</a></p>\n<p>Status: <del>beta</del> stable 🎉</p>\n<table>\n<thead>\n<tr>\n<th>Feature</th>\n<th>State</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Editor</td>\n<td>live</td>\n</tr>\n</tbody>\n</table>"},"credits_used":5,"credits_remaining":null}},"literal_mid_word_underscores_code_identifiers":{"summary":"Literal mid-word underscores (code identifiers)","value":{"tool":"markdown-editor","tool_version":"1.0.2","outputs":{"html":"<p>Call some_long_function_name() then read user_id.</p>"},"credits_used":5,"credits_remaining":null}},"simple_line_breaks":{"summary":"Simple line breaks","value":{"tool":"markdown-editor","tool_version":"1.0.2","outputs":{"html":"<p>Roses are red<br />\nViolets are blue</p>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"html":{"type":"string","description":"HTML source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/grammar-checker":{"post":{"operationId":"run_grammar_checker","summary":"Grammar Checker","tags":["Editors"],"description":"Check text with AI for grammar, spelling, punctuation, and style issues — get a corrected version plus an itemized list of exactly what changed and why.\n\n[Try Grammar Checker in your browser →](https://iotools.cloud/tool/grammar-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to check"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"Their are several reason why this approach dont work good. First, the team have not tested it enough times, and second the results was inconsistent across every trial we run."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"correctedText":{"type":"string","description":"Corrected text"},"diffHtml":{"type":"string","description":"Diff HTML"},"issuesFound":{"type":"string","description":"Issues found"},"issueCount":{"type":"string","description":"Issue count"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-humanizer":{"post":{"operationId":"run_ai_humanizer","summary":"AI Humanizer","tags":["Editors"],"description":"Rewrite AI-generated or stiff-sounding text with AI so it reads more like natural human writing — pick how heavily to rework it, from light polish to a thorough rewrite.\n\n[Try AI Humanizer in your browser →](https://iotools.cloud/tool/ai-humanizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to humanize"},"intensity":{"enum":["light","moderate","aggressive"],"description":"Rework intensity"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"The advancement of artificial intelligence has fundamentally transformed the landscape of modern technology. Furthermore, it is important to note that machine learning algorithms have demonstrated remarkable capabilities across a wide range of applications. In conclusion, these systems continue to reshape numerous industries."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"humanizedText":{"type":"string","description":"Humanized text"},"stats":{"type":"string","description":"Word count"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/accessible-color-pair-finder":{"post":{"operationId":"run_accessible_color_pair_finder","summary":"Accessible Color Pair Finder","tags":["Utilities"],"description":"Check WCAG 2.x color contrast between a foreground and background color: get the exact contrast ratio, pass/fail for AA and AAA at normal and large text sizes, and a suggested accessible foreground color when the pair fails.\n\n[Try Accessible Color Pair Finder in your browser →](https://iotools.cloud/tool/accessible-color-pair-finder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"foregroundColor":{"type":"string","description":"Foreground (Text) Color"},"backgroundColor":{"type":"string","description":"Background Color"}},"required":[]},"examples":{"black_text_on_white_background":{"summary":"Black text on white background","value":{"foregroundColor":"#000000","backgroundColor":"#FFFFFF"}},"light_gray_on_white_fails_gets_a_suggestion":{"summary":"Light gray on white (fails, gets a suggestion)","value":{"foregroundColor":"#AAAAAA","backgroundColor":"#FFFFFF"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"black_text_on_white_background":{"summary":"Black text on white background","value":{"tool":"accessible-color-pair-finder","tool_version":"1.0.2","outputs":{"contrastTable":[{"metric":"Contrast Ratio","value":"21.00:1"},{"metric":"WCAG AA — Normal Text (≥ 4.5:1)","value":"Pass"},{"metric":"WCAG AA — Large Text (≥ 3:1)","value":"Pass"},{"metric":"WCAG AAA — Normal Text (≥ 7:1)","value":"Pass"},{"metric":"WCAG AAA — Large Text (≥ 4.5:1)","value":"Pass"},{"metric":"Foreground Relative Luminance","value":"0.00000"},{"metric":"Background Relative Luminance","value":"1.00000"}],"suggestedForeground":"#000000"},"credits_used":5,"credits_remaining":null}},"light_gray_on_white_fails_gets_a_suggestion":{"summary":"Light gray on white (fails, gets a suggestion)","value":{"tool":"accessible-color-pair-finder","tool_version":"1.0.2","outputs":{"contrastTable":[{"metric":"Contrast Ratio","value":"2.32:1"},{"metric":"WCAG AA — Normal Text (≥ 4.5:1)","value":"Fail"},{"metric":"WCAG AA — Large Text (≥ 3:1)","value":"Fail"},{"metric":"WCAG AAA — Normal Text (≥ 7:1)","value":"Fail"},{"metric":"WCAG AAA — Large Text (≥ 4.5:1)","value":"Fail"},{"metric":"Foreground Relative Luminance","value":"0.40198"},{"metric":"Background Relative Luminance","value":"1.00000"}],"suggestedForeground":"#757575"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"contrastTable":{"type":"array","description":"Contrast Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"suggestedForeground":{"type":"string","description":"Suggested Accessible Foreground (AA Normal, ≥ 4.5:1)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-bot-access-tester":{"post":{"operationId":"run_ai_bot_access_tester","summary":"AI Bot Access Tester","tags":["Utilities"],"description":"Check which AI crawlers your robots.txt blocks. Tests GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot and 28 more against a pasted robots.txt using RFC 9309 precedence, grouped by whether the bot trains models, powers AI search, or fetches on a user's behalf — and emits a ready-to-paste block for the ones still allowed.\n\n[Try AI Bot Access Tester in your browser →](https://iotools.cloud/tool/ai-bot-access-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"robots":{"type":"string","description":"Robots.txt content"},"testUrl":{"type":"string","description":"URL / path to test"},"purpose":{"enum":["all","training","search","user"],"description":"Crawlers to show"}},"required":[]},"examples":{"site_blocking_three_ai_crawlers":{"summary":"Site blocking three AI crawlers","value":{"robots":"User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/","purpose":"all"}},"training_crawlers_only":{"summary":"Training crawlers only","value":{"robots":"User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/","purpose":"training"}},"ai_search_engines_on_a_blog_post":{"summary":"AI search engines on a blog post","value":{"robots":"User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/blog/hello-world","purpose":"search"}},"admin_path_blocked_for_everyone_by_the_default_group":{"summary":"Admin path blocked for everyone by the default group","value":{"robots":"User-agent: *\nDisallow: /admin/\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nUser-agent: Google-Extended\nDisallow: /\n\nUser-agent: PerplexityBot\nAllow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/admin/settings","purpose":"user"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"site_blocking_three_ai_crawlers":{"summary":"Site blocking three AI crawlers","value":{"tool":"ai-bot-access-tester","tool_version":"1.0.2","outputs":{"summary":"3 of 33 AI crawlers blocked from /","results":[{"crawler":"GPTBot","operator":"OpenAI","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 5)"},{"crawler":"ClaudeBot","operator":"Anthropic","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"anthropic-ai","operator":"Anthropic","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Google-Extended","operator":"Google","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 11)"},{"crawler":"GoogleOther","operator":"Google","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Applebot-Extended","operator":"Apple","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"meta-externalagent","operator":"Meta","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"FacebookBot","operator":"Meta","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"CCBot","operator":"Common Crawl","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 8)"},{"crawler":"Bytespider","operator":"ByteDance","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Amazonbot","operator":"Amazon","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Diffbot","operator":"Diffbot","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Omgilibot","operator":"Webz.io","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Webzio-Extended","operator":"Webz.io","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"ImagesiftBot","operator":"Hive","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"AI2Bot","operator":"Allen Institute for AI","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"cohere-ai","operator":"Cohere","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"PanguBot","operator":"Huawei","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Timpibot","operator":"Timpi","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Kangaroo Bot","operator":"Kangaroo LLM","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"SemrushBot-OCOB","operator":"Semrush","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"OAI-SearchBot","operator":"OpenAI","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Claude-SearchBot","operator":"Anthropic","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"PerplexityBot","operator":"Perplexity","purpose":"AI search","access":"Allowed","deciding-rule":"Allow: / (line 14)"},{"crawler":"Applebot","operator":"Apple","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"DuckAssistBot","operator":"DuckDuckGo","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"YouBot","operator":"You.com","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"ChatGPT-User","operator":"OpenAI","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Claude-User","operator":"Anthropic","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Perplexity-User","operator":"Perplexity","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"meta-externalfetcher","operator":"Meta","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"MistralAI-User","operator":"Mistral AI","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Google-CloudVertexBot","operator":"Google","purpose":"User-triggered","access":"Allowed","deciding-rule":"* (default group) — no matching rule"}],"snippet":"# Blocks the 30 AI crawlers still allowed to fetch /.\n# Append to robots.txt at the site root.\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: anthropic-ai\nDisallow: /\n\nUser-agent: GoogleOther\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\nUser-agent: FacebookBot\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Diffbot\nDisallow: /\n\nUser-agent: Omgilibot\nDisallow: /\n\nUser-agent: Webzio-Extended\nDisallow: /\n\nUser-agent: ImagesiftBot\nDisallow: /\n\nUser-agent: AI2Bot\nDisallow: /\n\nUser-agent: cohere-ai\nDisallow: /\n\nUser-agent: PanguBot\nDisallow: /\n\nUser-agent: Timpibot\nDisallow: /\n\nUser-agent: Kangaroo Bot\nDisallow: /\n\nUser-agent: SemrushBot-OCOB\nDisallow: /\n\nUser-agent: OAI-SearchBot\nDisallow: /\n\nUser-agent: Claude-SearchBot\nDisallow: /\n\nUser-agent: PerplexityBot\nDisallow: /\n\nUser-agent: Applebot\nDisallow: /\n\nUser-agent: DuckAssistBot\nDisallow: /\n\nUser-agent: YouBot\nDisallow: /\n\nUser-agent: ChatGPT-User\nDisallow: /\n\nUser-agent: Claude-User\nDisallow: /\n\nUser-agent: Perplexity-User\nDisallow: /\n\nUser-agent: meta-externalfetcher\nDisallow: /\n\nUser-agent: MistralAI-User\nDisallow: /\n\nUser-agent: Google-CloudVertexBot\nDisallow: /"},"credits_used":5,"credits_remaining":null}},"training_crawlers_only":{"summary":"Training crawlers only","value":{"tool":"ai-bot-access-tester","tool_version":"1.0.2","outputs":{"summary":"3 of 21 AI crawlers blocked from /","results":[{"crawler":"GPTBot","operator":"OpenAI","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 5)"},{"crawler":"ClaudeBot","operator":"Anthropic","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"anthropic-ai","operator":"Anthropic","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Google-Extended","operator":"Google","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 11)"},{"crawler":"GoogleOther","operator":"Google","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Applebot-Extended","operator":"Apple","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"meta-externalagent","operator":"Meta","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"FacebookBot","operator":"Meta","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"CCBot","operator":"Common Crawl","purpose":"Model training","access":"Blocked","deciding-rule":"Disallow: / (line 8)"},{"crawler":"Bytespider","operator":"ByteDance","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Amazonbot","operator":"Amazon","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Diffbot","operator":"Diffbot","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Omgilibot","operator":"Webz.io","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Webzio-Extended","operator":"Webz.io","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"ImagesiftBot","operator":"Hive","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"AI2Bot","operator":"Allen Institute for AI","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"cohere-ai","operator":"Cohere","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"PanguBot","operator":"Huawei","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Timpibot","operator":"Timpi","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Kangaroo Bot","operator":"Kangaroo LLM","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"SemrushBot-OCOB","operator":"Semrush","purpose":"Model training","access":"Allowed","deciding-rule":"* (default group) — no matching rule"}],"snippet":"# Blocks the 18 AI crawlers still allowed to fetch /.\n# Append to robots.txt at the site root.\n\nUser-agent: ClaudeBot\nDisallow: /\n\nUser-agent: anthropic-ai\nDisallow: /\n\nUser-agent: GoogleOther\nDisallow: /\n\nUser-agent: Applebot-Extended\nDisallow: /\n\nUser-agent: meta-externalagent\nDisallow: /\n\nUser-agent: FacebookBot\nDisallow: /\n\nUser-agent: Bytespider\nDisallow: /\n\nUser-agent: Amazonbot\nDisallow: /\n\nUser-agent: Diffbot\nDisallow: /\n\nUser-agent: Omgilibot\nDisallow: /\n\nUser-agent: Webzio-Extended\nDisallow: /\n\nUser-agent: ImagesiftBot\nDisallow: /\n\nUser-agent: AI2Bot\nDisallow: /\n\nUser-agent: cohere-ai\nDisallow: /\n\nUser-agent: PanguBot\nDisallow: /\n\nUser-agent: Timpibot\nDisallow: /\n\nUser-agent: Kangaroo Bot\nDisallow: /\n\nUser-agent: SemrushBot-OCOB\nDisallow: /"},"credits_used":5,"credits_remaining":null}},"ai_search_engines_on_a_blog_post":{"summary":"AI search engines on a blog post","value":{"tool":"ai-bot-access-tester","tool_version":"1.0.2","outputs":{"summary":"0 of 6 AI crawlers blocked from /blog/hello-world","results":[{"crawler":"OAI-SearchBot","operator":"OpenAI","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"Claude-SearchBot","operator":"Anthropic","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"PerplexityBot","operator":"Perplexity","purpose":"AI search","access":"Allowed","deciding-rule":"Allow: / (line 14)"},{"crawler":"Applebot","operator":"Apple","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"DuckAssistBot","operator":"DuckDuckGo","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"},{"crawler":"YouBot","operator":"You.com","purpose":"AI search","access":"Allowed","deciding-rule":"* (default group) — no matching rule"}],"snippet":"# Blocks the 6 AI crawlers still allowed to fetch /blog/hello-world.\n# Append to robots.txt at the site root.\n\nUser-agent: OAI-SearchBot\nDisallow: /\n\nUser-agent: Claude-SearchBot\nDisallow: /\n\nUser-agent: PerplexityBot\nDisallow: /\n\nUser-agent: Applebot\nDisallow: /\n\nUser-agent: DuckAssistBot\nDisallow: /\n\nUser-agent: YouBot\nDisallow: /"},"credits_used":5,"credits_remaining":null}},"admin_path_blocked_for_everyone_by_the_default_group":{"summary":"Admin path blocked for everyone by the default group","value":{"tool":"ai-bot-access-tester","tool_version":"1.0.2","outputs":{"summary":"6 of 6 AI crawlers blocked from /admin/settings","results":[{"crawler":"ChatGPT-User","operator":"OpenAI","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"},{"crawler":"Claude-User","operator":"Anthropic","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"},{"crawler":"Perplexity-User","operator":"Perplexity","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"},{"crawler":"meta-externalfetcher","operator":"Meta","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"},{"crawler":"MistralAI-User","operator":"Mistral AI","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"},{"crawler":"Google-CloudVertexBot","operator":"Google","purpose":"User-triggered","access":"Blocked","deciding-rule":"Disallow: /admin/ (line 2)"}],"snippet":"# Every AI crawler checked is already blocked from /admin/settings."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"results":{"type":"array","description":"Per-crawler verdict","items":{"type":"object","properties":{"crawler":{"type":"string","description":"Crawler"},"operator":{"type":"string","description":"Operator"},"purpose":{"type":"string","description":"Purpose"},"access":{"type":"string","description":"Access"},"deciding-rule":{"type":"string","description":"Deciding rule"}}},"x-iotools-columns":["crawler","operator","purpose","access","deciding-rule"]},"snippet":{"type":"string","description":"robots.txt block for every crawler still allowed"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/api-secret-scanner-redactor":{"post":{"operationId":"run_api_secret_scanner_redactor","summary":"API Secret Scanner & Redactor","tags":["Utilities"],"description":"Scan code, config files, or logs for hardcoded API keys, tokens, and passwords — over 20 provider-specific patterns plus optional generic secret detection — and produce a redacted copy.\n\n[Try API Secret Scanner & Redactor in your browser →](https://iotools.cloud/tool/api-secret-scanner-redactor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Code, Config or Logs"},"redactionStyle":{"enum":["label","mask","partial"],"description":"Redaction Style"},"genericScan":{"type":"boolean","description":"Detect generic key/secret/password assignments (more matches, may include false positives)"}},"required":[]},"examples":{"mixed_secrets_labeled_redaction":{"summary":"Mixed secrets, labeled redaction","value":{"inputText":"# Example configuration (fake secrets)\nAWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE\naws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\nGITHUB_TOKEN=ghp_1234567890abcdefghijklmnopqrstuvwxyz\nSTRIPE_KEY=sk_live_4eC39HqLyjWDarjtT1zdp7dc\nGOOGLE_API_KEY=AIzaSyD-1234567890abcdefghijklmnopqrstu\nDATABASE_URL=postgres://admin:s3cr3tP%40ss@db.example.com:5432/app\nJWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U\napi_key: 'a1b2c3d4e5f6g7h8i9j0klmno'\nSLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX","redactionStyle":"label","genericScan":"true"}},"partial_redaction_no_generic_scan":{"summary":"Partial redaction, no generic scan","value":{"inputText":"# Example configuration (fake secrets)\nAWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE\naws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\nGITHUB_TOKEN=ghp_1234567890abcdefghijklmnopqrstuvwxyz\nSTRIPE_KEY=sk_live_4eC39HqLyjWDarjtT1zdp7dc\nGOOGLE_API_KEY=AIzaSyD-1234567890abcdefghijklmnopqrstu\nDATABASE_URL=postgres://admin:s3cr3tP%40ss@db.example.com:5432/app\nJWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U\napi_key: 'a1b2c3d4e5f6g7h8i9j0klmno'\nSLACK_WEBHOOK=https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX","redactionStyle":"partial","genericScan":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_secrets_labeled_redaction":{"summary":"Mixed secrets, labeled redaction","value":{"tool":"api-secret-scanner-redactor","tool_version":"1.0.2","outputs":{"summary":[{"type":"Total","count":"9"},{"type":"AWS Access Key ID","count":"1"},{"type":"AWS Secret Access Key","count":"1"},{"type":"GitHub Token","count":"1"},{"type":"Stripe Secret Key","count":"1"},{"type":"Google API Key","count":"1"},{"type":"Connection String Credentials","count":"1"},{"type":"JSON Web Token (JWT)","count":"1"},{"type":"Generic Secret Assignment","count":"1"},{"type":"Slack Webhook","count":"1"}],"findings":[{"line":"2","type":"AWS Access Key ID","confidence":"high","masked-preview":"AKIA…••••••••…MPLE"},{"line":"3","type":"AWS Secret Access Key","confidence":"medium","masked-preview":"wJal…••••••••…EKEY"},{"line":"4","type":"GitHub Token","confidence":"high","masked-preview":"ghp_…••••••••…wxyz"},{"line":"5","type":"Stripe Secret Key","confidence":"high","masked-preview":"sk_l…••••••••…p7dc"},{"line":"6","type":"Google API Key","confidence":"high","masked-preview":"AIza…••••••••…rstu"},{"line":"7","type":"Connection String Credentials","confidence":"medium","masked-preview":"s3cr…••••…40ss"},{"line":"8","type":"JSON Web Token (JWT)","confidence":"high","masked-preview":"eyJh…••••••••…sR8U"},{"line":"9","type":"Generic Secret Assignment","confidence":"low","masked-preview":"a1b2…••••••••…lmno"},{"line":"10","type":"Slack Webhook","confidence":"high","masked-preview":"http…••••••••…XXXX"}],"redactedOutput":"# Example configuration (fake secrets)\nAWS_ACCESS_KEY_ID=[REDACTED_AWS_ACCESS_KEY_ID]\naws_secret_access_key = [REDACTED_AWS_SECRET_ACCESS_KEY]\nGITHUB_TOKEN=[REDACTED_GITHUB_TOKEN]\nSTRIPE_KEY=[REDACTED_STRIPE_SECRET_KEY]\nGOOGLE_API_KEY=[REDACTED_GOOGLE_API_KEY]\nDATABASE_URL=postgres://admin:[REDACTED_CONNECTION_STRING_CREDENTIALS]@db.example.com:5432/app\nJWT=[REDACTED_JSON_WEB_TOKEN_JWT]\napi_key: '[REDACTED_GENERIC_SECRET_ASSIGNMENT]'\nSLACK_WEBHOOK=[REDACTED_SLACK_WEBHOOK]"},"credits_used":5,"credits_remaining":null}},"partial_redaction_no_generic_scan":{"summary":"Partial redaction, no generic scan","value":{"tool":"api-secret-scanner-redactor","tool_version":"1.0.2","outputs":{"summary":[{"type":"Total","count":"8"},{"type":"AWS Access Key ID","count":"1"},{"type":"AWS Secret Access Key","count":"1"},{"type":"GitHub Token","count":"1"},{"type":"Stripe Secret Key","count":"1"},{"type":"Google API Key","count":"1"},{"type":"Connection String Credentials","count":"1"},{"type":"JSON Web Token (JWT)","count":"1"},{"type":"Slack Webhook","count":"1"}],"findings":[{"line":"2","type":"AWS Access Key ID","confidence":"high","masked-preview":"AKIA…••••••••…MPLE"},{"line":"3","type":"AWS Secret Access Key","confidence":"medium","masked-preview":"wJal…••••••••…EKEY"},{"line":"4","type":"GitHub Token","confidence":"high","masked-preview":"ghp_…••••••••…wxyz"},{"line":"5","type":"Stripe Secret Key","confidence":"high","masked-preview":"sk_l…••••••••…p7dc"},{"line":"6","type":"Google API Key","confidence":"high","masked-preview":"AIza…••••••••…rstu"},{"line":"7","type":"Connection String Credentials","confidence":"medium","masked-preview":"s3cr…••••…40ss"},{"line":"8","type":"JSON Web Token (JWT)","confidence":"high","masked-preview":"eyJh…••••••••…sR8U"},{"line":"10","type":"Slack Webhook","confidence":"high","masked-preview":"http…••••••••…XXXX"}],"redactedOutput":"# Example configuration (fake secrets)\nAWS_ACCESS_KEY_ID=AKIA************MPLE\naws_secret_access_key = wJal************EKEY\nGITHUB_TOKEN=ghp_************wxyz\nSTRIPE_KEY=sk_l************p7dc\nGOOGLE_API_KEY=AIza************rstu\nDATABASE_URL=postgres://admin:s3cr****40ss@db.example.com:5432/app\nJWT=eyJh************sR8U\napi_key: 'a1b2c3d4e5f6g7h8i9j0klmno'\nSLACK_WEBHOOK=http************XXXX"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["type","count"]},"findings":{"type":"array","description":"Findings","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"type":{"type":"string","description":"Type"},"confidence":{"type":"string","description":"Confidence"},"masked-preview":{"type":"string","description":"Masked Preview"}}},"x-iotools-columns":["line","type","confidence","masked-preview"]},"redactedOutput":{"type":"string","description":"Redacted Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/asn1-parser":{"post":{"operationId":"run_asn1_parser","summary":"ASN.1 / DER Parser","tags":["Utilities"],"description":"Parse a DER-encoded ASN.1 structure (Base64 or hex — X.509 certificates, PKCS blobs, and other DER-based formats) into a tag/length/value tree.\n\n[Try ASN.1 / DER Parser in your browser →](https://iotools.cloud/tool/asn1-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"asn1Input":{"type":"string","description":"ASN.1 Data (DER)"},"inputFormat":{"enum":["auto","pem","base64","hex"],"description":"Input Format"}},"required":[]},"examples":{"sequence_integer_5_octet_string_hi":{"summary":"SEQUENCE { INTEGER 5, OCTET STRING \"hi\" }","value":{"asn1Input":"MAcCAQUEAmhp","inputFormat":"auto"}},"truncated_malformed_input_declared_length_exceeds_data":{"summary":"Truncated/malformed input (declared length exceeds data)","value":{"asn1Input":"3009020105","inputFormat":"hex"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sequence_integer_5_octet_string_hi":{"summary":"SEQUENCE { INTEGER 5, OCTET STRING \"hi\" }","value":{"tool":"asn1-parser","tool_version":"1.0.2","outputs":{"tree":[{"depth":"0","tag":"SEQUENCE (constructed)","length":"7","value":""},{"depth":"1","tag":"INTEGER","length":"1","value":"5"},{"depth":"1","tag":"OCTET STRING","length":"2","value":"68 69"}]},"credits_used":5,"credits_remaining":null}},"truncated_malformed_input_declared_length_exceeds_data":{"summary":"Truncated/malformed input (declared length exceeds data)","value":{"tool":"asn1-parser","tool_version":"1.0.2","outputs":{"tree":[{"depth":"0","tag":"SEQUENCE (constructed)","length":"9","value":"Declared length 9 exceeds 3 remaining bytes — truncated/malformed input."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"tree":{"type":"array","description":"Parsed Structure","items":{"type":"object","properties":{"depth":{"type":"string","description":"Depth"},"tag":{"type":"string","description":"Tag"},"length":{"type":"string","description":"Length"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["depth","tag","length","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/barcode-check-digit-validator":{"post":{"operationId":"run_barcode_check_digit_validator","summary":"Barcode Check Digit Validator","tags":["Utilities"],"description":"Validate or compute the check digit for UPC-A, EAN-13, EAN-8, ISBN-10 and ISBN-13 codes using the standard GS1 mod-10 and ISBN mod-11 algorithms.\n\n[Try Barcode Check Digit Validator in your browser →](https://iotools.cloud/tool/barcode-check-digit-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"barcodeFormat":{"enum":["upca","ean13","ean8","isbn10","isbn13"],"description":"Barcode Format"},"digits":{"type":"string","description":"Barcode / ISBN Digits"}},"required":[]},"examples":{"upc_a_validate":{"summary":"UPC-A — validate","value":{"barcodeFormat":"upca","digits":"036000291452"}},"ean_13_validate":{"summary":"EAN-13 — validate","value":{"barcodeFormat":"ean13","digits":"4006381333931"}},"ean_8_validate":{"summary":"EAN-8 — validate","value":{"barcodeFormat":"ean8","digits":"96385074"}},"isbn_10_validate":{"summary":"ISBN-10 — validate","value":{"barcodeFormat":"isbn10","digits":"0306406152"}},"isbn_13_compute_a_missing_check_digit":{"summary":"ISBN-13 — compute a missing check digit","value":{"barcodeFormat":"isbn13","digits":"978030640615"}},"ean_8_invalid_check_digit":{"summary":"EAN-8 — invalid check digit","value":{"barcodeFormat":"ean8","digits":"96385075"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"upc_a_validate":{"summary":"UPC-A — validate","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"UPC-A","digits":"036000291452","check-digit":"2","result":"Valid"}]},"credits_used":5,"credits_remaining":null}},"ean_13_validate":{"summary":"EAN-13 — validate","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"EAN-13","digits":"4006381333931","check-digit":"1","result":"Valid"}]},"credits_used":5,"credits_remaining":null}},"ean_8_validate":{"summary":"EAN-8 — validate","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"EAN-8","digits":"96385074","check-digit":"4","result":"Valid"}]},"credits_used":5,"credits_remaining":null}},"isbn_10_validate":{"summary":"ISBN-10 — validate","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"ISBN-10","digits":"0306406152","check-digit":"2","result":"Valid"}]},"credits_used":5,"credits_remaining":null}},"isbn_13_compute_a_missing_check_digit":{"summary":"ISBN-13 — compute a missing check digit","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"ISBN-13","digits":"9780306406157","check-digit":"7","result":"Computed"}]},"credits_used":5,"credits_remaining":null}},"ean_8_invalid_check_digit":{"summary":"EAN-8 — invalid check digit","value":{"tool":"barcode-check-digit-validator","tool_version":"1.0.2","outputs":{"results":[{"format":"EAN-8","digits":"96385075","check-digit":"4","result":"Invalid (found 5)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Result","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"digits":{"type":"string","description":"Digits"},"check-digit":{"type":"string","description":"Check Digit"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["format","digits","check-digit","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/base64-inspector":{"post":{"operationId":"run_base64_inspector","summary":"Base64 Inspector","tags":["Utilities"],"description":"Decode and inspect a Base64 or Base64URL string: validity with a specific failure reason, alphabet detection (standard vs URL-safe), padding correctness, decoded byte length, a hex/byte dump and a content-type guess (UTF-8 text, JSON, or binary with a recognized magic-byte signature).\n\n[Try Base64 Inspector in your browser →](https://iotools.cloud/tool/base64-inspector/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"base64String":{"type":"string","description":"Base64 string"}},"required":["base64String"]},"examples":{"valid_standard_base64_contains_and":{"summary":"Valid standard Base64 (contains + and /)","value":{"base64String":"SGVsbG8sIFdvcmxkISA+Pj4gc3ViamVjdHM/Pz8="}},"valid_json_payload":{"summary":"Valid JSON payload","value":{"base64String":"eyJvayI6dHJ1ZX0="}},"valid_url_safe_base64_unpadded_contains_and":{"summary":"Valid URL-safe Base64, unpadded (contains - and _)","value":{"base64String":"SGVsbG8sIFdvcmxkISA-Pj4gc3ViamVjdHM_Pz8"}},"png_magic_bytes_binary":{"summary":"PNG magic bytes (binary)","value":{"base64String":"iVBORw0KGgo="}},"invalid_character":{"summary":"Invalid character","value":{"base64String":"SGVsbG8h!!"}},"invalid_length_remainder_1":{"summary":"Invalid length (remainder 1)","value":{"base64String":"SGVsbG8hX"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_standard_base64_contains_and":{"summary":"Valid standard Base64 (contains + and /)","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"Yes"},{"property":"Alphabet","value":"Standard (A-Z a-z 0-9 + /)"},{"property":"Padding characters","value":"1"},{"property":"Decoded byte length","value":"29"},{"property":"Content type guess","value":"UTF-8 text"}],"preview":"Hello, World! >>> subjects???","hexDump":"00000000: 4865 6c6c 6f2c 2057 6f72 6c64 2120 3e3e  Hello, World! >>\n00000010: 3e20 7375 626a 6563 7473 3f3f 3f         > subjects???"},"credits_used":5,"credits_remaining":null}},"valid_json_payload":{"summary":"Valid JSON payload","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"Yes"},{"property":"Alphabet","value":"Ambiguous — no '+', '/', '-' or '_' present, valid under either alphabet"},{"property":"Padding characters","value":"1"},{"property":"Decoded byte length","value":"11"},{"property":"Content type guess","value":"JSON data (valid UTF-8)"}],"preview":"{\n  \"ok\": true\n}","hexDump":"00000000: 7b22 6f6b 223a 7472 7565 7d              {\"ok\":true}"},"credits_used":5,"credits_remaining":null}},"valid_url_safe_base64_unpadded_contains_and":{"summary":"Valid URL-safe Base64, unpadded (contains - and _)","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"Yes"},{"property":"Alphabet","value":"URL-safe (A-Z a-z 0-9 - _)"},{"property":"Padding characters","value":"0 (unpadded)"},{"property":"Decoded byte length","value":"29"},{"property":"Content type guess","value":"UTF-8 text"}],"preview":"Hello, World! >>> subjects???","hexDump":"00000000: 4865 6c6c 6f2c 2057 6f72 6c64 2120 3e3e  Hello, World! >>\n00000010: 3e20 7375 626a 6563 7473 3f3f 3f         > subjects???"},"credits_used":5,"credits_remaining":null}},"png_magic_bytes_binary":{"summary":"PNG magic bytes (binary)","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"Yes"},{"property":"Alphabet","value":"Ambiguous — no '+', '/', '-' or '_' present, valid under either alphabet"},{"property":"Padding characters","value":"1"},{"property":"Decoded byte length","value":"8"},{"property":"Content type guess","value":"Binary — PNG image (image/png)"}],"preview":"(binary data, 8 byte(s) — see hex dump below)","hexDump":"00000000: 8950 4e47 0d0a 1a0a                      .PNG...."},"credits_used":5,"credits_remaining":null}},"invalid_character":{"summary":"Invalid character","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"No"},{"property":"Reason","value":"Contains an invalid Base64 character: '!' (position 8)."},{"property":"Alphabet","value":"—"},{"property":"Padding characters","value":"—"},{"property":"Decoded byte length","value":"—"},{"property":"Content type guess","value":"—"}],"preview":"(nothing decoded — see Reason above)","hexDump":"(nothing decoded — see Reason above)"},"credits_used":5,"credits_remaining":null}},"invalid_length_remainder_1":{"summary":"Invalid length (remainder 1)","value":{"tool":"base64-inspector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Valid","value":"No"},{"property":"Reason","value":"Invalid length — 9 Base64 character(s) (excluding padding) is not a valid length; a Base64 data length can never leave remainder 1 when divided by 4."},{"property":"Alphabet","value":"Ambiguous — no '+', '/', '-' or '_' present, valid under either alphabet"},{"property":"Padding characters","value":"—"},{"property":"Decoded byte length","value":"—"},{"property":"Content type guess","value":"—"}],"preview":"(nothing decoded — see Reason above)","hexDump":"(nothing decoded — see Reason above)"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"preview":{"type":"string","description":"Decoded content preview"},"hexDump":{"type":"string","description":"Hex dump"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bin-iin-lookup":{"post":{"operationId":"run_bin_iin_lookup","summary":"BIN/IIN Card Network Checker","tags":["Utilities"],"description":"Identify a payment card's network (Visa, Mastercard, Amex, Discover, JCB, Diners Club, UnionPay, Maestro) from its BIN/IIN, see the typical card number length, and verify the Luhn checksum. Network identification from public prefix ranges only — not an issuing-bank lookup.\n\n[Try BIN/IIN Card Network Checker in your browser →](https://iotools.cloud/tool/bin-iin-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cardNumber":{"type":"string","description":"BIN / IIN or Full Card Number"}},"required":[]},"examples":{"visa_test_number":{"summary":"Visa test number","value":{"cardNumber":"4111111111111111"}},"mastercard_test_number":{"summary":"Mastercard test number","value":{"cardNumber":"5555555555554444"}},"discover_bin_only_no_luhn_check":{"summary":"Discover BIN only (no Luhn check)","value":{"cardNumber":"601100"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"visa_test_number":{"summary":"Visa test number","value":{"tool":"bin-iin-lookup","tool_version":"1.0.2","outputs":{"result":[{"field":"Card Network","value":"Visa"},{"field":"BIN / IIN Used","value":"41111111"},{"field":"Typical Card Length","value":"13, 16, 19 digits"},{"field":"Luhn Checksum","value":"Valid (passes Luhn checksum)"}]},"credits_used":5,"credits_remaining":null}},"mastercard_test_number":{"summary":"Mastercard test number","value":{"tool":"bin-iin-lookup","tool_version":"1.0.2","outputs":{"result":[{"field":"Card Network","value":"Mastercard"},{"field":"BIN / IIN Used","value":"55555555"},{"field":"Typical Card Length","value":"16 digits"},{"field":"Luhn Checksum","value":"Valid (passes Luhn checksum)"}]},"credits_used":5,"credits_remaining":null}},"discover_bin_only_no_luhn_check":{"summary":"Discover BIN only (no Luhn check)","value":{"tool":"bin-iin-lookup","tool_version":"1.0.2","outputs":{"result":[{"field":"Card Network","value":"Discover"},{"field":"BIN / IIN Used","value":"601100"},{"field":"Typical Card Length","value":"16, 19 digits"},{"field":"Luhn Checksum","value":"Enter 12+ digits (full card number) to check"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bitcoin-address-validator":{"post":{"operationId":"run_bitcoin_address_validator","summary":"Bitcoin Address Validator","tags":["Utilities"],"description":"Validate a Bitcoin address and identify its type — Legacy P2PKH, P2SH, Bech32 SegWit or Bech32m Taproot — with full Base58Check / Bech32 checksum verification and the decoded hash or witness program.\n\n[Try Bitcoin Address Validator in your browser →](https://iotools.cloud/tool/bitcoin-address-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Bitcoin Address"}},"required":[]},"examples":{"legacy_p2pkh_address_genesis_block":{"summary":"Legacy P2PKH address (Genesis block)","value":{"address":"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"}},"p2sh_address":{"summary":"P2SH address","value":{"address":"3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy"}},"bech32_segwit_address":{"summary":"Bech32 SegWit address","value":{"address":"bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"}},"bech32m_taproot_address":{"summary":"Bech32m Taproot address","value":{"address":"bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr"}},"invalid_address_bad_checksum":{"summary":"Invalid address (bad checksum)","value":{"address":"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNb"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"legacy_p2pkh_address_genesis_block":{"summary":"Legacy P2PKH address (Genesis block)","value":{"tool":"bitcoin-address-validator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Status","value":"Valid"},{"property":"Address Type","value":"P2PKH (Legacy)"},{"property":"Network","value":"mainnet"},{"property":"Hash / Witness Program","value":"62e907b15cbf27d5425399ebf6f0fb50ebb88f18"}]},"credits_used":5,"credits_remaining":null}},"p2sh_address":{"summary":"P2SH address","value":{"tool":"bitcoin-address-validator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Status","value":"Valid"},{"property":"Address Type","value":"P2SH"},{"property":"Network","value":"mainnet"},{"property":"Hash / Witness Program","value":"b472a266d0bd89c13706a4132ccfb16f7c3b9fcb"}]},"credits_used":5,"credits_remaining":null}},"bech32_segwit_address":{"summary":"Bech32 SegWit address","value":{"tool":"bitcoin-address-validator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Status","value":"Valid"},{"property":"Address Type","value":"Bech32-SegWit (P2WPKH)"},{"property":"Network","value":"mainnet"},{"property":"Hash / Witness Program","value":"e8df018c7e326cc253faac7e46cdc51e68542c42"}]},"credits_used":5,"credits_remaining":null}},"bech32m_taproot_address":{"summary":"Bech32m Taproot address","value":{"tool":"bitcoin-address-validator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Status","value":"Valid"},{"property":"Address Type","value":"Bech32m-Taproot (P2TR)"},{"property":"Network","value":"mainnet"},{"property":"Hash / Witness Program","value":"a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c"}]},"credits_used":5,"credits_remaining":null}},"invalid_address_bad_checksum":{"summary":"Invalid address (bad checksum)","value":{"tool":"bitcoin-address-validator","tool_version":"1.0.2","outputs":{"resultTable":[{"property":"Status","value":"Invalid — Checksum verification failed."},{"property":"Address Type","value":"Invalid"},{"property":"Network","value":"-"},{"property":"Hash / Witness Program","value":"-"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultTable":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/bulk-amp-validator":{"post":{"operationId":"run_bulk_amp_validator","summary":"Bulk AMP Validator","tags":["Utilities"],"description":"Check a batch of live URLs against the AMP HTML requirements that most commonly break a page — the doctype/⚡ marker, required head tags, the boilerplate CSS, disallowed &lt;img>/inline styles/custom scripts, and the 75 KB custom-CSS cap — with a pass/fail count across the whole batch.\n\n[Try Bulk AMP Validator in your browser →](https://iotools.cloud/tool/bulk-amp-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"string","description":"Page URLs (one per line)"}},"required":["urls"]},"examples":{"amp_dev_s_own_hello_world_example":{"summary":"amp.dev's own Hello World example","value":{"urls":"https://amp.dev/documentation/examples/introduction/hello_world/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"results":{"type":"array","description":"Per-page results","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"status":{"type":"string","description":"Status"},"errors":{"type":"string","description":"Errors"},"warnings":{"type":"string","description":"Warnings"}}},"x-iotools-columns":["url","status","errors","warnings"]},"issues":{"type":"array","description":"All issues","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"severity":{"type":"string","description":"Severity"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["url","severity","issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/certificate-transparency-log-lookup":{"post":{"operationId":"run_certificate_transparency_log_lookup","summary":"Certificate Transparency Log Lookup","tags":["Utilities"],"description":"Look up every TLS certificate ever issued for a domain in the public Certificate Transparency logs (crt.sh) — discover subdomains, issuers, validity windows and wildcard certs.\n\n[Try Certificate Transparency Log Lookup in your browser →](https://iotools.cloud/tool/certificate-transparency-log-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"includeSubdomains":{"type":"boolean","description":"Include subdomains (wildcard search)"},"unexpiredOnly":{"type":"boolean","description":"Unexpired certificates only"},"wildcardOnly":{"type":"boolean","description":"Wildcard certificates only"}},"required":["domain"]},"examples":{"github_com":{"summary":"github.com","value":{"domain":"github.com","includeSubdomains":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"certs":{"type":"array","description":"Certificates","items":{"type":"object","properties":{"issuer":{"type":"string","description":"Issuer"},"common-name":{"type":"string","description":"Common name"},"valid-from":{"type":"string","description":"Valid from"},"valid-to":{"type":"string","description":"Valid to"},"flags":{"type":"string","description":"Flags"}}},"x-iotools-columns":["issuer","common-name","valid-from","valid-to","flags"]},"names":{"type":"string","description":"Unique names (subdomains)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/character-encoding-detector":{"post":{"operationId":"run_character_encoding_detector","summary":"Character Encoding Detector","tags":["Utilities"],"description":"Detect the character encoding of pasted text or an uploaded file — BOM sniffing (UTF-8/UTF-16/UTF-32), a real UTF-8 continuation-byte validator, ASCII detection, and a byte-frequency heuristic for single-byte legacy charsets like Windows-1252 and ISO-8859-1 (Latin-1) when there's no BOM and the bytes aren't valid UTF-8.\n\n[Try Character Encoding Detector in your browser →](https://iotools.cloud/tool/character-encoding-detector/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"file":{"type":"string","contentEncoding":"base64","description":"File (read as raw bytes)"}},"required":[]},"examples":{"plain_ascii":{"summary":"Plain ASCII","value":{"inputText":"Hello, World!","file":""}},"utf_8_with_bom":{"summary":"UTF-8 with BOM","value":{"inputText":"﻿Hello","file":""}},"valid_utf_8_no_bom_accented_cjk_cyrillic":{"summary":"Valid UTF-8, no BOM (accented + CJK + Cyrillic)","value":{"inputText":"Café résumé naïve — 日本語テスト — Привет мир","file":""}},"windows_1252_smart_quotes_invalid_as_utf_8":{"summary":"Windows-1252 (smart quotes, invalid as UTF-8)","value":{"inputText":"","file":"data:application/octet-stream;base64,k0hlbGxvlA=="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"plain_ascii":{"summary":"Plain ASCII","value":{"tool":"character-encoding-detector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Detected Encoding","value":"ASCII"},{"property":"Confidence","value":"100%"},{"property":"BOM","value":"None"},{"property":"Bytes Analyzed","value":"13"},{"property":"Reasoning","value":"Every byte is in the 0x00-0x7F range — valid 7-bit ASCII. ASCII is a strict subset of UTF-8, so this is simultaneously valid UTF-8."}],"candidates":[{"encoding":"ASCII","confidence":"100%","signals":"Every byte is in the 0x00-0x7F range — valid 7-bit ASCII. ASCII is a strict subset of UTF-8, so this is simultaneously valid UTF-8."},{"encoding":"UTF-8","confidence":"95%","signals":"ASCII text is byte-for-byte identical to its UTF-8 encoding; listed as slightly less specific than the ASCII match above."}]},"credits_used":5,"credits_remaining":null}},"utf_8_with_bom":{"summary":"UTF-8 with BOM","value":{"tool":"character-encoding-detector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Detected Encoding","value":"UTF-8"},{"property":"Confidence","value":"99%"},{"property":"BOM","value":"UTF-8 (3-byte)"},{"property":"Bytes Analyzed","value":"8"},{"property":"Reasoning","value":"A UTF-8 byte order mark (EF BB BF) was found at the very start of the input — BOMs are an explicit, near-unambiguous encoding signal."}],"candidates":[{"encoding":"UTF-8","confidence":"99%","signals":"A UTF-8 byte order mark (EF BB BF) was found at the very start of the input — BOMs are an explicit, near-unambiguous encoding signal."}]},"credits_used":5,"credits_remaining":null}},"valid_utf_8_no_bom_accented_cjk_cyrillic":{"summary":"Valid UTF-8, no BOM (accented + CJK + Cyrillic)","value":{"tool":"character-encoding-detector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Detected Encoding","value":"UTF-8"},{"property":"Confidence","value":"97%"},{"property":"BOM","value":"None"},{"property":"Bytes Analyzed","value":"68"},{"property":"Reasoning","value":"Valid UTF-8 with no BOM: every byte ≥0x80 forms a well-formed multi-byte continuation sequence (21 multi-byte character(s) decoded, zero encoding errors). Not certain — any random byte stream in a single-byte charset that happens to be well-formed UTF-8 would also pass this check — but this is a strong, standard signal."}],"candidates":[{"encoding":"UTF-8","confidence":"97%","signals":"Valid UTF-8 with no BOM: every byte ≥0x80 forms a well-formed multi-byte continuation sequence (21 multi-byte character(s) decoded, zero encoding errors). Not certain — any random byte stream in a single-byte charset that happens to be well-formed UTF-8 would also pass this check — but this is a strong, standard signal."}]},"credits_used":5,"credits_remaining":null}},"windows_1252_smart_quotes_invalid_as_utf_8":{"summary":"Windows-1252 (smart quotes, invalid as UTF-8)","value":{"tool":"character-encoding-detector","tool_version":"1.0.2","outputs":{"summary":[{"property":"Detected Encoding","value":"Windows-1252"},{"property":"Confidence","value":"43%"},{"property":"BOM","value":"None"},{"property":"Bytes Analyzed","value":"7"},{"property":"Reasoning","value":"2 byte(s) are invalid UTF-8 continuation sequences, and 2 byte(s) fall in the 0x80-0x9F range — undefined control codes in ISO-8859-1/Latin-1, but printable punctuation (curly quotes, en/em dash, trademark sign, ...) in Windows-1252. That combination is the classic fingerprint of Windows-1252 text."}],"candidates":[{"encoding":"Windows-1252","confidence":"43%","signals":"2 byte(s) are invalid UTF-8 continuation sequences, and 2 byte(s) fall in the 0x80-0x9F range — undefined control codes in ISO-8859-1/Latin-1, but printable punctuation (curly quotes, en/em dash, trademark sign, ...) in Windows-1252. That combination is the classic fingerprint of Windows-1252 text."},{"encoding":"ISO-8859-1 (Latin-1)","confidence":"23%","signals":"Still plausible if the 0x80-0x9F bytes are meant as raw C1 control codes rather than Windows-1252 punctuation, though that's uncommon in real text."},{"encoding":"UTF-8","confidence":"9%","signals":"2 byte(s) violate UTF-8's continuation-byte rules (bad lead/continuation pattern, overlong encoding, or out-of-range codepoint) — very unlikely to be UTF-8."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"candidates":{"type":"array","items":{"type":"object","properties":{"encoding":{"type":"string","description":"Encoding"},"confidence":{"type":"string","description":"Confidence"},"signals":{"type":"string","description":"Signals"}}},"x-iotools-columns":["encoding","confidence","signals"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/character-frequency-analyzer":{"post":{"operationId":"run_character_frequency_analyzer","summary":"Character Frequency Analyzer","tags":["Utilities"],"description":"Count how often each character appears in your text and see a sorted frequency table with counts and percentages — useful for cryptography, linguistics and data cleaning.\n\n[Try Character Frequency Analyzer in your browser →](https://iotools.cloud/tool/character-frequency-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"caseSensitive":{"type":"boolean","description":"Case sensitive"},"includeWhitespace":{"type":"boolean","description":"Include whitespace characters"}},"required":[]},"examples":{"simple_word":{"summary":"Simple word","value":{"inputText":"hello","caseSensitive":"true","includeWhitespace":"true"}},"case_insensitive_exclude_whitespace":{"summary":"Case-insensitive, exclude whitespace","value":{"inputText":"The Quick Brown Fox","caseSensitive":"","includeWhitespace":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_word":{"summary":"Simple word","value":{"tool":"character-frequency-analyzer","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Total characters","value":"5"},{"metric":"Unique characters","value":"4"},{"metric":"Most common character","value":"l (2)"}],"frequency":[{"character":"l","count":"2","percentage":"40.00%"},{"character":"e","count":"1","percentage":"20.00%"},{"character":"h","count":"1","percentage":"20.00%"},{"character":"o","count":"1","percentage":"20.00%"}]},"credits_used":5,"credits_remaining":null}},"case_insensitive_exclude_whitespace":{"summary":"Case-insensitive, exclude whitespace","value":{"tool":"character-frequency-analyzer","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Total characters","value":"16"},{"metric":"Unique characters","value":"15"},{"metric":"Most common character","value":"o (2)"}],"frequency":[{"character":"o","count":"2","percentage":"12.50%"},{"character":"b","count":"1","percentage":"6.25%"},{"character":"c","count":"1","percentage":"6.25%"},{"character":"e","count":"1","percentage":"6.25%"},{"character":"f","count":"1","percentage":"6.25%"},{"character":"h","count":"1","percentage":"6.25%"},{"character":"i","count":"1","percentage":"6.25%"},{"character":"k","count":"1","percentage":"6.25%"},{"character":"n","count":"1","percentage":"6.25%"},{"character":"q","count":"1","percentage":"6.25%"},{"character":"r","count":"1","percentage":"6.25%"},{"character":"t","count":"1","percentage":"6.25%"},{"character":"u","count":"1","percentage":"6.25%"},{"character":"w","count":"1","percentage":"6.25%"},{"character":"x","count":"1","percentage":"6.25%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"frequency":{"type":"array","items":{"type":"object","properties":{"character":{"type":"string","description":"Character"},"count":{"type":"string","description":"Count"},"percentage":{"type":"string","description":"Percentage"}}},"x-iotools-columns":["character","count","percentage"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cidr-overlap-checker":{"post":{"operationId":"run_cidr_overlap_checker","summary":"CIDR Overlap Checker","tags":["Utilities"],"description":"Check whether two IPv4 CIDR blocks overlap. Parses each block into its network range and reports any conflicting address range — useful for network planning, firewall rules and avoiding routing conflicts.\n\n[Try CIDR Overlap Checker in your browser →](https://iotools.cloud/tool/cidr-overlap-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cidrA":{"type":"string","description":"CIDR Block A"},"cidrB":{"type":"string","description":"CIDR Block B"}},"required":["cidrA","cidrB"]},"examples":{"overlapping_blocks":{"summary":"Overlapping blocks","value":{"cidrA":"192.168.1.0/24","cidrB":"192.168.1.128/25"}},"non_overlapping_blocks":{"summary":"Non-overlapping blocks","value":{"cidrA":"10.0.0.0/24","cidrB":"10.0.1.0/24"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"overlapping_blocks":{"summary":"Overlapping blocks","value":{"tool":"cidr-overlap-checker","tool_version":"1.0.2","outputs":{"result":[{"property":"Block A range","value":"192.168.1.0/24 (192.168.1.0 – 192.168.1.255)"},{"property":"Block B range","value":"192.168.1.128/25 (192.168.1.128 – 192.168.1.255)"},{"property":"Overlap","value":"Yes"},{"property":"Overlapping range","value":"192.168.1.128 – 192.168.1.255"}]},"credits_used":5,"credits_remaining":null}},"non_overlapping_blocks":{"summary":"Non-overlapping blocks","value":{"tool":"cidr-overlap-checker","tool_version":"1.0.2","outputs":{"result":[{"property":"Block A range","value":"10.0.0.0/24 (10.0.0.0 – 10.0.0.255)"},{"property":"Block B range","value":"10.0.1.0/24 (10.0.1.0 – 10.0.1.255)"},{"property":"Overlap","value":"No"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Overlap Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cloaking-checker":{"post":{"operationId":"run_cloaking_checker","summary":"Cloaking Checker","tags":["Utilities"],"description":"Fetch a live URL as Googlebot and as a regular browser and diff what each gets back — title, meta description, robots, canonical, h1s, structured data, hreflang, word count — to catch cloaking, whether it's deliberate or an accidental side effect of bot-detection or paywall middleware.\n\n[Try Cloaking Checker in your browser →](https://iotools.cloud/tool/cloaking-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"a_public_homepage":{"summary":"A public homepage","value":{"url":"https://example.com/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"issues":{"type":"array","description":"Cloaking risk issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"field":{"type":"string","description":"Field"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["severity","field","issue"]},"comparison":{"type":"array","description":"Googlebot vs. browser","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"googlebot":{"type":"string","description":"Googlebot"},"browser":{"type":"string","description":"Browser"},"match":{"type":"string","description":"Match"}}},"x-iotools-columns":["field","googlebot","browser","match"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-contrast-grid":{"post":{"operationId":"run_color_contrast_grid","summary":"Color Contrast Grid","tags":["Utilities"],"description":"Check WCAG 2.x contrast ratios for an entire color palette at once: paste a list of hex colors and get a full pairwise grid with the exact ratio and AA pass/fail for every combination — ideal for auditing a design system's color palette for accessibility.\n\n[Try Color Contrast Grid in your browser →](https://iotools.cloud/tool/color-contrast-grid/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colors":{"type":"string","description":"Colors"}},"required":[]},"examples":{"black_white_and_mid_gray":{"summary":"Black, white and mid-gray","value":{"colors":"#000000\n#FFFFFF\n#808080"}},"comma_separated_with_an_invalid_entry_skipped":{"summary":"Comma-separated with an invalid entry skipped","value":{"colors":"#FF0000, not-a-color, #00FF00, #0000FF"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"black_white_and_mid_gray":{"summary":"Black, white and mid-gray","value":{"tool":"color-contrast-grid","tool_version":"1.0.2","outputs":{"contrastGrid":[["","#000000","#ffffff","#808080"],["#000000","1.00:1 ✗","21.00:1 ✓","5.32:1 ✓"],["#ffffff","21.00:1 ✓","1.00:1 ✗","3.95:1 ✗"],["#808080","5.32:1 ✓","3.95:1 ✗","1.00:1 ✗"]]},"credits_used":5,"credits_remaining":null}},"comma_separated_with_an_invalid_entry_skipped":{"summary":"Comma-separated with an invalid entry skipped","value":{"tool":"color-contrast-grid","tool_version":"1.0.2","outputs":{"contrastGrid":[["","#ff0000","#00ff00","#0000ff"],["#ff0000","1.00:1 ✗","2.91:1 ✗","2.15:1 ✗"],["#00ff00","2.91:1 ✗","1.00:1 ✗","6.26:1 ✓"],["#0000ff","2.15:1 ✗","6.26:1 ✓","1.00:1 ✗"]]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"contrastGrid":{"type":"array","description":"Contrast Grid","items":{"type":"array","items":{"type":"string"}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-distance-calculator":{"post":{"operationId":"run_color_distance_calculator","summary":"Color Distance Calculator","tags":["Utilities"],"description":"Measure how visually similar or different two colors are: enter two HEX colors to get the Euclidean RGB distance, the perceptually-weighted redmean distance, and a plain-English similarity rating.\n\n[Try Color Distance Calculator in your browser →](https://iotools.cloud/tool/color-distance-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"colorA":{"type":"string","description":"Color A"},"colorB":{"type":"string","description":"Color B"}},"required":[]},"examples":{"black_vs_white_maximum_distance":{"summary":"Black vs. White (maximum distance)","value":{"colorA":"#000000","colorB":"#FFFFFF"}},"same_color_zero_distance":{"summary":"Same color (zero distance)","value":{"colorA":"#4A90D9","colorB":"#4A90D9"}},"similar_shades_of_blue":{"summary":"Similar shades of blue","value":{"colorA":"#4A90D9","colorB":"#4A90E0"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"black_vs_white_maximum_distance":{"summary":"Black vs. White (maximum distance)","value":{"tool":"color-distance-calculator","tool_version":"1.0.2","outputs":{"distanceTable":[{"metric":"Color A","value":"#000000"},{"metric":"Color B","value":"#FFFFFF"},{"metric":"Euclidean RGB Distance","value":"441.67"},{"metric":"Redmean Distance","value":"764.83"},{"metric":"Similarity","value":"Very Different"}]},"credits_used":5,"credits_remaining":null}},"same_color_zero_distance":{"summary":"Same color (zero distance)","value":{"tool":"color-distance-calculator","tool_version":"1.0.2","outputs":{"distanceTable":[{"metric":"Color A","value":"#4A90D9"},{"metric":"Color B","value":"#4A90D9"},{"metric":"Euclidean RGB Distance","value":"0.00"},{"metric":"Redmean Distance","value":"0.00"},{"metric":"Similarity","value":"Identical"}]},"credits_used":5,"credits_remaining":null}},"similar_shades_of_blue":{"summary":"Similar shades of blue","value":{"tool":"color-distance-calculator","tool_version":"1.0.2","outputs":{"distanceTable":[{"metric":"Color A","value":"#4A90D9"},{"metric":"Color B","value":"#4A90E0"},{"metric":"Euclidean RGB Distance","value":"7.00"},{"metric":"Redmean Distance","value":"11.52"},{"metric":"Similarity","value":"Very Similar"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"distanceTable":{"type":"array","description":"Distance Results","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/color-picker":{"post":{"operationId":"run_color_picker","summary":"Color Picker","tags":["Utilities"],"description":"Pick a color and instantly convert it to every common notation — HEX, RGB, RGBA, HSL, HSLA, HSV/HSB, and CMYK — for use in code, design tools, and print.\n\n[Try Color Picker in your browser →](https://iotools.cloud/tool/color-picker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"color":{"type":"string","description":"Color"}},"required":[]},"examples":{"pure_red":{"summary":"Pure red","value":{"color":"#FF0000"}},"brand_accent":{"summary":"Brand accent","value":{"color":"#464AFF"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"pure_red":{"summary":"Pure red","value":{"tool":"color-picker","tool_version":"1.0.2","outputs":{"colorTable":[{"format":"HEX","value":"#FF0000"},{"format":"RGB","value":"rgb(255, 0, 0)"},{"format":"RGBA","value":"rgba(255, 0, 0, 1)"},{"format":"HSL","value":"hsl(0, 100%, 50%)"},{"format":"HSLA","value":"hsla(0, 100%, 50%, 1)"},{"format":"HSV","value":"hsv(0, 100%, 100%)"},{"format":"CMYK","value":"cmyk(0%, 100%, 100%, 0%)"}]},"credits_used":5,"credits_remaining":null}},"brand_accent":{"summary":"Brand accent","value":{"tool":"color-picker","tool_version":"1.0.2","outputs":{"colorTable":[{"format":"HEX","value":"#464AFF"},{"format":"RGB","value":"rgb(70, 74, 255)"},{"format":"RGBA","value":"rgba(70, 74, 255, 1)"},{"format":"HSL","value":"hsl(239, 100%, 64%)"},{"format":"HSLA","value":"hsla(239, 100%, 64%, 1)"},{"format":"HSV","value":"hsv(239, 73%, 100%)"},{"format":"CMYK","value":"cmyk(73%, 71%, 0%, 0%)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"colorTable":{"type":"array","description":"Color Formats","items":{"type":"object","properties":{"format":{"type":"string","description":"Format"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["format","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cookie-parser":{"post":{"operationId":"run_cookie_parser","summary":"Cookie Parser","tags":["Utilities"],"description":"Parse a Cookie header, document.cookie string, or one or more Set-Cookie response headers into a readable name/value/attributes table — auto-decodes percent-encoded values.\n\n[Try Cookie Parser in your browser →](https://iotools.cloud/tool/cookie-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cookieString":{"type":"string","description":"Cookie string"}},"required":[]},"examples":{"cookie_header":{"summary":"Cookie header","value":{"cookieString":"name=value; session_id=abc123; theme=dark"}},"set_cookie_header":{"summary":"Set-Cookie header","value":{"cookieString":"Set-Cookie: session_id=abc123; Domain=.example.com; Path=/; Secure; HttpOnly; SameSite=Strict"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cookie_header":{"summary":"Cookie header","value":{"tool":"cookie-parser","tool_version":"1.0.2","outputs":{"parsedCookies":[{"name":"name","value":"value","attributes":""},{"name":"session_id","value":"abc123","attributes":""},{"name":"theme","value":"dark","attributes":""}]},"credits_used":5,"credits_remaining":null}},"set_cookie_header":{"summary":"Set-Cookie header","value":{"tool":"cookie-parser","tool_version":"1.0.2","outputs":{"parsedCookies":[{"name":"session_id","value":"abc123","attributes":"Domain=.example.com; Path=/; Secure; HttpOnly; SameSite=Strict"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"parsedCookies":{"type":"array","description":"Parsed Cookies","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"value":{"type":"string","description":"Value"},"attributes":{"type":"string","description":"Attributes"}}},"x-iotools-columns":["name","value","attributes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/country-info-lookup":{"post":{"operationId":"run_country_info_lookup","summary":"Country Info Lookup","tags":["Utilities"],"description":"Look up any country's capital, population region, currency, calling code, flag emoji, ISO codes and top-level domain — pick from all 249 ISO 3166-1 countries and territories.\n\n[Try Country Info Lookup in your browser →](https://iotools.cloud/tool/country-info-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"enum":["Afghanistan","Åland Islands","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire, Sint Eustatius and Saba","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cabo Verde","Cambodia","Cameroon","Canada","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos (Keeling) Islands","Colombia","Comoros","Congo (Democratic Republic)","Congo (Republic)","Cook Islands","Costa Rica","Côte d'Ivoire","Croatia","Cuba","Curaçao","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","French Southern Territories","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Heard Island and McDonald Islands","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn Islands","Poland","Portugal","Puerto Rico","Qatar","Réunion","Romania","Russia","Rwanda","Saint Barthélemy","Saint Helena, Ascension and Tristan da Cunha","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","São Tomé and Príncipe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Georgia and South Sandwich Islands","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","United States Minor Outlying Islands","Uruguay","U.S. Virgin Islands","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"],"description":"Country"}},"required":[]},"examples":{"japan":{"summary":"Japan","value":{"country":"Japan"}},"france":{"summary":"France","value":{"country":"France"}},"unknown_query":{"summary":"Unknown query","value":{"country":"Atlantis"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"japan":{"summary":"Japan","value":{"tool":"country-info-lookup","tool_version":"1.0.2","outputs":{"countryInfo":[{"property":"Flag","value":"🇯🇵"},{"property":"Name","value":"Japan"},{"property":"Official name","value":"Japan"},{"property":"ISO Alpha-2","value":"JP"},{"property":"ISO Alpha-3","value":"JPN"},{"property":"Numeric code","value":"392"},{"property":"Dialing code","value":"+81"},{"property":"Capital","value":"Tokyo"},{"property":"Currency","value":"JPY — Japanese yen"},{"property":"Currency symbol","value":"¥"},{"property":"TLD","value":".jp"},{"property":"Continent","value":"Asia"},{"property":"Subregion","value":"Eastern Asia"}]},"credits_used":5,"credits_remaining":null}},"france":{"summary":"France","value":{"tool":"country-info-lookup","tool_version":"1.0.2","outputs":{"countryInfo":[{"property":"Flag","value":"🇫🇷"},{"property":"Name","value":"France"},{"property":"Official name","value":"French Republic"},{"property":"ISO Alpha-2","value":"FR"},{"property":"ISO Alpha-3","value":"FRA"},{"property":"Numeric code","value":"250"},{"property":"Dialing code","value":"+33"},{"property":"Capital","value":"Paris"},{"property":"Currency","value":"EUR — Euro"},{"property":"Currency symbol","value":"€"},{"property":"TLD","value":".fr"},{"property":"Continent","value":"Europe"},{"property":"Subregion","value":"Western Europe"}]},"credits_used":5,"credits_remaining":null}},"unknown_query":{"summary":"Unknown query","value":{"tool":"country-info-lookup","tool_version":"1.0.2","outputs":{"countryInfo":[{"property":"Not found","value":"No country matching \"Atlantis\""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"countryInfo":{"type":"array","description":"Country info","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cron-expression-explainer":{"post":{"operationId":"run_cron_expression_explainer","summary":"Cron Expression Explainer","tags":["Utilities"],"description":"Translate a cron expression into a plain-English description, a labeled field breakdown, and a short preview of upcoming run times. Supports 5/6/7-field expressions and common nicknames like @daily.\n\n[Try Cron Expression Explainer in your browser →](https://iotools.cloud/tool/cron-expression-explainer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cronExpression":{"type":"string","description":"Cron Expression"},"referenceTime":{"type":"string","description":"Reference Time"}},"required":["cronExpression"]},"examples":{"weekdays_at_9_am":{"summary":"Weekdays at 9 AM","value":{"cronExpression":"0 9 * * 1-5","referenceTime":"2024-01-01T08:00"}},"nickname_daily":{"summary":"Nickname (@daily)","value":{"cronExpression":"@daily","referenceTime":"2024-01-01T08:00"}},"6_field_with_seconds":{"summary":"6-field with seconds","value":{"cronExpression":"0 */5 * * * *","referenceTime":"2024-01-01T08:00"}},"7_field_with_year_description_only":{"summary":"7-field with year (description only)","value":{"cronExpression":"0 0 0 1 1 * 2030","referenceTime":"2024-01-01T08:00"}},"6_field_with_year_day_of_week_as":{"summary":"6-field with year (day-of-week as ?)","value":{"cronExpression":"0 12 1 1 ? 2030","referenceTime":"2024-01-01T08:00"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"weekdays_at_9_am":{"summary":"Weekdays at 9 AM","value":{"tool":"cron-expression-explainer","tool_version":"1.0.2","outputs":{"description":"At 09:00 AM, Monday through Friday","fieldBreakdown":[{"field":"Minute","value":"0"},{"field":"Hour","value":"9"},{"field":"Day of Month","value":"*"},{"field":"Month","value":"*"},{"field":"Day of Week","value":"1-5"}],"nextRuns":[{"occurrence":"1","date-time":"2024-01-01 09:00","day":"Monday"},{"occurrence":"2","date-time":"2024-01-02 09:00","day":"Tuesday"},{"occurrence":"3","date-time":"2024-01-03 09:00","day":"Wednesday"},{"occurrence":"4","date-time":"2024-01-04 09:00","day":"Thursday"},{"occurrence":"5","date-time":"2024-01-05 09:00","day":"Friday"}]},"credits_used":5,"credits_remaining":null}},"nickname_daily":{"summary":"Nickname (@daily)","value":{"tool":"cron-expression-explainer","tool_version":"1.0.2","outputs":{"description":"At 12:00 AM","fieldBreakdown":[{"field":"Nickname","value":"@daily"}],"nextRuns":[{"occurrence":"1","date-time":"2024-01-02 00:00","day":"Tuesday"},{"occurrence":"2","date-time":"2024-01-03 00:00","day":"Wednesday"},{"occurrence":"3","date-time":"2024-01-04 00:00","day":"Thursday"},{"occurrence":"4","date-time":"2024-01-05 00:00","day":"Friday"},{"occurrence":"5","date-time":"2024-01-06 00:00","day":"Saturday"}]},"credits_used":5,"credits_remaining":null}},"6_field_with_seconds":{"summary":"6-field with seconds","value":{"tool":"cron-expression-explainer","tool_version":"1.0.2","outputs":{"description":"Every 5 minutes","fieldBreakdown":[{"field":"Second","value":"0"},{"field":"Minute","value":"*/5"},{"field":"Hour","value":"*"},{"field":"Day of Month","value":"*"},{"field":"Month","value":"*"},{"field":"Day of Week","value":"*"}],"nextRuns":[{"occurrence":"1","date-time":"2024-01-01 08:05","day":"Monday"},{"occurrence":"2","date-time":"2024-01-01 08:10","day":"Monday"},{"occurrence":"3","date-time":"2024-01-01 08:15","day":"Monday"},{"occurrence":"4","date-time":"2024-01-01 08:20","day":"Monday"},{"occurrence":"5","date-time":"2024-01-01 08:25","day":"Monday"}]},"credits_used":5,"credits_remaining":null}},"7_field_with_year_description_only":{"summary":"7-field with year (description only)","value":{"tool":"cron-expression-explainer","tool_version":"1.0.2","outputs":{"description":"At 12:00 AM, on day 1 of the month, only in January, only in 2030","fieldBreakdown":[{"field":"Second","value":"0"},{"field":"Minute","value":"0"},{"field":"Hour","value":"0"},{"field":"Day of Month","value":"1"},{"field":"Month","value":"1"},{"field":"Day of Week","value":"*"},{"field":"Year","value":"2030"}],"nextRuns":[{"occurrence":"–","date-time":"Not available — this expression has a year field, which cron-parser doesn't support.","day":"–"}]},"credits_used":5,"credits_remaining":null}},"6_field_with_year_day_of_week_as":{"summary":"6-field with year (day-of-week as ?)","value":{"tool":"cron-expression-explainer","tool_version":"1.0.2","outputs":{"description":"At 12:00 PM, on day 1 of the month, only in January, only in 2030","fieldBreakdown":[{"field":"Minute","value":"0"},{"field":"Hour","value":"12"},{"field":"Day of Month","value":"1"},{"field":"Month","value":"1"},{"field":"Day of Week","value":"?"},{"field":"Year","value":"2030"}],"nextRuns":[{"occurrence":"–","date-time":"Not available — this expression has a year field, which cron-parser doesn't support.","day":"–"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English Description"},"fieldBreakdown":{"type":"array","description":"Field Breakdown","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"nextRuns":{"type":"array","description":"Next 5 Run Times (UTC)","items":{"type":"object","properties":{"occurrence":{"type":"string","description":"#"},"date-time":{"type":"string","description":"Date & Time"},"day":{"type":"string","description":"Day"}}},"x-iotools-columns":["occurrence","date-time","day"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/cron-next-run-calculator":{"post":{"operationId":"run_cron_next_run_calculator","summary":"Cron Next Run Calculator","tags":["Utilities"],"description":"Parse a standard 5-field cron expression (minute hour day-of-month month day-of-week) and list the next run times after a given moment — supports *, comma lists, ranges, and step values.\n\n[Try Cron Next Run Calculator in your browser →](https://iotools.cloud/tool/cron-next-run-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cronExpression":{"type":"string","description":"Cron Expression"},"referenceTime":{"type":"string","description":"Reference Time"},"occurrenceCount":{"type":"number","description":"Number of Occurrences","minimum":1,"maximum":10}},"required":["cronExpression"]},"examples":{"daily_at_9_am_before_it_fires_today":{"summary":"Daily at 9 AM, before it fires today","value":{"cronExpression":"0 9 * * *","referenceTime":"2024-01-01T08:00","occurrenceCount":"3"}},"daily_at_9_am_after_it_fires_today":{"summary":"Daily at 9 AM, after it fires today","value":{"cronExpression":"0 9 * * *","referenceTime":"2024-01-01T10:00","occurrenceCount":"3"}},"day_of_month_or_day_of_week_both_restricted":{"summary":"Day-of-month OR day-of-week (both restricted)","value":{"cronExpression":"0 0 1 * 1","referenceTime":"2024-01-01T00:00","occurrenceCount":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"daily_at_9_am_before_it_fires_today":{"summary":"Daily at 9 AM, before it fires today","value":{"tool":"cron-next-run-calculator","tool_version":"1.0.2","outputs":{"nextRuns":[{"occurrence":"1","date-time":"2024-01-01 09:00","day":"Monday (Jan)"},{"occurrence":"2","date-time":"2024-01-02 09:00","day":"Tuesday (Jan)"},{"occurrence":"3","date-time":"2024-01-03 09:00","day":"Wednesday (Jan)"}]},"credits_used":5,"credits_remaining":null}},"daily_at_9_am_after_it_fires_today":{"summary":"Daily at 9 AM, after it fires today","value":{"tool":"cron-next-run-calculator","tool_version":"1.0.2","outputs":{"nextRuns":[{"occurrence":"1","date-time":"2024-01-02 09:00","day":"Tuesday (Jan)"},{"occurrence":"2","date-time":"2024-01-03 09:00","day":"Wednesday (Jan)"},{"occurrence":"3","date-time":"2024-01-04 09:00","day":"Thursday (Jan)"}]},"credits_used":5,"credits_remaining":null}},"day_of_month_or_day_of_week_both_restricted":{"summary":"Day-of-month OR day-of-week (both restricted)","value":{"tool":"cron-next-run-calculator","tool_version":"1.0.2","outputs":{"nextRuns":[{"occurrence":"1","date-time":"2024-01-08 00:00","day":"Monday (Jan)"},{"occurrence":"2","date-time":"2024-01-15 00:00","day":"Monday (Jan)"},{"occurrence":"3","date-time":"2024-01-22 00:00","day":"Monday (Jan)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"nextRuns":{"type":"array","description":"Next Run Times","items":{"type":"object","properties":{"occurrence":{"type":"string","description":"#"},"date-time":{"type":"string","description":"Date & Time"},"day":{"type":"string","description":"Day"}}},"x-iotools-columns":["occurrence","date-time","day"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csp-resource-evaluator":{"post":{"operationId":"run_csp_resource_evaluator","summary":"CSP Resource Evaluator","tags":["Utilities"],"description":"Paste a Content-Security-Policy header value and test whether a specific resource URL or block of inline script/style would be allowed or blocked, with the matching source expression and a weaknesses report.\n\n[Try CSP Resource Evaluator in your browser →](https://iotools.cloud/tool/csp-resource-evaluator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cspHeader":{"type":"string","description":"CSP header value"},"pageOrigin":{"type":"string","description":"Page origin (optional)"},"checkType":{"enum":["url","inline-script","inline-style"],"description":"What do you want to test?"},"resourceKind":{"enum":["script","style","image","font","connect","frame","media","object","worker","manifest","formAction","baseUri","frameAncestors"],"description":"Resource type"},"resourceUrl":{"type":"string","description":"Resource URL"},"inlineContent":{"type":"string","description":"Inline content"}},"required":["cspHeader"]},"examples":{"external_script_allowed_by_a_host_source":{"summary":"External script allowed by a host source","value":{"cspHeader":"default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src *","pageOrigin":"","checkType":"url","resourceKind":"script","resourceUrl":"https://cdn.example.com/app.js","inlineContent":""}},"external_script_blocked_no_matching_source":{"summary":"External script blocked (no matching source)","value":{"cspHeader":"script-src https://cdn.example.com","pageOrigin":"","checkType":"url","resourceKind":"script","resourceUrl":"https://evil.example.net/payload.js","inlineContent":""}},"inline_script_allowed_by_a_matching_hash":{"summary":"Inline script allowed by a matching hash","value":{"cspHeader":"script-src 'sha256-1ohZFo3B9w3UOFBbfx6JSomkpkME90iPs1r/qXzvX7Y='","pageOrigin":"","checkType":"inline-script","resourceKind":"script","resourceUrl":"","inlineContent":"console.log('hi')"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"external_script_allowed_by_a_host_source":{"summary":"External script allowed by a host source","value":{"tool":"csp-resource-evaluator","tool_version":"1.0.2","outputs":{"verdict":"Allowed","directiveChecked":"script-src","matchedSource":"https://cdn.example.com","explanation":"Matches the host source https://cdn.example.com.","requiredHash":"","weaknesses":[{"directive":"style-src","issue":"'unsafe-inline' allows any inline <style>/style attribute, usable for CSS-based data exfiltration","severity":"Medium"},{"directive":"base-uri","issue":"Not set — an injected <base> tag could hijack every relative URL on the page","severity":"Medium"},{"directive":"frame-ancestors","issue":"Not set — this policy alone does not mitigate clickjacking (pair with X-Frame-Options if needed)","severity":"Low"}]},"credits_used":5,"credits_remaining":null}},"external_script_blocked_no_matching_source":{"summary":"External script blocked (no matching source)","value":{"tool":"csp-resource-evaluator","tool_version":"1.0.2","outputs":{"verdict":"Blocked","directiveChecked":"script-src","matchedSource":"none","explanation":"No source expression in script-src allows this URL.","requiredHash":"","weaknesses":[{"directive":"object-src","issue":"Not set (and no default-src fallback) — <object>/<embed>/<applet> can load arbitrary plugin content","severity":"Medium"},{"directive":"base-uri","issue":"Not set — an injected <base> tag could hijack every relative URL on the page","severity":"Medium"},{"directive":"frame-ancestors","issue":"Not set — this policy alone does not mitigate clickjacking (pair with X-Frame-Options if needed)","severity":"Low"},{"directive":"default-src","issue":"Not set — any directive you haven't explicitly listed is completely unrestricted","severity":"Medium"}]},"credits_used":5,"credits_remaining":null}},"inline_script_allowed_by_a_matching_hash":{"summary":"Inline script allowed by a matching hash","value":{"tool":"csp-resource-evaluator","tool_version":"1.0.2","outputs":{"verdict":"Allowed","directiveChecked":"script-src (fallback used)","matchedSource":"'sha256-1ohZFo3B9w3UOFBbfx6JSomkpkME90iPs1r/qXzvX7Y='","explanation":"The computed sha256 hash of this content matches 'sha256-1ohZFo3B9w3UOFBbfx6JSomkpkME90iPs1r/qXzvX7Y=' exactly.","requiredHash":"'sha256-1ohZFo3B9w3UOFBbfx6JSomkpkME90iPs1r/qXzvX7Y='","weaknesses":[{"directive":"object-src","issue":"Not set (and no default-src fallback) — <object>/<embed>/<applet> can load arbitrary plugin content","severity":"Medium"},{"directive":"base-uri","issue":"Not set — an injected <base> tag could hijack every relative URL on the page","severity":"Medium"},{"directive":"frame-ancestors","issue":"Not set — this policy alone does not mitigate clickjacking (pair with X-Frame-Options if needed)","severity":"Low"},{"directive":"default-src","issue":"Not set — any directive you haven't explicitly listed is completely unrestricted","severity":"Medium"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Verdict"},"directiveChecked":{"type":"string","description":"Directive checked"},"matchedSource":{"type":"string","description":"Matched source expression"},"explanation":{"type":"string","description":"Explanation"},"requiredHash":{"type":"string","description":"Hash source for this exact content"},"weaknesses":{"type":"array","items":{"type":"object","properties":{"directive":{"type":"string","description":"Directive"},"issue":{"type":"string","description":"Issue"},"severity":{"type":"string","description":"Severity"}}},"x-iotools-columns":["directive","issue","severity"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-custom-property-extractor":{"post":{"operationId":"run_css_custom_property_extractor","summary":"CSS Custom Property Extractor","tags":["Utilities"],"description":"Extract every CSS custom property (--variable) declared in a stylesheet, with its declared value and how many times it's referenced via var() — useful for design-system audits and spotting dead variables.\n\n[Try CSS Custom Property Extractor in your browser →](https://iotools.cloud/tool/css-custom-property-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cssInput":{"type":"string","description":"CSS / SCSS Input"}},"required":[]},"examples":{"buttons_and_links_sharing_tokens":{"summary":"Buttons and links sharing tokens","value":{"cssInput":":root {\n  --primary-color: #464aff;\n  --spacing: 8px;\n}\n\n.btn {\n  color: var(--primary-color);\n  padding: var(--spacing);\n}\n\n.link {\n  color: var(--primary-color);\n}"}},"blank_input":{"summary":"Blank input","value":{"cssInput":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"buttons_and_links_sharing_tokens":{"summary":"Buttons and links sharing tokens","value":{"tool":"css-custom-property-extractor","tool_version":"1.0.2","outputs":{"summary":"Found 2 custom properties declared, referenced 3 times via var().","propertiesTable":[{"property-name":"--primary-color","declared-value":"#464aff","usage-count":"2"},{"property-name":"--spacing","declared-value":"8px","usage-count":"1"}]},"credits_used":5,"credits_remaining":null}},"blank_input":{"summary":"Blank input","value":{"tool":"css-custom-property-extractor","tool_version":"1.0.2","outputs":{"summary":"No CSS custom properties found.","propertiesTable":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"propertiesTable":{"type":"array","description":"Custom Properties","items":{"type":"object","properties":{"property-name":{"type":"string","description":"Property Name"},"declared-value":{"type":"string","description":"Declared Value"},"usage-count":{"type":"string","description":"Usage Count"}}},"x-iotools-columns":["property-name","declared-value","usage-count"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/css-validator":{"post":{"operationId":"run_css_validator","summary":"CSS Validator","tags":["Utilities"],"description":"Check CSS for structural and syntax mistakes — unbalanced braces and parentheses, unterminated strings and comments, empty rule blocks, and properties or values missing their other half. Does not validate CSS property-value grammar.\n\n[Try CSS Validator in your browser →](https://iotools.cloud/tool/css-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"cssInput":{"type":"string","description":"CSS Input"}},"required":[]},"examples":{"valid_css":{"summary":"Valid CSS","value":{"cssInput":"body {\n  color: #333;\n  margin: 0;\n}\n"}},"missing_closing_brace":{"summary":"Missing closing brace","value":{"cssInput":".header {\n  color: #333;\n  background: #fff;\n\n.footer {\n  color: #666;\n}\n"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_css":{"summary":"Valid CSS","value":{"tool":"css-validator","tool_version":"1.0.2","outputs":{"validationResult":[{"line":"-","type":"Valid","message":"Valid CSS — no structural issues found"}]},"credits_used":5,"credits_remaining":null}},"missing_closing_brace":{"summary":"Missing closing brace","value":{"tool":"css-validator","tool_version":"1.0.2","outputs":{"validationResult":[{"line":"1","type":"Error","message":"Unmatched '{' opening brace (never closed)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"validationResult":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"type":{"type":"string","description":"Type"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","type","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-column-extractor":{"post":{"operationId":"run_csv_column_extractor","summary":"CSV Column Extractor","tags":["Utilities"],"description":"Extract specific columns from CSV data by column number or header name. Handles quoted fields with embedded commas, newlines and escaped double quotes — not a naive comma split — with comma, semicolon, tab or pipe delimiters.\n\n[Try CSV Column Extractor in your browser →](https://iotools.cloud/tool/csv-column-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvSource":{"type":"string","description":"CSV Input"},"delimiter":{"enum":[",",";","tab","|"],"description":"Delimiter"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"columns":{"type":"string","description":"Columns to extract"}},"required":[]},"examples":{"extract_columns_by_header_name_quoted_comma_survives":{"summary":"Extract columns by header name (quoted comma survives)","value":{"csvSource":"name,age,city,department,salary\nAlice Johnson,30,New York,Engineering,95000\nBob Smith,25,Los Angeles,Marketing,72000\n\"Smith, Carol\",35,\"San Francisco\",Engineering,110000\nDavid Lee,28,Chicago,Sales,68000","delimiter":",","firstRowHeaders":"true","columns":"name,city"}},"single_column_as_a_plain_list":{"summary":"Single column as a plain list","value":{"csvSource":"name,age,city,department,salary\nAlice Johnson,30,New York,Engineering,95000\nBob Smith,25,Los Angeles,Marketing,72000\n\"Smith, Carol\",35,\"San Francisco\",Engineering,110000\nDavid Lee,28,Chicago,Sales,68000","delimiter":",","firstRowHeaders":"true","columns":"name"}},"no_header_row_select_by_index":{"summary":"No header row, select by index","value":{"csvSource":"Alice,30,Engineering\nBob,25,Marketing\nCarol,35,Sales","delimiter":",","firstRowHeaders":"","columns":"1,3"}},"semicolon_delimiter_escaped_quotes_and_an_embedded_newline_round_trip":{"summary":"Semicolon delimiter, escaped quotes and an embedded newline round-trip","value":{"csvSource":"name;note\nAlice;\"He said \"\"hi\"\" today\"\nBob;\"Line one\nLine two\"","delimiter":";","firstRowHeaders":"true","columns":"name,note"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extract_columns_by_header_name_quoted_comma_survives":{"summary":"Extract columns by header name (quoted comma survives)","value":{"tool":"csv-column-extractor","tool_version":"1.0.2","outputs":{"output":"name,city\nAlice Johnson,New York\nBob Smith,Los Angeles\n\"Smith, Carol\",San Francisco\nDavid Lee,Chicago","preview":[["name","city"],["Alice Johnson","New York"],["Bob Smith","Los Angeles"],["Smith, Carol","San Francisco"],["David Lee","Chicago"]]},"credits_used":5,"credits_remaining":null}},"single_column_as_a_plain_list":{"summary":"Single column as a plain list","value":{"tool":"csv-column-extractor","tool_version":"1.0.2","outputs":{"output":"name\nAlice Johnson\nBob Smith\nSmith, Carol\nDavid Lee","preview":[["name"],["Alice Johnson"],["Bob Smith"],["Smith, Carol"],["David Lee"]]},"credits_used":5,"credits_remaining":null}},"no_header_row_select_by_index":{"summary":"No header row, select by index","value":{"tool":"csv-column-extractor","tool_version":"1.0.2","outputs":{"output":"Alice,Engineering\nBob,Marketing\nCarol,Sales","preview":[["Alice","Engineering"],["Bob","Marketing"],["Carol","Sales"]]},"credits_used":5,"credits_remaining":null}},"semicolon_delimiter_escaped_quotes_and_an_embedded_newline_round_trip":{"summary":"Semicolon delimiter, escaped quotes and an embedded newline round-trip","value":{"tool":"csv-column-extractor","tool_version":"1.0.2","outputs":{"output":"name;note\nAlice;\"He said \"\"hi\"\" today\"\nBob;\"Line one\nLine two\"","preview":[["name","note"],["Alice","He said \"hi\" today"],["Bob","Line one\nLine two"]]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Extracted CSV"},"preview":{"type":"array","items":{"type":"array","items":{"type":"string"}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-pivot-table-generator":{"post":{"operationId":"run_csv_pivot_table_generator","summary":"CSV Pivot Table Generator","tags":["Utilities"],"description":"Pivot CSV data into a summary table: pick a row field, a column field, a numeric value field, and an aggregation (sum, count, average, min, max) to cross-tabulate your data.\n\n[Try CSV Pivot Table Generator in your browser →](https://iotools.cloud/tool/csv-pivot-table-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvInput":{"type":"string","description":"CSV Data"},"rowField":{"type":"string","description":"Row Field"},"columnField":{"type":"string","description":"Column Field"},"valueField":{"type":"string","description":"Value Field"},"aggregation":{"enum":["sum","count","average","min","max"],"description":"Aggregation"}},"required":[]},"examples":{"sum_of_units_by_region_and_product":{"summary":"Sum of Units by Region and Product","value":{"csvInput":"Region,Product,Units\nNorth,Widget,10\nNorth,Gadget,5\nSouth,Widget,7\nSouth,Gadget,3\nNorth,Widget,2\nSouth,Gadget,4","rowField":"Region","columnField":"Product","valueField":"Units","aggregation":"sum"}},"count_of_units_by_region_and_product":{"summary":"Count of Units by Region and Product","value":{"csvInput":"Region,Product,Units\nNorth,Widget,10\nNorth,Gadget,5\nSouth,Widget,7\nSouth,Gadget,3\nNorth,Widget,2\nSouth,Gadget,4","rowField":"Region","columnField":"Product","valueField":"Units","aggregation":"count"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sum_of_units_by_region_and_product":{"summary":"Sum of Units by Region and Product","value":{"tool":"csv-pivot-table-generator","tool_version":"1.0.2","outputs":{"pivotTable":[["","Gadget","Widget"],["North","5","12"],["South","7","7"]]},"credits_used":5,"credits_remaining":null}},"count_of_units_by_region_and_product":{"summary":"Count of Units by Region and Product","value":{"tool":"csv-pivot-table-generator","tool_version":"1.0.2","outputs":{"pivotTable":[["","Gadget","Widget"],["North","1","2"],["South","2","1"]]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"pivotTable":{"type":"array","description":"Pivot Table","items":{"type":"array","items":{"type":"string"}}}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-profiler":{"post":{"operationId":"run_csv_profiler","summary":"CSV Profiler","tags":["Utilities"],"description":"Profile a CSV file column by column — inferred type, empty and distinct counts, value range, mean and the most common value — plus a data-quality report naming ragged rows, duplicate rows, mixed-type columns and candidate primary keys. Detects the delimiter automatically and runs entirely in your browser.\n\n[Try CSV Profiler in your browser →](https://iotools.cloud/tool/csv-profiler/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvSource":{"type":"string","description":"CSV Input"},"delimiter":{"enum":["auto",",",";","tab","|"],"description":"Delimiter"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"trimValues":{"type":"boolean","description":"Trim whitespace around values"}},"required":[]},"examples":{"saas_customer_export_mixed_types_gaps_repeated_values":{"summary":"SaaS customer export (mixed types, gaps, repeated values)","value":{"csvSource":"id,name,signup_date,plan,seats,mrr,churned\n1,Acme Corp,2024-01-15,pro,25,499.00,false\n2,Globex,2024-02-03,free,3,0,false\n3,Initech,2024-02-28,pro,12,499.00,true\n4,Umbrella,2024-03-11,enterprise,140,2400.50,false\n5,Hooli,,pro,8,499.00,false\n6,Vehement,2024-04-02,free,1,0,true\n7,Soylent,2024-04-19,enterprise,,2400.50,false\n8,Massive Dynamic,2024-05-06,pro,31,499.00,false","delimiter":"auto","firstRowHeaders":"true","trimValues":"true"}},"semicolon_delimited_file_with_a_ragged_row_and_a_duplicate":{"summary":"Semicolon-delimited file with a ragged row and a duplicate","value":{"csvSource":"city;country;population\nParis;FR;2148000\nLyon;FR\nParis;FR;2148000\nBerlin;DE;3645000\n","delimiter":";","firstRowHeaders":"true","trimValues":"true"}},"no_header_row_columns_profiled_positionally":{"summary":"No header row — columns profiled positionally","value":{"csvSource":"alpha,1,2024-01-01\nbeta,2,2024-02-01\ngamma,3,2024-03-01\n","delimiter":",","firstRowHeaders":"","trimValues":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"saas_customer_export_mixed_types_gaps_repeated_values":{"summary":"SaaS customer export (mixed types, gaps, repeated values)","value":{"tool":"csv-profiler","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Rows","value":"8"},{"metric":"Columns","value":"7"},{"metric":"Delimiter","value":"Comma (,) (auto-detected)"},{"metric":"Header row","value":"Yes"},{"metric":"Empty cells","value":"2 of 56 (3.6%)"},{"metric":"Duplicate rows","value":"0"},{"metric":"Ragged rows","value":"0"}],"profile":[{"index":"1","column":"id","type":"integer","non-empty":"8","empty":"0","distinct":"8","range":"1 → 8","mean":"4.5","most-common":""},{"index":"2","column":"name","type":"text","non-empty":"8","empty":"0","distinct":"8","range":"5 → 15 chars","mean":"8.125 chars","most-common":""},{"index":"3","column":"signup_date","type":"date","non-empty":"7","empty":"1 (12.5%)","distinct":"7","range":"2024-01-15 → 2024-05-06","mean":"","most-common":""},{"index":"4","column":"plan","type":"text","non-empty":"8","empty":"0","distinct":"3","range":"3 → 10 chars","mean":"5 chars","most-common":"pro (4×)"},{"index":"5","column":"seats","type":"integer","non-empty":"7","empty":"1 (12.5%)","distinct":"7","range":"1 → 140","mean":"31.4286","most-common":""},{"index":"6","column":"mrr","type":"number","non-empty":"8","empty":"0","distinct":"3","range":"0 → 2400.5","mean":"849.625","most-common":"499.00 (4×)"},{"index":"7","column":"churned","type":"boolean","non-empty":"8","empty":"0","distinct":"2","range":"","mean":"","most-common":"false (6×)"}],"issues":"• Column \"id\" is 100% distinct — a candidate primary key.\n• Column \"name\" is 100% distinct — a candidate primary key.\n• Column \"signup_date\" is 12.5% empty (1 of 8 rows).\n• Column \"seats\" is 12.5% empty (1 of 8 rows)."},"credits_used":5,"credits_remaining":null}},"semicolon_delimited_file_with_a_ragged_row_and_a_duplicate":{"summary":"Semicolon-delimited file with a ragged row and a duplicate","value":{"tool":"csv-profiler","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Rows","value":"4"},{"metric":"Columns","value":"3"},{"metric":"Delimiter","value":"Semicolon (;)"},{"metric":"Header row","value":"Yes"},{"metric":"Empty cells","value":"1 of 12 (8.3%)"},{"metric":"Duplicate rows","value":"1"},{"metric":"Ragged rows","value":"1"}],"profile":[{"index":"1","column":"city","type":"text","non-empty":"4","empty":"0","distinct":"3","range":"4 → 6 chars","mean":"5 chars","most-common":"Paris (2×)"},{"index":"2","column":"country","type":"text","non-empty":"4","empty":"0","distinct":"2","range":"2 → 2 chars","mean":"2 chars","most-common":"FR (3×)"},{"index":"3","column":"population","type":"integer","non-empty":"3","empty":"1 (25%)","distinct":"2","range":"2148000 → 3645000","mean":"2647000","most-common":"2148000 (2×)"}],"issues":"• 1 row does not have 3 fields — the file is ragged, which usually means an unescaped delimiter or line break.\n• 1 duplicate row is an exact copy of an earlier row.\n• Column \"population\" is 25% empty (1 of 4 rows)."},"credits_used":5,"credits_remaining":null}},"no_header_row_columns_profiled_positionally":{"summary":"No header row — columns profiled positionally","value":{"tool":"csv-profiler","tool_version":"1.0.2","outputs":{"overview":[{"metric":"Rows","value":"3"},{"metric":"Columns","value":"3"},{"metric":"Delimiter","value":"Comma (,)"},{"metric":"Header row","value":"No"},{"metric":"Empty cells","value":"0 of 9 (0%)"},{"metric":"Duplicate rows","value":"0"},{"metric":"Ragged rows","value":"0"}],"profile":[{"index":"1","column":"Column 1","type":"text","non-empty":"3","empty":"0","distinct":"3","range":"4 → 5 chars","mean":"4.6667 chars","most-common":""},{"index":"2","column":"Column 2","type":"integer","non-empty":"3","empty":"0","distinct":"3","range":"1 → 3","mean":"2","most-common":""},{"index":"3","column":"Column 3","type":"date","non-empty":"3","empty":"0","distinct":"3","range":"2024-01-01 → 2024-03-01","mean":"","most-common":""}],"issues":"No data-quality issues detected."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"overview":{"type":"array","description":"Dataset overview","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"profile":{"type":"array","description":"Column profile","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"column":{"type":"string","description":"Column"},"type":{"type":"string","description":"Type"},"non-empty":{"type":"string","description":"Non-empty"},"empty":{"type":"string","description":"Empty"},"distinct":{"type":"string","description":"Distinct"},"range":{"type":"string","description":"Range"},"mean":{"type":"string","description":"Mean"},"most-common":{"type":"string","description":"Most common"}}},"x-iotools-columns":["index","column","type","non-empty","empty","distinct","range","mean","most-common"]},"issues":{"type":"string","description":"Data-quality report"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/csv-random-sampler":{"post":{"operationId":"run_csv_random_sampler","summary":"CSV Random Sampler","tags":["Utilities"],"description":"Pull a random subset of rows from a CSV file — pick a sample size and get back a fresh random selection every time, in original row order, with the header row always kept.\n\n[Try CSV Random Sampler in your browser →](https://iotools.cloud/tool/csv-random-sampler/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"csvSource":{"type":"string","description":"CSV Input"},"delimiter":{"enum":[",",";","tab","|"],"description":"Delimiter"},"firstRowHeaders":{"type":"boolean","description":"First row contains headers"},"sampleSize":{"type":"number","description":"Rows to sample","minimum":1}},"required":[]},"examples":{"sample_3_rows_from_an_employee_csv":{"summary":"Sample 3 rows from an employee CSV","value":{"csvSource":"name,age,city,department,salary\nAlice Johnson,30,New York,Engineering,95000\nBob Smith,25,Los Angeles,Marketing,72000\n\"Smith, Carol\",35,\"San Francisco\",Engineering,110000\nDavid Lee,28,Chicago,Sales,68000\nEve Turner,41,Seattle,Engineering,120000\nFrank Ito,33,Austin,Sales,71000","delimiter":",","firstRowHeaders":"true","sampleSize":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Sampled CSV"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dns-lookup":{"post":{"operationId":"run_dns_lookup","summary":"DNS Lookup","tags":["Utilities"],"description":"Look up a domain's DNS records — A, AAAA, MX, NS, TXT, CNAME or SOA — over DNS-over-HTTPS, with each record's value and human-readable TTL.\n\n[Try DNS Lookup in your browser →](https://iotools.cloud/tool/dns-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name"},"recordType":{"enum":["A","AAAA","MX","NS","TXT","CNAME","SOA"],"description":"Record type"}},"required":["domain"]},"examples":{"a_records":{"summary":"A records","value":{"domain":"example.com","recordType":"A"}},"mx_records":{"summary":"MX records","value":{"domain":"github.com","recordType":"MX"}},"txt_records":{"summary":"TXT records","value":{"domain":"cloudflare.com","recordType":"TXT"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Query","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"records":{"type":"array","description":"Records","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"name":{"type":"string","description":"Name"},"value":{"type":"string","description":"Value"},"ttl":{"type":"string","description":"TTL"}}},"x-iotools-columns":["type","name","value","ttl"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dns-propagation-checker":{"post":{"operationId":"run_dns_propagation_checker","summary":"DNS Propagation Checker","tags":["Utilities"],"description":"Check whether a DNS change has propagated by querying multiple public DNS-over-HTTPS resolvers (Cloudflare, Google, Quad9, AdGuard) at once and comparing their answers — see the resolved value, TTL and consensus for A, AAAA, MX, CNAME, TXT or NS records.\n\n[Try DNS Propagation Checker in your browser →](https://iotools.cloud/tool/dns-propagation-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"recordType":{"enum":["A","AAAA","MX","CNAME","TXT","NS"],"description":"Record type"}},"required":["domain"]},"examples":{"a_record_for_github_com":{"summary":"A record for github.com","value":{"domain":"github.com","recordType":"A"}},"mx_record_for_google_com":{"summary":"MX record for google.com","value":{"domain":"google.com","recordType":"MX"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"results":{"type":"array","description":"Resolver results","items":{"type":"object","properties":{"resolver":{"type":"string","description":"Resolver"},"provider":{"type":"string","description":"Provider"},"status":{"type":"string","description":"Status"},"resolved-value":{"type":"string","description":"Resolved value"},"ttl":{"type":"string","description":"TTL"}}},"x-iotools-columns":["resolver","provider","status","resolved-value","ttl"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dockerfile-linter":{"post":{"operationId":"run_dockerfile_linter","summary":"Dockerfile Linter","tags":["Utilities"],"description":"Lint a Dockerfile against 18 Hadolint-style best-practice rules (unpinned base images, running as root, secrets in ENV, layer bloat, and more) and auto-format it — combining RUN layers and sorting package lists. Runs entirely in your browser.\n\n[Try Dockerfile Linter in your browser →](https://iotools.cloud/tool/dockerfile-linter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"dockerfile":{"type":"string","description":"Dockerfile"}},"required":[]},"examples":{"problematic_dockerfile":{"summary":"Problematic Dockerfile","value":{"dockerfile":"FROM ubuntu:latest\n\nMAINTAINER john@example.com\n\nRUN apt-get update\nRUN apt-get install -y curl wget git\nRUN cd /app && npm install\n\nADD ./config.txt /app/config.txt\n\nENV DB_PASSWORD=mysecretpass123\nENV API_KEY=sk-1234567890abcdef\n\nEXPOSE 8080\nEXPOSE 99999\n\nCOPY . /app\n\nRUN chmod +x /app/start.sh\n\nCMD node server.js"}},"clean_dockerfile_no_issues":{"summary":"Clean Dockerfile (no issues)","value":{"dockerfile":"FROM node:20-alpine\nWORKDIR /app\nCOPY package.json ./\nRUN npm ci\nCOPY . .\nUSER node\nHEALTHCHECK CMD wget -q -O /dev/null http://localhost:3000/ || exit 1\nCMD [\"node\", \"server.js\"]"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"problematic_dockerfile":{"summary":"Problematic Dockerfile","value":{"tool":"dockerfile-linter","tool_version":"1.0.2","outputs":{"summary":[{"severity":"Errors","count":"1"},{"severity":"Warnings","count":"9"},{"severity":"Info","count":"3"},{"severity":"Total","count":"13"}],"issues":[{"line":"1","severity":"Warning","rule":"DL3007","message":"Using the :latest tag is not recommended","explanation":"Pin to a specific version for reproducible builds (e.g., node:18-alpine instead of node:latest)."},{"line":"3","severity":"Warning","rule":"DL4000","message":"MAINTAINER is deprecated — use LABEL maintainer=\"...\"","explanation":"The MAINTAINER instruction is deprecated. Use LABEL maintainer=\"name\" instead."},{"line":"5","severity":"Warning","rule":"DL3059","message":"3 consecutive RUN instructions — consider combining","explanation":"Each RUN creates a new layer. Combine with && \\ to reduce layers and image size."},{"line":"6","severity":"Warning","rule":"DL3009","message":"Delete the apt-get lists after installing packages","explanation":"Run \"rm -rf /var/lib/apt/lists/*\" after apt-get install to reduce image size."},{"line":"6","severity":"Info","rule":"DL3015","message":"Use --no-install-recommends with apt-get install","explanation":"Avoids installing unnecessary recommended packages, reducing image size."},{"line":"7","severity":"Warning","rule":"DL3003","message":"Use WORKDIR to switch directories instead of cd in RUN","explanation":"Using cd in RUN does not persist across instructions. Use WORKDIR instead."},{"line":"9","severity":"Warning","rule":"DL3020","message":"Use COPY instead of ADD for files and folders","explanation":"ADD has extra features (auto-extraction, URLs) that make it less predictable. Use COPY unless you need ADD features."},{"line":"11","severity":"Warning","rule":"DL3060","message":"Possible secret or credential in ENV","explanation":"Avoid hardcoding secrets in Dockerfiles. Use --build-arg, Docker secrets, or runtime environment variables."},{"line":"12","severity":"Warning","rule":"DL3060","message":"Possible secret or credential in ENV","explanation":"Avoid hardcoding secrets in Dockerfiles. Use --build-arg, Docker secrets, or runtime environment variables."},{"line":"15","severity":"Error","rule":"DL3011","message":"Invalid EXPOSE port: 99999","explanation":"Port numbers must be between 0 and 65535."},{"line":"21","severity":"Warning","rule":"DL3002","message":"No USER instruction found — container will run as root","explanation":"Running containers as root is a security risk. Add a USER instruction to run as a non-root user."},{"line":"21","severity":"Info","rule":"DL3025","message":"Use JSON notation for CMD","explanation":"Use CMD [\"executable\", \"param1\"] to avoid shell processing issues."},{"line":"21","severity":"Info","rule":"DL3048","message":"Missing HEALTHCHECK instruction","explanation":"Add a HEALTHCHECK to let Docker know how to check if the container is still working."}],"formatted":"FROM ubuntu:latest\n\nMAINTAINER john@example.com\n\nRUN apt-get update && \\\n    apt-get install -y curl git wget && \\\n    cd /app && \\\n    npm install\n\nADD ./config.txt /app/config.txt\n\nENV DB_PASSWORD=mysecretpass123\nENV API_KEY=sk-1234567890abcdef\n\nEXPOSE 8080\nEXPOSE 99999\n\nCOPY . /app\n\nRUN chmod +x /app/start.sh\n\nCMD node server.js\n"},"credits_used":5,"credits_remaining":null}},"clean_dockerfile_no_issues":{"summary":"Clean Dockerfile (no issues)","value":{"tool":"dockerfile-linter","tool_version":"1.0.2","outputs":{"summary":[{"severity":"Errors","count":"0"},{"severity":"Warnings","count":"0"},{"severity":"Info","count":"0"},{"severity":"Total","count":"0"}],"issues":[],"formatted":"FROM node:20-alpine\nWORKDIR /app\nCOPY package.json ./\nRUN npm ci\nCOPY . .\nUSER node\nHEALTHCHECK CMD wget -q -O /dev/null http://localhost:3000/ || exit 1\nCMD [\"node\", \"server.js\"]\n"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["severity","count"]},"issues":{"type":"array","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"severity":{"type":"string","description":"Severity"},"rule":{"type":"string","description":"Rule"},"message":{"type":"string","description":"Message"},"explanation":{"type":"string","description":"Explanation"}}},"x-iotools-columns":["line","severity","rule","message","explanation"]},"formatted":{"type":"string","description":"Formatted Dockerfile"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/domain-extractor":{"post":{"operationId":"run_domain_extractor","summary":"Domain Extractor","tags":["Utilities"],"description":"Extract, deduplicate and count the root domains referenced in a list of URLs or a block of text — resolved against the public suffix list so multi-part TLDs like .co.uk and .com.au collapse to the correct registrable domain instead of a naive last-two-labels split.\n\n[Try Domain Extractor in your browser →](https://iotools.cloud/tool/domain-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"URLs or Text"},"sort":{"enum":["count","alpha","found"],"description":"Sort order"},"separator":{"enum":["newline","comma","semicolon"],"description":"Separator"}},"required":[]},"examples":{"mixed_urls_and_text_most_occurrences_first":{"summary":"Mixed URLs and text, most occurrences first","value":{"inputText":"Check out our new homepage at https://www.example.com/products?ref=homepage for the full catalog.\nDocs are here: http://docs.example.org/getting-started/ (see the intro).\nUK office: https://www.example.co.uk/contact, and the Australian one: https://shop.example.com.au/sale\nYou can also just visit www.example.com again, or the bare domain example.com in a list of sites.\nRead more at <https://blog.example.org/2026/07/21/launch-day>.\nNot a domain, just a filename: readme.txt\nContact support@example.com for help.","sort":"count","separator":"newline"}},"alphabetical_comma_separated":{"summary":"Alphabetical, comma-separated","value":{"inputText":"Check out our new homepage at https://www.example.com/products?ref=homepage for the full catalog.\nDocs are here: http://docs.example.org/getting-started/ (see the intro).\nUK office: https://www.example.co.uk/contact, and the Australian one: https://shop.example.com.au/sale\nYou can also just visit www.example.com again, or the bare domain example.com in a list of sites.\nRead more at <https://blog.example.org/2026/07/21/launch-day>.\nNot a domain, just a filename: readme.txt\nContact support@example.com for help.","sort":"alpha","separator":"comma"}},"no_domains_present":{"summary":"No domains present","value":{"inputText":"There are no links here, just plain text.","sort":"count","separator":"newline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_urls_and_text_most_occurrences_first":{"summary":"Mixed URLs and text, most occurrences first","value":{"tool":"domain-extractor","tool_version":"1.0.2","outputs":{"count":"4","extractedDomains":"example.com\nexample.org\nexample.co.uk\nexample.com.au","domainCounts":[{"domain":"example.com","occurrences":"4"},{"domain":"example.org","occurrences":"2"},{"domain":"example.co.uk","occurrences":"1"},{"domain":"example.com.au","occurrences":"1"}]},"credits_used":5,"credits_remaining":null}},"alphabetical_comma_separated":{"summary":"Alphabetical, comma-separated","value":{"tool":"domain-extractor","tool_version":"1.0.2","outputs":{"count":"4","extractedDomains":"example.co.uk, example.com, example.com.au, example.org","domainCounts":[{"domain":"example.co.uk","occurrences":"1"},{"domain":"example.com","occurrences":"4"},{"domain":"example.com.au","occurrences":"1"},{"domain":"example.org","occurrences":"2"}]},"credits_used":5,"credits_remaining":null}},"no_domains_present":{"summary":"No domains present","value":{"tool":"domain-extractor","tool_version":"1.0.2","outputs":{"count":"0","extractedDomains":"","domainCounts":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"Unique domains found"},"extractedDomains":{"type":"string","description":"Root Domains"},"domainCounts":{"type":"array","description":"Domain Occurrence Counts","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"occurrences":{"type":"string","description":"Occurrences"}}},"x-iotools-columns":["domain","occurrences"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dotenv-diff-checker":{"post":{"operationId":"run_dotenv_diff_checker","summary":"Dotenv Diff Checker","tags":["Utilities"],"description":"Compare a .env file against its .env.example template to find missing, extra and value-mismatched keys. Parses export prefixes, quotes and inline comments; optional case-insensitive keys, value comparison and value masking. Runs entirely in your browser.\n\n[Try Dotenv Diff Checker in your browser →](https://iotools.cloud/tool/dotenv-diff-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"exampleInput":{"type":"string","description":".env.example (template)"},"actualInput":{"type":"string","description":".env (actual)"},"caseSensitive":{"type":"boolean","description":"Case-sensitive key comparison"},"compareValues":{"type":"boolean","description":"Compare values (flag matched keys with different values)"},"maskValues":{"type":"boolean","description":"Mask values in report"}},"required":[]},"examples":{"compare_env_against_template_values_masked":{"summary":"Compare .env against template (values masked)","value":{"exampleInput":"# Database\nDB_HOST=\nDB_PORT=5432\nDB_NAME=\nDB_USER=\nDB_PASS=\n\n# API\nAPI_KEY=\nAPI_SECRET=\nAPI_URL=https://api.example.com\n\n# App\nAPP_ENV=production\nLOG_LEVEL=info\nSESSION_SECRET=","actualInput":"# Database\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_dev\nDB_USER=admin\nDB_PASS=s3cret\n\n# API\nAPI_KEY=abc123\nAPI_URL=https://api.example.com\n\n# App\nAPP_ENV=development\nLOG_LEVEL=debug\nDEBUG=true\nLOCAL_OVERRIDE=1","caseSensitive":"true","compareValues":"true","maskValues":"true"}},"show_real_values_masking_off":{"summary":"Show real values (masking off)","value":{"exampleInput":"# Database\nDB_HOST=\nDB_PORT=5432\nDB_NAME=\nDB_USER=\nDB_PASS=\n\n# API\nAPI_KEY=\nAPI_SECRET=\nAPI_URL=https://api.example.com\n\n# App\nAPP_ENV=production\nLOG_LEVEL=info\nSESSION_SECRET=","actualInput":"# Database\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_dev\nDB_USER=admin\nDB_PASS=s3cret\n\n# API\nAPI_KEY=abc123\nAPI_URL=https://api.example.com\n\n# App\nAPP_ENV=development\nLOG_LEVEL=debug\nDEBUG=true\nLOCAL_OVERRIDE=1","caseSensitive":"true","compareValues":"true","maskValues":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compare_env_against_template_values_masked":{"summary":"Compare .env against template (values masked)","value":{"tool":"dotenv-diff-checker","tool_version":"1.0.2","outputs":{"summary":[{"status":"Matched","count":"7"},{"status":"Missing in .env","count":"2"},{"status":"Extra in .env","count":"2"},{"status":"Value mismatch","count":"2"}],"report":[{"status":"Missing","key":"API_SECRET","env-example":"","env":""},{"status":"Missing","key":"SESSION_SECRET","env-example":"","env":""},{"status":"Value mismatch","key":"APP_ENV","env-example":"*****","env":"*****"},{"status":"Value mismatch","key":"LOG_LEVEL","env-example":"*****","env":"*****"},{"status":"Extra","key":"DEBUG","env-example":"","env":"*****"},{"status":"Extra","key":"LOCAL_OVERRIDE","env-example":"","env":"*****"},{"status":"Matched","key":"API_KEY","env-example":"","env":"*****"},{"status":"Matched","key":"API_URL","env-example":"*****","env":"*****"},{"status":"Matched","key":"DB_HOST","env-example":"","env":"*****"},{"status":"Matched","key":"DB_NAME","env-example":"","env":"*****"},{"status":"Matched","key":"DB_PASS","env-example":"","env":"*****"},{"status":"Matched","key":"DB_PORT","env-example":"*****","env":"*****"},{"status":"Matched","key":"DB_USER","env-example":"","env":"*****"}],"exportText":"# .env vs .env.example diff report\n\nMatched:         7\nMissing in .env: 2\nExtra in .env:   2\nValue mismatch:  2\n\n## Missing in .env (required by .env.example)\n- API_SECRET=\n- SESSION_SECRET=\n\n## Extra in .env (not declared in .env.example)\n+ DEBUG=*****\n+ LOCAL_OVERRIDE=*****\n\n## Value mismatches\n~ APP_ENV\n    example: *****\n    actual:  *****\n~ LOG_LEVEL\n    example: *****\n    actual:  *****\n\n## Matched\n= API_KEY\n= API_URL\n= DB_HOST\n= DB_NAME\n= DB_PASS\n= DB_PORT\n= DB_USER"},"credits_used":5,"credits_remaining":null}},"show_real_values_masking_off":{"summary":"Show real values (masking off)","value":{"tool":"dotenv-diff-checker","tool_version":"1.0.2","outputs":{"summary":[{"status":"Matched","count":"7"},{"status":"Missing in .env","count":"2"},{"status":"Extra in .env","count":"2"},{"status":"Value mismatch","count":"2"}],"report":[{"status":"Missing","key":"API_SECRET","env-example":"","env":""},{"status":"Missing","key":"SESSION_SECRET","env-example":"","env":""},{"status":"Value mismatch","key":"APP_ENV","env-example":"production","env":"development"},{"status":"Value mismatch","key":"LOG_LEVEL","env-example":"info","env":"debug"},{"status":"Extra","key":"DEBUG","env-example":"","env":"true"},{"status":"Extra","key":"LOCAL_OVERRIDE","env-example":"","env":"1"},{"status":"Matched","key":"API_KEY","env-example":"","env":"abc123"},{"status":"Matched","key":"API_URL","env-example":"https://api.example.com","env":"https://api.example.com"},{"status":"Matched","key":"DB_HOST","env-example":"","env":"localhost"},{"status":"Matched","key":"DB_NAME","env-example":"","env":"myapp_dev"},{"status":"Matched","key":"DB_PASS","env-example":"","env":"s3cret"},{"status":"Matched","key":"DB_PORT","env-example":"5432","env":"5432"},{"status":"Matched","key":"DB_USER","env-example":"","env":"admin"}],"exportText":"# .env vs .env.example diff report\n\nMatched:         7\nMissing in .env: 2\nExtra in .env:   2\nValue mismatch:  2\n\n## Missing in .env (required by .env.example)\n- API_SECRET=\n- SESSION_SECRET=\n\n## Extra in .env (not declared in .env.example)\n+ DEBUG=true\n+ LOCAL_OVERRIDE=1\n\n## Value mismatches\n~ APP_ENV\n    example: production\n    actual:  development\n~ LOG_LEVEL\n    example: info\n    actual:  debug\n\n## Matched\n= API_KEY\n= API_URL\n= DB_HOST\n= DB_NAME\n= DB_PASS\n= DB_PORT\n= DB_USER"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["status","count"]},"report":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"key":{"type":"string","description":"Key"},"env-example":{"type":"string","description":".env.example"},"env":{"type":"string","description":".env"}}},"x-iotools-columns":["status","key","env-example","env"]},"exportText":{"type":"string","description":"Exportable report"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-deliverability-checker":{"post":{"operationId":"run_email_deliverability_checker","summary":"Email Deliverability Checker","tags":["Utilities"],"description":"Check a domain's email authentication — MX, SPF, DMARC and BIMI DNS records — and get a deliverability score with the exact issues to fix.\n\n[Try Email Deliverability Checker in your browser →](https://iotools.cloud/tool/email-deliverability-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain or email address"}},"required":["domain"]},"examples":{"a_well_configured_domain":{"summary":"A well-configured domain","value":{"domain":"google.com"}},"from_an_email_address":{"summary":"From an email address","value":{"domain":"someone@github.com"}},"a_domain_with_strict_dmarc":{"summary":"A domain with strict DMARC","value":{"domain":"paypal.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"score":{"type":"array","description":"Deliverability score","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"records":{"type":"array","description":"Records found","items":{"type":"object","properties":{"check":{"type":"string","description":"Check"},"record":{"type":"string","description":"Record"}}},"x-iotools-columns":["check","record"]},"issues":{"type":"array","description":"Findings & recommendations","items":{"type":"object","properties":{"check":{"type":"string","description":"Check"},"finding":{"type":"string","description":"Finding"}}},"x-iotools-columns":["check","finding"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-extractor":{"post":{"operationId":"run_email_extractor","summary":"Email Extractor","tags":["Utilities"],"description":"Extract and de-duplicate every email address from a block of text or a pasted document. Validates each match, lowercases it, removes duplicates, and lets you sort by domain or alphabetically.\n\n[Try Email Extractor in your browser →](https://iotools.cloud/tool/email-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text with Email Addresses"},"sort":{"enum":["domain","email","found"],"description":"Sort order"},"separator":{"enum":["newline","comma","semicolon"],"description":"Separator"}},"required":[]},"examples":{"extract_from_text_by_domain":{"summary":"Extract from text (by domain)","value":{"inputText":"Contact us at\njohn.doe@example.com - Sales Department\nJane Smith (jane_smith123@company.org)\nSupport - support+tickets@help-desk.io\nReach out to marketing@brand.co.uk for partnerships\nOld email - user.name@subdomain.domain.com\nInvalid - not-an-email or @missing.com\nAnother contact - admin@localhost (internal only)\nTest - info@example.com\nNumbers - agent007@secret.agency","sort":"domain","separator":"newline"}},"alphabetical_comma_separated":{"summary":"Alphabetical, comma-separated","value":{"inputText":"Reach ALICE@Example.com, bob@example.com; also alice@example.com again.","sort":"email","separator":"comma"}},"no_emails_present":{"summary":"No emails present","value":{"inputText":"There are no addresses here.","sort":"domain","separator":"newline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extract_from_text_by_domain":{"summary":"Extract from text (by domain)","value":{"tool":"email-extractor","tool_version":"1.0.2","outputs":{"count":"8","extractedEmails":"marketing@brand.co.uk\njane_smith123@company.org\ninfo@example.com\njohn.doe@example.com\nsupport+tickets@help-desk.io\nadmin@localhost\nagent007@secret.agency\nuser.name@subdomain.domain.com"},"credits_used":5,"credits_remaining":null}},"alphabetical_comma_separated":{"summary":"Alphabetical, comma-separated","value":{"tool":"email-extractor","tool_version":"1.0.2","outputs":{"count":"2","extractedEmails":"alice@example.com, bob@example.com"},"credits_used":5,"credits_remaining":null}},"no_emails_present":{"summary":"No emails present","value":{"tool":"email-extractor","tool_version":"1.0.2","outputs":{"count":"0","extractedEmails":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"Emails found"},"extractedEmails":{"type":"string","description":"Extracted Email Addresses"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-header-analyzer":{"post":{"operationId":"run_email_header_analyzer","summary":"Email Header Analyzer","tags":["Utilities"],"description":"Parse raw email headers to reveal the sender, the delivery hop chain with per-hop delays, SPF/DKIM/DMARC authentication results, spam-filter scores and every header grouped by purpose — all in your browser.\n\n[Try Email Header Analyzer in your browser →](https://iotools.cloud/tool/email-header-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rawHeaders":{"type":"string","description":"Raw Email Headers"}},"required":[]},"examples":{"sample_email_all_checks_pass":{"summary":"Sample email (all checks pass)","value":{"rawHeaders":"Delivered-To: recipient@example.com\nReceived: by 2002:a05:6a20:918a:0:0:0:0 with SMTP id adf99e12a06e7-33f; Thu, 20 Mar 2026 08:15:32 -0700 (PDT)\nReceived: from mail-sor-f41.google.com (mail-sor-f41.google.com [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-ab6; Thu, 20 Mar 2026 08:15:30 -0700 (PDT)\nReceived-SPF: pass (google.com: domain of sender@example.org designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;\nAuthentication-Results: mx.google.com; dkim=pass header.i=@example.org header.s=google header.b=abc123; spf=pass (google.com: domain of sender@example.org designates 209.85.220.41 as permitted sender) smtp.mailfrom=sender@example.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=example.org\nReceived: from webserver.example.org (webserver.example.org [203.0.113.50]) by mail-sor-f41.google.com with ESMTP id abc123; Thu, 20 Mar 2026 08:15:28 -0700 (PDT)\nReceived: from localhost (localhost [127.0.0.1]) by webserver.example.org (Postfix) with ESMTP id DEF456; Thu, 20 Mar 2026 08:14:45 -0700 (PDT)\nFrom: =?UTF-8?B?Sm9obiBEb2U=?= <sender@example.org>\nTo: Jane Smith <recipient@example.com>\nSubject: =?UTF-8?Q?Meeting_Tomorrow_=E2=80=93_Project_Update?=\nDate: Thu, 20 Mar 2026 08:14:44 -0700\nMessage-ID: <CAExample123@mail.example.org>\nMIME-Version: 1.0\nContent-Type: multipart/alternative; boundary=\"000000000000abcdef\"\nContent-Transfer-Encoding: 7bit\nX-Mailer: CustomMailer/2.1\nX-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham\nX-Spam-Score: -2.1"}},"spoofed_sender_spf_fail":{"summary":"Spoofed sender (SPF fail)","value":{"rawHeaders":"From: \"Your Bank\" <security@yourbank.example>\nTo: victim@example.com\nSubject: Urgent: verify your account\nDate: Mon, 01 Jun 2026 10:00:00 +0000\nAuthentication-Results: mx.example.com; spf=fail smtp.mailfrom=attacker@evil.example\nMessage-ID: <spoof-1@evil.example>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_email_all_checks_pass":{"summary":"Sample email (all checks pass)","value":{"tool":"email-header-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"field":"From","value":"John Doe <sender@example.org>"},{"field":"To","value":"Jane Smith <recipient@example.com>"},{"field":"Subject","value":"Meeting Tomorrow – Project Update"},{"field":"Date","value":"Thu, 20 Mar 2026 08:14:44 -0700"},{"field":"Message-ID","value":"<CAExample123@mail.example.org>"},{"field":"Originating IP","value":"127.0.0.1"},{"field":"Authentication","value":"SPF: pass · DKIM: pass · DMARC: pass"},{"field":"Total delivery time","value":"47s"}],"auth":[{"check":"SPF (Sender Policy Framework)","result":"pass","details":"The sending server is authorized to send email for this domain. Domain: sender@example.org"},{"check":"DKIM (DomainKeys Identified Mail)","result":"pass","details":"The email signature is valid and the message has not been altered in transit. Domain: example.org"},{"check":"DMARC (Domain-based Message Authentication)","result":"pass","details":"The email passes DMARC alignment (SPF and/or DKIM align with the From domain). Domain: example.org Policy: REJECT"}],"hops":[{"n":"1","from":"localhost","by":"webserver.example.org","time-utc":"Fri, 20 Mar 2026 15:14:45 GMT","delay":"—"},{"n":"2","from":"webserver.example.org","by":"mail-sor-f41.google.com","time-utc":"Fri, 20 Mar 2026 15:15:28 GMT","delay":"43s ⚠️"},{"n":"3","from":"mail-sor-f41.google.com","by":"mx.google.com","time-utc":"Fri, 20 Mar 2026 15:15:30 GMT","delay":"2s"},{"n":"4","from":"—","by":"2002:a05:6a20:918a:0:0:0:0","time-utc":"Fri, 20 Mar 2026 15:15:32 GMT","delay":"2s"}],"spam":[{"metric":"Risk Assessment","value":"Low"},{"metric":"Spam Status","value":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham"},{"metric":"Spam Score","value":"-2.1"},{"metric":"Required Score","value":"5.0"},{"metric":"SpamAssassin Tests","value":"BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS"}],"headers":[{"group":"Routing","header":"Delivered-To","value":"recipient@example.com"},{"group":"Routing","header":"Received","value":"by 2002:a05:6a20:918a:0:0:0:0 with SMTP id adf99e12a06e7-33f; Thu, 20 Mar 2026 08:15:32 -0700 (PDT)"},{"group":"Routing","header":"Received","value":"from mail-sor-f41.google.com (mail-sor-f41.google.com [209.85.220.41]) by mx.google.com with SMTPS id a640c23a62f3a-ab6; Thu, 20 Mar 2026 08:15:30 -0700 (PDT)"},{"group":"Routing","header":"Received-SPF","value":"pass (google.com: domain of sender@example.org designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;"},{"group":"Routing","header":"Received","value":"from webserver.example.org (webserver.example.org [203.0.113.50]) by mail-sor-f41.google.com with ESMTP id abc123; Thu, 20 Mar 2026 08:15:28 -0700 (PDT)"},{"group":"Routing","header":"Received","value":"from localhost (localhost [127.0.0.1]) by webserver.example.org (Postfix) with ESMTP id DEF456; Thu, 20 Mar 2026 08:14:45 -0700 (PDT)"},{"group":"Authentication","header":"Authentication-Results","value":"mx.google.com; dkim=pass header.i=@example.org header.s=google header.b=abc123; spf=pass (google.com: domain of sender@example.org designates 209.85.220.41 as permitted sender) smtp.mailfrom=sender@example.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=example.org"},{"group":"Sender / Recipient","header":"From","value":"John Doe <sender@example.org>"},{"group":"Sender / Recipient","header":"To","value":"Jane Smith <recipient@example.com>"},{"group":"Content","header":"Subject","value":"Meeting Tomorrow – Project Update"},{"group":"Content","header":"Date","value":"Thu, 20 Mar 2026 08:14:44 -0700"},{"group":"Content","header":"Message-ID","value":"<CAExample123@mail.example.org>"},{"group":"Content","header":"MIME-Version","value":"1.0"},{"group":"Content","header":"Content-Type","value":"multipart/alternative; boundary=\"000000000000abcdef\""},{"group":"Content","header":"Content-Transfer-Encoding","value":"7bit"},{"group":"Custom / X-Headers","header":"X-Mailer","value":"CustomMailer/2.1"},{"group":"Custom / X-Headers","header":"X-Spam-Status","value":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham"},{"group":"Custom / X-Headers","header":"X-Spam-Score","value":"-2.1"}]},"credits_used":5,"credits_remaining":null}},"spoofed_sender_spf_fail":{"summary":"Spoofed sender (SPF fail)","value":{"tool":"email-header-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"field":"From","value":"\"Your Bank\" <security@yourbank.example>"},{"field":"To","value":"victim@example.com"},{"field":"Subject","value":"Urgent: verify your account"},{"field":"Date","value":"Mon, 01 Jun 2026 10:00:00 +0000"},{"field":"Message-ID","value":"<spoof-1@evil.example>"},{"field":"Originating IP","value":"Not detected"},{"field":"Authentication","value":"SPF: fail · DKIM: none · DMARC: none"}],"auth":[{"check":"SPF (Sender Policy Framework)","result":"fail","details":"The sending server is NOT authorized. This email may be spoofed. Domain: attacker@evil.example"},{"check":"DKIM (DomainKeys Identified Mail)","result":"none","details":"No DKIM record found in headers."},{"check":"DMARC (Domain-based Message Authentication)","result":"none","details":"No DMARC record found in headers."}],"hops":[],"spam":[],"headers":[{"group":"Authentication","header":"Authentication-Results","value":"mx.example.com; spf=fail smtp.mailfrom=attacker@evil.example"},{"group":"Sender / Recipient","header":"From","value":"\"Your Bank\" <security@yourbank.example>"},{"group":"Sender / Recipient","header":"To","value":"victim@example.com"},{"group":"Content","header":"Subject","value":"Urgent: verify your account"},{"group":"Content","header":"Date","value":"Mon, 01 Jun 2026 10:00:00 +0000"},{"group":"Content","header":"Message-ID","value":"<spoof-1@evil.example>"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"auth":{"type":"array","items":{"type":"object","properties":{"check":{"type":"string","description":"Check"},"result":{"type":"string","description":"Result"},"details":{"type":"string","description":"Details"}}},"x-iotools-columns":["check","result","details"]},"hops":{"type":"array","items":{"type":"object","properties":{"n":{"type":"string","description":"#"},"from":{"type":"string","description":"From"},"by":{"type":"string","description":"By"},"time-utc":{"type":"string","description":"Time (UTC)"},"delay":{"type":"string","description":"Delay"}}},"x-iotools-columns":["n","from","by","time-utc","delay"]},"spam":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"headers":{"type":"array","items":{"type":"object","properties":{"group":{"type":"string","description":"Group"},"header":{"type":"string","description":"Header"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["group","header","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/email-normalizer":{"post":{"operationId":"run_email_normalizer","summary":"Email Normalizer","tags":["Utilities"],"description":"Normalize a list of email addresses to their canonical form: lowercase, strip Gmail-style dots, remove plus (+) aliases, collapse googlemail.com to gmail.com, and drop duplicates. Runs entirely in your browser.\n\n[Try Email Normalizer in your browser →](https://iotools.cloud/tool/email-normalizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"emailInput":{"type":"string","description":"Email Addresses"},"removeDots":{"type":"boolean","description":"Remove dots from local part (Gmail-style)"},"removeAliases":{"type":"boolean","description":"Remove plus (+) aliases"},"lowercase":{"type":"boolean","description":"Convert to lowercase"},"removeDuplicates":{"type":"boolean","description":"Remove duplicate emails after normalization"}},"required":[]},"examples":{"normalize_with_all_options_on":{"summary":"Normalize with all options on","value":{"emailInput":"john.doe+newsletter@gmail.com\nJane.Smith@GoogleMail.com\nuser+promo@outlook.com\nadmin@example.com\ntest.user+spam@gmail.com","removeDots":"true","removeAliases":"true","lowercase":"true","removeDuplicates":"true"}},"collapse_duplicates_to_one_address":{"summary":"Collapse duplicates to one address","value":{"emailInput":"john.doe@gmail.com\nJohnDoe+news@gmail.com","removeDots":"true","removeAliases":"true","lowercase":"true","removeDuplicates":"true"}},"all_options_off_addresses_left_untouched":{"summary":"All options off — addresses left untouched","value":{"emailInput":"John.Doe+News@GoogleMail.com","removeDots":"","removeAliases":"","lowercase":"","removeDuplicates":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"normalize_with_all_options_on":{"summary":"Normalize with all options on","value":{"tool":"email-normalizer","tool_version":"1.0.2","outputs":{"normalizedOutput":"johndoe@gmail.com\njanesmith@gmail.com\nuser@outlook.com\nadmin@example.com\ntestuser@gmail.com"},"credits_used":5,"credits_remaining":null}},"collapse_duplicates_to_one_address":{"summary":"Collapse duplicates to one address","value":{"tool":"email-normalizer","tool_version":"1.0.2","outputs":{"normalizedOutput":"johndoe@gmail.com"},"credits_used":5,"credits_remaining":null}},"all_options_off_addresses_left_untouched":{"summary":"All options off — addresses left untouched","value":{"tool":"email-normalizer","tool_version":"1.0.2","outputs":{"normalizedOutput":"John.Doe+News@GoogleMail.com"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"normalizedOutput":{"type":"string","description":"Normalized Emails"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/emoji-picker":{"post":{"operationId":"run_emoji_picker","summary":"Emoji Picker","tags":["Utilities"],"description":"Search and browse every Unicode emoji by keyword, category and version. See each emoji's code points (U+XXXX), UTF-16 escape sequence and official name, then copy what you need.\n\n[Try Emoji Picker in your browser →](https://iotools.cloud/tool/emoji-picker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search"},"category":{"enum":["any","Smileys & Emotion","People & Body","Animals & Nature","Food & Drink","Travel & Places","Activities","Objects","Symbols","Flags"],"description":"Category"},"version":{"enum":["any","0.6","0.7","1.0","2.0","3.0","4.0","5.0","11.0","12.0","12.1","13.0","13.1","14.0","15.0","15.1"],"description":"Emoji version"},"limit":{"type":"number","description":"Max results","minimum":10,"maximum":300}},"required":[]},"examples":{"search_grinning_face":{"summary":"Search \"grinning face\"","value":{"search":"grinning face","category":"any","version":"any","limit":"50"}},"flags_category_search_japan":{"summary":"Flags category, search \"japan\"","value":{"search":"japan","category":"Flags","version":"any","limit":"50"}},"emoji_version_1_0_search_heart":{"summary":"Emoji version 1.0, search \"heart\"","value":{"search":"heart","category":"any","version":"1.0","limit":"50"}},"search_cat_whole_word_match_only":{"summary":"Search \"cat\" — whole-word match only","value":{"search":"cat","category":"any","version":"any","limit":"50"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"search_grinning_face":{"summary":"Search \"grinning face\"","value":{"tool":"emoji-picker","tool_version":"1.0.2","outputs":{"count":"10 emojis found","results":[{"emoji":"😀","code-points":"U+1F600","utf-16":"\\uD83D\\uDE00","description":"Grinning face","version":"1.0"},{"emoji":"😃","code-points":"U+1F603","utf-16":"\\uD83D\\uDE03","description":"Grinning face with big eyes","version":"0.6"},{"emoji":"😄","code-points":"U+1F604","utf-16":"\\uD83D\\uDE04","description":"Grinning face with smiling eyes","version":"0.6"},{"emoji":"😆","code-points":"U+1F606","utf-16":"\\uD83D\\uDE06","description":"Grinning squinting face","version":"0.6"},{"emoji":"😅","code-points":"U+1F605","utf-16":"\\uD83D\\uDE05","description":"Grinning face with sweat","version":"0.6"},{"emoji":"😁","code-points":"U+1F601","utf-16":"\\uD83D\\uDE01","description":"Beaming face with smiling eyes","version":"0.6"},{"emoji":"🤪","code-points":"U+1F92A","utf-16":"\\uD83E\\uDD2A","description":"Zany face","version":"5.0"},{"emoji":"😺","code-points":"U+1F63A","utf-16":"\\uD83D\\uDE3A","description":"Grinning cat","version":"0.6"},{"emoji":"😸","code-points":"U+1F638","utf-16":"\\uD83D\\uDE38","description":"Grinning cat with smiling eyes","version":"0.6"},{"emoji":"🤩","code-points":"U+1F929","utf-16":"\\uD83E\\uDD29","description":"Star-struck","version":"5.0"}]},"credits_used":5,"credits_remaining":null}},"flags_category_search_japan":{"summary":"Flags category, search \"japan\"","value":{"tool":"emoji-picker","tool_version":"1.0.2","outputs":{"count":"1 emoji found","results":[{"emoji":"🇯🇵","code-points":"U+1F1EF U+1F1F5","utf-16":"\\uD83C\\uDDEF\\uD83C\\uDDF5","description":"Flag Japan","version":"0.6"}]},"credits_used":5,"credits_remaining":null}},"emoji_version_1_0_search_heart":{"summary":"Emoji version 1.0, search \"heart\"","value":{"tool":"emoji-picker","tool_version":"1.0.2","outputs":{"count":"1 emoji found","results":[{"emoji":"❣️","code-points":"U+2763 U+FE0F","utf-16":"\\u2763\\uFE0F","description":"Heart exclamation","version":"1.0"}]},"credits_used":5,"credits_remaining":null}},"search_cat_whole_word_match_only":{"summary":"Search \"cat\" — whole-word match only","value":{"tool":"emoji-picker","tool_version":"1.0.2","outputs":{"count":"14 emojis found","results":[{"emoji":"😺","code-points":"U+1F63A","utf-16":"\\uD83D\\uDE3A","description":"Grinning cat","version":"0.6"},{"emoji":"😸","code-points":"U+1F638","utf-16":"\\uD83D\\uDE38","description":"Grinning cat with smiling eyes","version":"0.6"},{"emoji":"😹","code-points":"U+1F639","utf-16":"\\uD83D\\uDE39","description":"Cat with tears of joy","version":"0.6"},{"emoji":"😻","code-points":"U+1F63B","utf-16":"\\uD83D\\uDE3B","description":"Smiling cat with heart-eyes","version":"0.6"},{"emoji":"😼","code-points":"U+1F63C","utf-16":"\\uD83D\\uDE3C","description":"Cat with wry smile","version":"0.6"},{"emoji":"😽","code-points":"U+1F63D","utf-16":"\\uD83D\\uDE3D","description":"Kissing cat","version":"0.6"},{"emoji":"🙀","code-points":"U+1F640","utf-16":"\\uD83D\\uDE40","description":"Weary cat","version":"0.6"},{"emoji":"😿","code-points":"U+1F63F","utf-16":"\\uD83D\\uDE3F","description":"Crying cat","version":"0.6"},{"emoji":"😾","code-points":"U+1F63E","utf-16":"\\uD83D\\uDE3E","description":"Pouting cat","version":"0.6"},{"emoji":"🐱","code-points":"U+1F431","utf-16":"\\uD83D\\uDC31","description":"Cat face","version":"0.6"},{"emoji":"🐈","code-points":"U+1F408","utf-16":"\\uD83D\\uDC08","description":"Cat","version":"0.7"},{"emoji":"🐈‍⬛","code-points":"U+1F408 U+200D U+2B1B","utf-16":"\\uD83D\\uDC08\\u200D\\u2B1B","description":"Black cat","version":"13.0"},{"emoji":"🐯","code-points":"U+1F42F","utf-16":"\\uD83D\\uDC2F","description":"Tiger face","version":"0.6"},{"emoji":"🐾","code-points":"U+1F43E","utf-16":"\\uD83D\\uDC3E","description":"Paw prints","version":"0.6"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"Matches"},"results":{"type":"array","items":{"type":"object","properties":{"emoji":{"type":"string","description":"Emoji"},"code-points":{"type":"string","description":"Code Points"},"utf-16":{"type":"string","description":"UTF-16"},"description":{"type":"string","description":"Description"},"version":{"type":"string","description":"Version"}}},"x-iotools-columns":["emoji","code-points","utf-16","description","version"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/env-var-template-expander":{"post":{"operationId":"run_env_var_template_expander","summary":"Env Var Template Expander","tags":["Utilities"],"description":"Expand a template by substituting ${VAR}, {{VAR}}, %VAR% or $VAR placeholders with values from .env file content. Auto-detects syntax, leaves or blanks unresolved variables, optional case-insensitive matching, and reports resolved vs. unresolved counts.\n\n[Try Env Var Template Expander in your browser →](https://iotools.cloud/tool/env-var-template-expander/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"templateInput":{"type":"string","description":"Template"},"envInput":{"type":"string","description":"Environment Variables (.env)"},"syntaxMode":{"enum":["auto","dollar-brace","double-brace","percent","dollar-plain"],"description":"Variable Syntax"},"unresolvedBehavior":{"enum":["leave","empty"],"description":"Unresolved variables"},"caseSensitive":{"type":"boolean","description":"Case-sensitive variable names"}},"required":[]},"examples":{"auto_detect_all_syntaxes":{"summary":"Auto-detect (all syntaxes)","value":{"templateInput":"server:\n  host: ${DB_HOST}\n  port: ${DB_PORT}\n  name: ${DB_NAME}\n\napi:\n  key: {{API_KEY}}\n  url: {{API_URL}}\n\nbuild:\n  version: %APP_VERSION%\n  env: %APP_ENV%\n\nmissing: ${UNDEFINED_VAR}","envInput":"# Database\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp\n\n# API\nAPI_KEY=sk_test_abc123\nAPI_URL=\"https://api.example.com\"\n\n# App\nAPP_VERSION=1.4.2\nAPP_ENV=production","syntaxMode":"auto","unresolvedBehavior":"leave","caseSensitive":"true"}},"plain_var_blank_unresolved_case_insensitive":{"summary":"Plain $VAR, blank unresolved, case-insensitive","value":{"templateInput":"Hello $USER, your home is $HOME and shell is $SHELL","envInput":"user=alice\nhome=/home/alice","syntaxMode":"dollar-plain","unresolvedBehavior":"empty","caseSensitive":""}},"windows_var_leave_unresolved":{"summary":"Windows %VAR%, leave unresolved","value":{"templateInput":"path=%WINDIR%\\system32;%MISSING%","envInput":"WINDIR=C:\\Windows","syntaxMode":"percent","unresolvedBehavior":"leave","caseSensitive":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"auto_detect_all_syntaxes":{"summary":"Auto-detect (all syntaxes)","value":{"tool":"env-var-template-expander","tool_version":"1.0.2","outputs":{"expandedOutput":"server:\n  host: localhost\n  port: 5432\n  name: myapp\n\napi:\n  key: sk_test_abc123\n  url: https://api.example.com\n\nbuild:\n  version: 1.4.2\n  env: production\n\nmissing: ${UNDEFINED_VAR}","summary":[{"metric":"Variables loaded","value":"7"},{"metric":"Resolved substitutions","value":"7"},{"metric":"Unresolved variables","value":"1"}],"unresolved":[{"variable":"UNDEFINED_VAR","occurrences":"1"}]},"credits_used":5,"credits_remaining":null}},"plain_var_blank_unresolved_case_insensitive":{"summary":"Plain $VAR, blank unresolved, case-insensitive","value":{"tool":"env-var-template-expander","tool_version":"1.0.2","outputs":{"expandedOutput":"Hello alice, your home is /home/alice and shell is ","summary":[{"metric":"Variables loaded","value":"2"},{"metric":"Resolved substitutions","value":"2"},{"metric":"Unresolved variables","value":"1"}],"unresolved":[{"variable":"SHELL","occurrences":"1"}]},"credits_used":5,"credits_remaining":null}},"windows_var_leave_unresolved":{"summary":"Windows %VAR%, leave unresolved","value":{"tool":"env-var-template-expander","tool_version":"1.0.2","outputs":{"expandedOutput":"path=C:\\Windows\\system32;%MISSING%","summary":[{"metric":"Variables loaded","value":"1"},{"metric":"Resolved substitutions","value":"1"},{"metric":"Unresolved variables","value":"1"}],"unresolved":[{"variable":"MISSING","occurrences":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"expandedOutput":{"type":"string","description":"Expanded Output"},"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"unresolved":{"type":"array","items":{"type":"object","properties":{"variable":{"type":"string","description":"Variable"},"occurrences":{"type":"string","description":"Occurrences"}}},"x-iotools-columns":["variable","occurrences"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ethereum-checksum-validator":{"post":{"operationId":"run_ethereum_checksum_validator","summary":"Ethereum Checksum Validator","tags":["Utilities"],"description":"Validate the EIP-55 mixed-case checksum of one or more Ethereum / EVM addresses and show the canonical checksummed form. Works for any EVM chain (Ethereum, Polygon, BSC, Arbitrum, Optimism, Base).\n\n[Try Ethereum Checksum Validator in your browser →](https://iotools.cloud/tool/ethereum-checksum-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"addresses":{"type":"string","description":"Ethereum / EVM Addresses"}},"required":[]},"examples":{"valid_eip_55_checksummed_addresses":{"summary":"Valid EIP-55 checksummed addresses","value":{"addresses":"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed\n0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359\n0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB\n0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"}},"unchecksummed_wrong_checksum_zero_and_invalid":{"summary":"Unchecksummed, wrong checksum, zero and invalid","value":{"addresses":"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed\n0x52908400098527886E0F7030069857D2E4169EE7\n0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d35a\n0x0000000000000000000000000000000000000000\n0xnotvalid"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_eip_55_checksummed_addresses":{"summary":"Valid EIP-55 checksummed addresses","value":{"tool":"ethereum-checksum-validator","tool_version":"1.0.2","outputs":{"resultsTable":[{"input":"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed","status":"Valid checksum","checksummed-eip-55":"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed","notes":"Mixed case matches EIP-55 expected encoding"},{"input":"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359","status":"Valid checksum","checksummed-eip-55":"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359","notes":"Mixed case matches EIP-55 expected encoding"},{"input":"0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB","status":"Valid checksum","checksummed-eip-55":"0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB","notes":"Mixed case matches EIP-55 expected encoding"},{"input":"0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb","status":"Valid checksum","checksummed-eip-55":"0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb","notes":"Mixed case matches EIP-55 expected encoding"}]},"credits_used":5,"credits_remaining":null}},"unchecksummed_wrong_checksum_zero_and_invalid":{"summary":"Unchecksummed, wrong checksum, zero and invalid","value":{"tool":"ethereum-checksum-validator","tool_version":"1.0.2","outputs":{"resultsTable":[{"input":"0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed","status":"Unchecksummed","checksummed-eip-55":"0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed","notes":"All-lowercase — unchecksummed but valid format"},{"input":"0x52908400098527886E0F7030069857D2E4169EE7","status":"Unchecksummed","checksummed-eip-55":"0x52908400098527886E0F7030069857D2E4169EE7","notes":"All-uppercase — unchecksummed but valid format"},{"input":"0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d35a","status":"Invalid checksum","checksummed-eip-55":"0xFb6916095CA1dF60bB79cE92Ce3Ea74c37C5D35a","notes":"Mixed case does not match EIP-55 — letters in the wrong case"},{"input":"0x0000000000000000000000000000000000000000","status":"Unchecksummed","checksummed-eip-55":"0x0000000000000000000000000000000000000000","notes":"No hex letters — checksum case-encoding does not apply Zero address (burn / null)."},{"input":"0xnotvalid","status":"Invalid format","checksummed-eip-55":"-","notes":"Not a valid EVM address — must be 40 hex characters (20 bytes)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"resultsTable":{"type":"array","description":"Validation Results","items":{"type":"object","properties":{"input":{"type":"string","description":"Input"},"status":{"type":"string","description":"Status"},"checksummed-eip-55":{"type":"string","description":"Checksummed (EIP-55)"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["input","status","checksummed-eip-55","notes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/exif-remover":{"post":{"operationId":"run_exif_remover","summary":"EXIF Remover","tags":["Utilities"],"description":"Strip EXIF, GPS, camera, and other embedded metadata from a JPEG, PNG, or WebP image — losslessly, without recompressing the picture, entirely in your browser.\n\n[Try EXIF Remover in your browser →](https://iotools.cloud/tool/exif-remover/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image file"}},"required":["file"]},"examples":{"jpeg_with_exif_camera_gps_data":{"summary":"JPEG with EXIF (camera + GPS) data","value":{"file":"data:image/jpeg;base64,/9j/4QDrRXhpZgAASUkqAAgAAAAFAA8BAgAGAAAASgAAABABAgAHAAAAUAAAABIBAwABAAAAAQAAAGmHBAABAAAAVwAAACWIBAABAAAAfQAAAAAAAABDYW5vbgBFT1MgUjUAAQADkAIAFAAAAGkAAAAAAAAAMjAyNDowMToxNSAxMDozMDowMAAEAAEAAgACAAAATgAAAAIABQADAAAAswAAAAMAAgACAAAAVwAAAAQABQADAAAAywAAAAAAAAAhAAAAAQAAACgAAAABAAAAdQAAAAoAAAB0AAAAAQAAADsAAAABAAAAFwIAAAoAAAD/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAMABAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APxfr/Kc/wC/g//Z"}},"png_with_a_text_comment_timestamp_chunk":{"summary":"PNG with a text comment + timestamp chunk","value":{"file":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAJnRFWHRDb21tZW50AEhlbGxvLCB0aGlzIGlzIGEgdGVzdCBjb21tZW50Lpvdq/wAAAAHdElNRQfoAQ8KHgCKFrCgAAAAF0lEQVR4AWP8z8DwnwEJMDGgASYGNAAAYWsCBNgUK1IAAAAASUVORK5CYII="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"jpeg_with_exif_camera_gps_data":{"summary":"JPEG with EXIF (camera + GPS) data","value":{"tool":"exif-remover","tool_version":"1.0.2","outputs":{"cleanedFile":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAMABAMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APxfr/Kc/wC/g//Z","summary":[{"property":"Format","value":"JPEG"},{"property":"Original Size","value":"855 B"},{"property":"Cleaned Size","value":"618 B"},{"property":"Metadata Removed","value":"Yes (1 segment removed)"}]},"credits_used":5,"credits_remaining":null}},"png_with_a_text_comment_timestamp_chunk":{"summary":"PNG with a text comment + timestamp chunk","value":{"tool":"exif-remover","tool_version":"1.0.2","outputs":{"cleanedFile":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAF0lEQVR4AWP8z8DwnwEJMDGgASYGNAAAYWsCBNgUK1IAAAAASUVORK5CYII=","summary":[{"property":"Format","value":"PNG"},{"property":"Original Size","value":"149 B"},{"property":"Cleaned Size","value":"80 B"},{"property":"Metadata Removed","value":"Yes (2 segments removed)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cleanedFile":{"type":"string","description":"Cleaned image (data URL)"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/file-extension-lookup":{"post":{"operationId":"run_file_extension_lookup","summary":"File Extension Lookup","tags":["Utilities"],"description":"Search 507 file extensions by extension, MIME type, description or category and see the format name, popularity, and which apps open it on Windows, macOS and Linux.\n\n[Try File Extension Lookup in your browser →](https://iotools.cloud/tool/file-extension-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search"},"searchMode":{"enum":["all","ext","mime","cat"],"description":"Search in"},"popularity":{"enum":["all","common","rare"],"description":"Popularity"}},"required":[]},"examples":{"look_up_a_single_extension":{"summary":"Look up a single extension","value":{"search":".pdf","searchMode":"ext","popularity":"all"}},"search_all_fields":{"summary":"Search all fields","value":{"search":"markdown","searchMode":"all","popularity":"all"}},"filter_by_popularity":{"summary":"Filter by popularity","value":{"search":"png","searchMode":"ext","popularity":"common"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"look_up_a_single_extension":{"summary":"Look up a single extension","value":{"tool":"file-extension-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 1 extension.","results":[{"extension":".pdf","category":"Document","popularity":"Common","mime-type":"application/pdf","description":"Portable Document Format","opens-with":"Win: Adobe Acrobat, Chrome, SumatraPDF | Mac: Preview, Adobe Acrobat | Linux: Evince, Okular, Firefox"}]},"credits_used":5,"credits_remaining":null}},"search_all_fields":{"summary":"Search all fields","value":{"tool":"file-extension-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 5 extensions.","results":[{"extension":".markdown","category":"Document","popularity":"Common","mime-type":"text/markdown","description":"Markdown Document","opens-with":"Win: VS Code, Typora | Mac: VS Code, MacDown | Linux: VS Code, Ghostwriter"},{"extension":".md","category":"Document","popularity":"Common","mime-type":"text/markdown","description":"Markdown Document","opens-with":"Win: VS Code, Typora, Notepad++ | Mac: VS Code, MacDown | Linux: VS Code, Ghostwriter"},{"extension":".mdx","category":"Web","popularity":"Common","mime-type":"text/mdx","description":"Markdown with JSX","opens-with":"Win: VS Code | Mac: VS Code | Linux: VS Code"},{"extension":".mkd","category":"Document","popularity":"Rare","mime-type":"text/markdown","description":"Markdown Document","opens-with":"Win: VS Code | Mac: VS Code | Linux: VS Code"},{"extension":".rmd","category":"Code","popularity":"Rare","mime-type":"text/x-r-markdown","description":"R Markdown Document","opens-with":"Win: RStudio, VS Code | Mac: RStudio, VS Code | Linux: RStudio, VS Code"}]},"credits_used":5,"credits_remaining":null}},"filter_by_popularity":{"summary":"Filter by popularity","value":{"tool":"file-extension-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 3 extensions.","results":[{"extension":".png","category":"Image","popularity":"Common","mime-type":"image/png","description":"Portable Network Graphics","opens-with":"Win: Photos, IrfanView, Photoshop | Mac: Preview, Photoshop | Linux: Eye of GNOME, GIMP"},{"extension":".apng","category":"Image","popularity":"Common","mime-type":"image/apng","description":"Animated PNG","opens-with":"Win: Chrome, Firefox | Mac: Safari, Chrome | Linux: Firefox, Chrome"},{"extension":".pcapng","category":"Data","popularity":"Common","mime-type":"application/x-pcapng","description":"Packet Capture Next Gen","opens-with":"Win: Wireshark | Mac: Wireshark | Linux: Wireshark"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Results"},"results":{"type":"array","description":"Matching extensions","items":{"type":"object","properties":{"extension":{"type":"string","description":"Extension"},"category":{"type":"string","description":"Category"},"popularity":{"type":"string","description":"Popularity"},"mime-type":{"type":"string","description":"MIME type"},"description":{"type":"string","description":"Description"},"opens-with":{"type":"string","description":"Opens with"}}},"x-iotools-columns":["extension","category","popularity","mime-type","description","opens-with"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/file-hash-calculator":{"post":{"operationId":"run_file_hash_calculator","summary":"File Hash Calculator","tags":["Utilities"],"description":"Compute MD5, SHA-1, SHA-256, SHA-512 and SHA3-256 hashes of pasted text or an uploaded file, all at once, in hex (lowercase/uppercase, with or without colons) — and verify against an expected hash.\n\n[Try File Hash Calculator in your browser →](https://iotools.cloud/tool/file-hash-calculator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to hash"},"file":{"type":"string","contentEncoding":"base64","description":"File (hashed as raw bytes)"},"algoMd5":{"type":"boolean","description":"MD5"},"algoSha1":{"type":"boolean","description":"SHA-1"},"algoSha256":{"type":"boolean","description":"SHA-256"},"algoSha512":{"type":"boolean","description":"SHA-512"},"algoSha3":{"type":"boolean","description":"SHA3-256"},"hashFormat":{"enum":["lowercase","uppercase","lowercase-colons","uppercase-colons"],"description":"Hash format"},"expectedHash":{"type":"string","description":"Expected hash (optional)"}},"required":[]},"examples":{"default_algorithms_abc":{"summary":"Default algorithms — \"abc\"","value":{"inputText":"abc","file":"","algoMd5":"true","algoSha1":"true","algoSha256":"true","algoSha512":"","algoSha3":"","hashFormat":"lowercase","expectedHash":""}},"all_algorithms_uppercase_with_colons_matching_verification":{"summary":"All algorithms, uppercase with colons, matching verification","value":{"inputText":"abc","file":"","algoMd5":"true","algoSha1":"true","algoSha256":"true","algoSha512":"true","algoSha3":"true","hashFormat":"uppercase-colons","expectedHash":"BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD"}},"uploaded_file_data_url_for_hello":{"summary":"Uploaded file (data URL for \"Hello\")","value":{"inputText":"","file":"data:application/octet-stream;base64,SGVsbG8=","algoMd5":"true","algoSha1":"","algoSha256":"true","algoSha512":"","algoSha3":"","hashFormat":"lowercase","expectedHash":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"default_algorithms_abc":{"summary":"Default algorithms — \"abc\"","value":{"tool":"file-hash-calculator","tool_version":"1.0.2","outputs":{"hashResults":[{"algorithm":"MD5","hash":"900150983cd24fb0d6963f7d28e17f72"},{"algorithm":"SHA-1","hash":"a9993e364706816aba3e25717850c26c9cd0d89d"},{"algorithm":"SHA-256","hash":"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"}],"verifyResult":""},"credits_used":5,"credits_remaining":null}},"all_algorithms_uppercase_with_colons_matching_verification":{"summary":"All algorithms, uppercase with colons, matching verification","value":{"tool":"file-hash-calculator","tool_version":"1.0.2","outputs":{"hashResults":[{"algorithm":"MD5","hash":"90:01:50:98:3C:D2:4F:B0:D6:96:3F:7D:28:E1:7F:72"},{"algorithm":"SHA-1","hash":"A9:99:3E:36:47:06:81:6A:BA:3E:25:71:78:50:C2:6C:9C:D0:D8:9D"},{"algorithm":"SHA-256","hash":"BA:78:16:BF:8F:01:CF:EA:41:41:40:DE:5D:AE:22:23:B0:03:61:A3:96:17:7A:9C:B4:10:FF:61:F2:00:15:AD"},{"algorithm":"SHA-512","hash":"DD:AF:35:A1:93:61:7A:BA:CC:41:73:49:AE:20:41:31:12:E6:FA:4E:89:A9:7E:A2:0A:9E:EE:E6:4B:55:D3:9A:21:92:99:2A:27:4F:C1:A8:36:BA:3C:23:A3:FE:EB:BD:45:4D:44:23:64:3C:E8:0E:2A:9A:C9:4F:A5:4C:A4:9F"},{"algorithm":"SHA3-256","hash":"3A:98:5D:A7:4F:E2:25:B2:04:5C:17:2D:6B:D3:90:BD:85:5F:08:6E:3E:9D:52:5B:46:BF:E2:45:11:43:15:32"}],"verifyResult":"Match (SHA-256)"},"credits_used":5,"credits_remaining":null}},"uploaded_file_data_url_for_hello":{"summary":"Uploaded file (data URL for \"Hello\")","value":{"tool":"file-hash-calculator","tool_version":"1.0.2","outputs":{"hashResults":[{"algorithm":"MD5","hash":"8b1a9953c4611296a827abf8c47804d7"},{"algorithm":"SHA-256","hash":"185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969"}],"verifyResult":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hashResults":{"type":"array","description":"Hashes","items":{"type":"object","properties":{"algorithm":{"type":"string","description":"Algorithm"},"hash":{"type":"string","description":"Hash"}}},"x-iotools-columns":["algorithm","hash"]},"verifyResult":{"type":"string","description":"Verification result"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/git-cheatsheet":{"post":{"operationId":"run_git_cheatsheet","summary":"Git Cheat Sheet","tags":["Utilities"],"description":"Searchable reference of the most common Git commands, grouped by task (setup, branching, committing, remotes, undoing changes, stashing and tags). Type to instantly filter the table by command, group or description.\n\n[Try Git Cheat Sheet in your browser →](https://iotools.cloud/tool/git-cheatsheet/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search commands"}},"required":[]},"examples":{"find_cherry_pick":{"summary":"Find cherry-pick","value":{"search":"cherry"}},"all_rebase_commands":{"summary":"All rebase commands","value":{"search":"rebase"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"find_cherry_pick":{"summary":"Find cherry-pick","value":{"tool":"git-cheatsheet","tool_version":"1.0.2","outputs":{"results":[{"command":"git cherry-pick [commit]","group":"Merging & Rebasing","description":"Apply the changes from a specific commit onto the current branch"}]},"credits_used":5,"credits_remaining":null}},"all_rebase_commands":{"summary":"All rebase commands","value":{"tool":"git-cheatsheet","tool_version":"1.0.2","outputs":{"results":[{"command":"git rebase [branch]","group":"Merging & Rebasing","description":"Reapply your commits on top of another base branch"},{"command":"git rebase -i [commit]","group":"Merging & Rebasing","description":"Interactively edit, squash, or reorder commits"},{"command":"git rebase --continue","group":"Merging & Rebasing","description":"Continue a rebase after resolving conflicts"},{"command":"git rebase --abort","group":"Merging & Rebasing","description":"Cancel a rebase and return to the original state"},{"command":"git pull --rebase","group":"Remote","description":"Fetch from the remote and rebase local commits on top"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Git commands","items":{"type":"object","properties":{"command":{"type":"string","description":"Command"},"group":{"type":"string","description":"Group"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["command","group","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/github-actions-yaml-linter":{"post":{"operationId":"run_github_actions_yaml_linter","summary":"GitHub Actions YAML Linter","tags":["Utilities"],"description":"Lint a GitHub Actions workflow YAML file in your browser. Catches syntax errors (tabs, unclosed quotes, duplicate keys), missing required keys (on, jobs), jobs without runs-on or steps, and unpinned or @main/@master action references — reported as a severity summary and a line-by-line issues table.\n\n[Try GitHub Actions YAML Linter in your browser →](https://iotools.cloud/tool/github-actions-yaml-linter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"GitHub Actions Workflow YAML"},"hints":{"type":"boolean","description":"Show best-practice hints (SHA pinning, timeouts, deprecated commands)"}},"required":[]},"examples":{"valid_workflow_no_issues":{"summary":"Valid workflow (no issues)","value":{"inputYaml":"name: CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - run: echo hello\n","hints":"true"}},"missing_required_key_on":{"summary":"Missing required key (on)","value":{"inputYaml":"name: Broken Workflow\njobs:\n  build:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - run: echo \"hello\"\n","hints":"true"}},"unpinned_action_main":{"summary":"Unpinned action (@main)","value":{"inputYaml":"name: Deploy\non: [push]\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@main\n      - run: ./deploy.sh\n","hints":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_workflow_no_issues":{"summary":"Valid workflow (no issues)","value":{"tool":"github-actions-yaml-linter","tool_version":"1.0.2","outputs":{"summary":[{"severity":"Errors","count":"0"},{"severity":"Warnings","count":"0"},{"severity":"Hints","count":"0"},{"severity":"Total","count":"0"}],"issues":[]},"credits_used":5,"credits_remaining":null}},"missing_required_key_on":{"summary":"Missing required key (on)","value":{"tool":"github-actions-yaml-linter","tool_version":"1.0.2","outputs":{"summary":[{"severity":"Errors","count":"1"},{"severity":"Warnings","count":"0"},{"severity":"Hints","count":"0"},{"severity":"Total","count":"1"}],"issues":[{"line":"-","severity":"Error","message":"Missing required top-level key \"on\" (workflow trigger)"}]},"credits_used":5,"credits_remaining":null}},"unpinned_action_main":{"summary":"Unpinned action (@main)","value":{"tool":"github-actions-yaml-linter","tool_version":"1.0.2","outputs":{"summary":[{"severity":"Errors","count":"0"},{"severity":"Warnings","count":"1"},{"severity":"Hints","count":"0"},{"severity":"Total","count":"1"}],"issues":[{"line":"8","severity":"Warning","message":"Job \"deploy\" step 1: action \"actions/checkout@main\" is pinned to the moving \"main\" branch — pin to a release tag or commit SHA instead"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["severity","count"]},"issues":{"type":"array","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["line","severity","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/gzip-zlib-deflate-tester":{"post":{"operationId":"run_gzip_zlib_deflate_tester","summary":"Gzip/Zlib/Deflate Tester","tags":["Utilities"],"description":"Compress text with gzip, zlib (deflate with header), or raw deflate, and view compression stats — or decompress base64/hex encoded compressed data back to text. Runs entirely in your browser.\n\n[Try Gzip/Zlib/Deflate Tester in your browser →](https://iotools.cloud/tool/gzip-zlib-deflate-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputData":{"type":"string","description":"Input Data"},"mode":{"enum":["compress","decompress"],"description":"Mode"},"formatCompress":{"enum":["gzip","zlib","deflate-raw"],"description":"Format"},"format":{"enum":["gzip","zlib","deflate-raw","auto"],"description":"Format"},"inputEncoding":{"enum":["base64","hex"],"description":"Input Encoding"},"outputEncoding":{"enum":["base64","hex"],"description":"Output Encoding"}},"required":[]},"examples":{"compress_with_gzip":{"summary":"Compress with gzip","value":{"inputData":"Hello, World! This is a test string for compression.","mode":"compress","formatCompress":"gzip","outputEncoding":"base64"}},"decompress_gzip_round_trip_of_the_example_above":{"summary":"Decompress gzip (round-trip of the example above)","value":{"inputData":"H4sIAAAAAAAAA/NIzcnJ11EIzy/KSVFUCMnILFbILFZIVChJLS5RKC4pysxLV0jLL1JIzs8tKEotLs7Mz9MDAGvseq00AAAA","mode":"decompress","format":"gzip","inputEncoding":"base64"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compress_with_gzip":{"summary":"Compress with gzip","value":{"tool":"gzip-zlib-deflate-tester","tool_version":"1.0.2","outputs":{"output":"H4sIAAAAAAAAA/NIzcnJ11EIzy/KSVFUCMnILFbILFZIVChJLS5RKC4pysxLV0jLL1JIzs8tKEotLs7Mz9MDAGvseq00AAAA","statsTable":[{"property":"Original Size","value":"52 B (52 bytes)"},{"property":"Compressed Size","value":"72 B (72 bytes)"},{"property":"Compression Ratio","value":"138.5%"},{"property":"Space Savings","value":"-38.5%"},{"property":"Format","value":"Gzip"},{"property":"Header Bytes","value":"1f 8b 08 00 00 00 00 00"}]},"credits_used":5,"credits_remaining":null}},"decompress_gzip_round_trip_of_the_example_above":{"summary":"Decompress gzip (round-trip of the example above)","value":{"tool":"gzip-zlib-deflate-tester","tool_version":"1.0.2","outputs":{"output":"Hello, World! This is a test string for compression.","statsTable":[{"property":"Original Size","value":"52 B (52 bytes)"},{"property":"Compressed Size","value":"72 B (72 bytes)"},{"property":"Compression Ratio","value":"138.5%"},{"property":"Space Savings","value":"-38.5%"},{"property":"Format","value":"Gzip"},{"property":"Header Bytes","value":"1f 8b 08 00 00 00 00 00"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output"},"statsTable":{"type":"array","description":"Compression Stats","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/har-file-performance-analyzer":{"post":{"operationId":"run_har_file_performance_analyzer","summary":"HAR File Performance Analyzer","tags":["Utilities"],"description":"Analyze a HAR (HTTP Archive) file's performance — total/median/p90 load time, TTFB, status/type/domain breakdowns, and the slowest and largest requests.\n\n[Try HAR File Performance Analyzer in your browser →](https://iotools.cloud/tool/har-file-performance-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"harInput":{"type":"string","description":"HAR Content"},"filterType":{"enum":["any","document","xhr","script","stylesheet","image","font","media","other"],"description":"Type"},"filterStatus":{"enum":["any","2xx","3xx","4xx","5xx","failed"],"description":"Status"},"topN":{"enum":["10","20","50"],"description":"Top N"}},"required":[]},"examples":{"full_analysis_top_10":{"summary":"Full analysis, top 10","value":{"harInput":"{\n  \"log\": {\n    \"version\": \"1.2\",\n    \"entries\": [\n      {\n        \"time\": 220,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/\"\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 1256,\n            \"mimeType\": \"text/html\"\n          },\n          \"bodySize\": 1256,\n          \"headersSize\": 180\n        },\n        \"timings\": {\n          \"blocked\": 5,\n          \"dns\": 12,\n          \"connect\": 30,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 150,\n          \"receive\": 22\n        }\n      },\n      {\n        \"time\": 95,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://example.com/assets/app.css\"\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 4321,\n            \"mimeType\": \"text/css\"\n          },\n          \"bodySize\": 4321,\n          \"headersSize\": 140\n        },\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 24\n        }\n      },\n      {\n        \"time\": 950,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://cdn.example.com/lib.js\"\n        },\n        \"response\": {\n          \"status\": 200,\n          \"content\": {\n            \"size\": 89000,\n            \"mimeType\": \"application/javascript\"\n          },\n          \"bodySize\": 89000,\n          \"headersSize\": 150\n        },\n        \"timings\": {\n          \"blocked\": 2,\n          \"dns\": 18,\n          \"connect\": 25,\n          \"ssl\": 20,\n          \"send\": 0,\n          \"wait\": 860,\n          \"receive\": 25\n        }\n      },\n      {\n        \"time\": 320,\n        \"request\": {\n          \"method\": \"POST\",\n          \"url\": \"https://api.example.com/v1/orders\"\n        },\n        \"response\": {\n          \"status\": 201,\n          \"content\": {\n            \"size\": 142,\n            \"mimeType\": \"application/json\"\n          },\n          \"bodySize\": 142,\n          \"headersSize\": 130\n        },\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 8,\n          \"connect\": 22,\n          \"ssl\": 18,\n          \"send\": 1,\n          \"wait\": 240,\n          \"receive\": 30\n        }\n      },\n      {\n        \"time\": 80,\n        \"request\": {\n          \"method\": \"GET\",\n          \"url\": \"https://api.example.com/v1/missing\"\n        },\n        \"response\": {\n          \"status\": 404,\n          \"content\": {\n            \"size\": 35,\n            \"mimeType\": \"application/json\"\n          },\n          \"bodySize\": 35,\n          \"headersSize\": 110\n        },\n        \"timings\": {\n          \"blocked\": 1,\n          \"dns\": 0,\n          \"connect\": 0,\n          \"ssl\": 0,\n          \"send\": 0,\n          \"wait\": 70,\n          \"receive\": 9\n        }\n      }\n    ]\n  }\n}","filterType":"any","filterStatus":"any","topN":"10"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_analysis_top_10":{"summary":"Full analysis, top 10","value":{"tool":"har-file-performance-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Total Requests","value":"5"},{"metric":"Transfer Size","value":"93.23 KB"},{"metric":"Content Size","value":"92.53 KB"},{"metric":"Average Time","value":"333 ms"},{"metric":"Median Time","value":"220 ms"},{"metric":"P90 Time","value":"698 ms"},{"metric":"Average TTFB","value":"278 ms"},{"metric":"OK / Redirect / Error","value":"4 / 0 / 1"},{"metric":"Unique Domains","value":"3"}],"byType":[{"type":"script","requests":"1","transfer":"87.06 KB"},{"type":"stylesheet","requests":"1","transfer":"4.36 KB"},{"type":"document","requests":"1","transfer":"1.40 KB"},{"type":"xhr","requests":"2","transfer":"417 B"}],"byDomain":[{"domain":"example.com","requests":"2","transfer":"5.76 KB","slowest-request":"220 ms"},{"domain":"api.example.com","requests":"2","transfer":"417 B","slowest-request":"320 ms"},{"domain":"cdn.example.com","requests":"1","transfer":"87.06 KB","slowest-request":"950 ms"}],"slowest":[{"url":"https://cdn.example.com/lib.js","time":"950 ms","status":"200"},{"url":"https://api.example.com/v1/orders","time":"320 ms","status":"201"},{"url":"https://example.com/","time":"220 ms","status":"200"},{"url":"https://example.com/assets/app.css","time":"95 ms","status":"200"},{"url":"https://api.example.com/v1/missing","time":"80 ms","status":"404"}],"largest":[{"url":"https://cdn.example.com/lib.js","transfer-size":"87.06 KB","status":"200"},{"url":"https://example.com/assets/app.css","transfer-size":"4.36 KB","status":"200"},{"url":"https://example.com/","transfer-size":"1.40 KB","status":"200"},{"url":"https://api.example.com/v1/orders","transfer-size":"272 B","status":"201"},{"url":"https://api.example.com/v1/missing","transfer-size":"145 B","status":"404"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"byType":{"type":"array","description":"By Content Type","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"requests":{"type":"string","description":"Requests"},"transfer":{"type":"string","description":"Transfer"}}},"x-iotools-columns":["type","requests","transfer"]},"byDomain":{"type":"array","description":"By Domain","items":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"requests":{"type":"string","description":"Requests"},"transfer":{"type":"string","description":"Transfer"},"slowest-request":{"type":"string","description":"Slowest Request"}}},"x-iotools-columns":["domain","requests","transfer","slowest-request"]},"slowest":{"type":"array","description":"Slowest Requests","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"time":{"type":"string","description":"Time"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["url","time","status"]},"largest":{"type":"array","description":"Largest Requests","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"transfer-size":{"type":"string","description":"Transfer Size"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["url","transfer-size","status"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hex-dump-viewer":{"post":{"operationId":"run_hex_dump_viewer","summary":"Hex Dump Viewer","tags":["Utilities"],"description":"View any text or file as a classic hex dump — byte offset, hexadecimal bytes and printable-ASCII columns side by side, like xxd or hexdump -C. Configure bytes per row, byte grouping and a hex or decimal offset.\n\n[Try Hex Dump Viewer in your browser →](https://iotools.cloud/tool/hex-dump-viewer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text Input"},"file":{"type":"string","contentEncoding":"base64","description":"File (read as raw bytes)"},"bytesPerRow":{"enum":["8","16","32"],"description":"Bytes per row"},"byteGrouping":{"enum":["1","2","4"],"description":"Byte grouping"},"offsetFormat":{"enum":["hex","dec"],"description":"Offset format"}},"required":[]},"examples":{"hello_world":{"summary":"Hello, World!","value":{"inputText":"Hello, World!","bytesPerRow":"16","byteGrouping":"2","offsetFormat":"hex"}},"non_printable_extended_bytes":{"summary":"Non-printable & extended bytes","value":{"inputText":"Hello\tWorld! ©\n","bytesPerRow":"16","byteGrouping":"1","offsetFormat":"hex"}},"decimal_offset_8_bytes_row":{"summary":"Decimal offset, 8 bytes/row","value":{"inputText":"The quick brown fox jump","bytesPerRow":"8","byteGrouping":"2","offsetFormat":"dec"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"hello_world":{"summary":"Hello, World!","value":{"tool":"hex-dump-viewer","tool_version":"1.0.2","outputs":{"hexDump":"00000000: 4865 6c6c 6f2c 2057 6f72 6c64 21         Hello, World!"},"credits_used":5,"credits_remaining":null}},"non_printable_extended_bytes":{"summary":"Non-printable & extended bytes","value":{"tool":"hex-dump-viewer","tool_version":"1.0.2","outputs":{"hexDump":"00000000: 48 65 6c 6c 6f 09 57 6f 72 6c 64 21 20 c2 a9 0a  Hello.World! ..."},"credits_used":5,"credits_remaining":null}},"decimal_offset_8_bytes_row":{"summary":"Decimal offset, 8 bytes/row","value":{"tool":"hex-dump-viewer","tool_version":"1.0.2","outputs":{"hexDump":"00000000: 5468 6520 7175 6963  The quic\n00000008: 6b20 6272 6f77 6e20  k brown \n00000016: 666f 7820 6a75 6d70  fox jump"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"hexDump":{"type":"string","description":"Hex Dump"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/htaccess-tester":{"post":{"operationId":"run_htaccess_tester","summary":".htaccess Tester","tags":["Utilities"],"description":"Test how a set of Apache .htaccess RewriteRule/RewriteCond and Redirect/RedirectMatch directives resolve a given test URL — see the exact redirect, internal rewrite, or pass-through it produces, with a directive-by-directive trace.\n\n[Try .htaccess Tester in your browser →](https://iotools.cloud/tool/htaccess-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"htaccessRules":{"type":"string","description":".htaccess Content"},"testUrl":{"type":"string","description":"URL / path to test"},"httpsEnabled":{"type":"boolean","description":"Simulate an HTTPS request (%{HTTPS} = on)"},"httpHost":{"type":"string","description":"Host header (%{HTTP_HOST})"}},"required":["htaccessRules"]},"examples":{"force_https_redirect":{"summary":"Force HTTPS redirect","value":{"htaccessRules":"RewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# www to non-www\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\nRewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n\n# Pretty URL -> query string\nRewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]\n\nRedirect 301 /old-page.html /new-page.html","testUrl":"/article/42","httpsEnabled":"","httpHost":"example.com"}},"already_https_falls_through_to_pretty_url_rewrite":{"summary":"Already HTTPS — falls through to pretty-URL rewrite","value":{"htaccessRules":"RewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# www to non-www\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\nRewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n\n# Pretty URL -> query string\nRewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]\n\nRedirect 301 /old-page.html /new-page.html","testUrl":"/article/42","httpsEnabled":"true","httpHost":"example.com"}},"www_host_redirects_to_non_www":{"summary":"www host redirects to non-www","value":{"htaccessRules":"RewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# www to non-www\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\nRewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n\n# Pretty URL -> query string\nRewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]\n\nRedirect 301 /old-page.html /new-page.html","testUrl":"/pricing","httpsEnabled":"true","httpHost":"www.example.com"}},"mod_alias_redirect_on_an_exact_path":{"summary":"mod_alias Redirect on an exact path","value":{"htaccessRules":"RewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# www to non-www\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\nRewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n\n# Pretty URL -> query string\nRewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]\n\nRedirect 301 /old-page.html /new-page.html","testUrl":"/old-page.html","httpsEnabled":"true","httpHost":"example.com"}},"no_rule_matches_served_as_is":{"summary":"No rule matches — served as-is","value":{"htaccessRules":"RewriteEngine On\n\n# Force HTTPS\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]\n\n# www to non-www\nRewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]\nRewriteRule ^(.*)$ https://%1/$1 [L,R=301]\n\n# Pretty URL -> query string\nRewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]\n\nRedirect 301 /old-page.html /new-page.html","testUrl":"/unmatched-path","httpsEnabled":"true","httpHost":"example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"force_https_redirect":{"summary":"Force HTTPS redirect","value":{"tool":"htaccess-tester","tool_version":"1.0.2","outputs":{"verdict":"301 Redirect → https://example.com/article/42","details":[{"property":"Requested path","value":"/article/42"},{"property":"Simulated scheme","value":"http"},{"property":"Simulated Host","value":"example.com"},{"property":"Result","value":"External redirect"},{"property":"Status","value":"301"},{"property":"Location","value":"https://example.com/article/42"}],"trace":[{"line":"1","directive":"RewriteEngine","rule":"RewriteEngine On","result":"Engine on"},{"line":"4","directive":"RewriteCond","rule":"RewriteCond %{HTTPS} off","result":"Matched"},{"line":"5","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]","result":"Matched — rewritten to https://example.com/article/42"}]},"credits_used":5,"credits_remaining":null}},"already_https_falls_through_to_pretty_url_rewrite":{"summary":"Already HTTPS — falls through to pretty-URL rewrite","value":{"tool":"htaccess-tester","tool_version":"1.0.2","outputs":{"verdict":"Rewritten internally to /index.php?id=42","details":[{"property":"Requested path","value":"/article/42"},{"property":"Simulated scheme","value":"https"},{"property":"Simulated Host","value":"example.com"},{"property":"Result","value":"Internal rewrite (no redirect)"},{"property":"Resolved path","value":"/index.php?id=42"}],"trace":[{"line":"1","directive":"RewriteEngine","rule":"RewriteEngine On","result":"Engine on"},{"line":"4","directive":"RewriteCond","rule":"RewriteCond %{HTTPS} off","result":"No match"},{"line":"5","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]","result":"Skipped (conditions not met)"},{"line":"8","directive":"RewriteCond","rule":"RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]","result":"No match"},{"line":"9","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%1/$1 [L,R=301]","result":"Skipped (conditions not met)"},{"line":"12","directive":"RewriteRule","rule":"RewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]","result":"Matched — rewritten to /index.php?id=42"}]},"credits_used":5,"credits_remaining":null}},"www_host_redirects_to_non_www":{"summary":"www host redirects to non-www","value":{"tool":"htaccess-tester","tool_version":"1.0.2","outputs":{"verdict":"301 Redirect → https://example.com/pricing","details":[{"property":"Requested path","value":"/pricing"},{"property":"Simulated scheme","value":"https"},{"property":"Simulated Host","value":"www.example.com"},{"property":"Result","value":"External redirect"},{"property":"Status","value":"301"},{"property":"Location","value":"https://example.com/pricing"}],"trace":[{"line":"1","directive":"RewriteEngine","rule":"RewriteEngine On","result":"Engine on"},{"line":"4","directive":"RewriteCond","rule":"RewriteCond %{HTTPS} off","result":"No match"},{"line":"5","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]","result":"Skipped (conditions not met)"},{"line":"8","directive":"RewriteCond","rule":"RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]","result":"Matched"},{"line":"9","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%1/$1 [L,R=301]","result":"Matched — rewritten to https://example.com/pricing"}]},"credits_used":5,"credits_remaining":null}},"mod_alias_redirect_on_an_exact_path":{"summary":"mod_alias Redirect on an exact path","value":{"tool":"htaccess-tester","tool_version":"1.0.2","outputs":{"verdict":"301 Redirect → /new-page.html","details":[{"property":"Requested path","value":"/old-page.html"},{"property":"Simulated scheme","value":"https"},{"property":"Simulated Host","value":"example.com"},{"property":"Result","value":"External redirect"},{"property":"Status","value":"301"},{"property":"Location","value":"/new-page.html"}],"trace":[{"line":"1","directive":"RewriteEngine","rule":"RewriteEngine On","result":"Engine on"},{"line":"4","directive":"RewriteCond","rule":"RewriteCond %{HTTPS} off","result":"No match"},{"line":"5","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]","result":"Skipped (conditions not met)"},{"line":"8","directive":"RewriteCond","rule":"RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]","result":"No match"},{"line":"9","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%1/$1 [L,R=301]","result":"Skipped (conditions not met)"},{"line":"12","directive":"RewriteRule","rule":"RewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]","result":"No match"},{"line":"14","directive":"Redirect","rule":"Redirect 301 /old-page.html /new-page.html","result":"Matched — redirect 301 to /new-page.html"}]},"credits_used":5,"credits_remaining":null}},"no_rule_matches_served_as_is":{"summary":"No rule matches — served as-is","value":{"tool":"htaccess-tester","tool_version":"1.0.2","outputs":{"verdict":"No rule matched — request served as-is","details":[{"property":"Requested path","value":"/unmatched-path"},{"property":"Simulated scheme","value":"https"},{"property":"Simulated Host","value":"example.com"},{"property":"Result","value":"No match"},{"property":"Resolved path","value":"/unmatched-path"}],"trace":[{"line":"1","directive":"RewriteEngine","rule":"RewriteEngine On","result":"Engine on"},{"line":"4","directive":"RewriteCond","rule":"RewriteCond %{HTTPS} off","result":"No match"},{"line":"5","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]","result":"Skipped (conditions not met)"},{"line":"8","directive":"RewriteCond","rule":"RewriteCond %{HTTP_HOST} ^www\\.(.+)$ [NC]","result":"No match"},{"line":"9","directive":"RewriteRule","rule":"RewriteRule ^(.*)$ https://%1/$1 [L,R=301]","result":"Skipped (conditions not met)"},{"line":"12","directive":"RewriteRule","rule":"RewriteRule ^article/([0-9]+)/?$ index.php?id=$1 [L,QSA]","result":"No match"},{"line":"14","directive":"Redirect","rule":"Redirect 301 /old-page.html /new-page.html","result":"No match"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Result"},"details":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"trace":{"type":"array","items":{"type":"object","properties":{"line":{"type":"string","description":"Line"},"directive":{"type":"string","description":"Directive"},"rule":{"type":"string","description":"Rule"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["line","directive","rule","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/hreflang-tags-tester":{"post":{"operationId":"run_hreflang_tags_tester","summary":"hreflang Tags Tester","tags":["Utilities"],"description":"Crawl a live page's hreflang annotations and catch what breaks international SEO silently: invalid locale codes, duplicate values, a missing self-reference, a missing x-default — and alternates that don't link back (hreflang must be reciprocal, or search engines ignore it).\n\n[Try hreflang Tags Tester in your browser →](https://iotools.cloud/tool/hreflang-tags-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"a_multilingual_documentation_page":{"summary":"A multilingual documentation page","value":{"url":"https://developers.google.com/search/docs/specialty/international/localized-versions"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"issues":{"type":"array","description":"Issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"hreflang":{"type":"string","description":"hreflang"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["severity","hreflang","issue"]},"tags":{"type":"array","description":"Tags found","items":{"type":"object","properties":{"hreflang":{"type":"string","description":"hreflang"},"url":{"type":"string","description":"URL"},"self":{"type":"string","description":"Self"},"links-back":{"type":"string","description":"Links back?"}}},"x-iotools-columns":["hreflang","url","self","links-back"]},"raw":{"type":"string","description":"Raw hreflang tags"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-validator":{"post":{"operationId":"run_html_validator","summary":"HTML Validator","tags":["Utilities"],"description":"Check HTML markup for structural problems — unclosed and mismatched tags, duplicate IDs, deprecated elements, missing required attributes (img alt/src, a href), and block-inside-inline nesting — with a per-issue list of line numbers. A lightweight structural linter that runs entirely in your browser.\n\n[Try HTML Validator in your browser →](https://iotools.cloud/tool/html-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"htmlInput":{"type":"string","description":"HTML Input"}},"required":[]},"examples":{"document_with_many_issues":{"summary":"Document with many issues","value":{"htmlInput":"<!DOCTYPE html>\n<html>\n<head>\n  <title>My Page</title>\n</head>\n<body>\n  <h1>Welcome</h1>\n  <img src=\"photo.jpg\">\n  <p>This is a paragraph with a <b>bold <i>and italic</b></i> text.</p>\n  <div id=\"main\">\n    <span>\n      <div>Block inside inline</div>\n    </span>\n  </div>\n  <div id=\"main\">Duplicate ID here</div>\n  <p>An unclosed paragraph\n  <center>This tag is deprecated</center>\n  <a>Link without href</a>\n  <input>\n  <br/>\n</body>\n</html>"}},"well_formed_document_no_issues":{"summary":"Well-formed document (no issues)","value":{"htmlInput":"<!DOCTYPE html>\n<html>\n<head>\n  <title>Hello</title>\n</head>\n<body>\n  <h1>Hello</h1>\n  <p>A well-formed paragraph.</p>\n</body>\n</html>"}},"fragment_with_img_a_issues":{"summary":"Fragment with img/a issues","value":{"htmlInput":"<div>\n  <img src=\"logo.png\">\n  <a>Click me</a>\n</div>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"document_with_many_issues":{"summary":"Document with many issues","value":{"tool":"html-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Invalid"},{"metric":"Errors","value":"6"},{"metric":"Warnings","value":"3"},{"metric":"Total issues","value":"9"}],"issues":[{"severity":"Error","line":"8","column":"3","message":"<img> is missing required \"alt\" attribute"},{"severity":"Error","line":"8","column":"3","message":"<img> is missing required \"alt\" attribute"},{"severity":"Error","line":"9","column":"41","message":"Unclosed <i> tag (expected closing tag before </b> on line 9)"},{"severity":"Error","line":"9","column":"58","message":"Unexpected closing tag </i> with no matching opening tag"},{"severity":"Warning","line":"12","column":"7","message":"Block element <div> should not be nested inside inline element <span>"},{"severity":"Error","line":"15","column":"3","message":"Duplicate ID \"main\" (first used on line 10)"},{"severity":"Error","line":"16","column":"3","message":"Unclosed <p> tag (expected closing tag before </body> on line 21)"},{"severity":"Warning","line":"17","column":"3","message":"Deprecated element <center>"},{"severity":"Warning","line":"18","column":"3","message":"<a> element is missing \"href\" attribute"}]},"credits_used":5,"credits_remaining":null}},"well_formed_document_no_issues":{"summary":"Well-formed document (no issues)","value":{"tool":"html-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Valid"},{"metric":"Errors","value":"0"},{"metric":"Warnings","value":"0"},{"metric":"Total issues","value":"0"}],"issues":[]},"credits_used":5,"credits_remaining":null}},"fragment_with_img_a_issues":{"summary":"Fragment with img/a issues","value":{"tool":"html-validator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Result","value":"Invalid"},{"metric":"Errors","value":"2"},{"metric":"Warnings","value":"5"},{"metric":"Total issues","value":"7"}],"issues":[{"severity":"Warning","line":"1","column":"1","message":"Missing <!DOCTYPE html> declaration"},{"severity":"Warning","line":"1","column":"1","message":"Missing <html> element"},{"severity":"Warning","line":"1","column":"1","message":"Missing <head> element"},{"severity":"Warning","line":"1","column":"1","message":"Missing <body> element"},{"severity":"Error","line":"2","column":"3","message":"<img> is missing required \"alt\" attribute"},{"severity":"Error","line":"2","column":"3","message":"<img> is missing required \"alt\" attribute"},{"severity":"Warning","line":"3","column":"3","message":"<a> element is missing \"href\" attribute"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"issues":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"line":{"type":"string","description":"Line"},"column":{"type":"string","description":"Column"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","line","column","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/http-header-analyzer":{"post":{"operationId":"run_http_header_analyzer","summary":"HTTP Header Analyzer","tags":["Utilities"],"description":"Paste raw HTTP request or response headers and get them parsed, categorized (security, caching, CORS, content) and explained one by one, plus a JSON export — all in your browser.\n\n[Try HTTP Header Analyzer in your browser →](https://iotools.cloud/tool/http-header-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"headersInput":{"type":"string","description":"HTTP Headers"}},"required":[]},"examples":{"typical_html_response":{"summary":"Typical HTML response","value":{"headersInput":"HTTP/1.1 200 OK\nDate: Fri, 20 Mar 2026 08:15:30 GMT\nContent-Type: text/html; charset=UTF-8\nContent-Length: 24580\nContent-Encoding: gzip\nCache-Control: max-age=3600, public\nETag: \"5f3b8c2d-6004\"\nVary: Accept-Encoding\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-Frame-Options: SAMEORIGIN\nReferrer-Policy: strict-origin-when-cross-origin\nServer: nginx/1.24.0\nX-Powered-By: Express\nSet-Cookie: sessionId=abc123; Path=/; HttpOnly\nSet-Cookie: theme=dark; Path=/"}},"api_json_response_with_cors":{"summary":"API JSON response with CORS","value":{"headersInput":"HTTP/1.1 200 OK\nContent-Type: application/json; charset=UTF-8\nContent-Length: 1482\nCache-Control: no-store\nAccess-Control-Allow-Origin: https://app.example.com\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS\nAccess-Control-Allow-Credentials: true\nStrict-Transport-Security: max-age=31536000; includeSubDomains; preload\nX-Content-Type-Options: nosniff\nContent-Security-Policy: default-src 'none'\nX-Request-Id: req_abc123"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"typical_html_response":{"summary":"Typical HTML response","value":{"tool":"http-header-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Status Line","value":"HTTP/1.1 200 OK"},{"metric":"Total Headers","value":"14"},{"metric":"Security Headers","value":"4"},{"metric":"Caching Headers","value":"3"},{"metric":"CORS Headers","value":"0"},{"metric":"Content Headers","value":"3"},{"metric":"Custom / Non-standard Headers","value":"4"},{"metric":"Missing Common Security Headers","value":"Content-Security-Policy, Permissions-Policy"}],"headers":[{"header":"Date","category":"Custom","value":"Fri, 20 Mar 2026 08:15:30 GMT","description":"Custom or non-standard header."},{"header":"Content-Type","category":"Content","value":"text/html; charset=UTF-8","description":"The MIME type of the response body and its character encoding."},{"header":"Content-Length","category":"Content","value":"24580","description":"The size of the response body, in bytes."},{"header":"Content-Encoding","category":"Content","value":"gzip","description":"The compression algorithm applied to the response body."},{"header":"Cache-Control","category":"Caching","value":"max-age=3600, public","description":"Directives controlling how, where, and for how long the response may be cached."},{"header":"ETag","category":"Caching","value":"\"5f3b8c2d-6004\"","description":"A version identifier for the resource, used for conditional requests."},{"header":"Vary","category":"Caching","value":"Accept-Encoding","description":"Lists request headers that affect which cached response variant is served."},{"header":"Strict-Transport-Security","category":"Security","value":"max-age=31536000; includeSubDomains","description":"Forces HTTPS connections, preventing protocol downgrade and cookie hijacking."},{"header":"X-Content-Type-Options","category":"Security","value":"nosniff","description":"Prevents MIME-type sniffing so the browser respects the declared Content-Type."},{"header":"X-Frame-Options","category":"Security","value":"SAMEORIGIN","description":"Controls whether the page can be rendered in a frame or iframe (clickjacking protection)."},{"header":"Referrer-Policy","category":"Security","value":"strict-origin-when-cross-origin","description":"Controls how much referrer information is sent with outgoing requests."},{"header":"Server","category":"Custom","value":"nginx/1.24.0","description":"Custom or non-standard header."},{"header":"X-Powered-By","category":"Custom","value":"Express","description":"Custom or non-standard header."},{"header":"Set-Cookie","category":"Custom","value":"sessionId=abc123; Path=/; HttpOnly, theme=dark; Path=/","description":"Custom or non-standard header."}],"jsonOutput":"{\n  \"statusLine\": \"HTTP/1.1 200 OK\",\n  \"headers\": [\n    {\n      \"name\": \"Date\",\n      \"values\": [\n        \"Fri, 20 Mar 2026 08:15:30 GMT\"\n      ]\n    },\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"text/html; charset=UTF-8\"\n      ]\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"values\": [\n        \"24580\"\n      ]\n    },\n    {\n      \"name\": \"Content-Encoding\",\n      \"values\": [\n        \"gzip\"\n      ]\n    },\n    {\n      \"name\": \"Cache-Control\",\n      \"values\": [\n        \"max-age=3600, public\"\n      ]\n    },\n    {\n      \"name\": \"ETag\",\n      \"values\": [\n        \"\\\"5f3b8c2d-6004\\\"\"\n      ]\n    },\n    {\n      \"name\": \"Vary\",\n      \"values\": [\n        \"Accept-Encoding\"\n      ]\n    },\n    {\n      \"name\": \"Strict-Transport-Security\",\n      \"values\": [\n        \"max-age=31536000; includeSubDomains\"\n      ]\n    },\n    {\n      \"name\": \"X-Content-Type-Options\",\n      \"values\": [\n        \"nosniff\"\n      ]\n    },\n    {\n      \"name\": \"X-Frame-Options\",\n      \"values\": [\n        \"SAMEORIGIN\"\n      ]\n    },\n    {\n      \"name\": \"Referrer-Policy\",\n      \"values\": [\n        \"strict-origin-when-cross-origin\"\n      ]\n    },\n    {\n      \"name\": \"Server\",\n      \"values\": [\n        \"nginx/1.24.0\"\n      ]\n    },\n    {\n      \"name\": \"X-Powered-By\",\n      \"values\": [\n        \"Express\"\n      ]\n    },\n    {\n      \"name\": \"Set-Cookie\",\n      \"values\": [\n        \"sessionId=abc123; Path=/; HttpOnly\",\n        \"theme=dark; Path=/\"\n      ]\n    }\n  ],\n  \"analysis\": [\n    {\n      \"name\": \"Date\",\n      \"category\": \"custom\",\n      \"standard\": false,\n      \"description\": \"Custom or non-standard header.\"\n    },\n    {\n      \"name\": \"Content-Type\",\n      \"category\": \"content\",\n      \"standard\": true,\n      \"description\": \"The MIME type of the response body and its character encoding.\"\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"category\": \"content\",\n      \"standard\": true,\n      \"description\": \"The size of the response body, in bytes.\"\n    },\n    {\n      \"name\": \"Content-Encoding\",\n      \"category\": \"content\",\n      \"standard\": true,\n      \"description\": \"The compression algorithm applied to the response body.\"\n    },\n    {\n      \"name\": \"Cache-Control\",\n      \"category\": \"caching\",\n      \"standard\": true,\n      \"description\": \"Directives controlling how, where, and for how long the response may be cached.\"\n    },\n    {\n      \"name\": \"ETag\",\n      \"category\": \"caching\",\n      \"standard\": true,\n      \"description\": \"A version identifier for the resource, used for conditional requests.\"\n    },\n    {\n      \"name\": \"Vary\",\n      \"category\": \"caching\",\n      \"standard\": true,\n      \"description\": \"Lists request headers that affect which cached response variant is served.\"\n    },\n    {\n      \"name\": \"Strict-Transport-Security\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Forces HTTPS connections, preventing protocol downgrade and cookie hijacking.\"\n    },\n    {\n      \"name\": \"X-Content-Type-Options\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Prevents MIME-type sniffing so the browser respects the declared Content-Type.\"\n    },\n    {\n      \"name\": \"X-Frame-Options\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Controls whether the page can be rendered in a frame or iframe (clickjacking protection).\"\n    },\n    {\n      \"name\": \"Referrer-Policy\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Controls how much referrer information is sent with outgoing requests.\"\n    },\n    {\n      \"name\": \"Server\",\n      \"category\": \"custom\",\n      \"standard\": false,\n      \"description\": \"Custom or non-standard header.\"\n    },\n    {\n      \"name\": \"X-Powered-By\",\n      \"category\": \"custom\",\n      \"standard\": false,\n      \"description\": \"Custom or non-standard header.\"\n    },\n    {\n      \"name\": \"Set-Cookie\",\n      \"category\": \"custom\",\n      \"standard\": false,\n      \"description\": \"Custom or non-standard header.\"\n    }\n  ],\n  \"summary\": {\n    \"totalHeaders\": 14,\n    \"categories\": {\n      \"security\": 4,\n      \"caching\": 3,\n      \"cors\": 0,\n      \"content\": 3,\n      \"custom\": 4\n    },\n    \"missingSecurityHeaders\": [\n      \"Content-Security-Policy\",\n      \"Permissions-Policy\"\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}},"api_json_response_with_cors":{"summary":"API JSON response with CORS","value":{"tool":"http-header-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Status Line","value":"HTTP/1.1 200 OK"},{"metric":"Total Headers","value":"10"},{"metric":"Security Headers","value":"3"},{"metric":"Caching Headers","value":"1"},{"metric":"CORS Headers","value":"3"},{"metric":"Content Headers","value":"2"},{"metric":"Custom / Non-standard Headers","value":"1"},{"metric":"Missing Common Security Headers","value":"X-Frame-Options, Referrer-Policy, Permissions-Policy"}],"headers":[{"header":"Content-Type","category":"Content","value":"application/json; charset=UTF-8","description":"The MIME type of the response body and its character encoding."},{"header":"Content-Length","category":"Content","value":"1482","description":"The size of the response body, in bytes."},{"header":"Cache-Control","category":"Caching","value":"no-store","description":"Directives controlling how, where, and for how long the response may be cached."},{"header":"Access-Control-Allow-Origin","category":"CORS","value":"https://app.example.com","description":"Specifies which origin(s) are allowed to read the response."},{"header":"Access-Control-Allow-Methods","category":"CORS","value":"GET, POST, PUT, DELETE, OPTIONS","description":"Specifies which HTTP methods are allowed for cross-origin requests."},{"header":"Access-Control-Allow-Credentials","category":"CORS","value":"true","description":"Indicates whether the response may be shared with credentialed requests."},{"header":"Strict-Transport-Security","category":"Security","value":"max-age=31536000; includeSubDomains; preload","description":"Forces HTTPS connections, preventing protocol downgrade and cookie hijacking."},{"header":"X-Content-Type-Options","category":"Security","value":"nosniff","description":"Prevents MIME-type sniffing so the browser respects the declared Content-Type."},{"header":"Content-Security-Policy","category":"Security","value":"default-src 'none'","description":"Controls which resources the browser may load, mitigating XSS and data-injection attacks."},{"header":"X-Request-Id","category":"Custom","value":"req_abc123","description":"Custom or non-standard header."}],"jsonOutput":"{\n  \"statusLine\": \"HTTP/1.1 200 OK\",\n  \"headers\": [\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"application/json; charset=UTF-8\"\n      ]\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"values\": [\n        \"1482\"\n      ]\n    },\n    {\n      \"name\": \"Cache-Control\",\n      \"values\": [\n        \"no-store\"\n      ]\n    },\n    {\n      \"name\": \"Access-Control-Allow-Origin\",\n      \"values\": [\n        \"https://app.example.com\"\n      ]\n    },\n    {\n      \"name\": \"Access-Control-Allow-Methods\",\n      \"values\": [\n        \"GET, POST, PUT, DELETE, OPTIONS\"\n      ]\n    },\n    {\n      \"name\": \"Access-Control-Allow-Credentials\",\n      \"values\": [\n        \"true\"\n      ]\n    },\n    {\n      \"name\": \"Strict-Transport-Security\",\n      \"values\": [\n        \"max-age=31536000; includeSubDomains; preload\"\n      ]\n    },\n    {\n      \"name\": \"X-Content-Type-Options\",\n      \"values\": [\n        \"nosniff\"\n      ]\n    },\n    {\n      \"name\": \"Content-Security-Policy\",\n      \"values\": [\n        \"default-src 'none'\"\n      ]\n    },\n    {\n      \"name\": \"X-Request-Id\",\n      \"values\": [\n        \"req_abc123\"\n      ]\n    }\n  ],\n  \"analysis\": [\n    {\n      \"name\": \"Content-Type\",\n      \"category\": \"content\",\n      \"standard\": true,\n      \"description\": \"The MIME type of the response body and its character encoding.\"\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"category\": \"content\",\n      \"standard\": true,\n      \"description\": \"The size of the response body, in bytes.\"\n    },\n    {\n      \"name\": \"Cache-Control\",\n      \"category\": \"caching\",\n      \"standard\": true,\n      \"description\": \"Directives controlling how, where, and for how long the response may be cached.\"\n    },\n    {\n      \"name\": \"Access-Control-Allow-Origin\",\n      \"category\": \"cors\",\n      \"standard\": true,\n      \"description\": \"Specifies which origin(s) are allowed to read the response.\"\n    },\n    {\n      \"name\": \"Access-Control-Allow-Methods\",\n      \"category\": \"cors\",\n      \"standard\": true,\n      \"description\": \"Specifies which HTTP methods are allowed for cross-origin requests.\"\n    },\n    {\n      \"name\": \"Access-Control-Allow-Credentials\",\n      \"category\": \"cors\",\n      \"standard\": true,\n      \"description\": \"Indicates whether the response may be shared with credentialed requests.\"\n    },\n    {\n      \"name\": \"Strict-Transport-Security\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Forces HTTPS connections, preventing protocol downgrade and cookie hijacking.\"\n    },\n    {\n      \"name\": \"X-Content-Type-Options\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Prevents MIME-type sniffing so the browser respects the declared Content-Type.\"\n    },\n    {\n      \"name\": \"Content-Security-Policy\",\n      \"category\": \"security\",\n      \"standard\": true,\n      \"description\": \"Controls which resources the browser may load, mitigating XSS and data-injection attacks.\"\n    },\n    {\n      \"name\": \"X-Request-Id\",\n      \"category\": \"custom\",\n      \"standard\": false,\n      \"description\": \"Custom or non-standard header.\"\n    }\n  ],\n  \"summary\": {\n    \"totalHeaders\": 10,\n    \"categories\": {\n      \"security\": 3,\n      \"caching\": 1,\n      \"cors\": 3,\n      \"content\": 2,\n      \"custom\": 1\n    },\n    \"missingSecurityHeaders\": [\n      \"X-Frame-Options\",\n      \"Referrer-Policy\",\n      \"Permissions-Policy\"\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"headers":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"category":{"type":"string","description":"Category"},"value":{"type":"string","description":"Value"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["header","category","value","description"]},"jsonOutput":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/http-status-codes":{"post":{"operationId":"run_http_status_codes","summary":"HTTP Status Codes","tags":["Utilities"],"description":"Look up any HTTP status code — 200, 301, 404, 429, 502 and the rest — with its reason phrase, category, defining RFC and a plain-English explanation. Search by code, group (4xx), name or keyword.\n\n[Try HTTP Status Codes in your browser →](https://iotools.cloud/tool/http-status-codes/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search"}},"required":[]},"examples":{"404_not_found":{"summary":"404 Not Found","value":{"search":"404"}},"rate_limiting":{"summary":"Rate limiting","value":{"search":"too many requests"}},"the_teapot":{"summary":"The teapot","value":{"search":"teapot"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"404_not_found":{"summary":"404 Not Found","value":{"tool":"http-status-codes","tool_version":"1.0.2","outputs":{"summary":"1 of 87 status codes matches \"404\".","results":[{"code":"404","name":"Not Found","category":"4xx Client Error","spec":"RFC 9110","description":"The requested page could not be found but may be available again in the future."}]},"credits_used":5,"credits_remaining":null}},"rate_limiting":{"summary":"Rate limiting","value":{"tool":"http-status-codes","tool_version":"1.0.2","outputs":{"summary":"1 of 87 status codes matches \"too many requests\".","results":[{"code":"429","name":"Too Many Requests","category":"4xx Client Error","spec":"RFC 6585","description":"The user has sent too many requests in a given amount of time. Intended for use with rate limiting schemes."}]},"credits_used":5,"credits_remaining":null}},"the_teapot":{"summary":"The teapot","value":{"tool":"http-status-codes","tool_version":"1.0.2","outputs":{"summary":"1 of 87 status codes matches \"teapot\".","results":[{"code":"418","name":"I'm a teapot","category":"4xx Client Error","spec":"RFC 2324","description":"Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"results":{"type":"array","description":"HTTP status codes","items":{"type":"object","properties":{"code":{"type":"string","description":"Code"},"name":{"type":"string","description":"Name"},"category":{"type":"string","description":"Category"},"spec":{"type":"string","description":"Spec"},"description":{"type":"string","description":"Description"}}},"x-iotools-columns":["code","name","category","spec","description"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/iban-validator":{"post":{"operationId":"run_iban_validator","summary":"IBAN Validator","tags":["Utilities"],"description":"Validate an International Bank Account Number (IBAN). Checks the country code, the country-specific length, and the ISO 7064 MOD-97-10 checksum, and shows the country, check digits, BBAN and correctly grouped IBAN.\n\n[Try IBAN Validator in your browser →](https://iotools.cloud/tool/iban-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"iban":{"type":"string","description":"IBAN"}},"required":[]},"examples":{"valid_uk_iban_canonical_example":{"summary":"Valid UK IBAN (canonical example)","value":{"iban":"GB82 WEST 1234 5698 7654 32"}},"invalid_one_digit_changed_checksum_fails":{"summary":"Invalid — one digit changed (checksum fails)","value":{"iban":"GB82 WEST 1234 5698 7654 33"}},"valid_german_iban":{"summary":"Valid German IBAN","value":{"iban":"DE89 3704 0044 0532 0130 00"}},"valid_french_iban":{"summary":"Valid French IBAN","value":{"iban":"FR76 3000 6000 0112 3456 7890 189"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_uk_iban_canonical_example":{"summary":"Valid UK IBAN (canonical example)","value":{"tool":"iban-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid"},{"property":"Valid","value":"Yes"},{"property":"Country Code","value":"GB"},{"property":"Country","value":"United Kingdom"},{"property":"Check Digits","value":"82"},{"property":"BBAN","value":"WEST12345698765432"},{"property":"Formatted IBAN","value":"GB82 WEST 1234 5698 7654 32"}]},"credits_used":5,"credits_remaining":null}},"invalid_one_digit_changed_checksum_fails":{"summary":"Invalid — one digit changed (checksum fails)","value":{"tool":"iban-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid — MOD-97 checksum check failed"},{"property":"Valid","value":"No"},{"property":"Country Code","value":"GB"},{"property":"Country","value":"United Kingdom"},{"property":"Check Digits","value":"82"},{"property":"BBAN","value":"WEST12345698765433"},{"property":"Formatted IBAN","value":"GB82 WEST 1234 5698 7654 33"}]},"credits_used":5,"credits_remaining":null}},"valid_german_iban":{"summary":"Valid German IBAN","value":{"tool":"iban-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid"},{"property":"Valid","value":"Yes"},{"property":"Country Code","value":"DE"},{"property":"Country","value":"Germany"},{"property":"Check Digits","value":"89"},{"property":"BBAN","value":"370400440532013000"},{"property":"Formatted IBAN","value":"DE89 3704 0044 0532 0130 00"}]},"credits_used":5,"credits_remaining":null}},"valid_french_iban":{"summary":"Valid French IBAN","value":{"tool":"iban-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid"},{"property":"Valid","value":"Yes"},{"property":"Country Code","value":"FR"},{"property":"Country","value":"France"},{"property":"Check Digits","value":"76"},{"property":"BBAN","value":"30006000011234567890189"},{"property":"Formatted IBAN","value":"FR76 3000 6000 0112 3456 7890 189"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/image-translator":{"post":{"operationId":"run_image_translator","summary":"Image Translator","tags":["Utilities"],"description":"Upload a photo of a sign, menu, label or screenshot and get an AI translation of the text it contains into another language.\n\n[Try Image Translator in your browser →](https://iotools.cloud/tool/image-translator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"Image"},"targetLanguage":{"enum":["Arabic","Bengali","Chinese (Simplified)","Chinese (Traditional)","Czech","Danish","Dutch","English","Filipino","Finnish","French","German","Greek","Hebrew","Hindi","Hungarian","Indonesian","Italian","Japanese","Korean","Malay","Norwegian","Polish","Portuguese","Romanian","Russian","Spanish","Swahili","Swedish","Thai","Turkish","Ukrainian","Vietnamese"],"description":"Target language"}},"required":["file"]},"examples":{"default":{"summary":"Default","value":{"file":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaQAAACcCAIAAAC/cEgWAAADQklEQVR42u3VwQHDIBADQYqg/1ZNAf74ZSSYrSAKucl4JOmChq9AEuwkCXaSBDtJgp0kwU6SYCdJsJMk2EmCnSTBTpJgJ0mwkyTYSRLsJAl2kgQ7SYKdJNhJEuwkCXaSBDtJgp0kwU6SYCdJsJMk2EmCnSTBTpJgJ0mwkyTYSRLsJAl2kgQ7SdqK3fxQ4+eZhTW+16m/w7Ttf/7GYAc72MEOdrCDHexgBzvYwQ52sIMd7GAHO9jBDnawgx3sYAc72MEOdrCDHexgBzvYwQ52sIMd7GAHO9jBDnawgx3sYAc72MEOdrCDXSZ2ULDLfe39PLCDnV12wc5jwM4uu2DnMRyPXXbBDnaOxy7YwQ52jscu9wU72Dkeu9wX7GAHBbtgBzvYQcEu2MEOdlCwC3YeA3Z22QU7j+F47LILdh7D8dhlF+xg53jsgh3sYOd47HJfsIOd47HLfcEOdlCwC3awgx0U7IId7GAHBbtg5zFgZ5ddsPMYjscuu2DnMRyPXXbBDnaOxy73BTvYOR673NfN2KXVuAsKdsEOdrCDgl2wgx3soGAX7GAHOyjYBTvYwQ4KdsEOdrCDAuxgBzvYQQF2sIMd7GAHO9jBDnZ2wQ52sIOCXbCDHeygYBfsYAc7KNgFO4/heOyyC3awczx22QU72Dkeu9wX7GDneOxyX7CDneOxC3awgx0U7IId7GAHBbtgBzvYQcEu2HkM2NllF+w8huOxyy7Ywc7x2GUX7GDneOxyX7CDneOxy33BDnaOxy7YwQ52ULALdrCDHRTsgh3sYGeXXbDzGLCzyy7YeQzHY5ddsIOd47HLLtjBzvHY5b5gBzvHY5f7gh3sHI9dsIMd7KBgF+xgl4NdWnadtytte9qfAewcj12wgx3soGAX7GAHOyjYBTvYwQ4KdsEOdrCDgl2wgx3soGAX7GAHOyjYBTvYwQ4KsIMd7GBnF+xgBzvHYxfsYAc7KNgFO9hJUkuwkwQ7SYKdJMFOkmAnSbCTJNhJEuwkCXaSYCdJsJMk2EkS7CQJdpIEO0mCnSTBTpJgJwl2kgQ7SYKdJMFOkmAnSbCTJNhJEuwkCXaSYCdJsJMk2EkS7CQJdpIEO0mCnSTBTpJeLYTb4Ua3OkvYAAAAAElFTkSuQmCC","targetLanguage":"Spanish"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"sourceText":{"type":"string","description":"Text found in image"},"translation":{"type":"string","description":"Translation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/isbn-validator":{"post":{"operationId":"run_isbn_validator","summary":"ISBN Validator","tags":["Utilities"],"description":"Validate an ISBN-10 or ISBN-13 book number by its check digit, and convert a valid ISBN-10 to its ISBN-13 equivalent (and 978-prefixed ISBN-13 back to ISBN-10). Spaces and hyphens are ignored.\n\n[Try ISBN Validator in your browser →](https://iotools.cloud/tool/isbn-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"isbn":{"type":"string","description":"ISBN"}},"required":[]},"examples":{"valid_isbn_10_converts_to_isbn_13":{"summary":"Valid ISBN-10 (converts to ISBN-13)","value":{"isbn":"0-306-40615-2"}},"valid_isbn_13_converts_back_to_isbn_10":{"summary":"Valid ISBN-13 (converts back to ISBN-10)","value":{"isbn":"978-0-13-468599-1"}},"valid_isbn_13_with_an_x_isbn_10_equivalent":{"summary":"Valid ISBN-13 with an 'X' ISBN-10 equivalent","value":{"isbn":"978-3-16-148410-0"}},"invalid_wrong_check_digit":{"summary":"Invalid — wrong check digit","value":{"isbn":"0-306-40615-5"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_isbn_10_converts_to_isbn_13":{"summary":"Valid ISBN-10 (converts to ISBN-13)","value":{"tool":"isbn-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ISBN-10"},{"property":"Valid","value":"Yes"},{"property":"Format Detected","value":"ISBN-10"},{"property":"Check Digit","value":"2"},{"property":"Normalized","value":"0306406152"},{"property":"Equivalent ISBN-13","value":"9780306406157"}]},"credits_used":5,"credits_remaining":null}},"valid_isbn_13_converts_back_to_isbn_10":{"summary":"Valid ISBN-13 (converts back to ISBN-10)","value":{"tool":"isbn-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ISBN-13"},{"property":"Valid","value":"Yes"},{"property":"Format Detected","value":"ISBN-13"},{"property":"Check Digit","value":"1"},{"property":"Normalized","value":"9780134685991"},{"property":"Equivalent ISBN-10","value":"0134685997"}]},"credits_used":5,"credits_remaining":null}},"valid_isbn_13_with_an_x_isbn_10_equivalent":{"summary":"Valid ISBN-13 with an 'X' ISBN-10 equivalent","value":{"tool":"isbn-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ISBN-13"},{"property":"Valid","value":"Yes"},{"property":"Format Detected","value":"ISBN-13"},{"property":"Check Digit","value":"0"},{"property":"Normalized","value":"9783161484100"},{"property":"Equivalent ISBN-10","value":"316148410X"}]},"credits_used":5,"credits_remaining":null}},"invalid_wrong_check_digit":{"summary":"Invalid — wrong check digit","value":{"tool":"isbn-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid ISBN-10 — check digit does not match"},{"property":"Valid","value":"No"},{"property":"Format Detected","value":"ISBN-10"},{"property":"Check Digit","value":"5"},{"property":"Normalized","value":"0306406155"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-compare":{"post":{"operationId":"run_json_compare","summary":"JSON Compare","tags":["Utilities"],"description":"Compare two JSON documents and get a clear diff of exactly what changed — every added, removed and changed value listed by its key path. Objects compare by key, arrays by index. Runs entirely in your browser.\n\n[Try JSON Compare in your browser →](https://iotools.cloud/tool/json-compare/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"leftJson":{"type":"string","description":"Left JSON"},"rightJson":{"type":"string","description":"Right JSON"}},"required":[]},"examples":{"added_removed_and_changed_keys":{"summary":"Added, removed and changed keys","value":{"leftJson":"{\"name\":\"John\",\"age\":30,\"city\":\"NYC\"}","rightJson":"{\"name\":\"Jane\",\"age\":30,\"country\":\"USA\"}"}},"array_index_and_nested_change":{"summary":"Array index and nested change","value":{"leftJson":"{\"tags\":[\"a\",\"b\",\"c\"],\"meta\":{\"v\":1}}","rightJson":"{\"tags\":[\"a\",\"x\"],\"meta\":{\"v\":2}}"}},"identical_json_no_differences":{"summary":"Identical JSON (no differences)","value":{"leftJson":"{\"a\":1,\"b\":[1,2]}","rightJson":"{\"a\":1,\"b\":[1,2]}"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"added_removed_and_changed_keys":{"summary":"Added, removed and changed keys","value":{"tool":"json-compare","tool_version":"1.0.2","outputs":{"diff":[{"path":"name","left-value":"\"John\"","right-value":"\"Jane\"","change":"changed"},{"path":"city","left-value":"\"NYC\"","right-value":"","change":"removed"},{"path":"country","left-value":"","right-value":"\"USA\"","change":"added"}]},"credits_used":5,"credits_remaining":null}},"array_index_and_nested_change":{"summary":"Array index and nested change","value":{"tool":"json-compare","tool_version":"1.0.2","outputs":{"diff":[{"path":"tags[1]","left-value":"\"b\"","right-value":"\"x\"","change":"changed"},{"path":"tags[2]","left-value":"\"c\"","right-value":"","change":"removed"},{"path":"meta.v","left-value":"1","right-value":"2","change":"changed"}]},"credits_used":5,"credits_remaining":null}},"identical_json_no_differences":{"summary":"Identical JSON (no differences)","value":{"tool":"json-compare","tool_version":"1.0.2","outputs":{"diff":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"diff":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Path"},"left-value":{"type":"string","description":"Left Value"},"right-value":{"type":"string","description":"Right Value"},"change":{"type":"string","description":"Change"}}},"x-iotools-columns":["path","left-value","right-value","change"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-key-extractor":{"post":{"operationId":"run_json_key_extractor","summary":"JSON Key Extractor","tags":["Utilities"],"description":"Extract every unique key or key path from a JSON document, with a count of how many times each one occurs. Switch between bare key names and full array-normalized paths to audit schema consistency across a dataset.\n\n[Try JSON Key Extractor in your browser →](https://iotools.cloud/tool/json-key-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"JSON input"},"mode":{"enum":["name","path"],"description":"Extract as"}},"required":[]},"examples":{"unique_key_names":{"summary":"Unique key names","value":{"input":"{\"user\":{\"id\":1,\"name\":\"Ada\"},\"items\":[{\"sku\":\"A1\",\"name\":\"Widget\"},{\"sku\":\"A2\"}]}","mode":"name"}},"full_array_normalized_paths":{"summary":"Full array-normalized paths","value":{"input":"{\"user\":{\"id\":1,\"name\":\"Ada\"},\"items\":[{\"sku\":\"A1\",\"name\":\"Widget\"},{\"sku\":\"A2\"}]}","mode":"path"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"unique_key_names":{"summary":"Unique key names","value":{"tool":"json-key-extractor","tool_version":"1.0.2","outputs":{"keys":[{"rank":"1","key":"name","count":"2"},{"rank":"2","key":"sku","count":"2"},{"rank":"3","key":"id","count":"1"},{"rank":"4","key":"items","count":"1"},{"rank":"5","key":"user","count":"1"}]},"credits_used":5,"credits_remaining":null}},"full_array_normalized_paths":{"summary":"Full array-normalized paths","value":{"tool":"json-key-extractor","tool_version":"1.0.2","outputs":{"keys":[{"rank":"1","key":"items[].sku","count":"2"},{"rank":"2","key":"items","count":"1"},{"rank":"3","key":"items[].name","count":"1"},{"rank":"4","key":"user","count":"1"},{"rank":"5","key":"user.id","count":"1"},{"rank":"6","key":"user.name","count":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"string","description":"#"},"key":{"type":"string","description":"Key"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["rank","key","count"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/twitter-character-counter":{"post":{"operationId":"run_twitter_character_counter","summary":"Twitter Character Counter","tags":["Utilities"],"description":"Count characters the way X (Twitter) does: links always count as a fixed 23 characters (t.co), CJK and other wide Unicode characters count as 2, and everything else counts as 1 — against the 280-character limit.\n\n[Try Twitter Character Counter in your browser →](https://iotools.cloud/tool/twitter-character-counter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"tweetText":{"type":"string","description":"Tweet"}},"required":[]},"examples":{"tweet_with_a_link":{"summary":"Tweet with a link","value":{"tweetText":"Check out my new site at https://example.com - let me know what you think!"}},"tweet_with_cjk_characters":{"summary":"Tweet with CJK characters","value":{"tweetText":"Hello World and こんにちは世界"}},"over_the_limit":{"summary":"Over the limit","value":{"tweetText":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"tweet_with_a_link":{"summary":"Tweet with a link","value":{"tool":"twitter-character-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Effective character count","value":"78"},{"metric":"Remaining characters","value":"202"},{"metric":"Over limit","value":"No"},{"metric":"Character limit","value":"280"},{"metric":"URLs detected (23 chars each)","value":"1"}]},"credits_used":5,"credits_remaining":null}},"tweet_with_cjk_characters":{"summary":"Tweet with CJK characters","value":{"tool":"twitter-character-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Effective character count","value":"30"},{"metric":"Remaining characters","value":"250"},{"metric":"Over limit","value":"No"},{"metric":"Character limit","value":"280"},{"metric":"URLs detected (23 chars each)","value":"0"}]},"credits_used":5,"credits_remaining":null}},"over_the_limit":{"summary":"Over the limit","value":{"tool":"twitter-character-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Effective character count","value":"300"},{"metric":"Remaining characters","value":"-20"},{"metric":"Over limit","value":"Yes"},{"metric":"Character limit","value":"280"},{"metric":"URLs detected (23 chars each)","value":"0"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jsonpath-tester":{"post":{"operationId":"run_jsonpath_tester","summary":"JSONPath Tester","tags":["Utilities"],"description":"Query a JSON document with a JSONPath expression and see every matching value next to its exact resolved path. Supports wildcards, recursive descent, array slices and filter expressions. Runs entirely in your browser.\n\n[Try JSONPath Tester in your browser →](https://iotools.cloud/tool/jsonpath-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonInput":{"type":"string","description":"JSON data"},"pathExpression":{"type":"string","description":"JSONPath expression"}},"required":[]},"examples":{"wildcard_all_authors":{"summary":"Wildcard (all authors)","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book[*].author"}},"recursive_descent_all_prices":{"summary":"Recursive descent (all prices)","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$..price"}},"filter_books_under_10":{"summary":"Filter (books under 10)","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book[?(@.price < 10)].title"}},"array_slice":{"summary":"Array slice","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book[1:3].title"}},"compound_filter":{"summary":"Compound filter (&&)","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book[?(@.price < 10 && @.category == 'fiction')].title"}},"negated_compound_filter_returns_only_the_non_fiction_book":{"summary":"Negated compound filter returns only the non-fiction book","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book[?(@.category != 'fiction' && @.price < 10)].title"}},"array_length":{"summary":"Array length","value":{"jsonInput":"{\n  \"store\": {\n    \"book\": [\n      { \"category\": \"reference\", \"author\": \"Nigel Rees\", \"title\": \"Sayings of the Century\", \"price\": 8.95 },\n      { \"category\": \"fiction\", \"author\": \"Evelyn Waugh\", \"title\": \"Sword of Honour\", \"price\": 12.99 },\n      { \"category\": \"fiction\", \"author\": \"Herman Melville\", \"title\": \"Moby Dick\", \"price\": 8.99 },\n      { \"category\": \"fiction\", \"author\": \"J. R. R. Tolkien\", \"title\": \"The Lord of the Rings\", \"price\": 22.99 }\n    ],\n    \"bicycle\": { \"color\": \"red\", \"price\": 399.99 }\n  }\n}","pathExpression":"$.store.book.length"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"wildcard_all_authors":{"summary":"Wildcard (all authors)","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"4 matches found.","matches":[{"path":"$.store.book[0].author","value":"\"Nigel Rees\""},{"path":"$.store.book[1].author","value":"\"Evelyn Waugh\""},{"path":"$.store.book[2].author","value":"\"Herman Melville\""},{"path":"$.store.book[3].author","value":"\"J. R. R. Tolkien\""}]},"credits_used":5,"credits_remaining":null}},"recursive_descent_all_prices":{"summary":"Recursive descent (all prices)","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"5 matches found.","matches":[{"path":"$.store.book[0].price","value":"8.95"},{"path":"$.store.book[1].price","value":"12.99"},{"path":"$.store.book[2].price","value":"8.99"},{"path":"$.store.book[3].price","value":"22.99"},{"path":"$.store.bicycle.price","value":"399.99"}]},"credits_used":5,"credits_remaining":null}},"filter_books_under_10":{"summary":"Filter (books under 10)","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"2 matches found.","matches":[{"path":"$.store.book[0].title","value":"\"Sayings of the Century\""},{"path":"$.store.book[2].title","value":"\"Moby Dick\""}]},"credits_used":5,"credits_remaining":null}},"array_slice":{"summary":"Array slice","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"2 matches found.","matches":[{"path":"$.store.book[1].title","value":"\"Sword of Honour\""},{"path":"$.store.book[2].title","value":"\"Moby Dick\""}]},"credits_used":5,"credits_remaining":null}},"compound_filter":{"summary":"Compound filter (&&)","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"1 match found.","matches":[{"path":"$.store.book[2].title","value":"\"Moby Dick\""}]},"credits_used":5,"credits_remaining":null}},"negated_compound_filter_returns_only_the_non_fiction_book":{"summary":"Negated compound filter returns only the non-fiction book","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"1 match found.","matches":[{"path":"$.store.book[0].title","value":"\"Sayings of the Century\""}]},"credits_used":5,"credits_remaining":null}},"array_length":{"summary":"Array length","value":{"tool":"jsonpath-tester","tool_version":"1.0.2","outputs":{"summary":"1 match found.","matches":[{"path":"$.store.book.length","value":"4"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"matches":{"type":"array","description":"Matches","items":{"type":"object","properties":{"path":{"type":"string","description":"Path"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["path","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jwt-decode":{"post":{"operationId":"run_jwt_decode","summary":"JWT Decoder","tags":["Utilities"],"description":"Decode a JSON Web Token (JWT) in your browser — split it into header, payload and signature, base64url-decode and pretty-print the header and payload as JSON, and read the registered date claims (iat, nbf, exp) as human-readable UTC times. Inspect only; the signature is never verified and the token never leaves your browser.\n\n[Try JWT Decoder in your browser →](https://iotools.cloud/tool/jwt-decode/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jwtToken":{"type":"string","description":"JWT to decode"}},"required":[]},"examples":{"classic_hs256_token_sub_name_iat":{"summary":"Classic HS256 token (sub, name, iat)","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"token_with_iat_nbf_and_exp_multiple_date_claims":{"summary":"Token with iat, nbf and exp (multiple date claims)","value":{"jwtToken":"eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2lvdG9vbHMuY2xvdWQvIiwic3ViIjoiNDIiLCJuYW1lIjoiQWRhIExvdmVsYWNlIiwiaWF0IjoxNzAwMDAwMDAwLCJuYmYiOjE3MDAwMDAwMDAsImV4cCI6MTgwMDAwMDAwMH0.c2lnbmF0dXJl"}},"unsecured_token_with_a_utf_8_payload_and_empty_signature":{"summary":"Unsecured token with a UTF-8 payload and empty signature","value":{"jwtToken":"eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJuYW1lIjoiSm9zw6kgTXXDsW96IOaXpeacrOiqniIsInJvbGUiOiJhZG1pbiJ9."}},"out_of_range_exp_still_decodes_the_rest_of_the_token":{"summary":"Out-of-range exp still decodes the rest of the token","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwibmFtZSI6IkFkYSIsImV4cCI6MTcwMDAwMDAwMDAwMDAwMH0.sig"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"classic_hs256_token_sub_name_iat":{"summary":"Classic HS256 token (sub, name, iat)","value":{"tool":"jwt-decode","tool_version":"1.0.2","outputs":{"header":"{\n  \"alg\": \"HS256\",\n  \"typ\": \"JWT\"\n}","payload":"{\n  \"sub\": \"1234567890\",\n  \"name\": \"John Doe\",\n  \"iat\": 1516239022\n}","signature":"SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","claims":[{"claim":"iat (Issued At)","time-utc":"2018-01-18T01:30:22.000Z"}]},"credits_used":5,"credits_remaining":null}},"token_with_iat_nbf_and_exp_multiple_date_claims":{"summary":"Token with iat, nbf and exp (multiple date claims)","value":{"tool":"jwt-decode","tool_version":"1.0.2","outputs":{"header":"{\n  \"alg\": \"HS384\",\n  \"typ\": \"JWT\"\n}","payload":"{\n  \"iss\": \"https://iotools.cloud/\",\n  \"sub\": \"42\",\n  \"name\": \"Ada Lovelace\",\n  \"iat\": 1700000000,\n  \"nbf\": 1700000000,\n  \"exp\": 1800000000\n}","signature":"c2lnbmF0dXJl","claims":[{"claim":"iat (Issued At)","time-utc":"2023-11-14T22:13:20.000Z"},{"claim":"nbf (Not Before)","time-utc":"2023-11-14T22:13:20.000Z"},{"claim":"exp (Expiration Time)","time-utc":"2027-01-15T08:00:00.000Z"}]},"credits_used":5,"credits_remaining":null}},"unsecured_token_with_a_utf_8_payload_and_empty_signature":{"summary":"Unsecured token with a UTF-8 payload and empty signature","value":{"tool":"jwt-decode","tool_version":"1.0.2","outputs":{"header":"{\n  \"alg\": \"none\",\n  \"typ\": \"JWT\"\n}","payload":"{\n  \"name\": \"José Muñoz 日本語\",\n  \"role\": \"admin\"\n}","signature":"","claims":[]},"credits_used":5,"credits_remaining":null}},"out_of_range_exp_still_decodes_the_rest_of_the_token":{"summary":"Out-of-range exp still decodes the rest of the token","value":{"tool":"jwt-decode","tool_version":"1.0.2","outputs":{"header":"{\n  \"alg\": \"HS256\",\n  \"typ\": \"JWT\"\n}","payload":"{\n  \"sub\": \"1\",\n  \"name\": \"Ada\",\n  \"exp\": 1700000000000000\n}","signature":"sig","claims":[{"claim":"exp (Expiration Time)","time-utc":"Invalid date (out of range)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"payload":{"type":"string","description":"Payload"},"signature":{"type":"string","description":"Signature (raw — not verified)"},"claims":{"type":"array","description":"Registered date claims","items":{"type":"object","properties":{"claim":{"type":"string","description":"Claim"},"time-utc":{"type":"string","description":"Time (UTC)"}}},"x-iotools-columns":["claim","time-utc"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jwt-expiry-checker":{"post":{"operationId":"run_jwt_expiry_checker","summary":"JWT Expiry Checker","tags":["Utilities"],"description":"Paste a JWT to decode its payload and check whether it is expired, not yet valid, or active — with the exp, nbf and iat claims converted from Unix time to human-readable ISO 8601 UTC. The token is decoded in your browser and never uploaded.\n\n[Try JWT Expiry Checker in your browser →](https://iotools.cloud/tool/jwt-expiry-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jwt":{"type":"string","description":"JWT Token"},"referenceTime":{"type":"string","description":"Reference Time (now)"}},"required":[]},"examples":{"valid_current_token":{"summary":"Valid / current token","value":{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNzA0MDYzNjAwLCJuYmYiOjE3MDQwNjM2MDAsImV4cCI6MTcwNDA3MDgwMH0.sigplaceholder","referenceTime":"1704067200"}},"expired_token":{"summary":"Expired token","value":{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI0MiIsImlhdCI6MTcwMDAwMDAwMCwiZXhwIjoxNzA0MDAwMDAwfQ.sigplaceholder","referenceTime":"1704067200"}},"not_yet_valid_token_nbf_in_the_future":{"summary":"Not-yet-valid token (nbf in the future)","value":{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3IiwiaWF0IjoxNzA0MDY3MjAwLCJuYmYiOjE3MDQxNTM2MDAsImV4cCI6MTcwNDI0MDAwMH0.sigplaceholder","referenceTime":"1704067200"}},"expired_token_whose_exp_is_a_json_string":{"summary":"Expired token whose exp is a JSON string","value":{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoiMTcwNDA2MzYwMCJ9.sig","referenceTime":"1704067200"}},"token_expiring_soon":{"summary":"Token expiring soon","value":{"jwt":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwiZXhwIjoxNzA0MDY3NTAwfQ.sig","referenceTime":"1704067200"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_current_token":{"summary":"Valid / current token","value":{"tool":"jwt-expiry-checker","tool_version":"1.0.2","outputs":{"status":"Valid — the token is active and expires in 1h (at 2024-01-01T01:00:00Z).","claims":[{"claim":"Issued At (iat)","raw-value":"1704063600","utc-iso-8601":"2023-12-31T23:00:00Z","note":"Issued 1h ago"},{"claim":"Not Before (nbf)","raw-value":"1704063600","utc-iso-8601":"2023-12-31T23:00:00Z","note":"Active since 1h ago"},{"claim":"Expiration (exp)","raw-value":"1704070800","utc-iso-8601":"2024-01-01T01:00:00Z","note":"Valid — expires in 1h"}]},"credits_used":5,"credits_remaining":null}},"expired_token":{"summary":"Expired token","value":{"tool":"jwt-expiry-checker","tool_version":"1.0.2","outputs":{"status":"Expired — the token expired 18h 40m ago (at 2023-12-31T05:20:00Z).","claims":[{"claim":"Issued At (iat)","raw-value":"1700000000","utc-iso-8601":"2023-11-14T22:13:20Z","note":"Issued 47d 1h ago"},{"claim":"Expiration (exp)","raw-value":"1704000000","utc-iso-8601":"2023-12-31T05:20:00Z","note":"Expired 18h 40m ago"}]},"credits_used":5,"credits_remaining":null}},"not_yet_valid_token_nbf_in_the_future":{"summary":"Not-yet-valid token (nbf in the future)","value":{"tool":"jwt-expiry-checker","tool_version":"1.0.2","outputs":{"status":"Not yet valid — the token becomes active in 1d (at 2024-01-02T00:00:00Z).","claims":[{"claim":"Issued At (iat)","raw-value":"1704067200","utc-iso-8601":"2024-01-01T00:00:00Z","note":"Issued 0s ago"},{"claim":"Not Before (nbf)","raw-value":"1704153600","utc-iso-8601":"2024-01-02T00:00:00Z","note":"Not active yet — starts in 1d"},{"claim":"Expiration (exp)","raw-value":"1704240000","utc-iso-8601":"2024-01-03T00:00:00Z","note":"Valid — expires in 2d"}]},"credits_used":5,"credits_remaining":null}},"expired_token_whose_exp_is_a_json_string":{"summary":"Expired token whose exp is a JSON string","value":{"tool":"jwt-expiry-checker","tool_version":"1.0.2","outputs":{"status":"Expired — the token expired 1h ago (at 2023-12-31T23:00:00Z).","claims":[{"claim":"Expiration (exp)","raw-value":"1704063600","utc-iso-8601":"2023-12-31T23:00:00Z","note":"Expired 1h ago"}]},"credits_used":5,"credits_remaining":null}},"token_expiring_soon":{"summary":"Token expiring soon","value":{"tool":"jwt-expiry-checker","tool_version":"1.0.2","outputs":{"status":"Expiring soon — the token expires in 5m (at 2024-01-01T00:05:00Z).","claims":[{"claim":"Expiration (exp)","raw-value":"1704067500","utc-iso-8601":"2024-01-01T00:05:00Z","note":"Valid — expires in 5m"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"claims":{"type":"array","description":"Time Claims","items":{"type":"object","properties":{"claim":{"type":"string","description":"Claim"},"raw-value":{"type":"string","description":"Raw Value"},"utc-iso-8601":{"type":"string","description":"UTC (ISO 8601)"},"note":{"type":"string","description":"Note"}}},"x-iotools-columns":["claim","raw-value","utc-iso-8601","note"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/jwt-verifier":{"post":{"operationId":"run_jwt_verifier","summary":"JWT Verifier","tags":["Utilities"],"description":"Verify a JSON Web Token (JWT) — cryptographically check its signature against an HMAC secret (HS256, HS384 or HS512), confirm it hasn't expired (exp) or isn't yet valid (nbf), and view the decoded header and payload once verified. This checks the signature; it doesn't just decode it. Entirely in your browser — nothing is uploaded.\n\n[Try JWT Verifier in your browser →](https://iotools.cloud/tool/jwt-verifier/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jwtToken":{"type":"string","description":"JWT to verify"},"secret":{"type":"string","description":"Secret (HMAC key)"},"referenceTime":{"type":"string","description":"Reference Time (now)"}},"required":[]},"examples":{"valid_signature_hs256_jwt_io_reference_token":{"summary":"Valid signature (HS256, jwt.io reference token)","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","secret":"your-256-bit-secret","referenceTime":""}},"signature_mismatch_wrong_secret":{"summary":"Signature mismatch (wrong secret)","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","secret":"wrong-secret","referenceTime":""}},"expired_token_exp_in_the_past":{"summary":"Expired token (exp in the past)","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxIiwibmFtZSI6IkFkYSIsImV4cCI6MTcwNDAwMDAwMH0.A3xaeS0j1amu5iwVYpOSLuquAP3oWWinukMt8IiKNwY","secret":"test-secret","referenceTime":"1704067200"}},"not_yet_valid_token_nbf_in_the_future":{"summary":"Not-yet-valid token (nbf in the future)","value":{"jwtToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3IiwibmJmIjoxNzA0MTUzNjAwLCJleHAiOjE3MDQyNDAwMDB9.u6bE9vQR6k5O20nFuz0vPbgFIGYVpCAMX-Vy3qdiVtA","secret":"test-secret","referenceTime":"1704067200"}},"malformed_jwt_wrong_segment_count":{"summary":"Malformed JWT (wrong segment count)","value":{"jwtToken":"not-a-jwt-token","secret":"","referenceTime":""}},"unsupported_algorithm_rs256_header":{"summary":"Unsupported algorithm (RS256 header)","value":{"jwtToken":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.fakesignature","secret":"any-secret","referenceTime":""}},"the_alg_none_unsigned_token_attack_is_rejected":{"summary":"The \"alg: none\" unsigned-token attack is rejected","value":{"jwtToken":"eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwiYWRtaW4iOnRydWV9.","secret":"any-secret","referenceTime":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_signature_hs256_jwt_io_reference_token":{"summary":"Valid signature (HS256, jwt.io reference token)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Valid — signature verified with HS256. The token is authentic and within its validity window.","header":"{\n  \"alg\": \"HS256\",\n  \"typ\": \"JWT\"\n}","payload":"{\n  \"sub\": \"1234567890\",\n  \"name\": \"John Doe\",\n  \"iat\": 1516239022\n}"},"credits_used":5,"credits_remaining":null}},"signature_mismatch_wrong_secret":{"summary":"Signature mismatch (wrong secret)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — signature verification failed. The token was not signed with this secret, or its header/payload was altered after signing.","header":"","payload":""},"credits_used":5,"credits_remaining":null}},"expired_token_exp_in_the_past":{"summary":"Expired token (exp in the past)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — token has expired: exp expired at 2023-12-31T05:20:00Z (reference time 2024-01-01T00:00:00Z).","header":"","payload":""},"credits_used":5,"credits_remaining":null}},"not_yet_valid_token_nbf_in_the_future":{"summary":"Not-yet-valid token (nbf in the future)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — token is not yet valid: nbf activates at 2024-01-02T00:00:00Z (reference time 2024-01-01T00:00:00Z).","header":"","payload":""},"credits_used":5,"credits_remaining":null}},"malformed_jwt_wrong_segment_count":{"summary":"Malformed JWT (wrong segment count)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — malformed JWT: A JWT must have 3 dot-separated segments (header.payload.signature); found 1.","header":"","payload":""},"credits_used":5,"credits_remaining":null}},"unsupported_algorithm_rs256_header":{"summary":"Unsupported algorithm (RS256 header)","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — unsupported algorithm \"RS256\" in the header. This verifier checks HMAC-signed tokens only (HS256, HS384, HS512) — the same algorithms the JWT Encoder can sign. Asymmetric algorithms (RS256, ES256, PS256, etc.) need the issuer's public key and can't be verified here; a token with alg: \"none\" is unsigned and cannot be verified at all.","header":"","payload":""},"credits_used":5,"credits_remaining":null}},"the_alg_none_unsigned_token_attack_is_rejected":{"summary":"The \"alg: none\" unsigned-token attack is rejected","value":{"tool":"jwt-verifier","tool_version":"1.0.2","outputs":{"verificationStatus":"Invalid — unsupported algorithm \"none\" in the header. This verifier checks HMAC-signed tokens only (HS256, HS384, HS512) — the same algorithms the JWT Encoder can sign. Asymmetric algorithms (RS256, ES256, PS256, etc.) need the issuer's public key and can't be verified here; a token with alg: \"none\" is unsigned and cannot be verified at all.","header":"","payload":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verificationStatus":{"type":"string","description":"Verification result"},"header":{"type":"string","description":"Header (shown once verified)"},"payload":{"type":"string","description":"Payload (shown once verified)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/keycode-info":{"post":{"operationId":"run_keycode_info","summary":"JavaScript Keycode Info","tags":["Utilities"],"description":"Look up the JavaScript keyCode, event.code, event.key value, keyboard location and category for any key — type a character, key name (Enter, ArrowUp, Shift), event.code, or a numeric keyCode. Runs entirely in your browser.\n\n[Try JavaScript Keycode Info in your browser →](https://iotools.cloud/tool/keycode-info/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":"Key or key code"}},"required":[]},"examples":{"letter_a":{"summary":"Letter A","value":{"query":"a"}},"key_code_13_enter":{"summary":"Key code 13 (Enter)","value":{"query":"13"}},"arrow_up":{"summary":"Arrow Up","value":{"query":"ArrowUp"}},"shift_left_right":{"summary":"Shift (left + right)","value":{"query":"shift"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"letter_a":{"summary":"Letter A","value":{"tool":"keycode-info","tool_version":"1.0.2","outputs":{"keyInfo":[{"key-event-key":"a","description":"A key","key-code":"65","code-event-code":"KeyA","location":"Standard","category":"Letter"}]},"credits_used":5,"credits_remaining":null}},"key_code_13_enter":{"summary":"Key code 13 (Enter)","value":{"tool":"keycode-info","tool_version":"1.0.2","outputs":{"keyInfo":[{"key-event-key":"Enter","description":"Enter / Return","key-code":"13","code-event-code":"Enter","location":"Standard","category":"Whitespace"},{"key-event-key":"Enter","description":"Numpad Enter","key-code":"13","code-event-code":"NumpadEnter","location":"Numpad","category":"Numpad"}]},"credits_used":5,"credits_remaining":null}},"arrow_up":{"summary":"Arrow Up","value":{"tool":"keycode-info","tool_version":"1.0.2","outputs":{"keyInfo":[{"key-event-key":"ArrowUp","description":"Up arrow","key-code":"38","code-event-code":"ArrowUp","location":"Standard","category":"Navigation"}]},"credits_used":5,"credits_remaining":null}},"shift_left_right":{"summary":"Shift (left + right)","value":{"tool":"keycode-info","tool_version":"1.0.2","outputs":{"keyInfo":[{"key-event-key":"Shift","description":"Left Shift","key-code":"16","code-event-code":"ShiftLeft","location":"Left","category":"Modifier"},{"key-event-key":"Shift","description":"Right Shift","key-code":"16","code-event-code":"ShiftRight","location":"Right","category":"Modifier"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"keyInfo":{"type":"array","items":{"type":"object","properties":{"key-event-key":{"type":"string","description":"Key (event.key)"},"description":{"type":"string","description":"Description"},"key-code":{"type":"string","description":"Key Code"},"code-event-code":{"type":"string","description":"Code (event.code)"},"location":{"type":"string","description":"Location"},"category":{"type":"string","description":"Category"}}},"x-iotools-columns":["key-event-key","description","key-code","code-event-code","location","category"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/kubernetes-yaml-validator":{"post":{"operationId":"run_kubernetes_yaml_validator","summary":"Kubernetes YAML Validator","tags":["Utilities"],"description":"Check Kubernetes manifests before they reach a cluster: YAML syntax errors with line and column, plus API-level problems kubectl would reject — removed apiVersions, kind/apiVersion mismatches, invalid RFC 1123 names, selectors that don't match their pod template labels, unquoted ConfigMap values, missing pathType on an Ingress — and production warnings like :latest images and missing resource limits. Multi-document files supported. Runs entirely in your browser; nothing is uploaded.\n\n[Try Kubernetes YAML Validator in your browser →](https://iotools.cloud/tool/kubernetes-yaml-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputYaml":{"type":"string","description":"Kubernetes YAML"},"profile":{"enum":["balanced","basic","strict"],"description":"Validation profile"}},"required":[]},"examples":{"deployment_with_a_removed_apiversion_and_a_mismatched_selector":{"summary":"Deployment with a removed apiVersion and a mismatched selector","value":{"inputYaml":"apiVersion: extensions/v1beta1\nkind: Deployment\nmetadata:\n  name: My_App\nspec:\n  selector:\n    matchLabels:\n      app: web\n  template:\n    metadata:\n      labels:\n        app: frontend\n    spec:\n      containers:\n        - image: nginx\n","profile":"balanced"}},"clean_deployment_balanced_profile":{"summary":"Clean Deployment (balanced profile)","value":{"inputYaml":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web\n  namespace: shop\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: web\n  template:\n    metadata:\n      labels:\n        app: web\n    spec:\n      containers:\n        - name: web\n          image: nginx:1.27.4\n          ports:\n            - containerPort: 8080\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 8080\n          resources:\n            requests:\n              cpu: 100m\n              memory: 128Mi\n            limits:\n              cpu: 500m\n              memory: 256Mi\n","profile":"balanced"}},"clean_deployment_under_the_strict_production_profile":{"summary":"Clean Deployment under the strict production profile","value":{"inputYaml":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web\n  namespace: shop\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: web\n  template:\n    metadata:\n      labels:\n        app: web\n    spec:\n      containers:\n        - name: web\n          image: nginx:1.27.4\n          ports:\n            - containerPort: 8080\n          readinessProbe:\n            httpGet:\n              path: /healthz\n              port: 8080\n          resources:\n            requests:\n              cpu: 100m\n              memory: 128Mi\n            limits:\n              cpu: 500m\n              memory: 256Mi\n","profile":"strict"}},"multi_document_unquoted_configmap_value_bad_service_type":{"summary":"Multi-document: unquoted ConfigMap value + bad Service type","value":{"inputYaml":"apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: app-config\n  namespace: shop\ndata:\n  PORT: 8080\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: web\n  namespace: shop\nspec:\n  type: Clusterip\n  selector:\n    app: web\n  ports:\n    - port: 80\n      targetPort: 8080\n","profile":"basic"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"deployment_with_a_removed_apiversion_and_a_mismatched_selector":{"summary":"Deployment with a removed apiVersion and a mismatched selector","value":{"tool":"kubernetes-yaml-validator","tool_version":"1.0.2","outputs":{"status":"Invalid — 4 blocking errors found.\n1 document · 1 checked · 4 errors · 2 warnings\nResources: Deployment/My_App","findings":[{"severity":"Error","resource":"Deployment/My_App","path":"metadata.name","message":"\"My_App\" is not a valid RFC 1123 name — use lowercase letters, digits, \"-\" and \".\" only, starting and ending with an alphanumeric."},{"severity":"Error","resource":"Deployment/My_App","path":"apiVersion","message":"\"extensions/v1beta1\" has been removed from the Kubernetes API — use apps/v1 (workloads) or networking.k8s.io/v1 (Ingress, NetworkPolicy)."},{"severity":"Error","resource":"Deployment/My_App","path":"spec.selector.matchLabels","message":"Selector label app=\"web\" is not present on spec.template.metadata.labels — the API server rejects this manifest."},{"severity":"Error","resource":"Deployment/My_App","path":"spec.template.spec.containers[0].name","message":"Container has no name."},{"severity":"Warning","resource":"Deployment/My_App","path":"spec.template.spec.containers[0].image","message":"\"nginx\" has no tag — it resolves to :latest, so the running version is whatever the registry served that day. Pin a tag or a digest."},{"severity":"Warning","resource":"Deployment/My_App","path":"spec.template.spec.containers[0].resources","message":"No resource requests or limits — the pod lands in the BestEffort QoS class and is first to be evicted under pressure."}]},"credits_used":5,"credits_remaining":null}},"clean_deployment_balanced_profile":{"summary":"Clean Deployment (balanced profile)","value":{"tool":"kubernetes-yaml-validator","tool_version":"1.0.2","outputs":{"status":"Valid — no issues found in 1 document.\n1 document · 1 checked · 0 errors · 0 warnings\nResources: Deployment/web (namespace shop)","findings":[]},"credits_used":5,"credits_remaining":null}},"clean_deployment_under_the_strict_production_profile":{"summary":"Clean Deployment under the strict production profile","value":{"tool":"kubernetes-yaml-validator","tool_version":"1.0.2","outputs":{"status":"Valid — no blocking errors in 1 document.\n1 document · 1 checked · 0 errors · 6 warnings\nResources: Deployment/web (namespace shop)","findings":[{"severity":"Warning","resource":"Deployment/web","path":"metadata.labels","message":"The recommended label \"app.kubernetes.io/name\" is missing — tooling uses it to group a resource with its app."},{"severity":"Warning","resource":"Deployment/web","path":"spec.template.spec.containers[0].livenessProbe","message":"No liveness probe — a wedged process is never restarted."},{"severity":"Warning","resource":"Deployment/web","path":"spec.template.spec.containers[0].securityContext.runAsNonRoot","message":"runAsNonRoot is not set to true."},{"severity":"Warning","resource":"Deployment/web","path":"spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation","message":"allowPrivilegeEscalation is not set to false."},{"severity":"Warning","resource":"Deployment/web","path":"spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem","message":"Root filesystem is writable."},{"severity":"Warning","resource":"Deployment/web","path":"spec.template.spec.serviceAccountName","message":"No service account named — the namespace default is used, which usually has more permissions than the workload needs."}]},"credits_used":5,"credits_remaining":null}},"multi_document_unquoted_configmap_value_bad_service_type":{"summary":"Multi-document: unquoted ConfigMap value + bad Service type","value":{"tool":"kubernetes-yaml-validator","tool_version":"1.0.2","outputs":{"status":"Invalid — 2 blocking errors found.\n2 documents · 2 checked · 2 errors · 0 warnings\nResources: ConfigMap/app-config (namespace shop), Service/web (namespace shop)","findings":[{"severity":"Error","resource":"ConfigMap/app-config","path":"data.PORT","message":"ConfigMap values must be strings — 8080 is a number. Quote it."},{"severity":"Error","resource":"Service/web","path":"spec.type","message":"\"Clusterip\" is not a Service type — use ClusterIP, NodePort, LoadBalancer, ExternalName."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"status":{"type":"string","description":"Result"},"findings":{"type":"array","description":"Findings","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"resource":{"type":"string","description":"Resource"},"path":{"type":"string","description":"Path"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","resource","path","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-pointer-evaluator":{"post":{"operationId":"run_json_pointer_evaluator","summary":"JSON Pointer Evaluator","tags":["Utilities"],"description":"Evaluate a JSON Pointer (RFC 6901) against a JSON document and see the exact value it resolves to — useful for testing pointer expressions before wiring them into code.\n\n[Try JSON Pointer Evaluator in your browser →](https://iotools.cloud/tool/json-pointer-evaluator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON document"},"pointer":{"type":"string","description":"JSON Pointer"}},"required":[]},"examples":{"resolve_a_nested_array_element":{"summary":"Resolve a nested array element","value":{"json":"{\"user\":{\"id\":1,\"roles\":[\"admin\",\"editor\"]},\"active\":true}","pointer":"/user/roles/0"}},"resolve_the_whole_document":{"summary":"Resolve the whole document","value":{"json":"{\"user\":{\"id\":1,\"roles\":[\"admin\",\"editor\"]},\"active\":true}","pointer":""}},"missing_key":{"summary":"Missing key","value":{"json":"{\"user\":{\"id\":1}}","pointer":"/user/name"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"resolve_a_nested_array_element":{"summary":"Resolve a nested array element","value":{"tool":"json-pointer-evaluator","tool_version":"1.0.2","outputs":{"result":"\"admin\""},"credits_used":5,"credits_remaining":null}},"resolve_the_whole_document":{"summary":"Resolve the whole document","value":{"tool":"json-pointer-evaluator","tool_version":"1.0.2","outputs":{"result":"{\n  \"user\": {\n    \"id\": 1,\n    \"roles\": [\n      \"admin\",\n      \"editor\"\n    ]\n  },\n  \"active\": true\n}"},"credits_used":5,"credits_remaining":null}},"missing_key":{"summary":"Missing key","value":{"tool":"json-pointer-evaluator","tool_version":"1.0.2","outputs":{"result":"Error: Key 'name' does not exist at this path."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Resolved value"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/line-counter":{"post":{"operationId":"run_line_counter","summary":"Line Counter","tags":["Utilities"],"description":"Count lines in pasted or uploaded text — total lines, blank lines, non-blank lines, words and characters. Handles mixed CRLF/LF/CR line endings correctly, updated live as you type.\n\n[Try Line Counter in your browser →](https://iotools.cloud/tool/line-counter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Your text"}},"required":[]},"examples":{"text_with_blank_lines":{"summary":"Text with blank lines","value":{"inputText":"This is line 1\nThis is line 2\n\nThis is line 4 after a blank line\n\n\nThis is line 7 after two blank lines\nThis is line 8"}},"mixed_line_endings_crlf_lf_cr":{"summary":"Mixed line endings (CRLF + LF + CR)","value":{"inputText":"Line 1\r\nLine 2\nLine 3\r\n\r\nLine 5\rLine 6"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"text_with_blank_lines":{"summary":"Text with blank lines","value":{"tool":"line-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Total Lines","value":"8"},{"metric":"Non-blank Lines","value":"5"},{"metric":"Blank Lines","value":"3"},{"metric":"Words","value":"28"},{"metric":"Characters","value":"118"}]},"credits_used":5,"credits_remaining":null}},"mixed_line_endings_crlf_lf_cr":{"summary":"Mixed line endings (CRLF + LF + CR)","value":{"tool":"line-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Total Lines","value":"6"},{"metric":"Non-blank Lines","value":"5"},{"metric":"Blank Lines","value":"1"},{"metric":"Words","value":"10"},{"metric":"Characters","value":"38"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/list-set-operations":{"post":{"operationId":"run_list_set_operations","summary":"List Set Operations","tags":["Utilities"],"description":"Compare two text lists and compute their union, intersection, difference or symmetric difference — one item per line, with an optional case-insensitive mode.\n\n[Try List Set Operations in your browser →](https://iotools.cloud/tool/list-set-operations/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"listA":{"type":"string","description":"List A"},"listB":{"type":"string","description":"List B"},"operation":{"enum":["union","intersection","difference-ab","difference-ba","symmetric"],"description":"Operation"},"caseSensitive":{"type":"boolean","description":"Case-sensitive comparison"}},"required":[]},"examples":{"union":{"summary":"Union","value":{"listA":"apple\nbanana\ncherry\ndate","listB":"banana\ncherry\nelderberry","operation":"union","caseSensitive":"true"}},"intersection":{"summary":"Intersection","value":{"listA":"apple\nbanana\ncherry\ndate","listB":"banana\ncherry\nelderberry","operation":"intersection","caseSensitive":"true"}},"difference_a_b":{"summary":"Difference (A − B)","value":{"listA":"apple\nbanana\ncherry\ndate","listB":"banana\ncherry\nelderberry","operation":"difference-ab","caseSensitive":"true"}},"symmetric_difference":{"summary":"Symmetric difference","value":{"listA":"apple\nbanana\ncherry\ndate","listB":"banana\ncherry\nelderberry","operation":"symmetric","caseSensitive":"true"}},"case_insensitive_intersection":{"summary":"Case-insensitive intersection","value":{"listA":"Apple\nBanana\nCherry","listB":"banana\ncherry\nELDERBERRY","operation":"intersection","caseSensitive":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"union":{"summary":"Union","value":{"tool":"list-set-operations","tool_version":"1.0.2","outputs":{"output":"apple\nbanana\ncherry\ndate\nelderberry","count":"5 items"},"credits_used":5,"credits_remaining":null}},"intersection":{"summary":"Intersection","value":{"tool":"list-set-operations","tool_version":"1.0.2","outputs":{"output":"banana\ncherry","count":"2 items"},"credits_used":5,"credits_remaining":null}},"difference_a_b":{"summary":"Difference (A − B)","value":{"tool":"list-set-operations","tool_version":"1.0.2","outputs":{"output":"apple\ndate","count":"2 items"},"credits_used":5,"credits_remaining":null}},"symmetric_difference":{"summary":"Symmetric difference","value":{"tool":"list-set-operations","tool_version":"1.0.2","outputs":{"output":"apple\ndate\nelderberry","count":"3 items"},"credits_used":5,"credits_remaining":null}},"case_insensitive_intersection":{"summary":"Case-insensitive intersection","value":{"tool":"list-set-operations","tool_version":"1.0.2","outputs":{"output":"Banana\nCherry","count":"2 items"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"count":{"type":"string","description":"Total"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/llm-token-count-estimator":{"post":{"operationId":"run_llm_token_count_estimator","summary":"LLM Token Count Estimator","tags":["Utilities"],"description":"Estimate how many tokens your text will use across GPT-4o, Claude, Gemini and more, with a context-window gauge and side-by-side API cost estimates. Approximate (chars-per-token heuristic), not an exact tokenizer.\n\n[Try LLM Token Count Estimator in your browser →](https://iotools.cloud/tool/llm-token-count-estimator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"model":{"enum":["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-4","gpt-3.5-turbo","o1","o1-mini","claude-3-5-sonnet","claude-3-opus","claude-3-haiku","gemini-1-5-pro","gemini-1-5-flash"],"description":"Target model"},"outputTokens":{"type":"number","description":"Expected output tokens","minimum":0,"maximum":200000}},"required":[]},"examples":{"short_greeting_gpt_4o":{"summary":"Short greeting (GPT-4o)","value":{"inputText":"Hello, world!","model":"gpt-4o","outputTokens":"500"}},"prose_paragraph_claude_3_5_sonnet":{"summary":"Prose paragraph (Claude 3.5 Sonnet)","value":{"inputText":"Large language models split text into tokens. A token is roughly four characters of English.","model":"claude-3-5-sonnet","outputTokens":"1000"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"short_greeting_gpt_4o":{"summary":"Short greeting (GPT-4o)","value":{"tool":"llm-token-count-estimator","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Est. tokens","value":"4"},{"metric":"Words","value":"2"},{"metric":"Characters","value":"13"},{"metric":"Characters (no spaces)","value":"12"},{"metric":"Tokens / word","value":"2.00"},{"metric":"Chars / token","value":"3.25"}],"contextHtml":"<div style=\"background:#f8f9fa;border-radius:8px;padding:16px\"><div style=\"display:flex;justify-content:space-between;font-size:0.85rem;margin-bottom:8px\"><span><strong>GPT-4o</strong> context window</span><span><strong style=\"color:#464aff\"><0.01%</strong> &middot; 4 / 128,000 tokens</span></div><div style=\"height:14px;background:#e9ecef;border-radius:7px;overflow:hidden\"><div style=\"height:100%;background:#464aff;width:0.003%;border-radius:7px\"></div></div><div style=\"margin-top:8px;font-size:0.78rem;color:#6c757d\">Remaining: 127,996 tokens</div></div>","costTable":[{"model":"→ GPT-4o","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"GPT-4o mini","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"GPT-4 Turbo","input-tokens":"4","input-cost":"<$0.01","output-cost":"$0.0150","total":"$0.0150"},{"model":"GPT-4","input-tokens":"4","input-cost":"<$0.01","output-cost":"$0.0300","total":"$0.0301"},{"model":"GPT-3.5 Turbo","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"o1","input-tokens":"4","input-cost":"<$0.01","output-cost":"$0.0300","total":"$0.0301"},{"model":"o1-mini","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Claude 3.5 Sonnet","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Claude 3 Opus","input-tokens":"4","input-cost":"<$0.01","output-cost":"$0.0375","total":"$0.0376"},{"model":"Claude 3 Haiku","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Gemini 1.5 Pro","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Gemini 1.5 Flash","input-tokens":"4","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"}],"vizHtml":"<div style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:0.88rem;line-height:1.8;white-space:pre-wrap;word-break:break-word\"><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\">Hell</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\">o</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\">,</span><span style=\"background:rgba(16,185,129,0.18);border-radius:3px;padding:1px 0\"> worl</span><span style=\"background:rgba(245,158,11,0.18);border-radius:3px;padding:1px 0\">d</span><span style=\"background:rgba(236,72,153,0.18);border-radius:3px;padding:1px 0\">!</span></div><div style=\"font-size:0.78rem;color:#6c757d;margin-top:8px\">Colors alternate per token. Counts are heuristic estimates, not exact tiktoken output.</div>"},"credits_used":5,"credits_remaining":null}},"prose_paragraph_claude_3_5_sonnet":{"summary":"Prose paragraph (Claude 3.5 Sonnet)","value":{"tool":"llm-token-count-estimator","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Est. tokens","value":"26"},{"metric":"Words","value":"15"},{"metric":"Characters","value":"92"},{"metric":"Characters (no spaces)","value":"78"},{"metric":"Tokens / word","value":"1.73"},{"metric":"Chars / token","value":"3.54"}],"contextHtml":"<div style=\"background:#f8f9fa;border-radius:8px;padding:16px\"><div style=\"display:flex;justify-content:space-between;font-size:0.85rem;margin-bottom:8px\"><span><strong>Claude 3.5 Sonnet</strong> context window</span><span><strong style=\"color:#464aff\">0.01%</strong> &middot; 26 / 200,000 tokens</span></div><div style=\"height:14px;background:#e9ecef;border-radius:7px;overflow:hidden\"><div style=\"height:100%;background:#464aff;width:0.013%;border-radius:7px\"></div></div><div style=\"margin-top:8px;font-size:0.78rem;color:#6c757d\">Remaining: 199,974 tokens</div></div>","costTable":[{"model":"GPT-4o","input-tokens":"23","input-cost":"<$0.01","output-cost":"$0.0100","total":"$0.0101"},{"model":"GPT-4o mini","input-tokens":"23","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"GPT-4 Turbo","input-tokens":"24","input-cost":"<$0.01","output-cost":"$0.0300","total":"$0.0302"},{"model":"GPT-4","input-tokens":"24","input-cost":"<$0.01","output-cost":"$0.0600","total":"$0.0607"},{"model":"GPT-3.5 Turbo","input-tokens":"24","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"o1","input-tokens":"23","input-cost":"<$0.01","output-cost":"$0.0600","total":"$0.0603"},{"model":"o1-mini","input-tokens":"23","input-cost":"<$0.01","output-cost":"$0.0120","total":"$0.0121"},{"model":"→ Claude 3.5 Sonnet","input-tokens":"26","input-cost":"<$0.01","output-cost":"$0.0150","total":"$0.0151"},{"model":"Claude 3 Opus","input-tokens":"26","input-cost":"<$0.01","output-cost":"$0.0750","total":"$0.0754"},{"model":"Claude 3 Haiku","input-tokens":"26","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Gemini 1.5 Pro","input-tokens":"23","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"},{"model":"Gemini 1.5 Flash","input-tokens":"23","input-cost":"<$0.01","output-cost":"<$0.01","total":"<$0.01"}],"vizHtml":"<div style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:0.88rem;line-height:1.8;white-space:pre-wrap;word-break:break-word\"><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\">Larg</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\">e</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\"> lang</span><span style=\"background:rgba(16,185,129,0.18);border-radius:3px;padding:1px 0\">uage</span><span style=\"background:rgba(245,158,11,0.18);border-radius:3px;padding:1px 0\"> mode</span><span style=\"background:rgba(236,72,153,0.18);border-radius:3px;padding:1px 0\">ls</span><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\"> spli</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\">t</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\"> text</span><span style=\"background:rgba(16,185,129,0.18);border-radius:3px;padding:1px 0\"> into</span><span style=\"background:rgba(245,158,11,0.18);border-radius:3px;padding:1px 0\"> toke</span><span style=\"background:rgba(236,72,153,0.18);border-radius:3px;padding:1px 0\">ns</span><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\">.</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\"> A</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\"> toke</span><span style=\"background:rgba(16,185,129,0.18);border-radius:3px;padding:1px 0\">n</span><span style=\"background:rgba(245,158,11,0.18);border-radius:3px;padding:1px 0\"> is</span><span style=\"background:rgba(236,72,153,0.18);border-radius:3px;padding:1px 0\"> roug</span><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\">hly</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\"> four</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\"> char</span><span style=\"background:rgba(16,185,129,0.18);border-radius:3px;padding:1px 0\">acte</span><span style=\"background:rgba(245,158,11,0.18);border-radius:3px;padding:1px 0\">rs</span><span style=\"background:rgba(236,72,153,0.18);border-radius:3px;padding:1px 0\"> of</span><span style=\"background:rgba(70,74,255,0.18);border-radius:3px;padding:1px 0\"> Engl</span><span style=\"background:rgba(139,92,246,0.18);border-radius:3px;padding:1px 0\">ish</span><span style=\"background:rgba(14,165,233,0.18);border-radius:3px;padding:1px 0\">.</span></div><div style=\"font-size:0.78rem;color:#6c757d;margin-top:8px\">Colors alternate per token. Counts are heuristic estimates, not exact tiktoken output.</div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"contextHtml":{"type":"string","description":"Context window (HTML)"},"costTable":{"type":"array","items":{"type":"object","properties":{"model":{"type":"string","description":"Model"},"input-tokens":{"type":"string","description":"Input tokens"},"input-cost":{"type":"string","description":"Input cost"},"output-cost":{"type":"string","description":"Output cost"},"total":{"type":"string","description":"Total"}}},"x-iotools-columns":["model","input-tokens","input-cost","output-cost","total"]},"vizHtml":{"type":"string","description":"Visualization (HTML)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/luhn-algorithm-validator":{"post":{"operationId":"run_luhn_algorithm_validator","summary":"Luhn Algorithm Validator","tags":["Utilities"],"description":"Validate a number against the Luhn (mod 10) checksum — credit cards, IMEIs, SINs and any Luhn-protected identifier — or compute the correct check digit for a number that is missing one. Spaces, dashes and dots are ignored.\n\n[Try Luhn Algorithm Validator in your browser →](https://iotools.cloud/tool/luhn-algorithm-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["validate","complete"],"description":"Mode"},"number":{"type":"string","description":"Number"}},"required":[]},"examples":{"valid_visa_number":{"summary":"Valid Visa number","value":{"mode":"validate","number":"4539 1488 0343 6467"}},"another_valid_visa_number":{"summary":"Another valid Visa number","value":{"mode":"validate","number":"4532015112830366"}},"invalid_number_shows_the_fix":{"summary":"Invalid number (shows the fix)","value":{"mode":"validate","number":"1234567890123456"}},"compute_the_missing_check_digit":{"summary":"Compute the missing check digit","value":{"mode":"complete","number":"453914880343646"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_visa_number":{"summary":"Valid Visa number","value":{"tool":"luhn-algorithm-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid Luhn number"},{"property":"Valid","value":"Yes"},{"property":"Detected Format","value":"Visa"},{"property":"Check Digit","value":"7"},{"property":"Digit Count","value":"16"}]},"credits_used":5,"credits_remaining":null}},"another_valid_visa_number":{"summary":"Another valid Visa number","value":{"tool":"luhn-algorithm-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid Luhn number"},{"property":"Valid","value":"Yes"},{"property":"Detected Format","value":"Visa"},{"property":"Check Digit","value":"6"},{"property":"Digit Count","value":"16"}]},"credits_used":5,"credits_remaining":null}},"invalid_number_shows_the_fix":{"summary":"Invalid number (shows the fix)","value":{"tool":"luhn-algorithm-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid Luhn number — check digit does not match"},{"property":"Valid","value":"No"},{"property":"Detected Format","value":"Unknown"},{"property":"Check Digit","value":"6"},{"property":"Digit Count","value":"16"},{"property":"Correct Check Digit","value":"2"},{"property":"Corrected Number","value":"1234567890123452"}]},"credits_used":5,"credits_remaining":null}},"compute_the_missing_check_digit":{"summary":"Compute the missing check digit","value":{"tool":"luhn-algorithm-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Check digit computed"},{"property":"Check Digit","value":"7"},{"property":"Complete Number","value":"4539148803436467"},{"property":"Detected Format","value":"Visa"},{"property":"Digit Count","value":"16"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/lz4-compression":{"post":{"operationId":"run_lz4_compression","summary":"LZ4 Compression Tool","tags":["Utilities"],"description":"Compress or decompress data with the fast LZ4 algorithm, right in your browser — from a file, pasted text, or Base64. Get the Base64 result plus size and ratio stats.\n\n[Try LZ4 Compression Tool in your browser →](https://iotools.cloud/tool/lz4-compression/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["compress","decompress"],"description":"Mode"},"file":{"type":"string","contentEncoding":"base64","description":"Upload a file"},"inputText":{"type":"string","description":"Input text"}},"required":[]},"examples":{"compress_text":{"summary":"Compress text","value":{"mode":"compress","inputText":"The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. "}},"decompress_base64_lz4":{"summary":"Decompress Base64 LZ4","value":{"mode":"decompress","inputText":"BCJNGEBw3xcAAIBIZWxsbywgTFo0IGNvbXByZXNzaW9uIQAAAAA="}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"compress_text":{"summary":"Compress text","value":{"tool":"lz4-compression","tool_version":"1.0.2","outputs":{"stats":[{"statistic":"Original size","value":"360 B"},{"statistic":"Compressed size","value":"72 B"},{"statistic":"Compression ratio","value":"5.00:1 (80.0% smaller)"},{"statistic":"Mode","value":"LZ4 (Fast)"}],"output":"BCJNGEBw3zkAAAD/HlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIC0A/yRQZG9nLiAAAAAA"},"credits_used":5,"credits_remaining":null}},"decompress_base64_lz4":{"summary":"Decompress Base64 LZ4","value":{"tool":"lz4-compression","tool_version":"1.0.2","outputs":{"stats":[{"statistic":"Compressed size","value":"38 B"},{"statistic":"Decompressed size","value":"23 B"},{"statistic":"Ratio","value":"0.61:1"}],"output":"Hello, LZ4 compression!"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","description":"Statistics","items":{"type":"object","properties":{"statistic":{"type":"string","description":"Statistic"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["statistic","value"]},"output":{"type":"string","description":"Output"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-link-image-extractor":{"post":{"operationId":"run_markdown_link_image_extractor","summary":"Markdown Link & Image Extractor","tags":["Utilities"],"description":"Extract every link and image from Markdown — inline, reference-style and autolinks — as a filterable table (also CSV) or JSON. Classifies each URL as external or internal, resolves reference definitions, and optionally deduplicates by URL.\n\n[Try Markdown Link & Image Extractor in your browser →](https://iotools.cloud/tool/markdown-link-image-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdownInput":{"type":"string","description":"Markdown Input"},"extractType":{"enum":["all","links","images"],"description":"Extract"},"filterLocation":{"enum":["all","external","internal"],"description":"Filter by location"},"resolveReferences":{"type":"boolean","description":"Resolve reference-style links to their definitions"},"deduplicate":{"type":"boolean","description":"Deduplicate by URL"}},"required":[]},"examples":{"sample_document_all_links_images":{"summary":"Sample document (all links & images)","value":{"markdownInput":"# Sample Document\n\nVisit [Google](https://www.google.com \"Google Homepage\") for search.\nSee the [docs](/docs/getting-started) and the [API reference][api].\n\nHere is an inline image:\n![Architecture diagram](/images/architecture.png \"System overview\")\n\nAnd a remote one: ![logo](https://example.com/logo.svg)\n\nReference-style: [GitHub repo][gh], and a bare anchor link [back to top](#top).\nReference image: ![hero][hero-img]\n\nContact us at [support](mailto:hello@example.com) or call [+1 555](tel:+15550100).\n\n[api]: https://api.example.com \"API docs\"\n[gh]: https://github.com/example/repo\n[hero-img]: /images/hero.jpg \"Hero banner\"","extractType":"all","filterLocation":"all","resolveReferences":"true","deduplicate":""}},"external_links_only_deduplicated":{"summary":"External links only, deduplicated","value":{"markdownInput":"# Sample Document\n\nVisit [Google](https://www.google.com \"Google Homepage\") for search.\nSee the [docs](/docs/getting-started) and the [API reference][api].\n\nHere is an inline image:\n![Architecture diagram](/images/architecture.png \"System overview\")\n\nAnd a remote one: ![logo](https://example.com/logo.svg)\n\nReference-style: [GitHub repo][gh], and a bare anchor link [back to top](#top).\nReference image: ![hero][hero-img]\n\nContact us at [support](mailto:hello@example.com) or call [+1 555](tel:+15550100).\n\n[api]: https://api.example.com \"API docs\"\n[gh]: https://github.com/example/repo\n[hero-img]: /images/hero.jpg \"Hero banner\"","extractType":"links","filterLocation":"external","resolveReferences":"true","deduplicate":"true"}},"images_only":{"summary":"Images only","value":{"markdownInput":"# Sample Document\n\nVisit [Google](https://www.google.com \"Google Homepage\") for search.\nSee the [docs](/docs/getting-started) and the [API reference][api].\n\nHere is an inline image:\n![Architecture diagram](/images/architecture.png \"System overview\")\n\nAnd a remote one: ![logo](https://example.com/logo.svg)\n\nReference-style: [GitHub repo][gh], and a bare anchor link [back to top](#top).\nReference image: ![hero][hero-img]\n\nContact us at [support](mailto:hello@example.com) or call [+1 555](tel:+15550100).\n\n[api]: https://api.example.com \"API docs\"\n[gh]: https://github.com/example/repo\n[hero-img]: /images/hero.jpg \"Hero banner\"","extractType":"images","filterLocation":"all","resolveReferences":"true","deduplicate":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_document_all_links_images":{"summary":"Sample document (all links & images)","value":{"tool":"markdown-link-image-extractor","tool_version":"1.0.2","outputs":{"extractorStatsHtml":"<span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Shown: <span style=\"color:#1f2937\">10</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Links: <span style=\"color:#1f2937\">7</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Images: <span style=\"color:#1f2937\">3</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">External: <span style=\"color:#1f2937\">6</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Internal: <span style=\"color:#1f2937\">4</span></span>","extractorTable":[{"type":"link","style":"inline","text-alt":"Google","url":"https://www.google.com","title":"Google Homepage","location":"external","line":"3"},{"type":"link","style":"inline","text-alt":"docs","url":"/docs/getting-started","title":"","location":"relative","line":"4"},{"type":"link","style":"reference","text-alt":"API reference","url":"https://api.example.com","title":"API docs","location":"external","line":"4"},{"type":"image","style":"inline","text-alt":"Architecture diagram","url":"/images/architecture.png","title":"System overview","location":"relative","line":"7"},{"type":"image","style":"inline","text-alt":"logo","url":"https://example.com/logo.svg","title":"","location":"external","line":"9"},{"type":"link","style":"inline","text-alt":"back to top","url":"#top","title":"","location":"anchor","line":"11"},{"type":"link","style":"reference","text-alt":"GitHub repo","url":"https://github.com/example/repo","title":"","location":"external","line":"11"},{"type":"image","style":"reference","text-alt":"hero","url":"/images/hero.jpg","title":"Hero banner","location":"relative","line":"12"},{"type":"link","style":"inline","text-alt":"support","url":"mailto:hello@example.com","title":"","location":"external","line":"14"},{"type":"link","style":"inline","text-alt":"+1 555","url":"tel:+15550100","title":"","location":"external","line":"14"}],"extractorJson":"[\n  {\n    \"index\": 1,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"Google\",\n    \"url\": \"https://www.google.com\",\n    \"title\": \"Google Homepage\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 3\n  },\n  {\n    \"index\": 2,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"docs\",\n    \"url\": \"/docs/getting-started\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"relative\",\n    \"line\": 4\n  },\n  {\n    \"index\": 3,\n    \"type\": \"link\",\n    \"style\": \"reference\",\n    \"text\": \"API reference\",\n    \"url\": \"https://api.example.com\",\n    \"title\": \"API docs\",\n    \"refId\": \"api\",\n    \"location\": \"external\",\n    \"line\": 4\n  },\n  {\n    \"index\": 4,\n    \"type\": \"image\",\n    \"style\": \"inline\",\n    \"text\": \"Architecture diagram\",\n    \"url\": \"/images/architecture.png\",\n    \"title\": \"System overview\",\n    \"refId\": \"\",\n    \"location\": \"relative\",\n    \"line\": 7\n  },\n  {\n    \"index\": 5,\n    \"type\": \"image\",\n    \"style\": \"inline\",\n    \"text\": \"logo\",\n    \"url\": \"https://example.com/logo.svg\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 9\n  },\n  {\n    \"index\": 6,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"back to top\",\n    \"url\": \"#top\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"anchor\",\n    \"line\": 11\n  },\n  {\n    \"index\": 7,\n    \"type\": \"link\",\n    \"style\": \"reference\",\n    \"text\": \"GitHub repo\",\n    \"url\": \"https://github.com/example/repo\",\n    \"title\": \"\",\n    \"refId\": \"gh\",\n    \"location\": \"external\",\n    \"line\": 11\n  },\n  {\n    \"index\": 8,\n    \"type\": \"image\",\n    \"style\": \"reference\",\n    \"text\": \"hero\",\n    \"url\": \"/images/hero.jpg\",\n    \"title\": \"Hero banner\",\n    \"refId\": \"hero-img\",\n    \"location\": \"relative\",\n    \"line\": 12\n  },\n  {\n    \"index\": 9,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"support\",\n    \"url\": \"mailto:hello@example.com\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 14\n  },\n  {\n    \"index\": 10,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"+1 555\",\n    \"url\": \"tel:+15550100\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 14\n  }\n]"},"credits_used":5,"credits_remaining":null}},"external_links_only_deduplicated":{"summary":"External links only, deduplicated","value":{"tool":"markdown-link-image-extractor","tool_version":"1.0.2","outputs":{"extractorStatsHtml":"<span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Shown: <span style=\"color:#1f2937\">5</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Links: <span style=\"color:#1f2937\">5</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Images: <span style=\"color:#1f2937\">0</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">External: <span style=\"color:#1f2937\">5</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Internal: <span style=\"color:#1f2937\">0</span></span>","extractorTable":[{"type":"link","style":"inline","text-alt":"Google","url":"https://www.google.com","title":"Google Homepage","location":"external","line":"3"},{"type":"link","style":"reference","text-alt":"API reference","url":"https://api.example.com","title":"API docs","location":"external","line":"4"},{"type":"link","style":"reference","text-alt":"GitHub repo","url":"https://github.com/example/repo","title":"","location":"external","line":"11"},{"type":"link","style":"inline","text-alt":"support","url":"mailto:hello@example.com","title":"","location":"external","line":"14"},{"type":"link","style":"inline","text-alt":"+1 555","url":"tel:+15550100","title":"","location":"external","line":"14"}],"extractorJson":"[\n  {\n    \"index\": 1,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"Google\",\n    \"url\": \"https://www.google.com\",\n    \"title\": \"Google Homepage\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 3\n  },\n  {\n    \"index\": 2,\n    \"type\": \"link\",\n    \"style\": \"reference\",\n    \"text\": \"API reference\",\n    \"url\": \"https://api.example.com\",\n    \"title\": \"API docs\",\n    \"refId\": \"api\",\n    \"location\": \"external\",\n    \"line\": 4\n  },\n  {\n    \"index\": 3,\n    \"type\": \"link\",\n    \"style\": \"reference\",\n    \"text\": \"GitHub repo\",\n    \"url\": \"https://github.com/example/repo\",\n    \"title\": \"\",\n    \"refId\": \"gh\",\n    \"location\": \"external\",\n    \"line\": 11\n  },\n  {\n    \"index\": 4,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"support\",\n    \"url\": \"mailto:hello@example.com\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 14\n  },\n  {\n    \"index\": 5,\n    \"type\": \"link\",\n    \"style\": \"inline\",\n    \"text\": \"+1 555\",\n    \"url\": \"tel:+15550100\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 14\n  }\n]"},"credits_used":5,"credits_remaining":null}},"images_only":{"summary":"Images only","value":{"tool":"markdown-link-image-extractor","tool_version":"1.0.2","outputs":{"extractorStatsHtml":"<span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Shown: <span style=\"color:#1f2937\">3</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Links: <span style=\"color:#1f2937\">0</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Images: <span style=\"color:#1f2937\">3</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">External: <span style=\"color:#1f2937\">1</span></span><span style=\"display:inline-block;padding:4px 10px;margin:0 6px 4px 0;background:#f1f3f9;color:#464aff;border-radius:12px;font-size:12px;font-weight:600\">Internal: <span style=\"color:#1f2937\">2</span></span>","extractorTable":[{"type":"image","style":"inline","text-alt":"Architecture diagram","url":"/images/architecture.png","title":"System overview","location":"relative","line":"7"},{"type":"image","style":"inline","text-alt":"logo","url":"https://example.com/logo.svg","title":"","location":"external","line":"9"},{"type":"image","style":"reference","text-alt":"hero","url":"/images/hero.jpg","title":"Hero banner","location":"relative","line":"12"}],"extractorJson":"[\n  {\n    \"index\": 1,\n    \"type\": \"image\",\n    \"style\": \"inline\",\n    \"text\": \"Architecture diagram\",\n    \"url\": \"/images/architecture.png\",\n    \"title\": \"System overview\",\n    \"refId\": \"\",\n    \"location\": \"relative\",\n    \"line\": 7\n  },\n  {\n    \"index\": 2,\n    \"type\": \"image\",\n    \"style\": \"inline\",\n    \"text\": \"logo\",\n    \"url\": \"https://example.com/logo.svg\",\n    \"title\": \"\",\n    \"refId\": \"\",\n    \"location\": \"external\",\n    \"line\": 9\n  },\n  {\n    \"index\": 3,\n    \"type\": \"image\",\n    \"style\": \"reference\",\n    \"text\": \"hero\",\n    \"url\": \"/images/hero.jpg\",\n    \"title\": \"Hero banner\",\n    \"refId\": \"hero-img\",\n    \"location\": \"relative\",\n    \"line\": 12\n  }\n]"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"extractorStatsHtml":{"type":"string","description":"Summary HTML"},"extractorTable":{"type":"array","description":"Extracted Result","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"style":{"type":"string","description":"Style"},"text-alt":{"type":"string","description":"Text / Alt"},"url":{"type":"string","description":"URL"},"title":{"type":"string","description":"Title"},"location":{"type":"string","description":"Location"},"line":{"type":"string","description":"Line"}}},"x-iotools-columns":["type","style","text-alt","url","title","location","line"]},"extractorJson":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/markdown-outline-extractor":{"post":{"operationId":"run_markdown_outline_extractor","summary":"Markdown Outline Extractor","tags":["Utilities"],"description":"Extract a heading outline from Markdown — every ATX (#) and Setext (underline-style) heading, with its level, line number and a ready-to-use GitHub-style anchor slug for building a table of contents.\n\n[Try Markdown Outline Extractor in your browser →](https://iotools.cloud/tool/markdown-outline-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown Input"}},"required":[]},"examples":{"atx_headings_skipping_a_code_fence":{"summary":"ATX headings, skipping a code fence","value":{"markdown":"# Getting Started\n\nSome intro text.\n\n## Installation\n\n```markdown\n# Not a heading (inside a code fence)\n```\n\n## Usage\n\n### Advanced Usage\n"}},"setext_headings_and_closing_hashes":{"summary":"Setext headings and closing hashes","value":{"markdown":"Title\n=====\n\n## Section ##\n\nSubtitle\n--------\n"}},"duplicate_headings_get_numbered_anchors":{"summary":"Duplicate headings get numbered anchors","value":{"markdown":"# Overview\n\n## Overview\n"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"atx_headings_skipping_a_code_fence":{"summary":"ATX headings, skipping a code fence","value":{"tool":"markdown-outline-extractor","tool_version":"1.0.2","outputs":{"outline":[{"level":"1","heading":"Getting Started","anchor":"getting-started","line":"1"},{"level":"2","heading":"Installation","anchor":"installation","line":"5"},{"level":"2","heading":"Usage","anchor":"usage","line":"11"},{"level":"3","heading":"Advanced Usage","anchor":"advanced-usage","line":"13"}]},"credits_used":5,"credits_remaining":null}},"setext_headings_and_closing_hashes":{"summary":"Setext headings and closing hashes","value":{"tool":"markdown-outline-extractor","tool_version":"1.0.2","outputs":{"outline":[{"level":"1","heading":"Title","anchor":"title","line":"1"},{"level":"2","heading":"Section","anchor":"section","line":"4"},{"level":"2","heading":"Subtitle","anchor":"subtitle","line":"6"}]},"credits_used":5,"credits_remaining":null}},"duplicate_headings_get_numbered_anchors":{"summary":"Duplicate headings get numbered anchors","value":{"tool":"markdown-outline-extractor","tool_version":"1.0.2","outputs":{"outline":[{"level":"1","heading":"Overview","anchor":"overview","line":"1"},{"level":"2","heading":"Overview","anchor":"overview-1","line":"3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"outline":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"heading":{"type":"string","description":"Heading"},"anchor":{"type":"string","description":"Anchor"},"line":{"type":"string","description":"Line"}}},"x-iotools-columns":["level","heading","anchor","line"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mime-type-lookup":{"post":{"operationId":"run_mime_type_lookup","summary":"MIME Type Lookup","tags":["Utilities"],"description":"Look up the MIME type for a file extension, or every extension that maps to a MIME type. Type an extension (.pdf, mp4) or a MIME type (image/png) and get matching extension, MIME type and category rows.\n\n[Try MIME Type Lookup in your browser →](https://iotools.cloud/tool/mime-type-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mimeQuery":{"type":"string","description":"Extension or MIME type"}},"required":[]},"examples":{"look_up_an_extension":{"summary":"Look up an extension","value":{"mimeQuery":".pdf"}},"look_up_a_mime_type":{"summary":"Look up a MIME type","value":{"mimeQuery":"image/png"}},"mime_type_with_multiple_extensions":{"summary":"MIME type with multiple extensions","value":{"mimeQuery":"image/jpeg"}},"no_match":{"summary":"No match","value":{"mimeQuery":".zzz"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"look_up_an_extension":{"summary":"Look up an extension","value":{"tool":"mime-type-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 1 match.","results":[{"extension":".pdf","mime-type":"application/pdf","category":"Document"}]},"credits_used":5,"credits_remaining":null}},"look_up_a_mime_type":{"summary":"Look up a MIME type","value":{"tool":"mime-type-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 1 match.","results":[{"extension":".png","mime-type":"image/png","category":"Image"}]},"credits_used":5,"credits_remaining":null}},"mime_type_with_multiple_extensions":{"summary":"MIME type with multiple extensions","value":{"tool":"mime-type-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 3 matches.","results":[{"extension":".jfif","mime-type":"image/jpeg","category":"Image"},{"extension":".jpeg","mime-type":"image/jpeg","category":"Image"},{"extension":".jpg","mime-type":"image/jpeg","category":"Image"}]},"credits_used":5,"credits_remaining":null}},"no_match":{"summary":"No match","value":{"tool":"mime-type-lookup","tool_version":"1.0.2","outputs":{"summary":"No matches found for \".zzz\".","results":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Results"},"results":{"type":"array","description":"Matches","items":{"type":"object","properties":{"extension":{"type":"string","description":"Extension"},"mime-type":{"type":"string","description":"MIME Type"},"category":{"type":"string","description":"Category"}}},"x-iotools-columns":["extension","mime-type","category"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mime-types-cheatsheet":{"post":{"operationId":"run_mime_types_cheatsheet","summary":"MIME Types Cheatsheet","tags":["Utilities"],"description":"Browse a comprehensive reference table of file extensions and their MIME (media) types, grouped by category. Filter instantly by extension, MIME type, or category to find the right Content-Type.\n\n[Try MIME Types Cheatsheet in your browser →](https://iotools.cloud/tool/mime-types-cheatsheet/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search"}},"required":[]},"examples":{"full_cheatsheet":{"summary":"Full cheatsheet","value":{"search":""}},"filter_by_category_image":{"summary":"Filter by category: image","value":{"search":"image"}},"filter_by_extension_pdf":{"summary":"Filter by extension: pdf","value":{"search":"pdf"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_cheatsheet":{"summary":"Full cheatsheet","value":{"tool":"mime-types-cheatsheet","tool_version":"1.0.2","outputs":{"table":[{"extension":"pdf","mime-type":"application/pdf","category":"Documents"},{"extension":"doc","mime-type":"application/msword","category":"Documents"},{"extension":"docx","mime-type":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","category":"Documents"},{"extension":"xls","mime-type":"application/vnd.ms-excel","category":"Documents"},{"extension":"xlsx","mime-type":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","category":"Documents"},{"extension":"ppt","mime-type":"application/vnd.ms-powerpoint","category":"Documents"},{"extension":"pptx","mime-type":"application/vnd.openxmlformats-officedocument.presentationml.presentation","category":"Documents"},{"extension":"odt","mime-type":"application/vnd.oasis.opendocument.text","category":"Documents"},{"extension":"ods","mime-type":"application/vnd.oasis.opendocument.spreadsheet","category":"Documents"},{"extension":"odp","mime-type":"application/vnd.oasis.opendocument.presentation","category":"Documents"},{"extension":"rtf","mime-type":"application/rtf","category":"Documents"},{"extension":"txt","mime-type":"text/plain","category":"Documents"},{"extension":"csv","mime-type":"text/csv","category":"Documents"},{"extension":"tsv","mime-type":"text/tab-separated-values","category":"Documents"},{"extension":"md","mime-type":"text/markdown","category":"Documents"},{"extension":"epub","mime-type":"application/epub+zip","category":"Documents"},{"extension":"jpg","mime-type":"image/jpeg","category":"Images"},{"extension":"jpeg","mime-type":"image/jpeg","category":"Images"},{"extension":"png","mime-type":"image/png","category":"Images"},{"extension":"gif","mime-type":"image/gif","category":"Images"},{"extension":"webp","mime-type":"image/webp","category":"Images"},{"extension":"svg","mime-type":"image/svg+xml","category":"Images"},{"extension":"bmp","mime-type":"image/bmp","category":"Images"},{"extension":"ico","mime-type":"image/x-icon","category":"Images"},{"extension":"tif","mime-type":"image/tiff","category":"Images"},{"extension":"tiff","mime-type":"image/tiff","category":"Images"},{"extension":"heic","mime-type":"image/heic","category":"Images"},{"extension":"heif","mime-type":"image/heif","category":"Images"},{"extension":"avif","mime-type":"image/avif","category":"Images"},{"extension":"psd","mime-type":"image/vnd.adobe.photoshop","category":"Images"},{"extension":"mp3","mime-type":"audio/mpeg","category":"Audio"},{"extension":"wav","mime-type":"audio/wav","category":"Audio"},{"extension":"ogg","mime-type":"audio/ogg","category":"Audio"},{"extension":"oga","mime-type":"audio/ogg","category":"Audio"},{"extension":"flac","mime-type":"audio/flac","category":"Audio"},{"extension":"aac","mime-type":"audio/aac","category":"Audio"},{"extension":"m4a","mime-type":"audio/mp4","category":"Audio"},{"extension":"weba","mime-type":"audio/webm","category":"Audio"},{"extension":"opus","mime-type":"audio/opus","category":"Audio"},{"extension":"mid","mime-type":"audio/midi","category":"Audio"},{"extension":"midi","mime-type":"audio/midi","category":"Audio"},{"extension":"wma","mime-type":"audio/x-ms-wma","category":"Audio"},{"extension":"mp4","mime-type":"video/mp4","category":"Video"},{"extension":"m4v","mime-type":"video/x-m4v","category":"Video"},{"extension":"webm","mime-type":"video/webm","category":"Video"},{"extension":"ogv","mime-type":"video/ogg","category":"Video"},{"extension":"avi","mime-type":"video/x-msvideo","category":"Video"},{"extension":"mov","mime-type":"video/quicktime","category":"Video"},{"extension":"wmv","mime-type":"video/x-ms-wmv","category":"Video"},{"extension":"flv","mime-type":"video/x-flv","category":"Video"},{"extension":"mkv","mime-type":"video/x-matroska","category":"Video"},{"extension":"mpeg","mime-type":"video/mpeg","category":"Video"},{"extension":"mpg","mime-type":"video/mpeg","category":"Video"},{"extension":"3gp","mime-type":"video/3gpp","category":"Video"},{"extension":"ts","mime-type":"video/mp2t","category":"Video"},{"extension":"zip","mime-type":"application/zip","category":"Archives"},{"extension":"gz","mime-type":"application/gzip","category":"Archives"},{"extension":"tar","mime-type":"application/x-tar","category":"Archives"},{"extension":"tgz","mime-type":"application/gzip","category":"Archives"},{"extension":"rar","mime-type":"application/vnd.rar","category":"Archives"},{"extension":"7z","mime-type":"application/x-7z-compressed","category":"Archives"},{"extension":"bz2","mime-type":"application/x-bzip2","category":"Archives"},{"extension":"xz","mime-type":"application/x-xz","category":"Archives"},{"extension":"jar","mime-type":"application/java-archive","category":"Archives"},{"extension":"iso","mime-type":"application/x-iso9660-image","category":"Archives"},{"extension":"html","mime-type":"text/html","category":"Web/Code"},{"extension":"htm","mime-type":"text/html","category":"Web/Code"},{"extension":"css","mime-type":"text/css","category":"Web/Code"},{"extension":"js","mime-type":"text/javascript","category":"Web/Code"},{"extension":"mjs","mime-type":"text/javascript","category":"Web/Code"},{"extension":"json","mime-type":"application/json","category":"Web/Code"},{"extension":"xml","mime-type":"application/xml","category":"Web/Code"},{"extension":"yaml","mime-type":"application/yaml","category":"Web/Code"},{"extension":"yml","mime-type":"application/yaml","category":"Web/Code"},{"extension":"wasm","mime-type":"application/wasm","category":"Web/Code"},{"extension":"php","mime-type":"application/x-httpd-php","category":"Web/Code"},{"extension":"py","mime-type":"text/x-python","category":"Web/Code"},{"extension":"rb","mime-type":"text/x-ruby","category":"Web/Code"},{"extension":"java","mime-type":"text/x-java-source","category":"Web/Code"},{"extension":"c","mime-type":"text/x-c","category":"Web/Code"},{"extension":"sh","mime-type":"application/x-sh","category":"Web/Code"},{"extension":"sql","mime-type":"application/sql","category":"Web/Code"},{"extension":"woff","mime-type":"font/woff","category":"Fonts"},{"extension":"woff2","mime-type":"font/woff2","category":"Fonts"},{"extension":"ttf","mime-type":"font/ttf","category":"Fonts"},{"extension":"otf","mime-type":"font/otf","category":"Fonts"},{"extension":"eot","mime-type":"application/vnd.ms-fontobject","category":"Fonts"},{"extension":"bin","mime-type":"application/octet-stream","category":"Application"},{"extension":"exe","mime-type":"application/x-msdownload","category":"Application"},{"extension":"apk","mime-type":"application/vnd.android.package-archive","category":"Application"},{"extension":"deb","mime-type":"application/vnd.debian.binary-package","category":"Application"},{"extension":"rpm","mime-type":"application/x-rpm","category":"Application"},{"extension":"dmg","mime-type":"application/x-apple-diskimage","category":"Application"},{"extension":"swf","mime-type":"application/x-shockwave-flash","category":"Application"},{"extension":"ai","mime-type":"application/postscript","category":"Application"},{"extension":"eps","mime-type":"application/postscript","category":"Application"},{"extension":"ps","mime-type":"application/postscript","category":"Application"},{"extension":"ics","mime-type":"text/calendar","category":"Application"},{"extension":"vcf","mime-type":"text/vcard","category":"Application"},{"extension":"torrent","mime-type":"application/x-bittorrent","category":"Application"}]},"credits_used":5,"credits_remaining":null}},"filter_by_category_image":{"summary":"Filter by category: image","value":{"tool":"mime-types-cheatsheet","tool_version":"1.0.2","outputs":{"table":[{"extension":"jpg","mime-type":"image/jpeg","category":"Images"},{"extension":"jpeg","mime-type":"image/jpeg","category":"Images"},{"extension":"png","mime-type":"image/png","category":"Images"},{"extension":"gif","mime-type":"image/gif","category":"Images"},{"extension":"webp","mime-type":"image/webp","category":"Images"},{"extension":"svg","mime-type":"image/svg+xml","category":"Images"},{"extension":"bmp","mime-type":"image/bmp","category":"Images"},{"extension":"ico","mime-type":"image/x-icon","category":"Images"},{"extension":"tif","mime-type":"image/tiff","category":"Images"},{"extension":"tiff","mime-type":"image/tiff","category":"Images"},{"extension":"heic","mime-type":"image/heic","category":"Images"},{"extension":"heif","mime-type":"image/heif","category":"Images"},{"extension":"avif","mime-type":"image/avif","category":"Images"},{"extension":"psd","mime-type":"image/vnd.adobe.photoshop","category":"Images"},{"extension":"iso","mime-type":"application/x-iso9660-image","category":"Archives"},{"extension":"dmg","mime-type":"application/x-apple-diskimage","category":"Application"}]},"credits_used":5,"credits_remaining":null}},"filter_by_extension_pdf":{"summary":"Filter by extension: pdf","value":{"tool":"mime-types-cheatsheet","tool_version":"1.0.2","outputs":{"table":[{"extension":"pdf","mime-type":"application/pdf","category":"Documents"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"table":{"type":"array","description":"MIME Types & File Extensions","items":{"type":"object","properties":{"extension":{"type":"string","description":"Extension"},"mime-type":{"type":"string","description":"MIME Type"},"category":{"type":"string","description":"Category"}}},"x-iotools-columns":["extension","mime-type","category"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mobile-first-index-checker":{"post":{"operationId":"run_mobile_first_index_checker","summary":"Mobile-First Index Checker","tags":["Utilities"],"description":"Fetch a live URL as Googlebot Smartphone and Googlebot Desktop and diff what each sees — title, meta description, robots, canonical, h1s, structured data, hreflang, and word count — to catch mobile-first indexing parity gaps before Google does.\n\n[Try Mobile-First Index Checker in your browser →](https://iotools.cloud/tool/mobile-first-index-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"a_public_homepage":{"summary":"A public homepage","value":{"url":"https://example.com/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"issues":{"type":"array","description":"Parity issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"field":{"type":"string","description":"Field"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["severity","field","issue"]},"comparison":{"type":"array","description":"Mobile vs. desktop","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"mobile-googlebot":{"type":"string","description":"Mobile (Googlebot)"},"desktop-googlebot":{"type":"string","description":"Desktop (Googlebot)"},"match":{"type":"string","description":"Match"}}},"x-iotools-columns":["field","mobile-googlebot","desktop-googlebot","match"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mobile-friendly-test":{"post":{"operationId":"run_mobile_friendly_test","summary":"Mobile-Friendly Test","tags":["Utilities"],"description":"Fetch a live URL and check it against the mobile-usability red flags that used to fail Google's own Mobile-Friendly Test: a missing viewport tag, illegibly small text, tap targets packed too close together, content wider than the screen, and legacy Flash/Silverlight embeds.\n\n[Try Mobile-Friendly Test in your browser →](https://iotools.cloud/tool/mobile-friendly-test/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"a_public_homepage":{"summary":"A public homepage","value":{"url":"https://example.com/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"checks":{"type":"array","description":"Checks","items":{"type":"object","properties":{"category":{"type":"string","description":"Category"},"result":{"type":"string","description":"Result"},"details":{"type":"string","description":"Details"}}},"x-iotools-columns":["category","result","details"]},"issues":{"type":"array","description":"Issues found","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"category":{"type":"string","description":"Category"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["severity","category","issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ngram-extractor":{"post":{"operationId":"run_ngram_extractor","summary":"N-gram Extractor","tags":["Utilities"],"description":"Extract n-gram (word sequence) frequency from text — pick a gram size from 1 (single words) to 5, get a ranked frequency table with counts and percentages, and optionally drop n-grams made up entirely of stop words.\n\n[Try N-gram Extractor in your browser →](https://iotools.cloud/tool/ngram-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"n":{"type":"number","description":"N-gram size (N)","minimum":1,"maximum":5},"caseSensitive":{"type":"boolean","description":"Case sensitive"},"ignoreStopWords":{"type":"boolean","description":"Ignore stop-word-only n-grams"},"topN":{"type":"number","description":"Show top N results","minimum":5,"maximum":200}},"required":[]},"examples":{"bigrams":{"summary":"Bigrams","value":{"inputText":"The cat sat on the mat. The cat ran."}},"trigrams":{"summary":"Trigrams","value":{"inputText":"The cat sat on the mat. The cat ran.","n":"3"}},"ignore_stop_word_only_n_grams":{"summary":"Ignore stop-word-only n-grams","value":{"inputText":"The cat sat on the mat. The cat ran.","ignoreStopWords":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"bigrams":{"summary":"Bigrams","value":{"tool":"ngram-extractor","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","n-gram":"the cat","count":"2","percentage":"25.00%"},{"rank":"2","n-gram":"cat ran","count":"1","percentage":"12.50%"},{"rank":"3","n-gram":"cat sat","count":"1","percentage":"12.50%"},{"rank":"4","n-gram":"mat the","count":"1","percentage":"12.50%"},{"rank":"5","n-gram":"on the","count":"1","percentage":"12.50%"},{"rank":"6","n-gram":"sat on","count":"1","percentage":"12.50%"},{"rank":"7","n-gram":"the mat","count":"1","percentage":"12.50%"}]},"credits_used":5,"credits_remaining":null}},"trigrams":{"summary":"Trigrams","value":{"tool":"ngram-extractor","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","n-gram":"cat sat on","count":"1","percentage":"14.29%"},{"rank":"2","n-gram":"mat the cat","count":"1","percentage":"14.29%"},{"rank":"3","n-gram":"on the mat","count":"1","percentage":"14.29%"},{"rank":"4","n-gram":"sat on the","count":"1","percentage":"14.29%"},{"rank":"5","n-gram":"the cat ran","count":"1","percentage":"14.29%"},{"rank":"6","n-gram":"the cat sat","count":"1","percentage":"14.29%"},{"rank":"7","n-gram":"the mat the","count":"1","percentage":"14.29%"}]},"credits_used":5,"credits_remaining":null}},"ignore_stop_word_only_n_grams":{"summary":"Ignore stop-word-only n-grams","value":{"tool":"ngram-extractor","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","n-gram":"the cat","count":"2","percentage":"28.57%"},{"rank":"2","n-gram":"cat ran","count":"1","percentage":"14.29%"},{"rank":"3","n-gram":"cat sat","count":"1","percentage":"14.29%"},{"rank":"4","n-gram":"mat the","count":"1","percentage":"14.29%"},{"rank":"5","n-gram":"sat on","count":"1","percentage":"14.29%"},{"rank":"6","n-gram":"the mat","count":"1","percentage":"14.29%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"frequency":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"string","description":"#"},"n-gram":{"type":"string","description":"N-gram"},"count":{"type":"string","description":"Count"},"percentage":{"type":"string","description":"Percentage"}}},"x-iotools-columns":["rank","n-gram","count","percentage"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-signature-checker":{"post":{"operationId":"run_pdf_signature_checker","summary":"PDF Signature Checker","tags":["Utilities"],"description":"Check a PDF's digital signatures — see each signer's certificate (subject, issuer, validity), when it was signed, and whether the document still matches the digest that was actually signed (tamper detection). Parsed entirely in your browser; the file is never uploaded.\n\n[Try PDF Signature Checker in your browser →](https://iotools.cloud/tool/pdf-signature-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PDF file"}},"required":[]},"examples":{"unsigned_file_no_signatures_found":{"summary":"Unsigned file — no signatures found","value":{"file":"data:application/pdf;base64,JVBERi0xLjQKSGVsbG8sIHRoaXMgaXMgbm90IGEgc2lnbmVkIFBERi4="}},"signed_pdf_content_intact_self_signed_test_certificate_rsa_2048_sha_256":{"summary":"Signed PDF, content intact (self-signed test certificate, RSA-2048/SHA-256)","value":{"file":"data:application/pdf;base64,JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvU2lnIC9GaWx0ZXIgL0Fkb2JlLlBQS0xpdGUgL1N1YkZpbHRlciAvYWRiZS5wa2NzNy5kZXRhY2hlZCAvTmFtZSAoSmFuZSBRLiBTaWduZXIpIC9NIChEOjIwMjQwMzE1MTIwMDAwLTA1JzAwJykgL1JlYXNvbiAoQXBwcm92ZWQgYnkgUUEpIC9CeXRlUmFuZ2UgWzAwMDAwMDAwMDAgMDAwMDAwMDIzMSAwMDAwMDA4NDIzIDAwMDAwMDAwNzldIC9Db250ZW50cyA8MzA4MjA1MWEwNjA5MmE4NjQ4ODZmNzBkMDEwNzAyYTA4MjA1MGIzMDgyMDUwNzAyMDEwMTMxMGYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDBiMDYwOTJhODY0ODg2ZjcwZDAxMDcwMWEwODIwMzAxMzA4MjAyZmQzMDgyMDFlNWEwMDMwMjAxMDIwMjAxMDEzMDBkMDYwOTJhODY0ODg2ZjcwZDAxMDEwYjA1MDAzMDQyMzExNzMwMTUwNjAzNTUwNDAzMTMwZTRhNjE2ZTY1MjA1MTJlMjA1MzY5Njc2ZTY1NzIzMTFhMzAxODA2MDM1NTA0MGExMzExNDE2MzZkNjUyMDU0NjU3Mzc0Njk2ZTY3MjA0MzZmNzI3MDMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzAxZTE3MGQzMjM0MzAzMTMwMzEzMDMwMzAzMDMwMzA1YTE3MGQzMjM2MzAzMTMwMzEzMDMwMzAzMDMwMzA1YTMwNDIzMTE3MzAxNTA2MDM1NTA0MDMxMzBlNGE2MTZlNjUyMDUxMmUyMDUzNjk2NzZlNjU3MjMxMWEzMDE4MDYwMzU1MDQwYTEzMTE0MTYzNmQ2NTIwNTQ2NTczNzQ2OTZlNjcyMDQzNmY3MjcwMzEwYjMwMDkwNjAzNTUwNDA2MTMwMjU1NTMzMDgyMDEyMjMwMGQwNjA5MmE4NjQ4ODZmNzBkMDEwMTAxMDUwMDAzODIwMTBmMDAzMDgyMDEwYTAyODIwMTAxMDA4ZTY5YjczMzUxZjdjYWRlZWUwMzdjNjIzMzU2MzQzNjFkZWMwZGFjMTYwYzBmZGJjYmU1MzhlMzA5OTM2OWJmM2Y0NTc3MzM4NjQ1OTVjZGZmOTQ0YzljNjc5ODc3NjkzZmJkZjU5MGYyMzA5OWIyYmQxMTU3OTFkN2UxMWZkNTIwOTIxZThmNzJjNDQ2YmY5MzE4NmIyNzgyMTcyZTYxNmMzYTcxZTE0ODQ1NzIyOTQyYmJkMjQwZWY0MDYzNDU3MTM1NGE4M2Q1YTk5MTg2NjE2ODk3ZDY3NTkxODdhZTc4MmJiNWM1YzZhOWIzODUxZjc0MWEwNTFkYWE3Yjc5NjE0Yjg5MjBjNGI5OGEwYWI2NmNlNzczZDY4YzY2MTY2OGYwMDM1MTc4MjZjNmVhYzcyZGExMmQ1NGQyNDMwYTA4ZmZjYjAwNDNlNTQyMWE4OGNlZDliMzFiYjU5Y2I0MDVlYjk0YzE2ZmM5MWZhMzU0YmUxMmZiNmJiMWZkM2NkOTcwOTY5MGY4MDQxOGZlNTA1ZWI1MzljZmI0NGUyYTMzYzg3Yzc4MzdmNWM4ODI0Zjk4NDRhMGRhZGQxZTBhNTA3MTg4ZGJlZDJmZTA0NWI2N2E5N2E2MWM1OWVkMWI3M2I3MGM0NDk3OWZmZTllNjVkNDdhZGVjNzQ3Yjc0ZjAyMDMwMTAwMDEzMDBkMDYwOTJhODY0ODg2ZjcwZDAxMDEwYjA1MDAwMzgyMDEwMTAwMzQwYzc4MGJiYjFlNTA3ZmQ2ODVkZGZlZWQzZWQ1ODIyYTE2ZWVhYWUxOTM0ZTQ5YTE4NzRiMjAwMmI0YzA4OTgyM2MwN2Y5NGYwZDQxZDIxYjc4Yjg5MGI4MzEwM2VhYTg3YjRlNDY0NGRkNWMyZTY0YTc4ZTc0MGQ1YzE2MDk3NTcxY2U5OGNkODliYmQzNzVmM2FkYTYxZDIzNTY0N2M0NzM3Y2RlM2Q1MGE0ZDAwYWViNTM3YjQxMDI3OTFjNWY3NmUxMDRlYWQ3NmU3YTQwMzc0MzZmYWQ2ZmY3OTZlZmRlNTU2NDdmNjQ3YjkzMjg1NzE1MzZhOWZmOWE2MWU1OWFlNDc2ZGJjY2RmZmJkZjEyYWJkNzg0YjlmMDFlMGU3ZTQ4YzYwOTY2MGM2ZjkyNzE1ZjdlYTY1M2Q0ZTk1MzkyZDM1YmJjYmRiYmY1MjRlMmNiOTY1YTE5YWM3ZWQ3YmZiYjNjNzM3YTg0MzIwMzUyMzFmMzMzYzYxYTA1NTJlYzQ4MjFkYzJmZWY5NDMxYjNiZmU1NWE0ZmY3YTYxZjgzOTRiY2JhM2MxOWFlNDA5OTA0MGQ4ZjQzNTYwMDMxYTFlNWYwNzQ5NzUyNWRiNWEwODFkNmU0MWRiMDJlZGMwMDQ5MzQ2YjExNmI3Y2ZhMjMyYzBhY2FiZWViNjAzMTgyMDFkZDMwODIwMWQ5MDIwMTAxMzA0NzMwNDIzMTE3MzAxNTA2MDM1NTA0MDMxMzBlNGE2MTZlNjUyMDUxMmUyMDUzNjk2NzZlNjU3MjMxMWEzMDE4MDYwMzU1MDQwYTEzMTE0MTYzNmQ2NTIwNTQ2NTczNzQ2OTZlNjcyMDQzNmY3MjcwMzEwYjMwMDkwNjAzNTUwNDA2MTMwMjU1NTMwMjAxMDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBhMDY5MzAxODA2MDkyYTg2NDg4NmY3MGQwMTA5MDMzMTBiMDYwOTJhODY0ODg2ZjcwZDAxMDcwMTMwMmYwNjA5MmE4NjQ4ODZmNzBkMDEwOTA0MzEyMjA0MjBjYTExMmIxNWFkZDUzYTBkNTE4ZDI4M2QzOWU1MjMwNWFmY2IzYjE4NzcyMzJlYjBjZjUwODFjODczNjIxYjM2MzAxYzA2MDkyYTg2NDg4NmY3MGQwMTA5MDUzMTBmMTcwZDMyMzQzMDMzMzEzNTMxMzczMDMwMzAzMDVhMzAwZDA2MDkyYTg2NDg4NmY3MGQwMTAxMDEwNTAwMDQ4MjAxMDAzYjRjODM4ZDhiMzI3MTAxYWM2ZmYzMjBjZmNhYjRjNGE3M2I1YTliOTNiZTc3MzRlNzkxYzcyYjBlNzVkNmQ3MGMyYWM3MWUyN2ZkY2M2MTg4NTliZjc1NGJlZjNiYTQ1YTU4N2U5ODYwNjk1MWViMDlmMzI5MWQzYmY3M2JmNmZjMDA3NjQzMDViNjA0M2VkY2M1ZmZkZjk1M2UyNTIyNjAzYWFiZTJhMWViYmIwNmU1N2U3YzE4NzlmZjdjZTQ0ZDMwYWNlZjVkNDRkMmJiZGM2MTE0ZmE0YmM0NDMzZWZmY2FhNTRhZmI1NTI1M2U0ZDY2MjkwY2E4ZjY3MmZhNWYxNWZmNTg2NTI4ZjA1NzAyNWUzYzNkNTEwNjJjZjk1ZjkwNTAwMGZmYTVhNzc1NWQzNWY4NDk0M2Y3MDc5YzU4YTQ4Nzc1ZTYwMzI2NWUyZjkzNzFmMDI2N2Y4ZjI2NTg5OWM4YzBkNDc2NmJiN2MzNzAxYWU2NjgwNzE4NTg3NDA0ODM3OTgzZDExMDJkYTEzZmY1ODJhMTM3ZGRjMDJkMGQ1ZDAyNTY2Mjc1ZmIwMzI3YWQzMWJhZjg5OTliMzgwODE2MmRiYWQxZThiMTY4Y2M0Y2Y4MTk5MGQ5YzcwYTA3Mzc3YWJkMTU2YWM0YzAzYTI0NzhmYTZjNDAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+ID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iagp0cmFpbGVyCjw8IC9Sb290IDIgMCBSID4+CiUlRU9G"}},"signed_pdf_tampered_after_signing_integrity_check_fails":{"summary":"Signed PDF, tampered after signing — integrity check fails","value":{"file":"data:application/pdf;base64,JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvU2lnIC9GaWx0ZXIgL0Fkb2JlLlBQS0xpdGUgL1N1YkZpbHRlciAvYWRiZS5wa2NzNy5kZXRhY2hlZCAvTmFtZSAoSmFuZSBRLiBTaWduZXIpIC9NIChEOjIwMjQwMzE1MTIwMDAwLTA1JzAwJykgL1JlYXNvbiAoQXBwcm92ZWQgYnkgUUIpIC9CeXRlUmFuZ2UgWzAwMDAwMDAwMDAgMDAwMDAwMDIzMSAwMDAwMDA4NDIzIDAwMDAwMDAwNzldIC9Db250ZW50cyA8MzA4MjA1MWEwNjA5MmE4NjQ4ODZmNzBkMDEwNzAyYTA4MjA1MGIzMDgyMDUwNzAyMDEwMTMxMGYzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAzMDBiMDYwOTJhODY0ODg2ZjcwZDAxMDcwMWEwODIwMzAxMzA4MjAyZmQzMDgyMDFlNWEwMDMwMjAxMDIwMjAxMDEzMDBkMDYwOTJhODY0ODg2ZjcwZDAxMDEwYjA1MDAzMDQyMzExNzMwMTUwNjAzNTUwNDAzMTMwZTRhNjE2ZTY1MjA1MTJlMjA1MzY5Njc2ZTY1NzIzMTFhMzAxODA2MDM1NTA0MGExMzExNDE2MzZkNjUyMDU0NjU3Mzc0Njk2ZTY3MjA0MzZmNzI3MDMxMGIzMDA5MDYwMzU1MDQwNjEzMDI1NTUzMzAxZTE3MGQzMjM0MzAzMTMwMzEzMDMwMzAzMDMwMzA1YTE3MGQzMjM2MzAzMTMwMzEzMDMwMzAzMDMwMzA1YTMwNDIzMTE3MzAxNTA2MDM1NTA0MDMxMzBlNGE2MTZlNjUyMDUxMmUyMDUzNjk2NzZlNjU3MjMxMWEzMDE4MDYwMzU1MDQwYTEzMTE0MTYzNmQ2NTIwNTQ2NTczNzQ2OTZlNjcyMDQzNmY3MjcwMzEwYjMwMDkwNjAzNTUwNDA2MTMwMjU1NTMzMDgyMDEyMjMwMGQwNjA5MmE4NjQ4ODZmNzBkMDEwMTAxMDUwMDAzODIwMTBmMDAzMDgyMDEwYTAyODIwMTAxMDA4ZTY5YjczMzUxZjdjYWRlZWUwMzdjNjIzMzU2MzQzNjFkZWMwZGFjMTYwYzBmZGJjYmU1MzhlMzA5OTM2OWJmM2Y0NTc3MzM4NjQ1OTVjZGZmOTQ0YzljNjc5ODc3NjkzZmJkZjU5MGYyMzA5OWIyYmQxMTU3OTFkN2UxMWZkNTIwOTIxZThmNzJjNDQ2YmY5MzE4NmIyNzgyMTcyZTYxNmMzYTcxZTE0ODQ1NzIyOTQyYmJkMjQwZWY0MDYzNDU3MTM1NGE4M2Q1YTk5MTg2NjE2ODk3ZDY3NTkxODdhZTc4MmJiNWM1YzZhOWIzODUxZjc0MWEwNTFkYWE3Yjc5NjE0Yjg5MjBjNGI5OGEwYWI2NmNlNzczZDY4YzY2MTY2OGYwMDM1MTc4MjZjNmVhYzcyZGExMmQ1NGQyNDMwYTA4ZmZjYjAwNDNlNTQyMWE4OGNlZDliMzFiYjU5Y2I0MDVlYjk0YzE2ZmM5MWZhMzU0YmUxMmZiNmJiMWZkM2NkOTcwOTY5MGY4MDQxOGZlNTA1ZWI1MzljZmI0NGUyYTMzYzg3Yzc4MzdmNWM4ODI0Zjk4NDRhMGRhZGQxZTBhNTA3MTg4ZGJlZDJmZTA0NWI2N2E5N2E2MWM1OWVkMWI3M2I3MGM0NDk3OWZmZTllNjVkNDdhZGVjNzQ3Yjc0ZjAyMDMwMTAwMDEzMDBkMDYwOTJhODY0ODg2ZjcwZDAxMDEwYjA1MDAwMzgyMDEwMTAwMzQwYzc4MGJiYjFlNTA3ZmQ2ODVkZGZlZWQzZWQ1ODIyYTE2ZWVhYWUxOTM0ZTQ5YTE4NzRiMjAwMmI0YzA4OTgyM2MwN2Y5NGYwZDQxZDIxYjc4Yjg5MGI4MzEwM2VhYTg3YjRlNDY0NGRkNWMyZTY0YTc4ZTc0MGQ1YzE2MDk3NTcxY2U5OGNkODliYmQzNzVmM2FkYTYxZDIzNTY0N2M0NzM3Y2RlM2Q1MGE0ZDAwYWViNTM3YjQxMDI3OTFjNWY3NmUxMDRlYWQ3NmU3YTQwMzc0MzZmYWQ2ZmY3OTZlZmRlNTU2NDdmNjQ3YjkzMjg1NzE1MzZhOWZmOWE2MWU1OWFlNDc2ZGJjY2RmZmJkZjEyYWJkNzg0YjlmMDFlMGU3ZTQ4YzYwOTY2MGM2ZjkyNzE1ZjdlYTY1M2Q0ZTk1MzkyZDM1YmJjYmRiYmY1MjRlMmNiOTY1YTE5YWM3ZWQ3YmZiYjNjNzM3YTg0MzIwMzUyMzFmMzMzYzYxYTA1NTJlYzQ4MjFkYzJmZWY5NDMxYjNiZmU1NWE0ZmY3YTYxZjgzOTRiY2JhM2MxOWFlNDA5OTA0MGQ4ZjQzNTYwMDMxYTFlNWYwNzQ5NzUyNWRiNWEwODFkNmU0MWRiMDJlZGMwMDQ5MzQ2YjExNmI3Y2ZhMjMyYzBhY2FiZWViNjAzMTgyMDFkZDMwODIwMWQ5MDIwMTAxMzA0NzMwNDIzMTE3MzAxNTA2MDM1NTA0MDMxMzBlNGE2MTZlNjUyMDUxMmUyMDUzNjk2NzZlNjU3MjMxMWEzMDE4MDYwMzU1MDQwYTEzMTE0MTYzNmQ2NTIwNTQ2NTczNzQ2OTZlNjcyMDQzNmY3MjcwMzEwYjMwMDkwNjAzNTUwNDA2MTMwMjU1NTMwMjAxMDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDBhMDY5MzAxODA2MDkyYTg2NDg4NmY3MGQwMTA5MDMzMTBiMDYwOTJhODY0ODg2ZjcwZDAxMDcwMTMwMmYwNjA5MmE4NjQ4ODZmNzBkMDEwOTA0MzEyMjA0MjBjYTExMmIxNWFkZDUzYTBkNTE4ZDI4M2QzOWU1MjMwNWFmY2IzYjE4NzcyMzJlYjBjZjUwODFjODczNjIxYjM2MzAxYzA2MDkyYTg2NDg4NmY3MGQwMTA5MDUzMTBmMTcwZDMyMzQzMDMzMzEzNTMxMzczMDMwMzAzMDVhMzAwZDA2MDkyYTg2NDg4NmY3MGQwMTAxMDEwNTAwMDQ4MjAxMDAzYjRjODM4ZDhiMzI3MTAxYWM2ZmYzMjBjZmNhYjRjNGE3M2I1YTliOTNiZTc3MzRlNzkxYzcyYjBlNzVkNmQ3MGMyYWM3MWUyN2ZkY2M2MTg4NTliZjc1NGJlZjNiYTQ1YTU4N2U5ODYwNjk1MWViMDlmMzI5MWQzYmY3M2JmNmZjMDA3NjQzMDViNjA0M2VkY2M1ZmZkZjk1M2UyNTIyNjAzYWFiZTJhMWViYmIwNmU1N2U3YzE4NzlmZjdjZTQ0ZDMwYWNlZjVkNDRkMmJiZGM2MTE0ZmE0YmM0NDMzZWZmY2FhNTRhZmI1NTI1M2U0ZDY2MjkwY2E4ZjY3MmZhNWYxNWZmNTg2NTI4ZjA1NzAyNWUzYzNkNTEwNjJjZjk1ZjkwNTAwMGZmYTVhNzc1NWQzNWY4NDk0M2Y3MDc5YzU4YTQ4Nzc1ZTYwMzI2NWUyZjkzNzFmMDI2N2Y4ZjI2NTg5OWM4YzBkNDc2NmJiN2MzNzAxYWU2NjgwNzE4NTg3NDA0ODM3OTgzZDExMDJkYTEzZmY1ODJhMTM3ZGRjMDJkMGQ1ZDAyNTY2Mjc1ZmIwMzI3YWQzMWJhZjg5OTliMzgwODE2MmRiYWQxZThiMTY4Y2M0Y2Y4MTk5MGQ5YzcwYTA3Mzc3YWJkMTU2YWM0YzAzYTI0NzhmYTZjNDAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA+ID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iagp0cmFpbGVyCjw8IC9Sb290IDIgMCBSID4+CiUlRU9G"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"unsigned_file_no_signatures_found":{"summary":"Unsigned file — no signatures found","value":{"tool":"pdf-signature-checker","tool_version":"1.0.2","outputs":{"summary":[],"certificates":[],"warnings":[]},"credits_used":5,"credits_remaining":null}},"signed_pdf_content_intact_self_signed_test_certificate_rsa_2048_sha_256":{"summary":"Signed PDF, content intact (self-signed test certificate, RSA-2048/SHA-256)","value":{"tool":"pdf-signature-checker","tool_version":"1.0.2","outputs":{"summary":[{"index":"1","signer":"Jane Q. Signer","issuer":"Jane Q. Signer","signed-at":"2024-03-15T17:00:00Z","format":"PKCS#7 detached","integrity":"Intact — content matches the signed digest"}],"certificates":[{"signature":"1","field":"Subject","value":"Jane Q. Signer — Acme Testing Corp"},{"signature":"1","field":"Issuer","value":"Jane Q. Signer — Acme Testing Corp"},{"signature":"1","field":"Valid From","value":"2024-01-01T00:00:00Z"},{"signature":"1","field":"Valid To","value":"2026-01-01T00:00:00Z"},{"signature":"1","field":"Serial Number","value":"01"},{"signature":"1","field":"Self-Signed","value":"Yes"},{"signature":"1","field":"Public Key Size","value":"2048 bits (RSA)"}],"warnings":[{"signature":"1","severity":"Warning","message":"The signing certificate is self-signed."}]},"credits_used":5,"credits_remaining":null}},"signed_pdf_tampered_after_signing_integrity_check_fails":{"summary":"Signed PDF, tampered after signing — integrity check fails","value":{"tool":"pdf-signature-checker","tool_version":"1.0.2","outputs":{"summary":[{"index":"1","signer":"Jane Q. Signer","issuer":"Jane Q. Signer","signed-at":"2024-03-15T17:00:00Z","format":"PKCS#7 detached","integrity":"Modified after signing — content does not match the signed digest"}],"certificates":[{"signature":"1","field":"Subject","value":"Jane Q. Signer — Acme Testing Corp"},{"signature":"1","field":"Issuer","value":"Jane Q. Signer — Acme Testing Corp"},{"signature":"1","field":"Valid From","value":"2024-01-01T00:00:00Z"},{"signature":"1","field":"Valid To","value":"2026-01-01T00:00:00Z"},{"signature":"1","field":"Serial Number","value":"01"},{"signature":"1","field":"Self-Signed","value":"Yes"},{"signature":"1","field":"Public Key Size","value":"2048 bits (RSA)"}],"warnings":[{"signature":"1","severity":"Warning","message":"The signing certificate is self-signed."},{"signature":"1","severity":"Danger","message":"The document's bytes no longer match the digest that was signed — it was modified (or corrupted) after signing."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"signer":{"type":"string","description":"Signer"},"issuer":{"type":"string","description":"Issuer"},"signed-at":{"type":"string","description":"Signed At"},"format":{"type":"string","description":"Format"},"integrity":{"type":"string","description":"Integrity"}}},"x-iotools-columns":["index","signer","issuer","signed-at","format","integrity"]},"certificates":{"type":"array","items":{"type":"object","properties":{"signature":{"type":"string","description":"Signature #"},"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["signature","field","value"]},"warnings":{"type":"array","items":{"type":"object","properties":{"signature":{"type":"string","description":"Signature #"},"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["signature","severity","message"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-summarizer":{"post":{"operationId":"run_pdf_summarizer","summary":"PDF Summarizer","tags":["Utilities"],"description":"Upload a PDF and get an AI-generated summary of its content — pick the target length and whether you want flowing prose or a bulleted list of key points.\n\n[Try PDF Summarizer in your browser →](https://iotools.cloud/tool/pdf-summarizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PDF file"},"length":{"enum":["short","medium","long"],"description":"Summary length"},"format":{"enum":["paragraph","bullet-points"],"description":"Format"}},"required":["file"]},"examples":{"default":{"summary":"Default","value":{"file":"data:application/pdf;base64,JVBERi0xLjcKJYGBgYEKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTc5Cj4+CnN0cmVhbQp4nI1X3crcRgy991P4uhAyv9IMlEC+tU0uclPYFyhtUloSSkrp80c60ni9SVz8Lfhbj8cz0tE5R7Nfppf7FGb9/PPH9Prdh0//ffj3z99+ffXy96ffX3HorbTArc+xzfePUyrz/f0UMT/OlWbONN8/Tz+XmEJJnKhTJZLvjTpnLrRx4p4CbToq941qCjWUUujNfP9ruv80rffpl+nLWSCdS6KWKrU5xh/HECyGuq+OXQtFSnTTEdlso8yVFolulQVDIZ0j91HvmOV/liizjFUdk6uME2IvkfT9pCtJfusjD8yVPXRWjrnLJ+g6mrdcs7x1Y8LMiPtOi0SLmDjIm5tFSEt+q3OuIZJCCC3U3ugMEeoRiBDJjrabRoxc5X6Tz4tlODKR2KKiI89Xjd2QURw4AR+pJ2Wpg2Akb0sWXP3pzXPpiuwYUXRxDToCROU5se7ExgzJesyQJ4a3FntVJimLUKGdLel2lS8yn6QgfIoOG18k54b6eWRaIzrwYmfBd+wRrJQpm+SR8byT/lWwx2YsOgeoSW7ghFxljSj4gy9YLdrsnU+yu47I/BsqFbnLLoL0AdOOtVlXvYaIvJ9q1mBOESHji9RZdpN9Cxih0ROysZ2LalpiCuzMhwK06h2Za17rtZhaqSG2EP+nSgdncQYExJfoBaibryjjMqrR6amSHAwlvcN8q27n5szPVC03dSawV1gpvlEpg61aCa2bsbe5EqAj9QBdRfn6cBkoAxpAVWVO1eiaVu8iKiSq5tj41OsoeaWEbeT+KjszogymUmePRAn2Km8Toh18PjAI6KThZaZwOJR+t9nmGpIHWF88T62DaRpu+c2eDx7rbMNLdrmGQm1J7DnlfI6CO/4PchtcVGxMZ6isXMvug6a04YwZXj18EP5P7nvQLvn3ZjwybxfEq2aNkYM7Ss4d6iBD8NELZH6C7wlnzDuvaiVKD66pRK5neNRmrCjbiBYMXr7J+NDxwJjKjOhV8TerEIP3pg/lNtbJDzVJvurPi8wCRlpZU+dTrYcSovXLR28wDgkGdIzJ6wHnUSZd9LXWWo9RdjvFhZwnmgW7Wm/eidm4y3Bt52/y3rhAFeYz5BrT2YT34vCHZ51Bk6spBjupg1bXA9jm6EEvjG5n/uT4P85I0buM8/pq5+u5lJ76KRzVjwUwcRiXhqWE7Gjjgyp5tF6TDaxz0N9o0U+PDw6XPoGYqpk0qIHEcdRRkj3LcE/bmqjRCwWwGFaj4migF49KHFrsvdfT1lfzsBKTjsiXzeyvC5Q4qPiJyukuMT6OqHE3URiTH4ZWEQbsCjnvdmsmpjHp/9EIYXo75nvdihmPtnDfo8ku3YxoJ7KLc4jRqa8SpTHbxxYcUHBoORr8RXnmWqmXdtrhS3fo4yCHbLi7jZ0cXTHRHXRxZXZ+u/ucKtZOS11PtQ6Hweg0G67u/t18lvXmcc6qfp75vluudnoY51ArzxOA0PLFHs+thFhZQDnDxd38cILBWWe/P7pONr+GQLJ39M5l99xt/+3R/FeR4WZkz+5jR9fRXwaVwxErHfMINlvXhWker6eCZ6l8BYsDFIIKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovRmlsdGVyIC9GbGF0ZURlY29kZQovVHlwZSAvT2JqU3RtCi9OIDYKL0ZpcnN0IDMyCi9MZW5ndGggNDk2Cj4+CnN0cmVhbQp4nNVU3WvcMAx/z1+hx+2hWP62x3FwH8kGo6y0g42NPaSJOTKOeCS+0f33k5NrS9eMjb2NIGLpJ1mW9bM4IAhQCiRYBwq0FKDBcAUGLHJYrQr2/se3AOyqPoSxYG+7doTPhCJcw5eC7eKpT8CL9bp49N3VqT7GQzEHAc/O9x5XQ2xPTRhgVZVVhWgR0SgSgyj29N+ReBJBOmHC0ZrEqrOQzUpEuSGsmsXYOSbjk68+x5f0J1+Tffazr3Kz/pA35yrnPcSfzuPXBbuM7b5OAV7sXwkUBh1XyFFq9eklXccQ6hT/3+Km83ex/22FT/pcxT4V7OZ0myY1G3nBtvUYMgLsTTh+D6lr6oKVfRPbrj8A+9D1m37s7g3/uOPFNh7bv9428zCzcQiZrBMd2XUY42loiJ/Zb9o+L55muLDoHd2qdZ7exRT36OCtEsYJbfLL+QXL3XWovTPPMU8tVMYLtM8xq63QUpqlOKc0cketWIhzhnJZ7uzCWbQTyhgh5QLGqTotFLd64SzOOc85sWypBi+V8sIvlG6JMd57vVACEZFqE8aohXRSa+OVW6rOOqKgtpyfMeou+/ju9mtopq5ltbxLr29S5u1syLbL0Hb1Nt7RxEL6DBdgvchza9P3MeVJNs2wPhExsmbPc42CfwKapEi6CmVuZHN0cmVhbQplbmRvYmoKCjkgMCBvYmoKPDwKL1NpemUgMTAKL1Jvb3QgMiAwIFIKL0luZm8gMyAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL1hSZWYKL0xlbmd0aCA0MwovVyBbIDEgMiAyIF0KL0luZGV4IFsgMCAxMCBdCj4+CnN0cmVhbQp4nBXEsREAIAwDsXcIR0r2Yv9RqANWIaA7KHBy4YZLN8UG5f2tAw9vHgOoCmVuZHN0cmVhbQplbmRvYmoKCnN0YXJ0eHJlZgoxODY3CiUlRU9G","length":"medium","format":"paragraph"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"stats":{"type":"string","description":"Source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/translate-pdf":{"post":{"operationId":"run_translate_pdf","summary":"Translate PDF","tags":["Utilities"],"description":"Upload a PDF and get an AI translation of its content into another language — pick the target language and download the translated text.\n\n[Try Translate PDF in your browser →](https://iotools.cloud/tool/translate-pdf/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PDF file"},"targetLanguage":{"enum":["Arabic","Bengali","Chinese (Simplified)","Chinese (Traditional)","Czech","Danish","Dutch","English","Filipino","Finnish","French","German","Greek","Hebrew","Hindi","Hungarian","Indonesian","Italian","Japanese","Korean","Malay","Norwegian","Polish","Portuguese","Romanian","Russian","Spanish","Swahili","Swedish","Thai","Turkish","Ukrainian","Vietnamese"],"description":"Target language"}},"required":["file"]},"examples":{"default":{"summary":"Default","value":{"file":"data:application/pdf;base64,JVBERi0xLjcKJYGBgYEKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTc5Cj4+CnN0cmVhbQp4nI1X3crcRgy991P4uhAyv9IMlEC+tU0uclPYFyhtUloSSkrp80c60ni9SVz8Lfhbj8cz0tE5R7Nfppf7FGb9/PPH9Prdh0//ffj3z99+ffXy96ffX3HorbTArc+xzfePUyrz/f0UMT/OlWbONN8/Tz+XmEJJnKhTJZLvjTpnLrRx4p4CbToq941qCjWUUujNfP9ruv80rffpl+nLWSCdS6KWKrU5xh/HECyGuq+OXQtFSnTTEdlso8yVFolulQVDIZ0j91HvmOV/liizjFUdk6uME2IvkfT9pCtJfusjD8yVPXRWjrnLJ+g6mrdcs7x1Y8LMiPtOi0SLmDjIm5tFSEt+q3OuIZJCCC3U3ugMEeoRiBDJjrabRoxc5X6Tz4tlODKR2KKiI89Xjd2QURw4AR+pJ2Wpg2Akb0sWXP3pzXPpiuwYUXRxDToCROU5se7ExgzJesyQJ4a3FntVJimLUKGdLel2lS8yn6QgfIoOG18k54b6eWRaIzrwYmfBd+wRrJQpm+SR8byT/lWwx2YsOgeoSW7ghFxljSj4gy9YLdrsnU+yu47I/BsqFbnLLoL0AdOOtVlXvYaIvJ9q1mBOESHji9RZdpN9Cxih0ROysZ2LalpiCuzMhwK06h2Za17rtZhaqSG2EP+nSgdncQYExJfoBaibryjjMqrR6amSHAwlvcN8q27n5szPVC03dSawV1gpvlEpg61aCa2bsbe5EqAj9QBdRfn6cBkoAxpAVWVO1eiaVu8iKiSq5tj41OsoeaWEbeT+KjszogymUmePRAn2Km8Toh18PjAI6KThZaZwOJR+t9nmGpIHWF88T62DaRpu+c2eDx7rbMNLdrmGQm1J7DnlfI6CO/4PchtcVGxMZ6isXMvug6a04YwZXj18EP5P7nvQLvn3ZjwybxfEq2aNkYM7Ss4d6iBD8NELZH6C7wlnzDuvaiVKD66pRK5neNRmrCjbiBYMXr7J+NDxwJjKjOhV8TerEIP3pg/lNtbJDzVJvurPi8wCRlpZU+dTrYcSovXLR28wDgkGdIzJ6wHnUSZd9LXWWo9RdjvFhZwnmgW7Wm/eidm4y3Bt52/y3rhAFeYz5BrT2YT34vCHZ51Bk6spBjupg1bXA9jm6EEvjG5n/uT4P85I0buM8/pq5+u5lJ76KRzVjwUwcRiXhqWE7Gjjgyp5tF6TDaxz0N9o0U+PDw6XPoGYqpk0qIHEcdRRkj3LcE/bmqjRCwWwGFaj4migF49KHFrsvdfT1lfzsBKTjsiXzeyvC5Q4qPiJyukuMT6OqHE3URiTH4ZWEQbsCjnvdmsmpjHp/9EIYXo75nvdihmPtnDfo8ku3YxoJ7KLc4jRqa8SpTHbxxYcUHBoORr8RXnmWqmXdtrhS3fo4yCHbLi7jZ0cXTHRHXRxZXZ+u/ucKtZOS11PtQ6Hweg0G67u/t18lvXmcc6qfp75vluudnoY51ArzxOA0PLFHs+thFhZQDnDxd38cILBWWe/P7pONr+GQLJ39M5l99xt/+3R/FeR4WZkz+5jR9fRXwaVwxErHfMINlvXhWker6eCZ6l8BYsDFIIKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovRmlsdGVyIC9GbGF0ZURlY29kZQovVHlwZSAvT2JqU3RtCi9OIDYKL0ZpcnN0IDMyCi9MZW5ndGggNDk2Cj4+CnN0cmVhbQp4nNVU3WvcMAx/z1+hx+2hWP62x3FwH8kGo6y0g42NPaSJOTKOeCS+0f33k5NrS9eMjb2NIGLpJ1mW9bM4IAhQCiRYBwq0FKDBcAUGLHJYrQr2/se3AOyqPoSxYG+7doTPhCJcw5eC7eKpT8CL9bp49N3VqT7GQzEHAc/O9x5XQ2xPTRhgVZVVhWgR0SgSgyj29N+ReBJBOmHC0ZrEqrOQzUpEuSGsmsXYOSbjk68+x5f0J1+Tffazr3Kz/pA35yrnPcSfzuPXBbuM7b5OAV7sXwkUBh1XyFFq9eklXccQ6hT/3+Km83ex/22FT/pcxT4V7OZ0myY1G3nBtvUYMgLsTTh+D6lr6oKVfRPbrj8A+9D1m37s7g3/uOPFNh7bv9428zCzcQiZrBMd2XUY42loiJ/Zb9o+L55muLDoHd2qdZ7exRT36OCtEsYJbfLL+QXL3XWovTPPMU8tVMYLtM8xq63QUpqlOKc0cketWIhzhnJZ7uzCWbQTyhgh5QLGqTotFLd64SzOOc85sWypBi+V8sIvlG6JMd57vVACEZFqE8aohXRSa+OVW6rOOqKgtpyfMeou+/ju9mtopq5ltbxLr29S5u1syLbL0Hb1Nt7RxEL6DBdgvchza9P3MeVJNs2wPhExsmbPc42CfwKapEi6CmVuZHN0cmVhbQplbmRvYmoKCjkgMCBvYmoKPDwKL1NpemUgMTAKL1Jvb3QgMiAwIFIKL0luZm8gMyAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL1hSZWYKL0xlbmd0aCA0MwovVyBbIDEgMiAyIF0KL0luZGV4IFsgMCAxMCBdCj4+CnN0cmVhbQp4nBXEsREAIAwDsXcIR0r2Yv9RqANWIaA7KHBy4YZLN8UG5f2tAw9vHgOoCmVuZHN0cmVhbQplbmRvYmoKCnN0YXJ0eHJlZgoxODY3CiUlRU9G","targetLanguage":"Spanish"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"translation":{"type":"string","description":"Translation"},"stats":{"type":"string","description":"Source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/pdf-question-generator":{"post":{"operationId":"run_pdf_question_generator","summary":"Question Generator","tags":["Utilities"],"description":"Upload a PDF and get AI-generated multiple-choice quiz questions from its content — pick how many questions and how hard they should be, then get an answer key.\n\n[Try Question Generator in your browser →](https://iotools.cloud/tool/pdf-question-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"file":{"type":"string","contentEncoding":"base64","description":"PDF file"},"questionCount":{"type":"number","description":"Number of questions","minimum":3,"maximum":10},"difficulty":{"enum":["easy","medium","hard"],"description":"Difficulty"}},"required":["file"]},"examples":{"default":{"summary":"Default","value":{"file":"data:application/pdf;base64,JVBERi0xLjcKJYGBgYEKCjcgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTc5Cj4+CnN0cmVhbQp4nI1X3crcRgy991P4uhAyv9IMlEC+tU0uclPYFyhtUloSSkrp80c60ni9SVz8Lfhbj8cz0tE5R7Nfppf7FGb9/PPH9Prdh0//ffj3z99+ffXy96ffX3HorbTArc+xzfePUyrz/f0UMT/OlWbONN8/Tz+XmEJJnKhTJZLvjTpnLrRx4p4CbToq941qCjWUUujNfP9ruv80rffpl+nLWSCdS6KWKrU5xh/HECyGuq+OXQtFSnTTEdlso8yVFolulQVDIZ0j91HvmOV/liizjFUdk6uME2IvkfT9pCtJfusjD8yVPXRWjrnLJ+g6mrdcs7x1Y8LMiPtOi0SLmDjIm5tFSEt+q3OuIZJCCC3U3ugMEeoRiBDJjrabRoxc5X6Tz4tlODKR2KKiI89Xjd2QURw4AR+pJ2Wpg2Akb0sWXP3pzXPpiuwYUXRxDToCROU5se7ExgzJesyQJ4a3FntVJimLUKGdLel2lS8yn6QgfIoOG18k54b6eWRaIzrwYmfBd+wRrJQpm+SR8byT/lWwx2YsOgeoSW7ghFxljSj4gy9YLdrsnU+yu47I/BsqFbnLLoL0AdOOtVlXvYaIvJ9q1mBOESHji9RZdpN9Cxih0ROysZ2LalpiCuzMhwK06h2Za17rtZhaqSG2EP+nSgdncQYExJfoBaibryjjMqrR6amSHAwlvcN8q27n5szPVC03dSawV1gpvlEpg61aCa2bsbe5EqAj9QBdRfn6cBkoAxpAVWVO1eiaVu8iKiSq5tj41OsoeaWEbeT+KjszogymUmePRAn2Km8Toh18PjAI6KThZaZwOJR+t9nmGpIHWF88T62DaRpu+c2eDx7rbMNLdrmGQm1J7DnlfI6CO/4PchtcVGxMZ6isXMvug6a04YwZXj18EP5P7nvQLvn3ZjwybxfEq2aNkYM7Ss4d6iBD8NELZH6C7wlnzDuvaiVKD66pRK5neNRmrCjbiBYMXr7J+NDxwJjKjOhV8TerEIP3pg/lNtbJDzVJvurPi8wCRlpZU+dTrYcSovXLR28wDgkGdIzJ6wHnUSZd9LXWWo9RdjvFhZwnmgW7Wm/eidm4y3Bt52/y3rhAFeYz5BrT2YT34vCHZ51Bk6spBjupg1bXA9jm6EEvjG5n/uT4P85I0buM8/pq5+u5lJ76KRzVjwUwcRiXhqWE7Gjjgyp5tF6TDaxz0N9o0U+PDw6XPoGYqpk0qIHEcdRRkj3LcE/bmqjRCwWwGFaj4migF49KHFrsvdfT1lfzsBKTjsiXzeyvC5Q4qPiJyukuMT6OqHE3URiTH4ZWEQbsCjnvdmsmpjHp/9EIYXo75nvdihmPtnDfo8ku3YxoJ7KLc4jRqa8SpTHbxxYcUHBoORr8RXnmWqmXdtrhS3fo4yCHbLi7jZ0cXTHRHXRxZXZ+u/ucKtZOS11PtQ6Hweg0G67u/t18lvXmcc6qfp75vluudnoY51ArzxOA0PLFHs+thFhZQDnDxd38cILBWWe/P7pONr+GQLJ39M5l99xt/+3R/FeR4WZkz+5jR9fRXwaVwxErHfMINlvXhWker6eCZ6l8BYsDFIIKZW5kc3RyZWFtCmVuZG9iagoKOCAwIG9iago8PAovRmlsdGVyIC9GbGF0ZURlY29kZQovVHlwZSAvT2JqU3RtCi9OIDYKL0ZpcnN0IDMyCi9MZW5ndGggNDk2Cj4+CnN0cmVhbQp4nNVU3WvcMAx/z1+hx+2hWP62x3FwH8kGo6y0g42NPaSJOTKOeCS+0f33k5NrS9eMjb2NIGLpJ1mW9bM4IAhQCiRYBwq0FKDBcAUGLHJYrQr2/se3AOyqPoSxYG+7doTPhCJcw5eC7eKpT8CL9bp49N3VqT7GQzEHAc/O9x5XQ2xPTRhgVZVVhWgR0SgSgyj29N+ReBJBOmHC0ZrEqrOQzUpEuSGsmsXYOSbjk68+x5f0J1+Tffazr3Kz/pA35yrnPcSfzuPXBbuM7b5OAV7sXwkUBh1XyFFq9eklXccQ6hT/3+Km83ex/22FT/pcxT4V7OZ0myY1G3nBtvUYMgLsTTh+D6lr6oKVfRPbrj8A+9D1m37s7g3/uOPFNh7bv9428zCzcQiZrBMd2XUY42loiJ/Zb9o+L55muLDoHd2qdZ7exRT36OCtEsYJbfLL+QXL3XWovTPPMU8tVMYLtM8xq63QUpqlOKc0cketWIhzhnJZ7uzCWbQTyhgh5QLGqTotFLd64SzOOc85sWypBi+V8sIvlG6JMd57vVACEZFqE8aohXRSa+OVW6rOOqKgtpyfMeou+/ju9mtopq5ltbxLr29S5u1syLbL0Hb1Nt7RxEL6DBdgvchza9P3MeVJNs2wPhExsmbPc42CfwKapEi6CmVuZHN0cmVhbQplbmRvYmoKCjkgMCBvYmoKPDwKL1NpemUgMTAKL1Jvb3QgMiAwIFIKL0luZm8gMyAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL1R5cGUgL1hSZWYKL0xlbmd0aCA0MwovVyBbIDEgMiAyIF0KL0luZGV4IFsgMCAxMCBdCj4+CnN0cmVhbQp4nBXEsREAIAwDsXcIR0r2Yv9RqANWIaA7KHBy4YZLN8UG5f2tAw9vHgOoCmVuZHN0cmVhbQplbmRvYmoKCnN0YXJ0eHJlZgoxODY3CiUlRU9G","questionCount":"5","difficulty":"medium"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"questions":{"type":"array","description":"Quiz","items":{"type":"object","properties":{"question":{"type":"string","description":"Question"},"options":{"type":"string","description":"Options"},"correct-answer":{"type":"string","description":"Correct answer"}}},"x-iotools-columns":["question","options","correct-answer"]},"stats":{"type":"string","description":"Source"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/password-policy-tester":{"post":{"operationId":"run_password_policy_tester","summary":"Password Policy Tester","tags":["Utilities"],"description":"Test a password against a configurable complexity policy — minimum/maximum length, required uppercase, lowercase, digit and symbol characters, a no-whitespace rule, and an optional forbidden-text check (e.g. ban a username or company name) — with a clear pass/fail report for every rule. Runs entirely in your browser; the password is never sent anywhere.\n\n[Try Password Policy Tester in your browser →](https://iotools.cloud/tool/password-policy-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password"},"minLength":{"type":"number","description":"Minimum length","minimum":1,"maximum":64},"maxLength":{"type":"number","description":"Maximum length","minimum":0,"maximum":128},"requireUppercase":{"type":"boolean","description":"Require an uppercase letter (A-Z)"},"requireLowercase":{"type":"boolean","description":"Require a lowercase letter (a-z)"},"requireDigit":{"type":"boolean","description":"Require a digit (0-9)"},"requireSymbol":{"type":"boolean","description":"Require a symbol (e.g. !@#$%^&*)"},"disallowWhitespace":{"type":"boolean","description":"Disallow whitespace"},"forbiddenText":{"type":"string","description":"Must not contain (optional)"}},"required":["password"]},"examples":{"fails_default_policy_too_short_no_uppercase_digit":{"summary":"Fails default policy — too short, no uppercase/digit","value":{"password":"secret","minLength":"8","maxLength":"0","requireUppercase":"true","requireLowercase":"true","requireDigit":"true","requireSymbol":"","disallowWhitespace":"true","forbiddenText":""}},"passes_default_policy":{"summary":"Passes default policy","value":{"password":"Str0ngPass","minLength":"8","maxLength":"0","requireUppercase":"true","requireLowercase":"true","requireDigit":"true","requireSymbol":"","disallowWhitespace":"true","forbiddenText":""}},"symbol_requirement_forbidden_text_max_length":{"summary":"Symbol requirement + forbidden text + max length","value":{"password":"adminadmin1","minLength":"8","maxLength":"10","requireUppercase":"","requireLowercase":"true","requireDigit":"true","requireSymbol":"true","disallowWhitespace":"true","forbiddenText":"admin"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"fails_default_policy_too_short_no_uppercase_digit":{"summary":"Fails default policy — too short, no uppercase/digit","value":{"tool":"password-policy-tester","tool_version":"1.0.2","outputs":{"result":[{"rule":"Overall","status":"❌ Fail"},{"rule":"At least 8 characters","status":"❌ Fail"},{"rule":"Contains an uppercase letter (A-Z)","status":"❌ Fail"},{"rule":"Contains a lowercase letter (a-z)","status":"✅ Pass"},{"rule":"Contains a digit (0-9)","status":"❌ Fail"},{"rule":"Contains no whitespace","status":"✅ Pass"}]},"credits_used":5,"credits_remaining":null}},"passes_default_policy":{"summary":"Passes default policy","value":{"tool":"password-policy-tester","tool_version":"1.0.2","outputs":{"result":[{"rule":"Overall","status":"✅ Pass"},{"rule":"At least 8 characters","status":"✅ Pass"},{"rule":"Contains an uppercase letter (A-Z)","status":"✅ Pass"},{"rule":"Contains a lowercase letter (a-z)","status":"✅ Pass"},{"rule":"Contains a digit (0-9)","status":"✅ Pass"},{"rule":"Contains no whitespace","status":"✅ Pass"}]},"credits_used":5,"credits_remaining":null}},"symbol_requirement_forbidden_text_max_length":{"summary":"Symbol requirement + forbidden text + max length","value":{"tool":"password-policy-tester","tool_version":"1.0.2","outputs":{"result":[{"rule":"Overall","status":"❌ Fail"},{"rule":"At least 8 characters","status":"✅ Pass"},{"rule":"At most 10 characters","status":"❌ Fail"},{"rule":"Contains a lowercase letter (a-z)","status":"✅ Pass"},{"rule":"Contains a digit (0-9)","status":"✅ Pass"},{"rule":"Contains a symbol (e.g. !@#$%^&*)","status":"❌ Fail"},{"rule":"Contains no whitespace","status":"✅ Pass"},{"rule":"Doesn't contain \"admin\"","status":"❌ Fail"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Policy report","items":{"type":"object","properties":{"rule":{"type":"string","description":"Rule"},"status":{"type":"string","description":"Status"}}},"x-iotools-columns":["rule","status"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/password-strength-analyzer":{"post":{"operationId":"run_password_strength_analyzer","summary":"Password Strength Analyzer","tags":["Utilities"],"description":"Score a password's strength (Weak/Fair/Good/Strong) and get specific, actionable feedback — length, character variety, common-password matches, repeated/sequential characters, and keyboard-walk patterns like \"qwerty\". Runs entirely in your browser; the password is never sent anywhere.\n\n[Try Password Strength Analyzer in your browser →](https://iotools.cloud/tool/password-strength-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password"}},"required":["password"]},"examples":{"weak_common_password":{"summary":"Weak — common password","value":{"password":"password"}},"weak_repeated_sequential_and_keyboard_row_characters":{"summary":"Weak — repeated, sequential and keyboard-row characters","value":{"password":"aaaa1234"}},"good_decent_length_and_variety_no_symbols":{"summary":"Good — decent length and variety, no symbols","value":{"password":"Summer2024"}},"strong_long_random_full_character_variety":{"summary":"Strong — long, random, full character variety","value":{"password":"vB9$Lk3#Qw7&Zm5!"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"weak_common_password":{"summary":"Weak — common password","value":{"tool":"password-strength-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Strength","value":"Weak"},{"metric":"Score","value":"0/100"},{"metric":"Entropy","value":"37.6 bits"},{"metric":"Length","value":"8 characters"},{"metric":"Character types used","value":"Lowercase"}],"feedback":[{"feedback":"This is one of the most common passwords in the world — choose something unique."},{"feedback":"Consider using 12 or more characters for stronger protection."},{"feedback":"Add uppercase letters (A-Z)."},{"feedback":"Add numbers (0-9)."},{"feedback":"Add symbols (e.g. !@#$%^&*)."}]},"credits_used":5,"credits_remaining":null}},"weak_repeated_sequential_and_keyboard_row_characters":{"summary":"Weak — repeated, sequential and keyboard-row characters","value":{"tool":"password-strength-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Strength","value":"Weak"},{"metric":"Score","value":"0/100"},{"metric":"Entropy","value":"41.4 bits"},{"metric":"Length","value":"8 characters"},{"metric":"Character types used","value":"Lowercase, Digits"}],"feedback":[{"feedback":"Consider using 12 or more characters for stronger protection."},{"feedback":"Add uppercase letters (A-Z)."},{"feedback":"Add symbols (e.g. !@#$%^&*)."},{"feedback":"Avoid repeating the same character multiple times (e.g. \"aaa\")."},{"feedback":"Avoid sequential characters (e.g. \"abcd\", \"1234\")."},{"feedback":"Avoid keyboard patterns (e.g. \"qwerty\", \"asdf\")."}]},"credits_used":5,"credits_remaining":null}},"good_decent_length_and_variety_no_symbols":{"summary":"Good — decent length and variety, no symbols","value":{"tool":"password-strength-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Strength","value":"Good"},{"metric":"Score","value":"57/100"},{"metric":"Entropy","value":"59.5 bits"},{"metric":"Length","value":"10 characters"},{"metric":"Character types used","value":"Lowercase, Uppercase, Digits"}],"feedback":[{"feedback":"Consider using 12 or more characters for stronger protection."},{"feedback":"Add symbols (e.g. !@#$%^&*)."}]},"credits_used":5,"credits_remaining":null}},"strong_long_random_full_character_variety":{"summary":"Strong — long, random, full character variety","value":{"tool":"password-strength-analyzer","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Strength","value":"Strong"},{"metric":"Score","value":"100/100"},{"metric":"Entropy","value":"105.1 bits"},{"metric":"Length","value":"16 characters"},{"metric":"Character types used","value":"Lowercase, Uppercase, Digits, Symbols"}],"feedback":[{"feedback":"Great password! No obvious weaknesses detected."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"feedback":{"type":"array","description":"Feedback","items":{"type":"object","properties":{"feedback":{"type":"string","description":"Feedback"}}},"x-iotools-columns":["feedback"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/phone-number-extractor":{"post":{"operationId":"run_phone_number_extractor","summary":"Phone Number Extractor","tags":["Utilities"],"description":"Extract and de-duplicate every phone number from a block of text or a pasted document. Recognizes US, international (+country code), toll-free, parenthesized and dotted/dashed/spaced formats, keeps the richest spelling of each number, and counts the results.\n\n[Try Phone Number Extractor in your browser →](https://iotools.cloud/tool/phone-number-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text with Phone Numbers"},"separator":{"enum":["newline","comma","semicolon"],"description":"Separator"}},"required":[]},"examples":{"extract_from_mixed_format_text":{"summary":"Extract from mixed-format text","value":{"inputText":"Contact info:\nJohn Doe: +1 (555) 123-4567\nJane Smith: 555-987-6543\nInternational Office: +44 20 7946 0958\nCustomer Support: 1-800-555-9876\nAustralian Branch: +61 2 8765 4321\nID: AF39-456, Phone: 987.654.3210\nEmergency: 911\nJane work number is (123) 456-7890 and her home is 098-765-4321\nText me anytime at 555.123.4567 or call me on 987 654 3210.","separator":"newline"}},"de_duplicate_one_number_across_formats_comma_separated":{"summary":"De-duplicate one number across formats (comma-separated)","value":{"inputText":"Reach me at (555) 123-4567 or 555-123-4567 or 5551234567 anytime.","separator":"comma"}},"no_phone_numbers_present":{"summary":"No phone numbers present","value":{"inputText":"Call me sometime, my extension is on the memo. Order #45 shipped 2023-11-15.","separator":"newline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extract_from_mixed_format_text":{"summary":"Extract from mixed-format text","value":{"tool":"phone-number-extractor","tool_version":"1.0.2","outputs":{"count":"9","extractedPhones":"+1 (555) 123-4567\n555-987-6543\n+44 20 7946 0958\n1-800-555-9876\n+61 2 8765 4321\n987.654.3210\n911\n(123) 456-7890\n098-765-4321"},"credits_used":5,"credits_remaining":null}},"de_duplicate_one_number_across_formats_comma_separated":{"summary":"De-duplicate one number across formats (comma-separated)","value":{"tool":"phone-number-extractor","tool_version":"1.0.2","outputs":{"count":"1","extractedPhones":"(555) 123-4567"},"credits_used":5,"credits_remaining":null}},"no_phone_numbers_present":{"summary":"No phone numbers present","value":{"tool":"phone-number-extractor","tool_version":"1.0.2","outputs":{"count":"0","extractedPhones":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"Phone numbers found"},"extractedPhones":{"type":"string","description":"Extracted Phone Numbers"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/phone-number-validator":{"post":{"operationId":"run_phone_number_validator","summary":"Phone Number Validator","tags":["Utilities"],"description":"Check whether a phone number is real and dialable for its country. Reports valid/invalid, the line type (mobile, fixed line, toll free, VoIP, premium rate...), and — when invalid — the reason (too short, too long, unrecognized country code, bad area code/prefix).\n\n[Try Phone Number Validator in your browser →](https://iotools.cloud/tool/phone-number-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phoneInput":{"type":"string","description":"Phone Number"},"countryCode":{"enum":["US","GB","CA","AU","DE","FR","IN","JP","CN","BR","MX","IT","ES","NL","KR","RU","ID","TR","SA","ZA","NG","AR","CO","PH","VN","TH","EG","PK","BD","PL","SE","NO","DK","FI","CH","AT","BE","PT","IE","NZ","SG","MY","HK","TW","IL","AE"],"description":"Default Country"}},"required":["phoneInput"]},"examples":{"valid_us_number":{"summary":"Valid US number","value":{"phoneInput":"(415) 555-2671","countryCode":"US"}},"valid_uk_mobile":{"summary":"Valid UK mobile","value":{"phoneInput":"+44 7400 123456","countryCode":"US"}},"too_short_to_be_valid":{"summary":"Too short to be valid","value":{"phoneInput":"12345","countryCode":"US"}},"invalid_area_code":{"summary":"Invalid area code","value":{"phoneInput":"+1 511 555 0100","countryCode":"US"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_us_number":{"summary":"Valid US number","value":{"tool":"phone-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Valid","value":"Yes"},{"property":"Reason","value":"—"},{"property":"Number Type","value":"Fixed Line or Mobile"},{"property":"Country","value":"United States (US)"},{"property":"Country Calling Code","value":"+1"},{"property":"Possible Number","value":"Yes"},{"property":"E.164 Format","value":"+14155552671"}]},"credits_used":5,"credits_remaining":null}},"valid_uk_mobile":{"summary":"Valid UK mobile","value":{"tool":"phone-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Valid","value":"Yes"},{"property":"Reason","value":"—"},{"property":"Number Type","value":"Mobile"},{"property":"Country","value":"United Kingdom (GB)"},{"property":"Country Calling Code","value":"+44"},{"property":"Possible Number","value":"Yes"},{"property":"E.164 Format","value":"+447400123456"}]},"credits_used":5,"credits_remaining":null}},"too_short_to_be_valid":{"summary":"Too short to be valid","value":{"tool":"phone-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Valid","value":"No"},{"property":"Reason","value":"Too short to be a valid number"},{"property":"Number Type","value":"—"},{"property":"Country","value":"United States (US)"},{"property":"Country Calling Code","value":"+1"},{"property":"Possible Number","value":"No"},{"property":"E.164 Format","value":"+112345"}]},"credits_used":5,"credits_remaining":null}},"invalid_area_code":{"summary":"Invalid area code","value":{"tool":"phone-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Valid","value":"No"},{"property":"Reason","value":"Invalid area code or prefix for this country"},{"property":"Number Type","value":"—"},{"property":"Country","value":"Unknown"},{"property":"Country Calling Code","value":"+1"},{"property":"Possible Number","value":"Yes"},{"property":"E.164 Format","value":"+15115550100"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/port-lookup":{"post":{"operationId":"run_port_lookup","summary":"Port Lookup","tags":["Utilities"],"description":"Look up TCP, UDP, SCTP and DCCP port assignments from the IANA registry. Search by port number (443), service name (https) or keyword, and filter by protocol and port range.\n\n[Try Port Lookup in your browser →](https://iotools.cloud/tool/port-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":"Search"},"protocol":{"enum":["all","tcp","udp","sctp","dccp"],"description":"Protocol"},"portRange":{"enum":["all","well-known","registered"],"description":"Port Range"}},"required":[]},"examples":{"look_up_port_443_https":{"summary":"Look up port 443 (HTTPS)","value":{"search":"443","protocol":"all","portRange":"all"}},"search_by_service_name_ssh_over_tcp":{"summary":"Search by service name (SSH over TCP)","value":{"search":"ssh","protocol":"tcp","portRange":"well-known"}},"unassigned_unknown_port":{"summary":"Unassigned / unknown port","value":{"search":"60000","protocol":"all","portRange":"all"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"look_up_port_443_https":{"summary":"Look up port 443 (HTTPS)","value":{"tool":"port-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 3 entries.","results":[{"port":"443","protocol":"SCTP","service-name":"https","description":"HTTPS","range":"Well-Known"},{"port":"443","protocol":"TCP","service-name":"https","description":"http protocol over TLS/SSL","range":"Well-Known"},{"port":"443","protocol":"UDP","service-name":"https","description":"http protocol over TLS/SSL","range":"Well-Known"}]},"credits_used":5,"credits_remaining":null}},"search_by_service_name_ssh_over_tcp":{"summary":"Search by service name (SSH over TCP)","value":{"tool":"port-lookup","tool_version":"1.0.2","outputs":{"summary":"Showing 3 entries.","results":[{"port":"22","protocol":"TCP","service-name":"ssh","description":"The Secure Shell (SSH) Protocol","range":"Well-Known"},{"port":"614","protocol":"TCP","service-name":"sshell","description":"SSLshell","range":"Well-Known"},{"port":"830","protocol":"TCP","service-name":"netconf-ssh","description":"NETCONF over SSH","range":"Well-Known"}]},"credits_used":5,"credits_remaining":null}},"unassigned_unknown_port":{"summary":"Unassigned / unknown port","value":{"tool":"port-lookup","tool_version":"1.0.2","outputs":{"summary":"No ports found matching your search.","results":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Results"},"results":{"type":"array","description":"Matches","items":{"type":"object","properties":{"port":{"type":"string","description":"Port"},"protocol":{"type":"string","description":"Protocol"},"service-name":{"type":"string","description":"Service Name"},"description":{"type":"string","description":"Description"},"range":{"type":"string","description":"Range"}}},"x-iotools-columns":["port","protocol","service-name","description","range"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ssl-certificate-decoder":{"post":{"operationId":"run_ssl_certificate_decoder","summary":"SSL Certificate Decoder","tags":["Utilities"],"description":"Decode a PEM-encoded SSL/TLS (X.509) certificate — read its subject, issuer, validity window, serial number, signature and public-key algorithms, extensions (Subject Alternative Names, key usage, basic constraints) and SHA-256/SHA-1 fingerprints. Parsed entirely in your browser; the certificate is never uploaded.\n\n[Try SSL Certificate Decoder in your browser →](https://iotools.cloud/tool/ssl-certificate-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"certPem":{"type":"string","description":"PEM Certificate"},"referenceTime":{"type":"string","description":"Reference Time (now)"}},"required":[]},"examples":{"isrg_root_x1_real_self_signed_rsa_4096_root_ca":{"summary":"ISRG Root X1 (real self-signed RSA-4096 root CA)","value":{"certPem":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\nWhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\nZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\nMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\nh77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\nA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\nT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\nB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\nB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\nKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\nOlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\njh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\nqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\nrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\nhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\nubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\nNFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\nORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\nTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\njNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\noyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\nmRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\nemyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n-----END CERTIFICATE-----","referenceTime":"2024-01-01T00:00:00Z"}},"same_certificate_evaluated_after_its_2035_expiry":{"summary":"Same certificate, evaluated after its 2035 expiry","value":{"certPem":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\nWhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\nZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\nMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\nh77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\nA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\nT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\nB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\nB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\nKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\nOlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\njh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\nqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\nrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\nhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\nubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\nNFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\nORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\nTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\njNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\noyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\nmRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\nemyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n-----END CERTIFICATE-----","referenceTime":"2036-01-01T00:00:00Z"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"isrg_root_x1_real_self_signed_rsa_4096_root_ca":{"summary":"ISRG Root X1 (real self-signed RSA-4096 root CA)","value":{"tool":"ssl-certificate-decoder","tool_version":"1.0.2","outputs":{"warnings":[{"severity":"Warning","message":"This is a self-signed certificate (Subject = Issuer)."}],"subject":[{"field":"C (Country)","value":"US"},{"field":"O (Organization)","value":"Internet Security Research Group"},{"field":"CN (Common Name)","value":"ISRG Root X1"}],"issuer":[{"field":"C (Country)","value":"US"},{"field":"O (Organization)","value":"Internet Security Research Group"},{"field":"CN (Common Name)","value":"ISRG Root X1"}],"validity":[{"field":"Not Before","value":"2015-06-04T11:04:38Z"},{"field":"Not After","value":"2035-06-04T11:04:38Z"},{"field":"Status","value":"Valid (expires in 4172d 11h)"}],"details":[{"property":"Version","value":"v3"},{"property":"Serial Number","value":"00:82:10:CF:B0:D2:40:E3:59:44:63:E0:BB:63:82:8B:00"},{"property":"Signature Algorithm","value":"SHA-256 with RSA"},{"property":"Public Key Algorithm","value":"RSA"},{"property":"Public Key Size","value":"4096 bits"},{"property":"Self-Signed","value":"Yes"}],"extensions":[{"extension":"Key Usage (critical)","value":"Certificate Sign, CRL Sign"},{"extension":"Basic Constraints (critical)","value":"CA: TRUE"},{"extension":"Subject Key Identifier","value":"041479b459e67bb6e5e40173800888c81a58f6e99b6e"}],"fingerprints":[{"algorithm":"SHA-256","fingerprint":"96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6"},{"algorithm":"SHA-1","fingerprint":"CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8"}]},"credits_used":5,"credits_remaining":null}},"same_certificate_evaluated_after_its_2035_expiry":{"summary":"Same certificate, evaluated after its 2035 expiry","value":{"tool":"ssl-certificate-decoder","tool_version":"1.0.2","outputs":{"warnings":[{"severity":"Danger","message":"Certificate has expired — expired 210d 12h ago (at 2035-06-04T11:04:38Z)."},{"severity":"Warning","message":"This is a self-signed certificate (Subject = Issuer)."}],"subject":[{"field":"C (Country)","value":"US"},{"field":"O (Organization)","value":"Internet Security Research Group"},{"field":"CN (Common Name)","value":"ISRG Root X1"}],"issuer":[{"field":"C (Country)","value":"US"},{"field":"O (Organization)","value":"Internet Security Research Group"},{"field":"CN (Common Name)","value":"ISRG Root X1"}],"validity":[{"field":"Not Before","value":"2015-06-04T11:04:38Z"},{"field":"Not After","value":"2035-06-04T11:04:38Z"},{"field":"Status","value":"Expired (210d 12h ago)"}],"details":[{"property":"Version","value":"v3"},{"property":"Serial Number","value":"00:82:10:CF:B0:D2:40:E3:59:44:63:E0:BB:63:82:8B:00"},{"property":"Signature Algorithm","value":"SHA-256 with RSA"},{"property":"Public Key Algorithm","value":"RSA"},{"property":"Public Key Size","value":"4096 bits"},{"property":"Self-Signed","value":"Yes"}],"extensions":[{"extension":"Key Usage (critical)","value":"Certificate Sign, CRL Sign"},{"extension":"Basic Constraints (critical)","value":"CA: TRUE"},{"extension":"Subject Key Identifier","value":"041479b459e67bb6e5e40173800888c81a58f6e99b6e"}],"fingerprints":[{"algorithm":"SHA-256","fingerprint":"96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6"},{"algorithm":"SHA-1","fingerprint":"CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"warnings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","message"]},"subject":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"issuer":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"validity":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"details":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"extensions":{"type":"array","items":{"type":"object","properties":{"extension":{"type":"string","description":"Extension"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["extension","value"]},"fingerprints":{"type":"array","items":{"type":"object","properties":{"algorithm":{"type":"string","description":"Algorithm"},"fingerprint":{"type":"string","description":"Fingerprint"}}},"x-iotools-columns":["algorithm","fingerprint"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/mac-address-lookup":{"post":{"operationId":"run_mac_address_lookup","summary":"MAC Address Lookup","tags":["Utilities"],"description":"Look up the hardware vendor behind a MAC address by resolving its OUI prefix (the first three bytes) against the IEEE registry. Accepts full or partial addresses in any separator style.\n\n[Try MAC Address Lookup in your browser →](https://iotools.cloud/tool/mac-address-lookup/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"macAddress":{"type":"string","description":"MAC Address"}},"required":["macAddress"]},"examples":{"cisco_device":{"summary":"Cisco device","value":{"macAddress":"00:23:AB:7B:58:99"}},"hyphenated_apple_address":{"summary":"Hyphenated Apple address","value":{"macAddress":"3C-15-C2-11-22-33"}},"oui_prefix_only":{"summary":"OUI prefix only","value":{"macAddress":"D8:5E:D3"}},"unregistered_prefix":{"summary":"Unregistered prefix","value":{"macAddress":"AB:CD:EF:12:34:56"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"cisco_device":{"summary":"Cisco device","value":{"tool":"mac-address-lookup","tool_version":"1.0.2","outputs":{"vendor":"Cisco Systems, Inc","details":[{"property":"MAC Address","value":"00:23:AB:7B:58:99"},{"property":"OUI Prefix","value":"00:23:AB"},{"property":"Vendor","value":"Cisco Systems, Inc"}]},"credits_used":5,"credits_remaining":null}},"hyphenated_apple_address":{"summary":"Hyphenated Apple address","value":{"tool":"mac-address-lookup","tool_version":"1.0.2","outputs":{"vendor":"Apple, Inc.","details":[{"property":"MAC Address","value":"3C:15:C2:11:22:33"},{"property":"OUI Prefix","value":"3C:15:C2"},{"property":"Vendor","value":"Apple, Inc."}]},"credits_used":5,"credits_remaining":null}},"oui_prefix_only":{"summary":"OUI prefix only","value":{"tool":"mac-address-lookup","tool_version":"1.0.2","outputs":{"vendor":"GIGA-BYTE TECHNOLOGY CO.,LTD.","details":[{"property":"MAC Address","value":"D8:5E:D3"},{"property":"OUI Prefix","value":"D8:5E:D3"},{"property":"Vendor","value":"GIGA-BYTE TECHNOLOGY CO.,LTD."}]},"credits_used":5,"credits_remaining":null}},"unregistered_prefix":{"summary":"Unregistered prefix","value":{"tool":"mac-address-lookup","tool_version":"1.0.2","outputs":{"vendor":"Vendor not found","details":[{"property":"MAC Address","value":"AB:CD:EF:12:34:56"},{"property":"OUI Prefix","value":"AB:CD:EF"},{"property":"Vendor","value":"Vendor not found"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"vendor":{"type":"string","description":"Vendor"},"details":{"type":"array","description":"Vendor Details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/open-graph-checker":{"post":{"operationId":"run_open_graph_checker","summary":"Open Graph Checker","tags":["Utilities"],"description":"Fetch any URL and inspect its Open Graph, Twitter Card and standard meta tags — see exactly how the page previews when shared on social media, and spot missing tags.\n\n[Try Open Graph Checker in your browser →](https://iotools.cloud/tool/open-graph-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"github":{"summary":"GitHub","value":{"url":"https://github.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"general":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","description":"Tag"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["tag","value"]},"openGraph":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","description":"Tag"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["tag","value"]},"twitter":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","description":"Tag"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["tag","value"]},"raw":{"type":"string","description":"Raw tags"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/readability-score":{"post":{"operationId":"run_readability_score","summary":"Readability Score Checker","tags":["Utilities"],"description":"Analyze pasted text for readability with Flesch Reading Ease, Flesch-Kincaid Grade Level, Gunning Fog, SMOG, Coleman-Liau and Automated Readability Index scores, plus word/sentence/syllable counts.\n\n[Try Readability Score Checker in your browser →](https://iotools.cloud/tool/readability-score/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"}},"required":[]},"examples":{"simple_text":{"summary":"Simple text","value":{"inputText":"The cat sat on the mat. The dog ran fast. Sam had a red hat. We go to the park. It was a fun day."}},"moderate_text":{"summary":"Moderate text","value":{"inputText":"Reading comprehension improves significantly when students practice regularly with varied texts. Teachers often recommend a balanced approach that combines phonics instruction with exposure to engaging stories. This method builds vocabulary while keeping young readers motivated throughout the school year."}},"complex_academic_text":{"summary":"Complex/academic text","value":{"inputText":"The epistemological ramifications of quantum indeterminacy necessitate a fundamental reconceptualization of causality, wherein probabilistic superpositions supersede the deterministic frameworks that characterized classical mechanistic philosophy. Contemporary theoretical physicists continue to grapple with these ontologically perplexing implications."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"simple_text":{"summary":"Simple text","value":{"tool":"readability-score","tool_version":"1.0.2","outputs":{"scores":[{"metric":"Flesch Reading Ease","score":"100.0","assessment":"Very Easy (Kindergarten equivalent)"},{"metric":"Flesch-Kincaid Grade Level","score":"-1.8","assessment":"Very Easy"},{"metric":"Gunning Fog Index","score":"2.0","assessment":"Very Easy"},{"metric":"SMOG Index","score":"3.1","assessment":"Very Easy"},{"metric":"Coleman-Liau Index","score":"-5.7","assessment":"Very Easy"},{"metric":"Automated Readability Index","score":"-0.7","assessment":"Very Easy"}],"stats":[{"metric":"Words","value":"25"},{"metric":"Sentences","value":"5"},{"metric":"Characters","value":"97"},{"metric":"Syllables","value":"25"},{"metric":"Avg words/sentence","value":"5.00"},{"metric":"Avg syllables/word","value":"1.00"},{"metric":"Estimated reading time","value":"Less than 1 min"}]},"credits_used":5,"credits_remaining":null}},"moderate_text":{"summary":"Moderate text","value":{"tool":"readability-score","tool_version":"1.0.2","outputs":{"scores":[{"metric":"Flesch Reading Ease","score":"20.1","assessment":"Difficult (College level equivalent)"},{"metric":"Flesch-Kincaid Grade Level","score":"13.7","assessment":"Difficult"},{"metric":"Gunning Fog Index","score":"14.4","assessment":"Difficult"},{"metric":"SMOG Index","score":"13.0","assessment":"Difficult"},{"metric":"Coleman-Liau Index","score":"21.9","assessment":"Very Difficult"},{"metric":"Automated Readability Index","score":"22.0","assessment":"Very Difficult"}],"stats":[{"metric":"Words","value":"39"},{"metric":"Sentences","value":"3"},{"metric":"Characters","value":"306"},{"metric":"Syllables","value":"80"},{"metric":"Avg words/sentence","value":"13.00"},{"metric":"Avg syllables/word","value":"2.05"},{"metric":"Estimated reading time","value":"Less than 1 min"}]},"credits_used":5,"credits_remaining":null}},"complex_academic_text":{"summary":"Complex/academic text","value":{"tool":"readability-score","tool_version":"1.0.2","outputs":{"scores":[{"metric":"Flesch Reading Ease","score":"0.0","assessment":"Very Difficult (Graduate level equivalent)"},{"metric":"Flesch-Kincaid Grade Level","score":"30.3","assessment":"Very Difficult"},{"metric":"Gunning Fog Index","score":"33.3","assessment":"Very Difficult"},{"metric":"SMOG Index","score":"22.5","assessment":"Very Difficult"},{"metric":"Coleman-Liau Index","score":"35.6","assessment":"Very Difficult"},{"metric":"Automated Readability Index","score":"34.8","assessment":"Very Difficult"}],"stats":[{"metric":"Words","value":"35"},{"metric":"Sentences","value":"2"},{"metric":"Characters","value":"353"},{"metric":"Syllables","value":"116"},{"metric":"Avg words/sentence","value":"17.50"},{"metric":"Avg syllables/word","value":"3.31"},{"metric":"Estimated reading time","value":"Less than 1 min"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"scores":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"score":{"type":"string","description":"Score"},"assessment":{"type":"string","description":"Assessment"}}},"x-iotools-columns":["metric","score","assessment"]},"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/regex-cheatsheet":{"post":{"operationId":"run_regex_cheatsheet","summary":"Regex Cheatsheet","tags":["Utilities"],"description":"Quick reference for regular expression syntax — character classes, anchors, quantifiers, groups, lookaheads/lookbehinds, flags, and common patterns (email, URL, IPv4, hex color, date, phone, password). Search or filter by category.\n\n[Try Regex Cheatsheet in your browser →](https://iotools.cloud/tool/regex-cheatsheet/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"searchPattern":{"type":"string","description":"Search"},"category":{"enum":["all","anchors","character-classes","quantifiers","groups","lookaround","flags","common"],"description":"Category"}},"required":[]},"examples":{"full_cheatsheet_no_filter":{"summary":"Full cheatsheet (no filter)","value":{"searchPattern":"","category":"all"}},"filter_by_category_anchors":{"summary":"Filter by category: Anchors","value":{"searchPattern":"","category":"anchors"}},"search_email":{"summary":"Search: email","value":{"searchPattern":"email","category":"all"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_cheatsheet_no_filter":{"summary":"Full cheatsheet (no filter)","value":{"tool":"regex-cheatsheet","tool_version":"1.0.2","outputs":{"cheatsheet":[{"pattern":"^","description":"Start of string / line","example":"^Hello","category":"Anchors"},{"pattern":"$","description":"End of string / line","example":"world$","category":"Anchors"},{"pattern":"\\b","description":"Word boundary","example":"\\bword\\b","category":"Anchors"},{"pattern":"\\B","description":"Non-word boundary","example":"\\Bword\\B","category":"Anchors"},{"pattern":"\\A","description":"Start of string (absolute)","example":"\\AHello","category":"Anchors"},{"pattern":"\\Z","description":"End of string (absolute)","example":"end\\Z","category":"Anchors"},{"pattern":".","description":"Any character except newline","example":"a.c","category":"Character Classes"},{"pattern":"\\d","description":"Digit (0-9)","example":"\\d{3}","category":"Character Classes"},{"pattern":"\\D","description":"Non-digit","example":"\\D+","category":"Character Classes"},{"pattern":"\\w","description":"Word character (a-z, A-Z, 0-9, _)","example":"\\w+","category":"Character Classes"},{"pattern":"\\W","description":"Non-word character","example":"\\W+","category":"Character Classes"},{"pattern":"\\s","description":"Whitespace (space, tab, newline)","example":"\\s+","category":"Character Classes"},{"pattern":"\\S","description":"Non-whitespace","example":"\\S+","category":"Character Classes"},{"pattern":"[abc]","description":"Character set (a, b, or c)","example":"[aeiou]","category":"Character Classes"},{"pattern":"[^abc]","description":"Negated set (not a, b, or c)","example":"[^0-9]","category":"Character Classes"},{"pattern":"[a-z]","description":"Character range","example":"[a-zA-Z]","category":"Character Classes"},{"pattern":"*","description":"Zero or more","example":"ab*c","category":"Quantifiers"},{"pattern":"+","description":"One or more","example":"ab+c","category":"Quantifiers"},{"pattern":"?","description":"Zero or one (optional)","example":"colou?r","category":"Quantifiers"},{"pattern":"{n}","description":"Exactly n times","example":"\\d{4}","category":"Quantifiers"},{"pattern":"{n,}","description":"n or more times","example":"\\d{2,}","category":"Quantifiers"},{"pattern":"{n,m}","description":"Between n and m times","example":"\\d{2,4}","category":"Quantifiers"},{"pattern":"*?","description":"Zero or more (lazy)","example":"<.*?>","category":"Quantifiers"},{"pattern":"+?","description":"One or more (lazy)","example":"\\w+?","category":"Quantifiers"},{"pattern":"??","description":"Zero or one (lazy)","example":"\\d??","category":"Quantifiers"},{"pattern":"(abc)","description":"Capturing group","example":"(\\d+)-(\\d+)","category":"Groups & References"},{"pattern":"(?:abc)","description":"Non-capturing group","example":"(?:ab|cd)+","category":"Groups & References"},{"pattern":"\\1","description":"Backreference to group 1","example":"(\\w+)\\s\\1","category":"Groups & References"},{"pattern":"(?<name>abc)","description":"Named capturing group","example":"(?<year>\\d{4})","category":"Groups & References"},{"pattern":"\\k<name>","description":"Named backreference","example":"\\k<year>","category":"Groups & References"},{"pattern":"(a|b)","description":"Alternation (a or b)","example":"(cat|dog)","category":"Groups & References"},{"pattern":"(?=abc)","description":"Positive lookahead","example":"\\w+(?=ing)","category":"Lookahead & Lookbehind"},{"pattern":"(?!abc)","description":"Negative lookahead","example":"\\d+(?!px)","category":"Lookahead & Lookbehind"},{"pattern":"(?<=abc)","description":"Positive lookbehind","example":"(?<=\\$)\\d+","category":"Lookahead & Lookbehind"},{"pattern":"(?<!abc)","description":"Negative lookbehind","example":"(?<!\\d)\\d+","category":"Lookahead & Lookbehind"},{"pattern":"g","description":"Global — match all occurrences","example":"/pattern/g","category":"Flags"},{"pattern":"i","description":"Case-insensitive matching","example":"/hello/i","category":"Flags"},{"pattern":"m","description":"Multiline — ^ and $ match line boundaries","example":"/^line/m","category":"Flags"},{"pattern":"s","description":"Dotall — dot matches newlines","example":"/a.b/s","category":"Flags"},{"pattern":"u","description":"Unicode — enable Unicode matching","example":"/\\p{L}/u","category":"Flags"},{"pattern":"y","description":"Sticky — match at lastIndex position","example":"/\\d+/y","category":"Flags"},{"pattern":"^[\\w.-]+@[\\w.-]+\\.\\w{2,}$","description":"Email address","example":"user@example.com","category":"Common Patterns"},{"pattern":"^https?://[\\w.-]+(?:/[\\w./-]*)?$","description":"URL","example":"https://example.com/path","category":"Common Patterns"},{"pattern":"^\\d{1,3}(\\.\\d{1,3}){3}$","description":"IPv4 address","example":"192.168.1.1","category":"Common Patterns"},{"pattern":"^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$","description":"Hex color code","example":"#ff6600","category":"Common Patterns"},{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Date (YYYY-MM-DD)","example":"2026-04-10","category":"Common Patterns"},{"pattern":"^\\+?[\\d\\s()-]{7,15}$","description":"Phone number","example":"+1 (555) 123-4567","category":"Common Patterns"},{"pattern":"^-?\\d+(\\.\\d+)?$","description":"Number (integer or decimal)","example":"-42.5","category":"Common Patterns"},{"pattern":"^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).{8,}$","description":"Strong password (8+ chars)","example":"Passw0rd!","category":"Common Patterns"}]},"credits_used":5,"credits_remaining":null}},"filter_by_category_anchors":{"summary":"Filter by category: Anchors","value":{"tool":"regex-cheatsheet","tool_version":"1.0.2","outputs":{"cheatsheet":[{"pattern":"^","description":"Start of string / line","example":"^Hello","category":"Anchors"},{"pattern":"$","description":"End of string / line","example":"world$","category":"Anchors"},{"pattern":"\\b","description":"Word boundary","example":"\\bword\\b","category":"Anchors"},{"pattern":"\\B","description":"Non-word boundary","example":"\\Bword\\B","category":"Anchors"},{"pattern":"\\A","description":"Start of string (absolute)","example":"\\AHello","category":"Anchors"},{"pattern":"\\Z","description":"End of string (absolute)","example":"end\\Z","category":"Anchors"}]},"credits_used":5,"credits_remaining":null}},"search_email":{"summary":"Search: email","value":{"tool":"regex-cheatsheet","tool_version":"1.0.2","outputs":{"cheatsheet":[{"pattern":"^[\\w.-]+@[\\w.-]+\\.\\w{2,}$","description":"Email address","example":"user@example.com","category":"Common Patterns"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"cheatsheet":{"type":"array","items":{"type":"object","properties":{"pattern":{"type":"string","description":"Pattern"},"description":{"type":"string","description":"Description"},"example":{"type":"string","description":"Example"},"category":{"type":"string","description":"Category"}}},"x-iotools-columns":["pattern","description","example","category"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/regex-explainer":{"post":{"operationId":"run_regex_explainer","summary":"Regex Explainer","tags":["Utilities"],"description":"Explain a regular expression in plain English — a full sentence summary plus a token-by-token breakdown table (what each piece matches, and how). Supports the g/i/m/s/u flags and their effect on the explanation.\n\n[Try Regex Explainer in your browser →](https://iotools.cloud/tool/regex-explainer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pattern":{"type":"string","description":"Regular Expression Pattern"},"flagGlobal":{"type":"boolean","description":"g — Global (find all matches)"},"flagIgnoreCase":{"type":"boolean","description":"i — Ignore case"},"flagMultiline":{"type":"boolean","description":"m — Multiline (^ and $ match line boundaries)"},"flagDotAll":{"type":"boolean","description":"s — Dot matches newline"},"flagUnicode":{"type":"boolean","description":"u — Unicode mode"}},"required":[]},"examples":{"us_zip_4_style_pattern_with_anchors":{"summary":"US ZIP+4-style pattern with anchors","value":{"pattern":"^\\d{3}-\\d{4}$","flagGlobal":"","flagIgnoreCase":"","flagMultiline":"","flagDotAll":"","flagUnicode":""}},"named_capture_groups_email_style_with_i_flag":{"summary":"Named capture groups (email-style) with i flag","value":{"pattern":"(?<user>[\\w.]+)@(?<domain>[\\w.]+)","flagGlobal":"","flagIgnoreCase":"true","flagMultiline":"","flagDotAll":"","flagUnicode":""}},"alternation_with_a_non_capturing_group":{"summary":"Alternation with a non-capturing group","value":{"pattern":"(?:cat|dog)s?","flagGlobal":"","flagIgnoreCase":"","flagMultiline":"","flagDotAll":"","flagUnicode":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"us_zip_4_style_pattern_with_anchors":{"summary":"US ZIP+4-style pattern with anchors","value":{"tool":"regex-explainer","tool_version":"1.0.2","outputs":{"summary":"Matches the start of the string, then any digit (0–9) — exactly 3 times, then the character \"-\", then any digit (0–9) — exactly 4 times, then the end of the string.","breakdown":[{"token":"^","kind":"Anchor","meaning":"The start of the string"},{"token":"\\d{3}","kind":"Quantified character shorthand","meaning":"Any digit (0–9) — exactly 3 times"},{"token":"-","kind":"Literal character","meaning":"The character \"-\""},{"token":"\\d{4}","kind":"Quantified character shorthand","meaning":"Any digit (0–9) — exactly 4 times"},{"token":"$","kind":"Anchor","meaning":"The end of the string"}]},"credits_used":5,"credits_remaining":null}},"named_capture_groups_email_style_with_i_flag":{"summary":"Named capture groups (email-style) with i flag","value":{"tool":"regex-explainer","tool_version":"1.0.2","outputs":{"summary":"Matches a captured group named \"user\", matching: any one character from this set: a word character (letter, digit, or underscore), \".\" — one or more times, then the character \"@\", then a captured group named \"domain\", matching: any one character from this set: a word character (letter, digit, or underscore), \".\" — one or more times. Flags: i (ignores uppercase/lowercase differences).","breakdown":[{"token":"(?<user>[\\w.]+)","kind":"Named capturing group","meaning":"A captured group named \"user\", matching: any one character from this set: a word character (letter, digit, or underscore), \".\" — one or more times"},{"token":"@","kind":"Literal character","meaning":"The character \"@\""},{"token":"(?<domain>[\\w.]+)","kind":"Named capturing group","meaning":"A captured group named \"domain\", matching: any one character from this set: a word character (letter, digit, or underscore), \".\" — one or more times"}]},"credits_used":5,"credits_remaining":null}},"alternation_with_a_non_capturing_group":{"summary":"Alternation with a non-capturing group","value":{"tool":"regex-explainer","tool_version":"1.0.2","outputs":{"summary":"Matches a group (not captured), matching: either the character \"c\", then the character \"a\", then the character \"t\", or the character \"d\", then the character \"o\", then the character \"g\", then the character \"s\" — zero or one time (optional).","breakdown":[{"token":"(?:cat|dog)","kind":"Non-capturing group","meaning":"A group (not captured), matching: either the character \"c\", then the character \"a\", then the character \"t\", or the character \"d\", then the character \"o\", then the character \"g\""},{"token":"s?","kind":"Quantified literal character","meaning":"The character \"s\" — zero or one time (optional)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Plain-English Summary"},"breakdown":{"type":"array","description":"Token-by-Token Breakdown","items":{"type":"object","properties":{"token":{"type":"string","description":"Token"},"kind":{"type":"string","description":"Kind"},"meaning":{"type":"string","description":"Meaning"}}},"x-iotools-columns":["token","kind","meaning"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/regex-tester":{"post":{"operationId":"run_regex_tester","summary":"Regex Tester","tags":["Utilities"],"description":"Test a JavaScript regular expression against sample text — see every match with its position, plus positional and named capture groups.\n\n[Try Regex Tester in your browser →](https://iotools.cloud/tool/regex-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pattern":{"type":"string","description":"Regular Expression Pattern"},"flagGlobal":{"type":"boolean","description":"g — Find all matches (global)"},"flagIgnoreCase":{"type":"boolean","description":"i — Ignore case"},"flagMultiline":{"type":"boolean","description":"m — Multiline (^ and $ match line boundaries)"},"flagDotAll":{"type":"boolean","description":"s — Dot matches newline"},"flagUnicode":{"type":"boolean","description":"u — Unicode mode"},"testString":{"type":"string","description":"Test String"}},"required":[]},"examples":{"extract_email_addresses":{"summary":"Extract email addresses","value":{"pattern":"\\w+@\\w+\\.\\w+","flagGlobal":"true","testString":"Contact us at hello@example.com or support@iotools.cloud"}},"named_capture_groups_user_domain":{"summary":"Named capture groups (user + domain)","value":{"pattern":"(?<user>\\w+)@(?<domain>\\w+\\.\\w+)","flagGlobal":"true","testString":"Contact us at hello@example.com or support@iotools.cloud"}},"no_matches":{"summary":"No matches","value":{"pattern":"\\d{5}","flagGlobal":"true","testString":"Contact us at hello@example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extract_email_addresses":{"summary":"Extract email addresses","value":{"tool":"regex-tester","tool_version":"1.0.2","outputs":{"summary":"2 matches found.","matches":[{"match":"1","matched-text":"hello@example.com","start":"14","end":"31","capture-groups":"—"},{"match":"2","matched-text":"support@iotools.cloud","start":"35","end":"56","capture-groups":"—"}]},"credits_used":5,"credits_remaining":null}},"named_capture_groups_user_domain":{"summary":"Named capture groups (user + domain)","value":{"tool":"regex-tester","tool_version":"1.0.2","outputs":{"summary":"2 matches found.","matches":[{"match":"1","matched-text":"hello@example.com","start":"14","end":"31","capture-groups":"1: hello | 2: example.com | user: hello | domain: example.com"},{"match":"2","matched-text":"support@iotools.cloud","start":"35","end":"56","capture-groups":"1: support | 2: iotools.cloud | user: support | domain: iotools.cloud"}]},"credits_used":5,"credits_remaining":null}},"no_matches":{"summary":"No matches","value":{"tool":"regex-tester","tool_version":"1.0.2","outputs":{"summary":"No matches found.","matches":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"matches":{"type":"array","description":"Matches","items":{"type":"object","properties":{"match":{"type":"string","description":"#"},"matched-text":{"type":"string","description":"Matched Text"},"start":{"type":"string","description":"Start"},"end":{"type":"string","description":"End"},"capture-groups":{"type":"string","description":"Capture Groups"}}},"x-iotools-columns":["match","matched-text","start","end","capture-groups"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/robots-txt-tester":{"post":{"operationId":"run_robots_txt_tester","summary":"Robots.txt Tester","tags":["Utilities"],"description":"Test whether a URL path is allowed or disallowed for a given crawler against pasted robots.txt content. Applies RFC 9309 precedence — longest matching rule wins, Allow beats Disallow on a tie, with `*`/`$` wildcards and most-specific user-agent group selection. Shows the exact rule that decided the verdict.\n\n[Try Robots.txt Tester in your browser →](https://iotools.cloud/tool/robots-txt-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"robots":{"type":"string","description":"Robots.txt Content"},"testUrl":{"type":"string","description":"URL / path to test"},"userAgent":{"type":"string","description":"User-agent (crawler)"}},"required":[]},"examples":{"disallowed_by_directory_rule":{"summary":"Disallowed by directory rule","value":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nDisallow: /*.pdf$\n\nUser-agent: Googlebot\nAllow: /\nDisallow: /private/\nCrawl-delay: 2\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/admin/dashboard","userAgent":"Bingbot"}},"allowed_most_specific_rule_wins":{"summary":"Allowed — most specific rule wins","value":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nDisallow: /*.pdf$\n\nUser-agent: Googlebot\nAllow: /\nDisallow: /private/\nCrawl-delay: 2\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/admin/public/logo.png","userAgent":"Bingbot"}},"wildcard_end_anchor_blocks_a_pdf":{"summary":"Wildcard + $ end-anchor blocks a PDF","value":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nDisallow: /*.pdf$\n\nUser-agent: Googlebot\nAllow: /\nDisallow: /private/\nCrawl-delay: 2\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/docs/report.pdf","userAgent":"Bingbot"}},"most_specific_user_agent_group_beats":{"summary":"Most-specific user-agent group beats *","value":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nDisallow: /*.pdf$\n\nUser-agent: Googlebot\nAllow: /\nDisallow: /private/\nCrawl-delay: 2\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/private/data","userAgent":"Googlebot"}},"ai_crawler_fully_blocked":{"summary":"AI crawler fully blocked","value":{"robots":"User-agent: *\nDisallow: /admin/\nAllow: /admin/public/\nDisallow: /*.pdf$\n\nUser-agent: Googlebot\nAllow: /\nDisallow: /private/\nCrawl-delay: 2\n\nUser-agent: GPTBot\nDisallow: /\n\nSitemap: https://example.com/sitemap.xml","testUrl":"/","userAgent":"GPTBot"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"disallowed_by_directory_rule":{"summary":"Disallowed by directory rule","value":{"tool":"robots-txt-tester","tool_version":"1.0.2","outputs":{"verdict":"Disallowed","details":[{"property":"Verdict","value":"Disallowed"},{"property":"Path tested","value":"/admin/dashboard"},{"property":"User-agent","value":"Bingbot"},{"property":"Matched group","value":"* (default group)"},{"property":"Deciding rule","value":"Disallow: /admin/ (line 2)"},{"property":"Crawl-delay","value":"Not specified"}],"rules":[{"directive":"Disallow","path-pattern":"/admin/","length":"7","selected":"✓ winner"}]},"credits_used":5,"credits_remaining":null}},"allowed_most_specific_rule_wins":{"summary":"Allowed — most specific rule wins","value":{"tool":"robots-txt-tester","tool_version":"1.0.2","outputs":{"verdict":"Allowed","details":[{"property":"Verdict","value":"Allowed"},{"property":"Path tested","value":"/admin/public/logo.png"},{"property":"User-agent","value":"Bingbot"},{"property":"Matched group","value":"* (default group)"},{"property":"Deciding rule","value":"Allow: /admin/public/ (line 3)"},{"property":"Crawl-delay","value":"Not specified"}],"rules":[{"directive":"Allow","path-pattern":"/admin/public/","length":"14","selected":"✓ winner"},{"directive":"Disallow","path-pattern":"/admin/","length":"7","selected":""}]},"credits_used":5,"credits_remaining":null}},"wildcard_end_anchor_blocks_a_pdf":{"summary":"Wildcard + $ end-anchor blocks a PDF","value":{"tool":"robots-txt-tester","tool_version":"1.0.2","outputs":{"verdict":"Disallowed","details":[{"property":"Verdict","value":"Disallowed"},{"property":"Path tested","value":"/docs/report.pdf"},{"property":"User-agent","value":"Bingbot"},{"property":"Matched group","value":"* (default group)"},{"property":"Deciding rule","value":"Disallow: /*.pdf$ (line 4)"},{"property":"Crawl-delay","value":"Not specified"}],"rules":[{"directive":"Disallow","path-pattern":"/*.pdf$","length":"7","selected":"✓ winner"}]},"credits_used":5,"credits_remaining":null}},"most_specific_user_agent_group_beats":{"summary":"Most-specific user-agent group beats *","value":{"tool":"robots-txt-tester","tool_version":"1.0.2","outputs":{"verdict":"Disallowed","details":[{"property":"Verdict","value":"Disallowed"},{"property":"Path tested","value":"/private/data"},{"property":"User-agent","value":"Googlebot"},{"property":"Matched group","value":"Googlebot"},{"property":"Deciding rule","value":"Disallow: /private/ (line 8)"},{"property":"Crawl-delay","value":"2 seconds"}],"rules":[{"directive":"Disallow","path-pattern":"/private/","length":"9","selected":"✓ winner"},{"directive":"Allow","path-pattern":"/","length":"1","selected":""}]},"credits_used":5,"credits_remaining":null}},"ai_crawler_fully_blocked":{"summary":"AI crawler fully blocked","value":{"tool":"robots-txt-tester","tool_version":"1.0.2","outputs":{"verdict":"Disallowed","details":[{"property":"Verdict","value":"Disallowed"},{"property":"Path tested","value":"/"},{"property":"User-agent","value":"GPTBot"},{"property":"Matched group","value":"GPTBot"},{"property":"Deciding rule","value":"Disallow: / (line 12)"},{"property":"Crawl-delay","value":"Not specified"}],"rules":[{"directive":"Disallow","path-pattern":"/","length":"1","selected":"✓ winner"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Verdict"},"details":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"rules":{"type":"array","items":{"type":"object","properties":{"directive":{"type":"string","description":"Directive"},"path-pattern":{"type":"string","description":"Path pattern"},"length":{"type":"string","description":"Length"},"selected":{"type":"string","description":"Selected"}}},"x-iotools-columns":["directive","path-pattern","length","selected"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/routing-number-validator":{"post":{"operationId":"run_routing_number_validator","summary":"Routing Number Validator","tags":["Utilities"],"description":"Validate a 9-digit ABA bank routing number by its mod-10 weighted checksum, and show whether it is valid, its Federal Reserve district, its check digit, and the full step-by-step checksum calculation. Spaces and dashes are ignored.\n\n[Try Routing Number Validator in your browser →](https://iotools.cloud/tool/routing-number-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"routingNumber":{"type":"string","description":"Routing Number"}},"required":[]},"examples":{"valid_routing_number_jpmorgan_chase_new_york":{"summary":"Valid routing number (JPMorgan Chase, New York)","value":{"routingNumber":"021000021"}},"valid_routing_number_with_spaces_and_dashes":{"summary":"Valid routing number with spaces and dashes","value":{"routingNumber":"0210-0002 1"}},"invalid_checksum_last_digit_changed":{"summary":"Invalid checksum (last digit changed)","value":{"routingNumber":"021000022"}},"wrong_length_too_few_digits":{"summary":"Wrong length (too few digits)","value":{"routingNumber":"12345"}},"another_valid_routing_number_wells_fargo_san_francisco":{"summary":"Another valid routing number (Wells Fargo, San Francisco)","value":{"routingNumber":"121000248"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_routing_number_jpmorgan_chase_new_york":{"summary":"Valid routing number (JPMorgan Chase, New York)","value":{"tool":"routing-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ABA routing number"},{"property":"Valid","value":"Yes"},{"property":"Federal Reserve District","value":"02 — Federal Reserve Bank of New York"},{"property":"Check Digit","value":"1"}],"steps":"ABA checksum for: 021000021\n\nPos  Digit  Weight  Product\n---  -----  ------  -------\n  1      0       3        0\n  2      2       7       14\n  3      1       1        1\n  4      0       3        0\n  5      0       7        0\n  6      0       1        0\n  7      0       3        0\n  8      2       7       14\n  9      1       1        1\n\nSum = 30\n30 mod 10 = 0\n\nValid — the weighted sum is divisible by 10."},"credits_used":5,"credits_remaining":null}},"valid_routing_number_with_spaces_and_dashes":{"summary":"Valid routing number with spaces and dashes","value":{"tool":"routing-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ABA routing number"},{"property":"Valid","value":"Yes"},{"property":"Federal Reserve District","value":"02 — Federal Reserve Bank of New York"},{"property":"Check Digit","value":"1"}],"steps":"ABA checksum for: 021000021\n\nPos  Digit  Weight  Product\n---  -----  ------  -------\n  1      0       3        0\n  2      2       7       14\n  3      1       1        1\n  4      0       3        0\n  5      0       7        0\n  6      0       1        0\n  7      0       3        0\n  8      2       7       14\n  9      1       1        1\n\nSum = 30\n30 mod 10 = 0\n\nValid — the weighted sum is divisible by 10."},"credits_used":5,"credits_remaining":null}},"invalid_checksum_last_digit_changed":{"summary":"Invalid checksum (last digit changed)","value":{"tool":"routing-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid ABA routing number — checksum failed"},{"property":"Valid","value":"No"},{"property":"Federal Reserve District","value":"02 — Federal Reserve Bank of New York"},{"property":"Check Digit","value":"2"}],"steps":"ABA checksum for: 021000022\n\nPos  Digit  Weight  Product\n---  -----  ------  -------\n  1      0       3        0\n  2      2       7       14\n  3      1       1        1\n  4      0       3        0\n  5      0       7        0\n  6      0       1        0\n  7      0       3        0\n  8      2       7       14\n  9      2       1        2\n\nSum = 31\n31 mod 10 = 1\n\nInvalid — remainder is 1 (must be 0)."},"credits_used":5,"credits_remaining":null}},"wrong_length_too_few_digits":{"summary":"Wrong length (too few digits)","value":{"tool":"routing-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid — a routing number is exactly 9 digits, this has 5"},{"property":"Valid","value":"No"}],"steps":""},"credits_used":5,"credits_remaining":null}},"another_valid_routing_number_wells_fargo_san_francisco":{"summary":"Another valid routing number (Wells Fargo, San Francisco)","value":{"tool":"routing-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid ABA routing number"},{"property":"Valid","value":"Yes"},{"property":"Federal Reserve District","value":"12 — Federal Reserve Bank of San Francisco"},{"property":"Check Digit","value":"8"}],"steps":"ABA checksum for: 121000248\n\nPos  Digit  Weight  Product\n---  -----  ------  -------\n  1      1       3        3\n  2      2       7       14\n  3      1       1        1\n  4      0       3        0\n  5      0       7        0\n  6      0       1        0\n  7      2       3        6\n  8      4       7       28\n  9      8       1        8\n\nSum = 60\n60 mod 10 = 0\n\nValid — the weighted sum is divisible by 10."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"steps":{"type":"string","description":"Checksum Calculation"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/rss-feed-parser":{"post":{"operationId":"run_rss_feed_parser","summary":"RSS Feed Parser","tags":["Utilities"],"description":"Fetch or paste an RSS 2.0, RSS 1.0 (RDF), or Atom feed and extract its title, description and every entry — with warnings for missing titles/links/IDs, unparsable dates, and other spec-conformance issues.\n\n[Try RSS Feed Parser in your browser →](https://iotools.cloud/tool/rss-feed-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"feedUrl":{"type":"string","description":"Fetch from URL (optional)"},"feedSource":{"type":"string","description":"Feed XML"}},"required":[]},"examples":{"rss_2_0_one_item_with_a_bad_pubdate":{"summary":"RSS 2.0 — one item with a bad pubDate","value":{"feedSource":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\">\n  <channel>\n    <title>Example Blog</title>\n    <link>https://example.com/</link>\n    <description>Updates from Example Blog</description>\n    <item>\n      <title>Launching our new feed</title>\n      <link>https://example.com/posts/launch</link>\n      <guid>https://example.com/posts/launch</guid>\n      <pubDate>Mon, 03 Nov 2025 09:00:00 GMT</pubDate>\n      <description>We're excited to share our first post.</description>\n    </item>\n    <item>\n      <title>Second post</title>\n      <link>https://example.com/posts/second</link>\n      <pubDate>not-a-real-date</pubDate>\n    </item>\n  </channel>\n</rss>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"rss_2_0_one_item_with_a_bad_pubdate":{"summary":"RSS 2.0 — one item with a bad pubDate","value":{"tool":"rss-feed-parser","tool_version":"1.0.2","outputs":{"summary":[{"property":"Feed type","value":"RSS 2.0"},{"property":"Title","value":"Example Blog"},{"property":"Link","value":"https://example.com/"},{"property":"Description","value":"Updates from Example Blog"},{"property":"Total entries","value":"2"}],"issues":[{"type":"Warning","message":"Item #2: is missing a <guid> — readers may not be able to dedupe it."},{"type":"Warning","message":"Item #2: pubDate \"not-a-real-date\" is not a valid RFC 822 date."}],"entries":[{"index":"1","title":"Launching our new feed","link":"https://example.com/posts/launch","published":"Mon, 03 Nov 2025 09:00:00 GMT","summary":"We're excited to share our first post."},{"index":"2","title":"Second post","link":"https://example.com/posts/second","published":"not-a-real-date","summary":""}],"json":"{\n  \"type\": \"RSS 2.0\",\n  \"title\": \"Example Blog\",\n  \"link\": \"https://example.com/\",\n  \"description\": \"Updates from Example Blog\",\n  \"entries\": [\n    {\n      \"title\": \"Launching our new feed\",\n      \"link\": \"https://example.com/posts/launch\",\n      \"published\": \"Mon, 03 Nov 2025 09:00:00 GMT\",\n      \"summary\": \"We're excited to share our first post.\"\n    },\n    {\n      \"title\": \"Second post\",\n      \"link\": \"https://example.com/posts/second\",\n      \"published\": \"not-a-real-date\",\n      \"summary\": \"\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"issues":{"type":"array","description":"Spec issues","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["type","message"]},"entries":{"type":"array","description":"Entries","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"title":{"type":"string","description":"Title"},"link":{"type":"string","description":"Link"},"published":{"type":"string","description":"Published"},"summary":{"type":"string","description":"Summary"}}},"x-iotools-columns":["index","title","link","published","summary"]},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/safelink-decoder":{"post":{"operationId":"run_safelink_decoder","summary":"SafeLink Decoder","tags":["Utilities"],"description":"Unwrap Microsoft SafeLinks and Proofpoint URL Defense links to reveal the real destination URL. Paste one or more wrapped links (one per line); plain lines pass through unchanged, or filter to only the decoded URLs.\n\n[Try SafeLink Decoder in your browser →](https://iotools.cloud/tool/safelink-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"safelinkInput":{"type":"string","description":"Wrapped Link(s)"},"extractOnly":{"type":"boolean","description":"Show only decoded URLs (hide other lines)"}},"required":[]},"examples":{"microsoft_safelink":{"summary":"Microsoft SafeLink","value":{"safelinkInput":"https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fexample.com%2Fpage%3Fid%3D123&data=05%7C01%7Cuser%40company.com%7C&reserved=0","extractOnly":""}},"mixed_lines_pass_through":{"summary":"Mixed lines (pass-through)","value":{"safelinkInput":"https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Facme%2Fproject&data=05%7C02%7C\nJust a plain note, not a link\nhttps://example.org/plain","extractOnly":""}},"show_only_decoded_urls":{"summary":"Show only decoded URLs","value":{"safelinkInput":"https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.example.com%2Fguide&data=abc\nSome commentary here\nhttps://not-wrapped.example.com/","extractOnly":"true"}},"proofpoint_url_defense_v2":{"summary":"Proofpoint URL Defense v2","value":{"safelinkInput":"https://urldefense.proofpoint.com/v2/url?u=http-3A__www.example.com_path&d=DwMFAg&c=abc","extractOnly":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"microsoft_safelink":{"summary":"Microsoft SafeLink","value":{"tool":"safelink-decoder","tool_version":"1.0.2","outputs":{"decodedOutput":"https://example.com/page?id=123"},"credits_used":5,"credits_remaining":null}},"mixed_lines_pass_through":{"summary":"Mixed lines (pass-through)","value":{"tool":"safelink-decoder","tool_version":"1.0.2","outputs":{"decodedOutput":"https://github.com/acme/project\nJust a plain note, not a link\nhttps://example.org/plain"},"credits_used":5,"credits_remaining":null}},"show_only_decoded_urls":{"summary":"Show only decoded URLs","value":{"tool":"safelink-decoder","tool_version":"1.0.2","outputs":{"decodedOutput":"https://docs.example.com/guide"},"credits_used":5,"credits_remaining":null}},"proofpoint_url_defense_v2":{"summary":"Proofpoint URL Defense v2","value":{"tool":"safelink-decoder","tool_version":"1.0.2","outputs":{"decodedOutput":"http://www.example.com/path"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"decodedOutput":{"type":"string","description":"Decoded URL(s)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/saml-response-decoder":{"post":{"operationId":"run_saml_response_decoder","summary":"SAML Response Decoder","tags":["Utilities"],"description":"Decode a base64-encoded SAML Response or Assertion and inspect it. Auto-detects the HTTP-POST (plain base64) and HTTP-Redirect (DEFLATE-compressed) bindings, extracts a summary of key fields (Issuer, Destination, NameID, Conditions window, AudienceRestriction, attributes, StatusCode) and pretty-prints the decoded XML. A debugging tool for SSO troubleshooting — it does not verify signatures.\n\n[Try SAML Response Decoder in your browser →](https://iotools.cloud/tool/saml-response-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"samlInput":{"type":"string","description":"SAML Response or Assertion"},"referenceTime":{"type":"string","description":"Reference Time (now)"}},"required":[]},"examples":{"http_post_binding_full_saml_response_with_assertion":{"summary":"HTTP-POST binding — full SAML Response with assertion","value":{"samlInput":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9Il84ZThkYzVmNi1iNTdhLTRlZDktYTRmYy01MGY5MmI3YjVmZTEiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgRGVzdGluYXRpb249Imh0dHBzOi8vc3AuZXhhbXBsZS5jb20vU1NPL1BPU1QiIEluUmVzcG9uc2VUbz0iX3JlcWlkXzk5ODgiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiBJRD0iX2Q3MWEzYThlOWZjYzQ1YzllOWQyNDhlZjcwNDkzOTNmIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyNC0wMS0xNVQxMDozMDowMFoiPjxzYW1sOklzc3Vlcj5odHRwczovL2lkcC5leGFtcGxlLmNvbS9TU088L3NhbWw6SXNzdWVyPjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj51c2VyQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDI0LTAxLTE1VDEwOjM1OjAwWiIgUmVjaXBpZW50PSJodHRwczovL3NwLmV4YW1wbGUuY29tL1NTTy9QT1NUIi8+PC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+PC9zYW1sOlN1YmplY3Q+PHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMjQtMDEtMTVUMTA6MjU6MDBaIiBOb3RPbk9yQWZ0ZXI9IjIwMjQtMDEtMTVUMTA6MzU6MDBaIj48c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjxzYW1sOkF1ZGllbmNlPmh0dHBzOi8vc3AuZXhhbXBsZS5jb208L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDI0LTAxLTE1VDEwOjMwOjAwWiIgU2Vzc2lvbkluZGV4PSJfc2Vzc2lvbl9pZF8wMDEiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkVtYWlsIj48c2FtbDpBdHRyaWJ1dGVWYWx1ZT51c2VyQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9IkZpcnN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+Sm9objwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJMYXN0TmFtZSI+PHNhbWw6QXR0cmlidXRlVmFsdWU+RG9lPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD48L3NhbWw6QXNzZXJ0aW9uPjwvc2FtbHA6UmVzcG9uc2U+","referenceTime":"2024-01-15T10:30:00Z"}},"http_redirect_binding_deflate_compressed_authnrequest":{"summary":"HTTP-Redirect binding — DEFLATE-compressed AuthnRequest","value":{"samlInput":"fVHLbsIwEPwVy/c86aGySFAEQkKiDxHooRfk2ttiyY/gdSj9+7qhqHCg0p52Z2ZnZ8eTo9HkAB6VsxUt0pwSsMJJZT8qulnPk3s6qcfIje5Y04edXcG+Bwwk8iyyYVDR3lvmOCpklhtAFgRrm4clK9Ocdd4FJ5ymF5T/GRwRfIiGKFnMKrr1sN/yN1GUI0pezlYjMI4Re1hYDNyG2MrLuyQfJXmxLkqW57FeKZlFt8ryH72K7kLokGWZkl0KR246DalwJmvbp2wFUnkQgZLmbGDqLPYGfAv+oARsVss/CbxW4ALpKSg2uPL1DaCBwCUPfJxdgn8jfoxhLGbPTivxRebOGx7vupVVkRZDR8nkfYAyMFzpRkoPiPEMrd3n1AMPUNHge6BZfdp6/cv6Gw==","referenceTime":""}},"failed_status_response_statuscode_not_success":{"summary":"Failed-status Response (StatusCode not Success)","value":{"samlInput":"PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfZmFpbF8xIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyNC0wNS0wMVQwODowMDowMFoiIERlc3RpbmF0aW9uPSJodHRwczovL3NwLmV4YW1wbGUuY29tL2FjcyI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vaWRwLmV4YW1wbGUuY29tL1NTTzwvc2FtbDpJc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpSZXNwb25kZXIiLz48c2FtbHA6U3RhdHVzTWVzc2FnZT5BdXRoZW50aWNhdGlvbiBmYWlsZWQ8L3NhbWxwOlN0YXR1c01lc3NhZ2U+PC9zYW1scDpTdGF0dXM+PC9zYW1scDpSZXNwb25zZT4=","referenceTime":"2024-05-01T08:00:00Z"}},"malformed_input_handled_gracefully":{"summary":"Malformed input (handled gracefully)","value":{"samlInput":"this is definitely not a SAML response","referenceTime":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"http_post_binding_full_saml_response_with_assertion":{"summary":"HTTP-POST binding — full SAML Response with assertion","value":{"tool":"saml-response-decoder","tool_version":"1.0.2","outputs":{"notes":[{"level":"Binding","message":"HTTP-POST (plain base64, no compression)"},{"level":"OK","message":"Assertion is within its validity window at the reference time."},{"level":"Signature","message":"No XML signature element found in this document."}],"summary":[{"field":"Document Type","value":"Response"},{"field":"ID","value":"_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1"},{"field":"Version","value":"2.0"},{"field":"IssueInstant","value":"2024-01-15T10:30:00Z"},{"field":"Destination","value":"https://sp.example.com/SSO/POST"},{"field":"InResponseTo","value":"_reqid_9988"},{"field":"Issuer","value":"https://idp.example.com/SSO"},{"field":"StatusCode","value":"urn:oasis:names:tc:SAML:2.0:status:Success"},{"field":"NameID","value":"user@example.com"},{"field":"NameID Format","value":"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"},{"field":"Conditions NotBefore","value":"2024-01-15T10:25:00Z"},{"field":"Conditions NotOnOrAfter","value":"2024-01-15T10:35:00Z"},{"field":"Audience","value":"https://sp.example.com"},{"field":"Recipient","value":"https://sp.example.com/SSO/POST"},{"field":"SubjectConfirmation NotOnOrAfter","value":"2024-01-15T10:35:00Z"},{"field":"AuthnInstant","value":"2024-01-15T10:30:00Z"},{"field":"SessionIndex","value":"_session_id_001"},{"field":"AuthnContextClassRef","value":"urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"},{"field":"Attribute: Email","value":"user@example.com"},{"field":"Attribute: FirstName","value":"John"},{"field":"Attribute: LastName","value":"Doe"}],"xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_8e8dc5f6-b57a-4ed9-a4fc-50f92b7b5fe1\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\" Destination=\"https://sp.example.com/SSO/POST\" InResponseTo=\"_reqid_9988\">\n  <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n  <samlp:Status>\n    <samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/>\n  </samlp:Status>\n  <saml:Assertion ID=\"_d71a3a8e9fcc45c9e9d248ef7049393f\" Version=\"2.0\" IssueInstant=\"2024-01-15T10:30:00Z\">\n    <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n    <saml:Subject>\n      <saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">user@example.com</saml:NameID>\n      <saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\">\n        <saml:SubjectConfirmationData NotOnOrAfter=\"2024-01-15T10:35:00Z\" Recipient=\"https://sp.example.com/SSO/POST\"/>\n      </saml:SubjectConfirmation>\n    </saml:Subject>\n    <saml:Conditions NotBefore=\"2024-01-15T10:25:00Z\" NotOnOrAfter=\"2024-01-15T10:35:00Z\">\n      <saml:AudienceRestriction>\n        <saml:Audience>https://sp.example.com</saml:Audience>\n      </saml:AudienceRestriction>\n    </saml:Conditions>\n    <saml:AuthnStatement AuthnInstant=\"2024-01-15T10:30:00Z\" SessionIndex=\"_session_id_001\">\n      <saml:AuthnContext>\n        <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</saml:AuthnContextClassRef>\n      </saml:AuthnContext>\n    </saml:AuthnStatement>\n    <saml:AttributeStatement>\n      <saml:Attribute Name=\"Email\">\n        <saml:AttributeValue>user@example.com</saml:AttributeValue>\n      </saml:Attribute>\n      <saml:Attribute Name=\"FirstName\">\n        <saml:AttributeValue>John</saml:AttributeValue>\n      </saml:Attribute>\n      <saml:Attribute Name=\"LastName\">\n        <saml:AttributeValue>Doe</saml:AttributeValue>\n      </saml:Attribute>\n    </saml:AttributeStatement>\n  </saml:Assertion>\n</samlp:Response>"},"credits_used":5,"credits_remaining":null}},"http_redirect_binding_deflate_compressed_authnrequest":{"summary":"HTTP-Redirect binding — DEFLATE-compressed AuthnRequest","value":{"tool":"saml-response-decoder","tool_version":"1.0.2","outputs":{"notes":[{"level":"Binding","message":"HTTP-Redirect (raw DEFLATE compressed)"},{"level":"Signature","message":"No XML signature element found in this document."}],"summary":[{"field":"Document Type","value":"AuthnRequest"},{"field":"ID","value":"_req_abc123"},{"field":"Version","value":"2.0"},{"field":"IssueInstant","value":"2024-03-01T12:00:00Z"},{"field":"Destination","value":"https://idp.example.com/SSO/Redirect"},{"field":"Issuer","value":"https://sp.example.com/metadata"}],"xml":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<samlp:AuthnRequest xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_req_abc123\" Version=\"2.0\" IssueInstant=\"2024-03-01T12:00:00Z\" Destination=\"https://idp.example.com/SSO/Redirect\" AssertionConsumerServiceURL=\"https://sp.example.com/acs\">\n  <saml:Issuer>https://sp.example.com/metadata</saml:Issuer>\n  <samlp:NameIDPolicy Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\" AllowCreate=\"true\"/>\n</samlp:AuthnRequest>"},"credits_used":5,"credits_remaining":null}},"failed_status_response_statuscode_not_success":{"summary":"Failed-status Response (StatusCode not Success)","value":{"tool":"saml-response-decoder","tool_version":"1.0.2","outputs":{"notes":[{"level":"Binding","message":"HTTP-POST (plain base64, no compression)"},{"level":"Warning","message":"SAML status is not Success: urn:oasis:names:tc:SAML:2.0:status:Responder"},{"level":"Signature","message":"No XML signature element found in this document."}],"summary":[{"field":"Document Type","value":"Response"},{"field":"ID","value":"_fail_1"},{"field":"Version","value":"2.0"},{"field":"IssueInstant","value":"2024-05-01T08:00:00Z"},{"field":"Destination","value":"https://sp.example.com/acs"},{"field":"Issuer","value":"https://idp.example.com/SSO"},{"field":"StatusCode","value":"urn:oasis:names:tc:SAML:2.0:status:Responder"},{"field":"StatusMessage","value":"Authentication failed"}],"xml":"<samlp:Response xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" ID=\"_fail_1\" Version=\"2.0\" IssueInstant=\"2024-05-01T08:00:00Z\" Destination=\"https://sp.example.com/acs\">\n  <saml:Issuer>https://idp.example.com/SSO</saml:Issuer>\n  <samlp:Status>\n    <samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Responder\"/>\n    <samlp:StatusMessage>Authentication failed</samlp:StatusMessage>\n  </samlp:Status>\n</samlp:Response>"},"credits_used":5,"credits_remaining":null}},"malformed_input_handled_gracefully":{"summary":"Malformed input (handled gracefully)","value":{"tool":"saml-response-decoder","tool_version":"1.0.2","outputs":{"notes":[{"level":"Error","message":"The decoded payload is neither XML nor a recognizable DEFLATE/gzip stream."}],"summary":[],"xml":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"notes":{"type":"array","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["level","message"]},"summary":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"xml":{"type":"string"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/security-headers-checker":{"post":{"operationId":"run_security_headers_checker","summary":"Security Headers Checker","tags":["Utilities"],"description":"Paste a site's HTTP response headers and get a weighted A+ to F security grade, plus a header-by-header breakdown of what's missing, misconfigured, or well-configured (CSP, HSTS, X-Frame-Options, and more) — all checked in your browser.\n\n[Try Security Headers Checker in your browser →](https://iotools.cloud/tool/security-headers-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"headersInput":{"type":"string","description":"HTTP Response Headers"}},"required":[]},"examples":{"secure_site":{"summary":"Secure site","value":{"headersInput":"Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'self'; form-action 'self'; report-to csp-endpoint\nStrict-Transport-Security: max-age=31536000; includeSubDomains; preload\nX-Frame-Options: DENY\nX-Content-Type-Options: nosniff\nReferrer-Policy: strict-origin-when-cross-origin\nPermissions-Policy: camera=(), microphone=(), geolocation=(), payment=()\nCross-Origin-Opener-Policy: same-origin\nCross-Origin-Embedder-Policy: require-corp"}},"insecure_site":{"summary":"Insecure site","value":{"headersInput":"Server: Apache/2.4.41\nX-Powered-By: PHP/7.4.3\nContent-Type: text/html; charset=UTF-8"}},"partial_site":{"summary":"Partial site","value":{"headersInput":"Strict-Transport-Security: max-age=86400\nX-Frame-Options: SAMEORIGIN\nX-Content-Type-Options: nosniff\nReferrer-Policy: no-referrer-when-downgrade"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"secure_site":{"summary":"Secure site","value":{"tool":"security-headers-checker","tool_version":"1.0.2","outputs":{"gradeSummary":[{"metric":"Grade","value":"A+"},{"metric":"Score","value":"98 / 100"},{"metric":"Headers Present","value":"8 / 8"},{"metric":"Headers Missing","value":"None"}],"headerResults":[{"header":"Content-Security-Policy","status":"Good","weight":"25","value":"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; object-src 'none'; base-uri 'self'; form-action 'self'; report-to csp-endpoint","notes":"CSP reporting is configured"},{"header":"Strict-Transport-Security","status":"Good","weight":"20","value":"max-age=31536000; includeSubDomains; preload","notes":"max-age is 1 year(s); includeSubDomains is set; Eligible for HSTS preload list (hstspreload.org)"},{"header":"X-Frame-Options","status":"Good","weight":"10","value":"DENY","notes":"DENY — page cannot be framed by any site"},{"header":"X-Content-Type-Options","status":"Good","weight":"10","value":"nosniff","notes":"Correctly set to nosniff"},{"header":"Referrer-Policy","status":"Good","weight":"10","value":"strict-origin-when-cross-origin","notes":"\"strict-origin-when-cross-origin\" provides good privacy protection"},{"header":"Permissions-Policy","status":"Warning","weight":"10","value":"camera=(), microphone=(), geolocation=(), payment=()","notes":"camera is disabled; microphone is disabled; geolocation is disabled; payment is disabled; Consider restricting: usb, magnetometer, gyroscope, accelerometer"},{"header":"Cross-Origin-Opener-Policy","status":"Good","weight":"8","value":"same-origin","notes":"same-origin — strongest isolation"},{"header":"Cross-Origin-Embedder-Policy","status":"Good","weight":"7","value":"require-corp","notes":"require-corp — strongest protection, enables cross-origin isolation"}]},"credits_used":5,"credits_remaining":null}},"insecure_site":{"summary":"Insecure site","value":{"tool":"security-headers-checker","tool_version":"1.0.2","outputs":{"gradeSummary":[{"metric":"Grade","value":"F"},{"metric":"Score","value":"0 / 100"},{"metric":"Headers Present","value":"0 / 8"},{"metric":"Headers Missing","value":"Content-Security-Policy, Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy"}],"headerResults":[{"header":"Content-Security-Policy","status":"Missing","weight":"25","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Strict-Transport-Security","status":"Missing","weight":"20","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"X-Frame-Options","status":"Missing","weight":"10","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"X-Content-Type-Options","status":"Missing","weight":"10","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Referrer-Policy","status":"Missing","weight":"10","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Permissions-Policy","status":"Missing","weight":"10","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Cross-Origin-Opener-Policy","status":"Missing","weight":"8","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Cross-Origin-Embedder-Policy","status":"Missing","weight":"7","value":"—","notes":"This header is not set. Adding it will improve your security posture."}]},"credits_used":5,"credits_remaining":null}},"partial_site":{"summary":"Partial site","value":{"tool":"security-headers-checker","tool_version":"1.0.2","outputs":{"gradeSummary":[{"metric":"Grade","value":"F"},{"metric":"Score","value":"38 / 100"},{"metric":"Headers Present","value":"4 / 8"},{"metric":"Headers Missing","value":"Content-Security-Policy, Permissions-Policy, Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy"}],"headerResults":[{"header":"Content-Security-Policy","status":"Missing","weight":"25","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Strict-Transport-Security","status":"Warning","weight":"20","value":"max-age=86400","notes":"max-age is 86400s (1 day(s)) — recommended minimum is 1 year (31536000s); Missing includeSubDomains — subdomains are not protected; No preload flag — consider adding it for HSTS preload list eligibility"},{"header":"X-Frame-Options","status":"Good","weight":"10","value":"SAMEORIGIN","notes":"SAMEORIGIN — page can only be framed by same origin"},{"header":"X-Content-Type-Options","status":"Good","weight":"10","value":"nosniff","notes":"Correctly set to nosniff"},{"header":"Referrer-Policy","status":"Warning","weight":"10","value":"no-referrer-when-downgrade","notes":"no-referrer-when-downgrade sends full URL on same-protocol requests"},{"header":"Permissions-Policy","status":"Missing","weight":"10","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Cross-Origin-Opener-Policy","status":"Missing","weight":"8","value":"—","notes":"This header is not set. Adding it will improve your security posture."},{"header":"Cross-Origin-Embedder-Policy","status":"Missing","weight":"7","value":"—","notes":"This header is not set. Adding it will improve your security posture."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"gradeSummary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"headerResults":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"status":{"type":"string","description":"Status"},"weight":{"type":"string","description":"Weight"},"value":{"type":"string","description":"Value"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["header","status","weight","value","notes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/secure-compare-tool":{"post":{"operationId":"run_secure_compare_tool","summary":"Secure Compare Tool","tags":["Utilities"],"description":"Compare two secrets, tokens or passwords using a constant-time equality check instead of a plain string comparison, with optional trimming/case normalization and SHA-256 fingerprints for diagnostics. Runs entirely in your browser.\n\n[Try Secure Compare Tool in your browser →](https://iotools.cloud/tool/secure-compare-tool/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"valueA":{"type":"string","description":"Value A"},"valueB":{"type":"string","description":"Value B"},"normalize":{"enum":["exact","trim","trim-lower"],"description":"Normalization"},"showFingerprint":{"type":"boolean","description":"Show SHA-256 fingerprints"}},"required":[]},"examples":{"exact_match":{"summary":"Exact match","value":{"valueA":"hunter2","valueB":"hunter2"}},"mismatch_case_sensitive_by_default":{"summary":"Mismatch (case-sensitive by default)","value":{"valueA":"Hunter2","valueB":"hunter2"}},"trim_lowercase_normalization":{"summary":"Trim + lowercase normalization","value":{"valueA":"  Hunter2  ","valueB":"hunter2","normalize":"trim-lower"}},"with_sha_256_fingerprints":{"summary":"With SHA-256 fingerprints","value":{"valueA":"hunter2","valueB":"hunter2","showFingerprint":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"exact_match":{"summary":"Exact match","value":{"tool":"secure-compare-tool","tool_version":"1.0.2","outputs":{"comparison":[{"metric":"Match","value":"Yes"},{"metric":"Length (Value A)","value":"7"},{"metric":"Length (Value B)","value":"7"}]},"credits_used":5,"credits_remaining":null}},"mismatch_case_sensitive_by_default":{"summary":"Mismatch (case-sensitive by default)","value":{"tool":"secure-compare-tool","tool_version":"1.0.2","outputs":{"comparison":[{"metric":"Match","value":"No"},{"metric":"Length (Value A)","value":"7"},{"metric":"Length (Value B)","value":"7"}]},"credits_used":5,"credits_remaining":null}},"trim_lowercase_normalization":{"summary":"Trim + lowercase normalization","value":{"tool":"secure-compare-tool","tool_version":"1.0.2","outputs":{"comparison":[{"metric":"Match","value":"Yes"},{"metric":"Length (Value A)","value":"11"},{"metric":"Length (Value B)","value":"7"}]},"credits_used":5,"credits_remaining":null}},"with_sha_256_fingerprints":{"summary":"With SHA-256 fingerprints","value":{"tool":"secure-compare-tool","tool_version":"1.0.2","outputs":{"comparison":[{"metric":"Match","value":"Yes"},{"metric":"Length (Value A)","value":"7"},{"metric":"Length (Value B)","value":"7"},{"metric":"SHA-256 (Value A)","value":"f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7"},{"metric":"SHA-256 (Value B)","value":"f52fbd32b2b3b86ff88ef6c490628285f482af15ddcb29541f94bcf526a3f6c7"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"comparison":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/sitemap-xml-parser":{"post":{"operationId":"run_sitemap_xml_parser","summary":"Sitemap XML Parser","tags":["Utilities"],"description":"Parse a sitemap.xml or sitemap index and extract every URL with its lastmod, changefreq and priority — as a Markdown table, CSV, JSON or a plain URL list, with spec-conformance warnings. Runs entirely in your browser.\n\n[Try Sitemap XML Parser in your browser →](https://iotools.cloud/tool/sitemap-xml-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"sitemapInput":{"type":"string","description":"Sitemap XML"},"outputFormat":{"enum":["table","csv","json","list"],"description":"Output format"},"filterDate":{"enum":["all","7","30","90","365","missing"],"description":"Filter by lastmod"},"sortBy":{"enum":["none","url","lastmod-desc","lastmod-asc","priority-desc","changefreq"],"description":"Sort by"},"showValidation":{"type":"boolean","description":"Show validation warnings (missing fields, invalid priority, malformed dates)"}},"required":[]},"examples":{"standard_urlset_markdown_table":{"summary":"Standard urlset, Markdown table","value":{"sitemapInput":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url>\n    <loc>https://example.com/</loc>\n    <lastmod>2025-10-12</lastmod>\n    <changefreq>daily</changefreq>\n    <priority>1.0</priority>\n  </url>\n  <url>\n    <loc>https://example.com/about</loc>\n    <lastmod>2025-09-28</lastmod>\n    <changefreq>monthly</changefreq>\n    <priority>0.8</priority>\n  </url>\n  <url>\n    <loc>https://example.com/blog/sitemaps-explained</loc>\n    <lastmod>2025-11-04</lastmod>\n    <changefreq>weekly</changefreq>\n    <priority>0.6</priority>\n  </url>\n  <url>\n    <loc>https://example.com/contact</loc>\n    <changefreq>yearly</changefreq>\n    <priority>0.3</priority>\n  </url>\n</urlset>","outputFormat":"table","filterDate":"all","sortBy":"none","showValidation":"true"}},"sitemap_index_sorted_by_lastmod_json_output":{"summary":"Sitemap index, sorted by lastmod, JSON output","value":{"sitemapInput":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <sitemap>\n    <loc>https://example.com/sitemap-posts.xml</loc>\n    <lastmod>2025-11-10</lastmod>\n  </sitemap>\n  <sitemap>\n    <loc>https://example.com/sitemap-pages.xml</loc>\n    <lastmod>2025-10-22</lastmod>\n  </sitemap>\n  <sitemap>\n    <loc>https://example.com/sitemap-products.xml</loc>\n    <lastmod>2025-11-12</lastmod>\n  </sitemap>\n</sitemapindex>","outputFormat":"json","filterDate":"all","sortBy":"lastmod-desc","showValidation":"true"}},"empty_input":{"summary":"Empty input","value":{"sitemapInput":"","outputFormat":"table","filterDate":"all","sortBy":"none","showValidation":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_urlset_markdown_table":{"summary":"Standard urlset, Markdown table","value":{"tool":"sitemap-xml-parser","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Type","value":"urlset"},{"metric":"Total entries","value":"4"},{"metric":"Shown after filter","value":"4"},{"metric":"With lastmod","value":"3"},{"metric":"With priority","value":"4"}],"validationIssues":[{"type":"Info","message":"No validation issues found."}],"sitemapOutput":"| # | URL | lastmod | changefreq | priority |\n|---|-----|---------|------------|----------|\n| 1 | https://example.com/ | 2025-10-12 | daily | 1.0 |\n| 2 | https://example.com/about | 2025-09-28 | monthly | 0.8 |\n| 3 | https://example.com/blog/sitemaps-explained | 2025-11-04 | weekly | 0.6 |\n| 4 | https://example.com/contact |  | yearly | 0.3 |"},"credits_used":5,"credits_remaining":null}},"sitemap_index_sorted_by_lastmod_json_output":{"summary":"Sitemap index, sorted by lastmod, JSON output","value":{"tool":"sitemap-xml-parser","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Type","value":"sitemapindex"},{"metric":"Total entries","value":"3"},{"metric":"Shown after filter","value":"3"},{"metric":"With lastmod","value":"3"}],"validationIssues":[{"type":"Info","message":"No validation issues found."}],"sitemapOutput":"[\n  {\n    \"index\": 1,\n    \"url\": \"https://example.com/sitemap-products.xml\",\n    \"lastmod\": \"2025-11-12\"\n  },\n  {\n    \"index\": 2,\n    \"url\": \"https://example.com/sitemap-posts.xml\",\n    \"lastmod\": \"2025-11-10\"\n  },\n  {\n    \"index\": 3,\n    \"url\": \"https://example.com/sitemap-pages.xml\",\n    \"lastmod\": \"2025-10-22\"\n  }\n]"},"credits_used":5,"credits_remaining":null}},"empty_input":{"summary":"Empty input","value":{"tool":"sitemap-xml-parser","tool_version":"1.0.2","outputs":{"summary":[],"validationIssues":[],"sitemapOutput":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"validationIssues":{"type":"array","description":"Validation","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["type","message"]},"sitemapOutput":{"type":"string","description":"Extracted URLs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/redirect-checker":{"post":{"operationId":"run_redirect_checker","summary":"Redirect Checker","tags":["Utilities"],"description":"Trace a URL's full HTTP redirect chain — every hop, status code and redirect type — and flag redirect loops, excessive hops and insecure HTTPS→HTTP downgrades.\n\n[Try Redirect Checker in your browser →](https://iotools.cloud/tool/redirect-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"github_http_https":{"summary":"GitHub (http → https)","value":{"url":"http://github.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"chain":{"type":"array","description":"Redirect chain","items":{"type":"object","properties":{"hop":{"type":"string","description":"#"},"status":{"type":"string","description":"Status"},"type":{"type":"string","description":"Type"},"url":{"type":"string","description":"URL"}}},"x-iotools-columns":["hop","status","type","url"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/html-meta-extractor":{"post":{"operationId":"run_html_meta_extractor","summary":"HTML Meta Extractor","tags":["Utilities"],"description":"Extract the title, canonical URL, and every meta tag — description, viewport, robots, Open Graph, Twitter Card — plus h1 headings, from pasted HTML or a live URL.\n\n[Try HTML Meta Extractor in your browser →](https://iotools.cloud/tool/html-meta-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Fetch from URL (optional)"},"htmlSource":{"type":"string","description":"HTML"}},"required":[]},"examples":{"example_domain_head":{"summary":"Example Domain head","value":{"htmlSource":"<!DOCTYPE html>\n<html>\n<head>\n  <title>Example Domain</title>\n  <meta charset=\"utf-8\">\n  <meta name=\"description\" content=\"A domain used for illustrative examples.\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"robots\" content=\"index, follow\">\n  <link rel=\"canonical\" href=\"https://example.com/\">\n  <meta property=\"og:title\" content=\"Example Domain\">\n  <meta property=\"og:type\" content=\"website\">\n  <meta property=\"og:url\" content=\"https://example.com/\">\n  <meta name=\"twitter:card\" content=\"summary\">\n  <meta name=\"twitter:title\" content=\"Example Domain\">\n</head>\n<body>\n  <h1>Example Domain</h1>\n</body>\n</html>"}},"no_head_tags":{"summary":"No head tags","value":{"htmlSource":"<html><body><p>No head here</p></body></html>"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"example_domain_head":{"summary":"Example Domain head","value":{"tool":"html-meta-extractor","tool_version":"1.0.2","outputs":{"metaTags":[{"tag":"title","value":"Example Domain"},{"tag":"charset","value":"utf-8"},{"tag":"description","value":"A domain used for illustrative examples."},{"tag":"viewport","value":"width=device-width, initial-scale=1"},{"tag":"robots","value":"index, follow"},{"tag":"canonical","value":"https://example.com/"},{"tag":"og:title","value":"Example Domain"},{"tag":"og:type","value":"website"},{"tag":"og:url","value":"https://example.com/"},{"tag":"twitter:card","value":"summary"},{"tag":"twitter:title","value":"Example Domain"}],"json":"{\n  \"title\": \"Example Domain\",\n  \"description\": \"A domain used for illustrative examples.\",\n  \"canonical\": \"https://example.com/\",\n  \"robots\": \"index, follow\",\n  \"headings\": {\n    \"h1_count\": 1,\n    \"h1_text\": [\n      \"Example Domain\"\n    ]\n  },\n  \"open_graph_tags\": [\n    {\n      \"property\": \"og:title\",\n      \"content\": \"Example Domain\"\n    },\n    {\n      \"property\": \"og:type\",\n      \"content\": \"website\"\n    },\n    {\n      \"property\": \"og:url\",\n      \"content\": \"https://example.com/\"\n    }\n  ],\n  \"twitter_tags\": [\n    {\n      \"property\": \"twitter:card\",\n      \"content\": \"summary\"\n    },\n    {\n      \"property\": \"twitter:title\",\n      \"content\": \"Example Domain\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"no_head_tags":{"summary":"No head tags","value":{"tool":"html-meta-extractor","tool_version":"1.0.2","outputs":{"metaTags":[],"json":"{\n  \"title\": \"\",\n  \"description\": \"\",\n  \"canonical\": \"\",\n  \"robots\": \"\",\n  \"headings\": {\n    \"h1_count\": 0,\n    \"h1_text\": []\n  },\n  \"open_graph_tags\": [],\n  \"twitter_tags\": []\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"metaTags":{"type":"array","description":"Extracted tags","items":{"type":"object","properties":{"tag":{"type":"string","description":"Tag"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["tag","value"]},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-compare":{"post":{"operationId":"run_text_compare","summary":"Text Compare","tags":["Utilities"],"description":"Compare two texts and see exactly what changed — added, removed and edited lines highlighted inline, plus a copyable unified diff. Runs entirely in your browser.\n\n[Try Text Compare in your browser →](https://iotools.cloud/tool/text-compare/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"firstText":{"type":"string","description":"First text"},"textToCompare":{"type":"string","description":"Text to compare"}},"required":[]},"examples":{"edited_removed_and_added_lines":{"summary":"Edited, removed and added lines","value":{"firstText":"Hello World! This is a test.\nThis is another test.\nThis is a third test.","textToCompare":"Hello! This is another test.\nThis is a third test.\nThis is a fourth test."}},"word_level_changes":{"summary":"Word-level changes","value":{"firstText":"The quick brown fox jumps over the lazy dog.","textToCompare":"The quick red fox leaps over the lazy dog."}},"character_level_typo":{"summary":"Character-level typo","value":{"firstText":"asfs sdf dsfs\ndfsdfsdfsdfsdf","textToCompare":"asfs sdfk dsfs\ndfsdfsdfsdfsdf"}},"multiple_inline_edits_on_one_line":{"summary":"Multiple inline edits on one line","value":{"firstText":"Hello World! This is a test.","textToCompare":"Hello World! This is12 a34 t22st."}},"identical_texts":{"summary":"Identical texts","value":{"firstText":"Same line one.\nSame line two.","textToCompare":"Same line one.\nSame line two."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"edited_removed_and_added_lines":{"summary":"Edited, removed and added lines","value":{"tool":"text-compare","tool_version":"1.0.2","outputs":{"diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div><span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">Hello World! This is a test.</span></div><div><span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">This is another test.</span></div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">Hello! This is another test.</span></div><div>This is a third test.</div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">This is a fourth test.</span></div></div>","unifiedDiff":"--- First text\n+++ Text to compare\n@@ -1,3 +1,3 @@\n-Hello World! This is a test.\n-This is another test.\n+Hello! This is another test.\n This is a third test.\n+This is a fourth test.","summary":[{"metric":"Lines added","value":"2"},{"metric":"Lines removed","value":"2"},{"metric":"Lines modified","value":"0"},{"metric":"Lines unchanged","value":"1"},{"metric":"Result","value":"4 changed lines"}]},"credits_used":5,"credits_remaining":null}},"word_level_changes":{"summary":"Word-level changes","value":{"tool":"text-compare","tool_version":"1.0.2","outputs":{"diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>The quick <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">brown</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">red</span> fox <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">jumps</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">leaps</span> over the lazy dog.</div></div>","unifiedDiff":"--- First text\n+++ Text to compare\n@@ -1,1 +1,1 @@\n-The quick brown fox jumps over the lazy dog.\n+The quick red fox leaps over the lazy dog.","summary":[{"metric":"Lines added","value":"0"},{"metric":"Lines removed","value":"0"},{"metric":"Lines modified","value":"1"},{"metric":"Lines unchanged","value":"0"},{"metric":"Result","value":"1 changed line"}]},"credits_used":5,"credits_remaining":null}},"character_level_typo":{"summary":"Character-level typo","value":{"tool":"text-compare","tool_version":"1.0.2","outputs":{"diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>asfs sdf<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">k</span> dsfs</div><div>dfsdfsdfsdfsdf</div></div>","unifiedDiff":"--- First text\n+++ Text to compare\n@@ -1,2 +1,2 @@\n-asfs sdf dsfs\n+asfs sdfk dsfs\n dfsdfsdfsdfsdf","summary":[{"metric":"Lines added","value":"1"},{"metric":"Lines removed","value":"0"},{"metric":"Lines modified","value":"0"},{"metric":"Lines unchanged","value":"1"},{"metric":"Result","value":"1 changed line"}]},"credits_used":5,"credits_remaining":null}},"multiple_inline_edits_on_one_line":{"summary":"Multiple inline edits on one line","value":{"tool":"text-compare","tool_version":"1.0.2","outputs":{"diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>Hello World! This is<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">12</span> a<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">34</span> t<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">e</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">22</span>st.</div></div>","unifiedDiff":"--- First text\n+++ Text to compare\n@@ -1,1 +1,1 @@\n-Hello World! This is a test.\n+Hello World! This is12 a34 t22st.","summary":[{"metric":"Lines added","value":"0"},{"metric":"Lines removed","value":"0"},{"metric":"Lines modified","value":"1"},{"metric":"Lines unchanged","value":"0"},{"metric":"Result","value":"1 changed line"}]},"credits_used":5,"credits_remaining":null}},"identical_texts":{"summary":"Identical texts","value":{"tool":"text-compare","tool_version":"1.0.2","outputs":{"diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>Same line one.</div><div>Same line two.</div></div>","unifiedDiff":"","summary":[{"metric":"Lines added","value":"0"},{"metric":"Lines removed","value":"0"},{"metric":"Lines modified","value":"0"},{"metric":"Lines unchanged","value":"2"},{"metric":"Result","value":"The texts are identical"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"unifiedDiff":{"type":"string","description":"Unified diff"},"diffHtml":{"type":"string","description":"Diff HTML"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-parser":{"post":{"operationId":"run_url_parser","summary":"URL Parser","tags":["Utilities"],"description":"Break a URL down into its parts — protocol, host, port, path, query string, search params, hash, credentials, subdomain, filename and file extension.\n\n[Try URL Parser in your browser →](https://iotools.cloud/tool/url-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urlToParse":{"type":"string","description":"URL to Parse"}},"required":["urlToParse"]},"examples":{"full_url_with_credentials_port_query_and_hash":{"summary":"Full URL with credentials, port, query and hash","value":{"urlToParse":"https://john:pass@www.example.com:3000/lorem/ipsum.php?query=1&query=2#hash"}},"bare_domain_no_path_or_query":{"summary":"Bare domain, no path or query","value":{"urlToParse":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_url_with_credentials_port_query_and_hash":{"summary":"Full URL with credentials, port, query and hash","value":{"tool":"url-parser","tool_version":"1.0.2","outputs":{"urlParts":[{"part":"Protocol","value":"https:"},{"part":"Host","value":"www.example.com:3000"},{"part":"Hostname","value":"www.example.com"},{"part":"Port","value":"3000"},{"part":"Pathname","value":"/lorem/ipsum.php"},{"part":"Search","value":"?query=1&query=2"},{"part":"Search Params","value":"query=1, query=2"},{"part":"Hash","value":"#hash"},{"part":"Username","value":"john"},{"part":"Password","value":"pass"},{"part":"Subdomain","value":"www"},{"part":"Filename","value":"ipsum.php"},{"part":"File Suffix","value":"php"}]},"credits_used":5,"credits_remaining":null}},"bare_domain_no_path_or_query":{"summary":"Bare domain, no path or query","value":{"tool":"url-parser","tool_version":"1.0.2","outputs":{"urlParts":[{"part":"Protocol","value":"https:"},{"part":"Host","value":"example.com"},{"part":"Hostname","value":"example.com"},{"part":"Port","value":""},{"part":"Pathname","value":"/"},{"part":"Search","value":""},{"part":"Search Params","value":""},{"part":"Hash","value":""},{"part":"Username","value":""},{"part":"Password","value":""},{"part":"Subdomain","value":""},{"part":"Filename","value":""},{"part":"File Suffix","value":""}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"urlParts":{"type":"array","description":"URL Parts","items":{"type":"object","properties":{"part":{"type":"string","description":"Part"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["part","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/unicode-character-info":{"post":{"operationId":"run_unicode_character_info","summary":"Unicode Character Info","tags":["Utilities"],"description":"Look up detailed Unicode properties for any character or U+XXXX codepoint — name, block, plane, general category, bidi class, UTF-8/16/32 encoding, HTML entity, and known confusable characters.\n\n[Try Unicode Character Info in your browser →](https://iotools.cloud/tool/unicode-character-info/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputChars":{"type":"string","description":"Characters or Codepoints"}},"required":[]},"examples":{"letter_a":{"summary":"Letter A","value":{"inputChars":"A"}},"by_codepoint_notation":{"summary":"By codepoint notation","value":{"inputChars":"U+1F389"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"letter_a":{"summary":"Letter A","value":{"tool":"unicode-character-info","tool_version":"1.0.2","outputs":{"results":[{"character":"A","codepoint":"U+0041","property":"Name","value":"LATIN CAPITAL LETTER A"},{"character":"A","codepoint":"U+0041","property":"Block","value":"Basic Latin"},{"character":"A","codepoint":"U+0041","property":"Plane","value":"BMP (Basic Multilingual Plane)"},{"character":"A","codepoint":"U+0041","property":"Category","value":"Lu (Letter, Uppercase)"},{"character":"A","codepoint":"U+0041","property":"Bidi Class","value":"Unsupported (Bidi_Class property)"},{"character":"A","codepoint":"U+0041","property":"UTF-8","value":"0x41"},{"character":"A","codepoint":"U+0041","property":"UTF-16","value":"0x0041"},{"character":"A","codepoint":"U+0041","property":"UTF-32","value":"0x00000041"},{"character":"A","codepoint":"U+0041","property":"HTML Entity","value":"&#65; / &#x41;"},{"character":"A","codepoint":"U+0041","property":"Confusables","value":"Α U+0391 GREEK CAPITAL LETTER ALPHA, А U+0410 CYRILLIC CAPITAL LETTER A"}]},"credits_used":5,"credits_remaining":null}},"by_codepoint_notation":{"summary":"By codepoint notation","value":{"tool":"unicode-character-info","tool_version":"1.0.2","outputs":{"results":[{"character":"🎉","codepoint":"U+01F389","property":"Name","value":"Miscellaneous Symbols and Pictographs (So)"},{"character":"🎉","codepoint":"U+01F389","property":"Block","value":"Miscellaneous Symbols and Pictographs"},{"character":"🎉","codepoint":"U+01F389","property":"Plane","value":"SMP (Supplementary Multilingual Plane)"},{"character":"🎉","codepoint":"U+01F389","property":"Category","value":"So (Symbol, Other)"},{"character":"🎉","codepoint":"U+01F389","property":"Bidi Class","value":"Unsupported (Bidi_Class property)"},{"character":"🎉","codepoint":"U+01F389","property":"UTF-8","value":"0xF0 0x9F 0x8E 0x89"},{"character":"🎉","codepoint":"U+01F389","property":"UTF-16","value":"0xD83C 0xDF89"},{"character":"🎉","codepoint":"U+01F389","property":"UTF-32","value":"0x0001F389"},{"character":"🎉","codepoint":"U+01F389","property":"HTML Entity","value":"&#127881; / &#x1F389;"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Character Properties","items":{"type":"object","properties":{"character":{"type":"string","description":"Character"},"codepoint":{"type":"string","description":"Codepoint"},"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["character","codepoint","property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-canonicalizer":{"post":{"operationId":"run_url_canonicalizer","summary":"URL Canonicalizer","tags":["Utilities"],"description":"Normalize URLs into a single canonical form: lowercase the scheme and host, strip default ports, resolve ./.. path segments, sort query parameters, remove tracking params (utm_*, fbclid, gclid…), drop fragments and collapse duplicate slashes. Runs entirely in your browser — one URL per line.\n\n[Try URL Canonicalizer in your browser →](https://iotools.cloud/tool/url-canonicalizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"urlInput":{"type":"string","description":"URLs"},"decodeUnreserved":{"type":"boolean","description":"Decode unreserved percent-encoded chars (%41 → A)"},"removeDuplicateSlashes":{"type":"boolean","description":"Collapse duplicate slashes (/a//b → /a/b)"},"sortQueryParams":{"type":"boolean","description":"Sort query parameters alphabetically"},"removeTrackingParams":{"type":"boolean","description":"Remove tracking params (utm_*, fbclid, gclid, …)"},"removeFragment":{"type":"boolean","description":"Remove fragment / hash (#section)"}},"required":[]},"examples":{"normalize_three_messy_urls":{"summary":"Normalize three messy URLs","value":{"urlInput":"HTTP://Example.COM:80/a/../b/./c?z=1&a=2#section\nhttps://EXAMPLE.ORG/path//to///page?foo=bar&baz=qux&\nhttp://test.com/%41%42%43/path","decodeUnreserved":"true","removeDuplicateSlashes":"true","sortQueryParams":"true","removeTrackingParams":"true","removeFragment":"true"}},"strip_tracking_parameters":{"summary":"Strip tracking parameters","value":{"urlInput":"https://example.com/page?utm_source=news&id=42&fbclid=abc&b=1","decodeUnreserved":"true","removeDuplicateSlashes":"true","sortQueryParams":"true","removeTrackingParams":"true","removeFragment":"true"}},"add_missing_scheme_keep_fragment_and_query_order":{"summary":"Add missing scheme, keep fragment and query order","value":{"urlInput":"Example.com/Path?b=2&a=1#top","decodeUnreserved":"true","removeDuplicateSlashes":"true","sortQueryParams":"","removeTrackingParams":"true","removeFragment":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"normalize_three_messy_urls":{"summary":"Normalize three messy URLs","value":{"tool":"url-canonicalizer","tool_version":"1.0.2","outputs":{"canonical":"http://example.com/b/c?a=2&z=1\nhttps://example.org/path/to/page?baz=qux&foo=bar\nhttp://test.com/ABC/path"},"credits_used":5,"credits_remaining":null}},"strip_tracking_parameters":{"summary":"Strip tracking parameters","value":{"tool":"url-canonicalizer","tool_version":"1.0.2","outputs":{"canonical":"https://example.com/page?b=1&id=42"},"credits_used":5,"credits_remaining":null}},"add_missing_scheme_keep_fragment_and_query_order":{"summary":"Add missing scheme, keep fragment and query order","value":{"tool":"url-canonicalizer","tool_version":"1.0.2","outputs":{"canonical":"https://example.com/Path?b=2&a=1#top"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"canonical":{"type":"string","description":"Canonical URLs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-extractor":{"post":{"operationId":"run_url_extractor","summary":"URL Extractor","tags":["Utilities"],"description":"Extract and de-duplicate every URL from a block of text, HTML, or a pasted document. Finds http, https and ftp links (plus bare www. links with no scheme), trims stray trailing punctuation and brackets, and lets you filter by link type and sort the results.\n\n[Try URL Extractor in your browser →](https://iotools.cloud/tool/url-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text or HTML with URLs"},"schemeFilter":{"enum":["all","web","ftp"],"description":"Link type"},"includeBareWww":{"type":"boolean","description":"Also match bare www. links (no http:// prefix)"},"sort":{"enum":["found","alpha"],"description":"Sort order"},"separator":{"enum":["newline","comma","semicolon"],"description":"Separator"}},"required":[]},"examples":{"extract_all_links_as_found":{"summary":"Extract all links (as found)","value":{"inputText":"Check out our new homepage at https://www.example.com/products?ref=homepage for the full catalog.\nDocs are here: http://docs.example.org/getting-started/ (see the intro).\nOld download mirror: ftp://files.example.net/pub/release-1.2.tar.gz\nYou can also just visit www.another-example.com or www.another-example.com/about again.\nRead more at <https://blog.example.com/2026/07/21/launch-day>.\nBroken link, ignore: htp://not-a-real-scheme.com\nWikipedia-style link (https://en.wikipedia.org/wiki/URL) explains the format.\nContact support@example.com for help, that's not a URL.\nTrailing punctuation test: visit https://example.com/path, or https://example.com/path.","schemeFilter":"all","includeBareWww":"true","sort":"found","separator":"newline"}},"web_links_only_comma_separated":{"summary":"Web links only, comma-separated","value":{"inputText":"Check out our new homepage at https://www.example.com/products?ref=homepage for the full catalog.\nDocs are here: http://docs.example.org/getting-started/ (see the intro).\nOld download mirror: ftp://files.example.net/pub/release-1.2.tar.gz\nYou can also just visit www.another-example.com or www.another-example.com/about again.\nRead more at <https://blog.example.com/2026/07/21/launch-day>.\nBroken link, ignore: htp://not-a-real-scheme.com\nWikipedia-style link (https://en.wikipedia.org/wiki/URL) explains the format.\nContact support@example.com for help, that's not a URL.\nTrailing punctuation test: visit https://example.com/path, or https://example.com/path.","schemeFilter":"web","includeBareWww":"true","sort":"found","separator":"comma"}},"scheme_prefixed_only_no_bare_www_alphabetical":{"summary":"Scheme-prefixed only (no bare www.), alphabetical","value":{"inputText":"Check out our new homepage at https://www.example.com/products?ref=homepage for the full catalog.\nDocs are here: http://docs.example.org/getting-started/ (see the intro).\nOld download mirror: ftp://files.example.net/pub/release-1.2.tar.gz\nYou can also just visit www.another-example.com or www.another-example.com/about again.\nRead more at <https://blog.example.com/2026/07/21/launch-day>.\nBroken link, ignore: htp://not-a-real-scheme.com\nWikipedia-style link (https://en.wikipedia.org/wiki/URL) explains the format.\nContact support@example.com for help, that's not a URL.\nTrailing punctuation test: visit https://example.com/path, or https://example.com/path.","schemeFilter":"all","includeBareWww":"","sort":"alpha","separator":"newline"}},"no_urls_present":{"summary":"No URLs present","value":{"inputText":"There are no links here, just plain text.","schemeFilter":"all","includeBareWww":"true","sort":"found","separator":"newline"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"extract_all_links_as_found":{"summary":"Extract all links (as found)","value":{"tool":"url-extractor","tool_version":"1.0.2","outputs":{"count":"8","extractedUrls":"https://www.example.com/products?ref=homepage\nhttp://docs.example.org/getting-started/\nftp://files.example.net/pub/release-1.2.tar.gz\nwww.another-example.com\nwww.another-example.com/about\nhttps://blog.example.com/2026/07/21/launch-day\nhttps://en.wikipedia.org/wiki/URL\nhttps://example.com/path"},"credits_used":5,"credits_remaining":null}},"web_links_only_comma_separated":{"summary":"Web links only, comma-separated","value":{"tool":"url-extractor","tool_version":"1.0.2","outputs":{"count":"7","extractedUrls":"https://www.example.com/products?ref=homepage, http://docs.example.org/getting-started/, www.another-example.com, www.another-example.com/about, https://blog.example.com/2026/07/21/launch-day, https://en.wikipedia.org/wiki/URL, https://example.com/path"},"credits_used":5,"credits_remaining":null}},"scheme_prefixed_only_no_bare_www_alphabetical":{"summary":"Scheme-prefixed only (no bare www.), alphabetical","value":{"tool":"url-extractor","tool_version":"1.0.2","outputs":{"count":"6","extractedUrls":"ftp://files.example.net/pub/release-1.2.tar.gz\nhttp://docs.example.org/getting-started/\nhttps://blog.example.com/2026/07/21/launch-day\nhttps://en.wikipedia.org/wiki/URL\nhttps://example.com/path\nhttps://www.example.com/products?ref=homepage"},"credits_used":5,"credits_remaining":null}},"no_urls_present":{"summary":"No URLs present","value":{"tool":"url-extractor","tool_version":"1.0.2","outputs":{"count":"0","extractedUrls":""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"count":{"type":"string","description":"URLs found"},"extractedUrls":{"type":"string","description":"Extracted URLs"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-summarizer":{"post":{"operationId":"run_url_summarizer","summary":"AI URL Summarizer","tags":["Utilities"],"description":"Fetch any live webpage and summarize it with AI — choose the target length and whether you want flowing prose or a bulleted list of key points. No copy-pasting the article text required.\n\n[Try AI URL Summarizer in your browser →](https://iotools.cloud/tool/url-summarizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"length":{"enum":["short","medium","long"],"description":"Summary length"},"format":{"enum":["paragraph","bullet-points"],"description":"Format"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com","length":"short","format":"paragraph"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"stats":{"type":"string","description":"Length change"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-headings":{"post":{"operationId":"run_url_to_headings","summary":"URL Heading Extractor","tags":["Utilities"],"description":"Fetch any live URL and extract its complete H1-H6 heading hierarchy — see every heading in document order with its level, for SEO audits and content-structure checks.\n\n[Try URL Heading Extractor in your browser →](https://iotools.cloud/tool/url-to-headings/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["level","count"]},"headings":{"type":"array","description":"Headings","items":{"type":"object","properties":{"level":{"type":"string","description":"Level"},"text":{"type":"string","description":"Text"}}},"x-iotools-columns":["level","text"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-ip":{"post":{"operationId":"run_url_to_ip","summary":"URL to IP","tags":["Utilities"],"description":"Look up every public IPv4 and IPv6 address behind a URL or domain in one call — no need to pick A or AAAA first, both are resolved and listed together.\n\n[Try URL to IP in your browser →](https://iotools.cloud/tool/url-to-ip/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL or domain"}},"required":["url"]},"examples":{"example_com":{"summary":"example.com","value":{"url":"example.com"}},"https_github_com":{"summary":"https://github.com","value":{"url":"https://github.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"addresses":{"type":"array","description":"IP addresses","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"address":{"type":"string","description":"Address"}}},"x-iotools-columns":["type","address"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/domain-hosting-checker":{"post":{"operationId":"run_domain_hosting_checker","summary":"Domain Hosting Checker","tags":["Utilities"],"description":"Find out who hosts a website — resolves the domain's IP, identifies the network/organization behind it, and shows nameservers and reverse DNS for confirmation.\n\n[Try Domain Hosting Checker in your browser →](https://iotools.cloud/tool/domain-hosting-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain or URL"}},"required":["domain"]},"examples":{"cloudflare_fronted_site":{"summary":"Cloudflare-fronted site","value":{"domain":"cloudflare.com"}},"github":{"summary":"GitHub","value":{"domain":"github.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Hosting details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/url-to-links":{"post":{"operationId":"run_url_to_links","summary":"URL to Links","tags":["Utilities"],"description":"Fetch any live URL and extract every link on the page — resolved to absolute URLs, de-duplicated, and split into internal and external — for SEO audits and site mapping.\n\n[Try URL to Links in your browser →](https://iotools.cloud/tool/url-to-links/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"linkFilter":{"enum":["all","internal","external"],"description":"Show"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example Domain","value":{"url":"https://example.com","linkFilter":"all"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"links":{"type":"array","description":"Links","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"link-text":{"type":"string","description":"Link text"},"type":{"type":"string","description":"Type"}}},"x-iotools-columns":["url","link-text","type"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/user-agent-parser":{"post":{"operationId":"run_user_agent_parser","summary":"User Agent Parser","tags":["Utilities"],"description":"Parse a User-Agent string into browser, version, rendering engine, operating system and device type (desktop, mobile, tablet or bot). Paste one UA per line to parse several at once, with a JSON export.\n\n[Try User Agent Parser in your browser →](https://iotools.cloud/tool/user-agent-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"userAgent":{"type":"string","description":"User-Agent string"}},"required":[]},"examples":{"chrome_on_windows":{"summary":"Chrome on Windows","value":{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}},"safari_on_iphone":{"summary":"Safari on iPhone","value":{"userAgent":"Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1"}},"firefox_on_linux":{"summary":"Firefox on Linux","value":{"userAgent":"Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0"}},"safari_on_ipad":{"summary":"Safari on iPad","value":{"userAgent":"Mozilla/5.0 (iPad; CPU OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1"}},"googlebot_crawler":{"summary":"Googlebot crawler","value":{"userAgent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"chrome_on_windows":{"summary":"Chrome on Windows","value":{"tool":"user-agent-parser","tool_version":"1.0.2","outputs":{"results":[{"browser":"Chrome","browser-version":"120.0.0.0","engine":"Blink 120.0.0.0","os":"Windows","os-version":"10","device-type":"Desktop"}],"json":"{\n  \"userAgent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\",\n  \"browser\": {\n    \"name\": \"Chrome\",\n    \"version\": \"120.0.0.0\"\n  },\n  \"engine\": {\n    \"name\": \"Blink\",\n    \"version\": \"120.0.0.0\"\n  },\n  \"os\": {\n    \"name\": \"Windows\",\n    \"version\": \"10\"\n  },\n  \"deviceType\": \"desktop\",\n  \"isBot\": false,\n  \"botName\": \"\"\n}"},"credits_used":5,"credits_remaining":null}},"safari_on_iphone":{"summary":"Safari on iPhone","value":{"tool":"user-agent-parser","tool_version":"1.0.2","outputs":{"results":[{"browser":"Safari","browser-version":"17.2","engine":"WebKit 605.1.15","os":"iOS","os-version":"17.2","device-type":"Mobile"}],"json":"{\n  \"userAgent\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1\",\n  \"browser\": {\n    \"name\": \"Safari\",\n    \"version\": \"17.2\"\n  },\n  \"engine\": {\n    \"name\": \"WebKit\",\n    \"version\": \"605.1.15\"\n  },\n  \"os\": {\n    \"name\": \"iOS\",\n    \"version\": \"17.2\"\n  },\n  \"deviceType\": \"mobile\",\n  \"isBot\": false,\n  \"botName\": \"\"\n}"},"credits_used":5,"credits_remaining":null}},"firefox_on_linux":{"summary":"Firefox on Linux","value":{"tool":"user-agent-parser","tool_version":"1.0.2","outputs":{"results":[{"browser":"Firefox","browser-version":"121.0","engine":"Gecko 121.0","os":"Linux","os-version":"—","device-type":"Desktop"}],"json":"{\n  \"userAgent\": \"Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0\",\n  \"browser\": {\n    \"name\": \"Firefox\",\n    \"version\": \"121.0\"\n  },\n  \"engine\": {\n    \"name\": \"Gecko\",\n    \"version\": \"121.0\"\n  },\n  \"os\": {\n    \"name\": \"Linux\",\n    \"version\": \"\"\n  },\n  \"deviceType\": \"desktop\",\n  \"isBot\": false,\n  \"botName\": \"\"\n}"},"credits_used":5,"credits_remaining":null}},"safari_on_ipad":{"summary":"Safari on iPad","value":{"tool":"user-agent-parser","tool_version":"1.0.2","outputs":{"results":[{"browser":"Safari","browser-version":"17.2","engine":"WebKit 605.1.15","os":"iOS","os-version":"17.2","device-type":"Tablet"}],"json":"{\n  \"userAgent\": \"Mozilla/5.0 (iPad; CPU OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1\",\n  \"browser\": {\n    \"name\": \"Safari\",\n    \"version\": \"17.2\"\n  },\n  \"engine\": {\n    \"name\": \"WebKit\",\n    \"version\": \"605.1.15\"\n  },\n  \"os\": {\n    \"name\": \"iOS\",\n    \"version\": \"17.2\"\n  },\n  \"deviceType\": \"tablet\",\n  \"isBot\": false,\n  \"botName\": \"\"\n}"},"credits_used":5,"credits_remaining":null}},"googlebot_crawler":{"summary":"Googlebot crawler","value":{"tool":"user-agent-parser","tool_version":"1.0.2","outputs":{"results":[{"browser":"Googlebot","browser-version":"—","engine":"—","os":"—","os-version":"—","device-type":"Bot"}],"json":"{\n  \"userAgent\": \"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)\",\n  \"browser\": {\n    \"name\": \"Googlebot\",\n    \"version\": \"\"\n  },\n  \"engine\": {\n    \"name\": \"\",\n    \"version\": \"\"\n  },\n  \"os\": {\n    \"name\": \"\",\n    \"version\": \"\"\n  },\n  \"deviceType\": \"bot\",\n  \"isBot\": true,\n  \"botName\": \"Googlebot\"\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"browser":{"type":"string","description":"Browser"},"browser-version":{"type":"string","description":"Browser Version"},"engine":{"type":"string","description":"Engine"},"os":{"type":"string","description":"OS"},"os-version":{"type":"string","description":"OS Version"},"device-type":{"type":"string","description":"Device Type"}}},"x-iotools-columns":["browser","browser-version","engine","os","os-version","device-type"]},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/wcag-contrast-checker":{"post":{"operationId":"run_wcag_contrast_checker","summary":"WCAG Contrast Checker","tags":["Utilities"],"description":"Check the WCAG 2.x contrast ratio between a text (foreground) color and a background color. Accepts hex colors (#RGB, #RRGGBB, with or without #) and reports the exact ratio plus pass/fail for WCAG AA (4.5:1 normal, 3:1 large) and AAA (7:1 normal, 4.5:1 large).\n\n[Try WCAG Contrast Checker in your browser →](https://iotools.cloud/tool/wcag-contrast-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"foreground":{"type":"string","description":"Foreground (Text) Color"},"background":{"type":"string","description":"Background Color"}},"required":[]},"examples":{"black_text_on_white_max_contrast_21_1":{"summary":"Black text on white (max contrast, 21:1)","value":{"foreground":"#000","background":"#FFFFFF"}},"gray_on_white_aaa_boundary_exactly_7_1":{"summary":"Gray on white (AAA boundary, exactly 7:1)","value":{"foreground":"595959","background":"#FFFFFF"}},"mid_gray_on_white_fails_aa_normal_passes_aa_large":{"summary":"Mid gray on white (fails AA normal, passes AA large)","value":{"foreground":"#777777","background":"#ffffff"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"black_text_on_white_max_contrast_21_1":{"summary":"Black text on white (max contrast, 21:1)","value":{"tool":"wcag-contrast-checker","tool_version":"1.0.2","outputs":{"summary":"21.00:1 — Passes WCAG AA for normal text","contrastTable":[{"metric":"Contrast Ratio","value":"21.00:1"},{"metric":"WCAG AA — Normal Text (≥ 4.5:1)","value":"Pass"},{"metric":"WCAG AA — Large Text (≥ 3:1)","value":"Pass"},{"metric":"WCAG AAA — Normal Text (≥ 7:1)","value":"Pass"},{"metric":"WCAG AAA — Large Text (≥ 4.5:1)","value":"Pass"},{"metric":"Foreground (parsed)","value":"#000000"},{"metric":"Background (parsed)","value":"#FFFFFF"},{"metric":"Foreground Relative Luminance","value":"0.00000"},{"metric":"Background Relative Luminance","value":"1.00000"}]},"credits_used":5,"credits_remaining":null}},"gray_on_white_aaa_boundary_exactly_7_1":{"summary":"Gray on white (AAA boundary, exactly 7:1)","value":{"tool":"wcag-contrast-checker","tool_version":"1.0.2","outputs":{"summary":"7.00:1 — Passes WCAG AA for normal text","contrastTable":[{"metric":"Contrast Ratio","value":"7.00:1"},{"metric":"WCAG AA — Normal Text (≥ 4.5:1)","value":"Pass"},{"metric":"WCAG AA — Large Text (≥ 3:1)","value":"Pass"},{"metric":"WCAG AAA — Normal Text (≥ 7:1)","value":"Pass"},{"metric":"WCAG AAA — Large Text (≥ 4.5:1)","value":"Pass"},{"metric":"Foreground (parsed)","value":"#595959"},{"metric":"Background (parsed)","value":"#FFFFFF"},{"metric":"Foreground Relative Luminance","value":"0.09990"},{"metric":"Background Relative Luminance","value":"1.00000"}]},"credits_used":5,"credits_remaining":null}},"mid_gray_on_white_fails_aa_normal_passes_aa_large":{"summary":"Mid gray on white (fails AA normal, passes AA large)","value":{"tool":"wcag-contrast-checker","tool_version":"1.0.2","outputs":{"summary":"4.48:1 — Fails WCAG AA for normal text","contrastTable":[{"metric":"Contrast Ratio","value":"4.48:1"},{"metric":"WCAG AA — Normal Text (≥ 4.5:1)","value":"Fail"},{"metric":"WCAG AA — Large Text (≥ 3:1)","value":"Pass"},{"metric":"WCAG AAA — Normal Text (≥ 7:1)","value":"Fail"},{"metric":"WCAG AAA — Large Text (≥ 4.5:1)","value":"Fail"},{"metric":"Foreground (parsed)","value":"#777777"},{"metric":"Background (parsed)","value":"#FFFFFF"},{"metric":"Foreground Relative Luminance","value":"0.18447"},{"metric":"Background Relative Luminance","value":"1.00000"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"contrastTable":{"type":"array","description":"WCAG Compliance","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/webhook-payload-inspector":{"post":{"operationId":"run_webhook_payload_inspector","summary":"Webhook Payload Inspector","tags":["Utilities"],"description":"Paste a raw webhook request — optional HTTP headers plus a JSON or form-encoded body — and get a structured breakdown: parsed headers, a pretty-printed and validated body, detected content-type and size, the sending provider and event type, extracted timestamps, and flagged signature headers (X-Hub-Signature-256, Stripe-Signature, X-GitHub-Event…). Runs entirely in your browser.\n\n[Try Webhook Payload Inspector in your browser →](https://iotools.cloud/tool/webhook-payload-inspector/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":"Raw Webhook Request"}},"required":[]},"examples":{"github_push_headers_json_body":{"summary":"GitHub push (headers + JSON body)","value":{"payload":"POST /webhook HTTP/1.1\nHost: example.com\nContent-Type: application/json\nUser-Agent: GitHub-Hookshot/abc123\nX-GitHub-Event: push\nX-GitHub-Delivery: 72d3162e-cc78-11e3-81ab-4c9367dc0958\nX-Hub-Signature-256: sha256=7d38cdd689735b008b3c702edd92eea23791c5f6\n\n{\n  \"ref\": \"refs/heads/main\",\n  \"pusher\": { \"name\": \"octocat\", \"email\": \"octocat@github.com\" },\n  \"repository\": { \"id\": 123456789, \"name\": \"my-project\", \"pushed_at\": 1709312520 },\n  \"commits\": [ { \"id\": \"789ghi\", \"message\": \"feat: add handler\", \"timestamp\": \"2025-03-01T14:22:00Z\" } ],\n  \"head_commit\": { \"id\": \"789ghi\", \"message\": \"feat: add handler\" }\n}"}},"stripe_event_headers_json_body":{"summary":"Stripe event (headers + JSON body)","value":{"payload":"POST /stripe/webhook HTTP/1.1\nContent-Type: application/json\nStripe-Signature: t=1709312520,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd\n\n{\n  \"id\": \"evt_1OqY5K\",\n  \"object\": \"event\",\n  \"type\": \"payment_intent.succeeded\",\n  \"created\": 1709312520,\n  \"data\": { \"object\": { \"id\": \"pi_3OqY5J\", \"amount\": 2000, \"currency\": \"usd\", \"status\": \"succeeded\" } }\n}"}},"bare_json_body_no_headers":{"summary":"Bare JSON body (no headers)","value":{"payload":"{ \"event\": \"ping\", \"sent_at\": \"2026-01-15T09:30:00Z\", \"attempts\": 1 }"}},"malformed_json":{"summary":"Malformed JSON","value":{"payload":"{ \"event\": \"ping\", \"count\": 3, }"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"github_push_headers_json_body":{"summary":"GitHub push (headers + JSON body)","value":{"tool":"webhook-payload-inspector","tool_version":"1.0.2","outputs":{"overview":[{"property":"Request Line","value":"POST /webhook HTTP/1.1"},{"property":"Format","value":"JSON"},{"property":"Content-Type","value":"application/json"},{"property":"Body Size","value":"355 B"},{"property":"Characters","value":"355"},{"property":"Header Count","value":"6"},{"property":"Valid JSON","value":"Yes"},{"property":"Depth","value":"3"},{"property":"Total Keys","value":"15"},{"property":"Provider","value":"GitHub"},{"property":"Event Type","value":"push"},{"property":"Timestamps Found","value":"2"}],"headers":[{"header":"Host","value":"example.com"},{"header":"Content-Type","value":"application/json"},{"header":"User-Agent","value":"GitHub-Hookshot/abc123"},{"header":"X-GitHub-Event","value":"push"},{"header":"X-GitHub-Delivery","value":"72d3162e-cc78-11e3-81ab-4c9367dc0958"},{"header":"X-Hub-Signature-256","value":"sha256=7d38cdd689735b008b3c702edd92eea23791c5f6"}],"signals":[{"header":"X-GitHub-Event","value":"push","meaning":"GitHub event name (e.g. push, pull_request)"},{"header":"X-GitHub-Delivery","value":"72d3162e-cc78-11e3-81ab-4c9367dc0958","meaning":"GitHub unique delivery GUID"},{"header":"X-Hub-Signature-256","value":"sha256=7d38cdd689735b008b3c702edd92eea23791c5f6","meaning":"HMAC-SHA256 signature — GitHub / Meta webhooks"}],"timestamps":[{"field":"pushed_at","raw-value":"1709312520","utc":"Fri, 01 Mar 2024 17:02:00 GMT"},{"field":"timestamp","raw-value":"2025-03-01T14:22:00Z","utc":"Sat, 01 Mar 2025 14:22:00 GMT"}],"formatted":"{\n  \"ref\": \"refs/heads/main\",\n  \"pusher\": {\n    \"name\": \"octocat\",\n    \"email\": \"octocat@github.com\"\n  },\n  \"repository\": {\n    \"id\": 123456789,\n    \"name\": \"my-project\",\n    \"pushed_at\": 1709312520\n  },\n  \"commits\": [\n    {\n      \"id\": \"789ghi\",\n      \"message\": \"feat: add handler\",\n      \"timestamp\": \"2025-03-01T14:22:00Z\"\n    }\n  ],\n  \"head_commit\": {\n    \"id\": \"789ghi\",\n    \"message\": \"feat: add handler\"\n  }\n}"},"credits_used":5,"credits_remaining":null}},"stripe_event_headers_json_body":{"summary":"Stripe event (headers + JSON body)","value":{"tool":"webhook-payload-inspector","tool_version":"1.0.2","outputs":{"overview":[{"property":"Request Line","value":"POST /stripe/webhook HTTP/1.1"},{"property":"Format","value":"JSON"},{"property":"Content-Type","value":"application/json"},{"property":"Body Size","value":"213 B"},{"property":"Characters","value":"213"},{"property":"Header Count","value":"2"},{"property":"Valid JSON","value":"Yes"},{"property":"Depth","value":"3"},{"property":"Total Keys","value":"10"},{"property":"Provider","value":"Stripe"},{"property":"Event Type","value":"payment_intent.succeeded"},{"property":"Timestamps Found","value":"1"}],"headers":[{"header":"Content-Type","value":"application/json"},{"header":"Stripe-Signature","value":"t=1709312520,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"}],"signals":[{"header":"Stripe-Signature","value":"t=1709312520,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd","meaning":"Stripe webhook signature (timestamp + HMAC-SHA256)"}],"timestamps":[{"field":"created","raw-value":"1709312520","utc":"Fri, 01 Mar 2024 17:02:00 GMT"}],"formatted":"{\n  \"id\": \"evt_1OqY5K\",\n  \"object\": \"event\",\n  \"type\": \"payment_intent.succeeded\",\n  \"created\": 1709312520,\n  \"data\": {\n    \"object\": {\n      \"id\": \"pi_3OqY5J\",\n      \"amount\": 2000,\n      \"currency\": \"usd\",\n      \"status\": \"succeeded\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"bare_json_body_no_headers":{"summary":"Bare JSON body (no headers)","value":{"tool":"webhook-payload-inspector","tool_version":"1.0.2","outputs":{"overview":[{"property":"Format","value":"JSON"},{"property":"Content-Type","value":"application/json"},{"property":"Body Size","value":"69 B"},{"property":"Characters","value":"69"},{"property":"Valid JSON","value":"Yes"},{"property":"Depth","value":"1"},{"property":"Total Keys","value":"3"},{"property":"Timestamps Found","value":"1"}],"headers":[],"signals":[],"timestamps":[{"field":"sent_at","raw-value":"2026-01-15T09:30:00Z","utc":"Thu, 15 Jan 2026 09:30:00 GMT"}],"formatted":"{\n  \"event\": \"ping\",\n  \"sent_at\": \"2026-01-15T09:30:00Z\",\n  \"attempts\": 1\n}"},"credits_used":5,"credits_remaining":null}},"malformed_json":{"summary":"Malformed JSON","value":{"tool":"webhook-payload-inspector","tool_version":"1.0.2","outputs":{"overview":[{"property":"Format","value":"JSON (invalid)"},{"property":"Content-Type","value":"application/json"},{"property":"Body Size","value":"32 B"},{"property":"Characters","value":"32"},{"property":"Valid JSON","value":"No"},{"property":"Parse Error","value":"Expected double-quoted property name in JSON at position 31 (line 1 column 32)"}],"headers":[],"signals":[],"timestamps":[],"formatted":"{ \"event\": \"ping\", \"count\": 3, }"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"overview":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"headers":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["header","value"]},"signals":{"type":"array","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"value":{"type":"string","description":"Value"},"meaning":{"type":"string","description":"Meaning"}}},"x-iotools-columns":["header","value","meaning"]},"timestamps":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"raw-value":{"type":"string","description":"Raw Value"},"utc":{"type":"string","description":"UTC"}}},"x-iotools-columns":["field","raw-value","utc"]},"formatted":{"type":"string","description":"Body"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/webhook-signature-validator":{"post":{"operationId":"run_webhook_signature_validator","summary":"Webhook Signature Validator","tags":["Utilities"],"description":"Verify a webhook's HMAC signature: paste the raw payload body, your signing secret and the signature from the provider's header (GitHub sha256=…, Shopify base64, or any custom HMAC-SHA1/SHA-256/SHA-512 in hex or base64), and confirm whether it matches.\n\n[Try Webhook Signature Validator in your browser →](https://iotools.cloud/tool/webhook-signature-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":"Payload body"},"secret":{"type":"string","description":"Signing secret"},"provider":{"enum":["custom","github","github-legacy","shopify"],"description":"Provider"},"algorithm":{"enum":["sha1","sha256","sha512"],"description":"Algorithm"},"signatureFormat":{"enum":["hex","base64"],"description":"Signature encoding"},"claimedSignature":{"type":"string","description":"Claimed signature"}},"required":[]},"examples":{"github_webhook_valid_signature":{"summary":"GitHub webhook — valid signature","value":{"payload":"{\"event\":\"order.created\",\"data\":{\"id\":12345,\"amount\":99.99,\"currency\":\"USD\"}}","secret":"whsec_test_secret_key_123","provider":"github","claimedSignature":"sha256=4492593f8472966556642f184fed7bb1c38d29a17c46cb3cdeb3dfd538ed1203"}},"tampered_payload_invalid_signature":{"summary":"Tampered payload — invalid signature","value":{"payload":"{\"event\":\"order.created\",\"data\":{\"id\":12345,\"amount\":99.99,\"currency\":\"USD\"}}","secret":"whsec_test_secret_key_123","provider":"github","claimedSignature":"sha256=0000000000000000000000000000000000000000000000000000000000000000"}},"shopify_webhook_valid_base64_signature":{"summary":"Shopify webhook — valid base64 signature","value":{"payload":"{\"event\":\"order.created\",\"data\":{\"id\":12345,\"amount\":99.99,\"currency\":\"USD\"}}","secret":"whsec_test_secret_key_123","provider":"shopify","claimedSignature":"RJJZP4RylmVWZC8YT+17scONKaF8Rss83rPf1TjtEgM="}},"custom_hmac_sha_512_uppercase_hex_accepted":{"summary":"Custom HMAC-SHA-512 (uppercase hex accepted)","value":{"payload":"{\"event\":\"order.created\",\"data\":{\"id\":12345,\"amount\":99.99,\"currency\":\"USD\"}}","secret":"whsec_test_secret_key_123","provider":"custom","algorithm":"sha512","signatureFormat":"hex","claimedSignature":"sha512=AE6DC09FDCF63444EB3A4206202ACD64451F4790FACE6A0EF6287D3CAF3B1BB49366D3B9C7C49DB9F97B50D0923A89DE68EDC7C850E07D22CB3B72194D31BCEA"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"github_webhook_valid_signature":{"summary":"GitHub webhook — valid signature","value":{"tool":"webhook-signature-validator","tool_version":"1.0.2","outputs":{"result":"Valid — signature matches","expectedSignature":"4492593f8472966556642f184fed7bb1c38d29a17c46cb3cdeb3dfd538ed1203"},"credits_used":5,"credits_remaining":null}},"tampered_payload_invalid_signature":{"summary":"Tampered payload — invalid signature","value":{"tool":"webhook-signature-validator","tool_version":"1.0.2","outputs":{"result":"Invalid — signature does not match","expectedSignature":"4492593f8472966556642f184fed7bb1c38d29a17c46cb3cdeb3dfd538ed1203"},"credits_used":5,"credits_remaining":null}},"shopify_webhook_valid_base64_signature":{"summary":"Shopify webhook — valid base64 signature","value":{"tool":"webhook-signature-validator","tool_version":"1.0.2","outputs":{"result":"Valid — signature matches","expectedSignature":"RJJZP4RylmVWZC8YT+17scONKaF8Rss83rPf1TjtEgM="},"credits_used":5,"credits_remaining":null}},"custom_hmac_sha_512_uppercase_hex_accepted":{"summary":"Custom HMAC-SHA-512 (uppercase hex accepted)","value":{"tool":"webhook-signature-validator","tool_version":"1.0.2","outputs":{"result":"Valid — signature matches","expectedSignature":"ae6dc09fdcf63444eb3a4206202acd64451f4790face6a0ef6287d3caf3b1bb49366d3b9c7c49db9f97b50d0923a89de68edc7c850e07d22cb3b72194d31bcea"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"string","description":"Verification result"},"expectedSignature":{"type":"string","description":"Expected signature (computed)"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/word-frequency":{"post":{"operationId":"run_word_frequency","summary":"Word Frequency Counter","tags":["Utilities"],"description":"Count how often each word appears in a block of text and get a ranked frequency table with counts and percentages. Case-sensitivity, stop-word filtering, a minimum word length and a top-N limit are all configurable.\n\n[Try Word Frequency Counter in your browser →](https://iotools.cloud/tool/word-frequency/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Input Text"},"caseSensitive":{"type":"boolean","description":"Case sensitive"},"ignoreStopWords":{"type":"boolean","description":"Ignore common stop words"},"minWordLength":{"type":"number","description":"Minimum word length","minimum":1,"maximum":12},"topN":{"type":"number","description":"Show top N words","minimum":5,"maximum":200}},"required":[]},"examples":{"basic_word_frequency":{"summary":"Basic word frequency","value":{"inputText":"The cat sat on the mat. The cat ran."}},"ignore_stop_words":{"summary":"Ignore stop words","value":{"inputText":"The cat sat on the mat. The cat ran.","ignoreStopWords":"true"}},"case_sensitive":{"summary":"Case sensitive","value":{"inputText":"The cat sat on the mat. The cat ran.","caseSensitive":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"basic_word_frequency":{"summary":"Basic word frequency","value":{"tool":"word-frequency","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","word":"the","count":"3","percentage":"33.33%"},{"rank":"2","word":"cat","count":"2","percentage":"22.22%"},{"rank":"3","word":"mat","count":"1","percentage":"11.11%"},{"rank":"4","word":"on","count":"1","percentage":"11.11%"},{"rank":"5","word":"ran","count":"1","percentage":"11.11%"},{"rank":"6","word":"sat","count":"1","percentage":"11.11%"}]},"credits_used":5,"credits_remaining":null}},"ignore_stop_words":{"summary":"Ignore stop words","value":{"tool":"word-frequency","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","word":"cat","count":"2","percentage":"40.00%"},{"rank":"2","word":"mat","count":"1","percentage":"20.00%"},{"rank":"3","word":"ran","count":"1","percentage":"20.00%"},{"rank":"4","word":"sat","count":"1","percentage":"20.00%"}]},"credits_used":5,"credits_remaining":null}},"case_sensitive":{"summary":"Case sensitive","value":{"tool":"word-frequency","tool_version":"1.0.2","outputs":{"frequency":[{"rank":"1","word":"The","count":"2","percentage":"22.22%"},{"rank":"2","word":"cat","count":"2","percentage":"22.22%"},{"rank":"3","word":"mat","count":"1","percentage":"11.11%"},{"rank":"4","word":"on","count":"1","percentage":"11.11%"},{"rank":"5","word":"ran","count":"1","percentage":"11.11%"},{"rank":"6","word":"sat","count":"1","percentage":"11.11%"},{"rank":"7","word":"the","count":"1","percentage":"11.11%"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"frequency":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"string","description":"#"},"word":{"type":"string","description":"Word"},"count":{"type":"string","description":"Count"},"percentage":{"type":"string","description":"Percentage"}}},"x-iotools-columns":["rank","word","count","percentage"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/yaml-diff-comparator":{"post":{"operationId":"run_yaml_diff_comparator","summary":"YAML Diff Comparator","tags":["Utilities"],"description":"Compare two YAML documents and see exactly what changed — added, removed and modified keys with a path to each one, plus a unified line diff of the normalized YAML. Structural comparison ignores indentation, quoting and flow-vs-block formatting, and handles multi-document streams. Runs entirely in your browser.\n\n[Try YAML Diff Comparator in your browser →](https://iotools.cloud/tool/yaml-diff-comparator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"yamlA":{"type":"string","description":"YAML A (original)"},"yamlB":{"type":"string","description":"YAML B (modified)"},"seqOrder":{"enum":["position","ignore"],"description":"Compare list items"},"looseScalars":{"type":"boolean","description":"Ignore type differences"}},"required":[]},"examples":{"kubernetes_deployment_replicas_image_labels_and_ports_changed":{"summary":"Kubernetes deployment: replicas, image, labels and ports changed","value":{"yamlA":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web\n  labels:\n    app: web\n    tier: frontend\nspec:\n  replicas: 2\n  template:\n    spec:\n      containers:\n        - name: web\n          image: nginx:1.25\n          ports:\n            - containerPort: 80\n","yamlB":"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web\n  labels:\n    app: web\n    env: production\nspec:\n  replicas: 4\n  strategy: RollingUpdate\n  template:\n    spec:\n      containers:\n        - name: web\n          image: nginx:1.27\n          ports:\n            - containerPort: 8080\n","seqOrder":"position","looseScalars":""}},"reformatted_but_equivalent_flow_style_quoting_indentation":{"summary":"Reformatted but equivalent (flow style, quoting, indentation)","value":{"yamlA":"name: app\nports:\n  - 80\n  - 443\ndebug: true\n","yamlB":"{ \"name\": app, \"ports\": [80, 443], \"debug\": true }\n","seqOrder":"position","looseScalars":""}},"list_compared_as_an_unordered_set":{"summary":"List compared as an unordered set","value":{"yamlA":"tags:\n  - beta\n  - alpha\n","yamlB":"tags:\n  - alpha\n  - beta\n","seqOrder":"ignore","looseScalars":""}},"quoted_vs_unquoted_values_with_type_differences_ignored":{"summary":"Quoted vs unquoted values with type differences ignored","value":{"yamlA":"port: 8080\nenabled: true\n","yamlB":"port: \"8080\"\nenabled: \"true\"\n","seqOrder":"position","looseScalars":"true"}},"multi_document_stream_separated":{"summary":"Multi-document stream (--- separated)","value":{"yamlA":"kind: Service\nport: 80\n---\nkind: Ingress\nhost: example.com\n","yamlB":"kind: Service\nport: 443\n---\nkind: Ingress\nhost: example.com\n","seqOrder":"position","looseScalars":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"kubernetes_deployment_replicas_image_labels_and_ports_changed":{"summary":"Kubernetes deployment: replicas, image, labels and ports changed","value":{"tool":"yaml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"2"},{"metric":"Removed","value":"1"},{"metric":"Changed","value":"3"},{"metric":"Documents","value":"1"},{"metric":"Result","value":"6 differences"}],"structuralDiff":"- metadata.labels.tier  \"frontend\"\n+ metadata.labels.env  \"production\"\n~ spec.replicas  2 -> 4\n~ spec.template.spec.containers[0].image  \"nginx:1.25\" -> \"nginx:1.27\"\n~ spec.template.spec.containers[0].ports[0].containerPort  80 -> 8080\n+ spec.strategy  \"RollingUpdate\"","unifiedDiff":"--- YAML A\n+++ YAML B\n@@ -4,13 +4,14 @@\n   name: web\n   labels:\n     app: web\n-    tier: frontend\n+    env: production\n spec:\n-  replicas: 2\n+  replicas: 4\n+  strategy: RollingUpdate\n   template:\n     spec:\n       containers:\n         - name: web\n-          image: nginx:1.25\n+          image: nginx:1.27\n           ports:\n-            - containerPort: 80\n+            - containerPort: 8080","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>apiVersion: apps/v1</div><div>kind: Deployment</div><div>metadata:</div><div>  name: web</div><div>  labels:</div><div>    app: web</div><div>    <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">tier</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">env</span>: <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">frontend</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">production</span></div><div>spec:</div><div><span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">  replicas: 2</span></div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">  replicas: 4</span></div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">  strategy: RollingUpdate</span></div><div>  template:</div><div>    spec:</div><div>      containers:</div><div>        - name: web</div><div>          image: nginx:1.2<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">5</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">7</span></div><div>          ports:</div><div>            - containerPort: 80<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">80</span></div></div>"},"credits_used":5,"credits_remaining":null}},"reformatted_but_equivalent_flow_style_quoting_indentation":{"summary":"Reformatted but equivalent (flow style, quoting, indentation)","value":{"tool":"yaml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"0"},{"metric":"Removed","value":"0"},{"metric":"Changed","value":"0"},{"metric":"Documents","value":"1"},{"metric":"Result","value":"Documents are equivalent"}],"structuralDiff":"No structural differences.","unifiedDiff":"","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>name: app</div><div>ports:</div><div>  - 80</div><div>  - 443</div><div>debug: true</div></div>"},"credits_used":5,"credits_remaining":null}},"list_compared_as_an_unordered_set":{"summary":"List compared as an unordered set","value":{"tool":"yaml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"0"},{"metric":"Removed","value":"0"},{"metric":"Changed","value":"0"},{"metric":"Documents","value":"1"},{"metric":"Result","value":"Documents are equivalent"}],"structuralDiff":"No structural differences.","unifiedDiff":"--- YAML A\n+++ YAML B\n@@ -1,3 +1,3 @@\n tags:\n-  - beta\n   - alpha\n+  - beta","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>tags:</div><div><span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">  - beta</span></div><div>  - alpha</div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">  - beta</span></div></div>"},"credits_used":5,"credits_remaining":null}},"quoted_vs_unquoted_values_with_type_differences_ignored":{"summary":"Quoted vs unquoted values with type differences ignored","value":{"tool":"yaml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"0"},{"metric":"Removed","value":"0"},{"metric":"Changed","value":"0"},{"metric":"Documents","value":"1"},{"metric":"Result","value":"Documents are equivalent"}],"structuralDiff":"No structural differences.","unifiedDiff":"--- YAML A\n+++ YAML B\n@@ -1,2 +1,2 @@\n-port: 8080\n-enabled: true\n+port: \"8080\"\n+enabled: \"true\"","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>port: <span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">\"</span>8080<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">\"</span></div><div>enabled: <span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">\"</span>true<span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">\"</span></div></div>"},"credits_used":5,"credits_remaining":null}},"multi_document_stream_separated":{"summary":"Multi-document stream (--- separated)","value":{"tool":"yaml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"0"},{"metric":"Removed","value":"0"},{"metric":"Changed","value":"1"},{"metric":"Documents","value":"2"},{"metric":"Result","value":"1 difference"}],"structuralDiff":"~ doc[1].port  80 -> 443","unifiedDiff":"--- YAML A\n+++ YAML B\n@@ -1,5 +1,5 @@\n kind: Service\n-port: 80\n+port: 443\n ---\n kind: Ingress\n host: example.com","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>kind: Service</div><div>port: <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">80</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">443</span></div><div>---</div><div>kind: Ingress</div><div>host: example.com</div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"structuralDiff":{"type":"string","description":"Structural diff"},"unifiedDiff":{"type":"string","description":"Unified diff (normalized YAML)"},"diffHtml":{"type":"string","description":"Diff view HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/word-counter":{"post":{"operationId":"run_word_counter","summary":"Word Counter","tags":["Utilities"],"description":"Count words, unique words, characters, sentences, paragraphs and syllables — with reading time, speaking time and a top-10 word density table, updated live as you type.\n\n[Try Word Counter in your browser →](https://iotools.cloud/tool/word-counter/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","description":"Your text"}},"required":[]},"examples":{"sample_text":{"summary":"Sample text","value":{"text":"Hello World! This is a test.\n\nThis is another test."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"sample_text":{"summary":"Sample text","value":{"tool":"word-counter","tool_version":"1.0.2","outputs":{"stats":[{"metric":"Words","value":"10"},{"metric":"Unique words","value":"7"},{"metric":"Characters","value":"51"},{"metric":"Characters (no spaces)","value":"41"},{"metric":"Sentences","value":"3"},{"metric":"Paragraphs","value":"2"},{"metric":"Syllables","value":"13"},{"metric":"Reading time","value":"1 minute"},{"metric":"Speaking time","value":"1 minute"}],"density":[{"word":"this","count":"2"},{"word":"is","count":"2"},{"word":"test","count":"2"},{"word":"hello","count":"1"},{"word":"world","count":"1"},{"word":"a","count":"1"},{"word":"another","count":"1"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"stats":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"density":{"type":"array","items":{"type":"object","properties":{"word":{"type":"string","description":"Word"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["word","count"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xpath-tester":{"post":{"operationId":"run_xpath_tester","summary":"XPath Tester","tags":["Utilities"],"description":"Evaluate an XPath expression against XML or HTML input and see every matching node, attribute or text value next to its resolved path. Runs entirely in your browser.\n\n[Try XPath Tester in your browser →](https://iotools.cloud/tool/xpath-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlInput":{"type":"string","description":"XML (or HTML) input"},"xPathExpression":{"type":"string","description":"XPath expression"}},"required":[]},"examples":{"element_path":{"summary":"Element path","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"/store/book/title"}},"descendant_or_self":{"summary":"Descendant-or-self (//)","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"//author"}},"wildcard":{"summary":"Wildcard (*)","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"/store/book[1]/*"}},"attribute_selection":{"summary":"Attribute selection","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"//book/@category"}},"position_predicate":{"summary":"Position predicate","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"/store/book[2]/title"}},"attribute_equality_predicate":{"summary":"Attribute-equality predicate","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"//book[@category='fiction']/title"}},"text_node_test":{"summary":"text() node test","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"/store/book[1]/title/text()"}},"count":{"summary":"count()","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"count(//book)"}},"unsupported_unquoted_predicate_value_throws_not_a_silent_empty_wrong_result":{"summary":"Unsupported unquoted predicate value throws (not a silent empty/wrong result)","value":{"xmlInput":"<store><book category=\"reference\"><title>Sayings of the Century</title><author>Nigel Rees</author><price>8.95</price></book><book category=\"fiction\"><title>Sword of Honour</title><author>Evelyn Waugh</author><price>12.99</price></book><book category=\"fiction\"><title>Moby Dick</title><author>Herman Melville</author><price>8.99</price></book><book category=\"fiction\"><title>The Lord of the Rings</title><author>J. R. R. Tolkien</author><price>22.99</price></book></store>","xPathExpression":"//book[@category=fiction]"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"element_path":{"summary":"Element path","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"4 matches found.","matches":[{"path":"/store[1]/book[1]/title[1]","value":"Sayings of the Century"},{"path":"/store[1]/book[2]/title[1]","value":"Sword of Honour"},{"path":"/store[1]/book[3]/title[1]","value":"Moby Dick"},{"path":"/store[1]/book[4]/title[1]","value":"The Lord of the Rings"}]},"credits_used":5,"credits_remaining":null}},"descendant_or_self":{"summary":"Descendant-or-self (//)","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"4 matches found.","matches":[{"path":"/store[1]/book[1]/author[1]","value":"Nigel Rees"},{"path":"/store[1]/book[2]/author[1]","value":"Evelyn Waugh"},{"path":"/store[1]/book[3]/author[1]","value":"Herman Melville"},{"path":"/store[1]/book[4]/author[1]","value":"J. R. R. Tolkien"}]},"credits_used":5,"credits_remaining":null}},"wildcard":{"summary":"Wildcard (*)","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"3 matches found.","matches":[{"path":"/store[1]/book[1]/title[1]","value":"Sayings of the Century"},{"path":"/store[1]/book[1]/author[1]","value":"Nigel Rees"},{"path":"/store[1]/book[1]/price[1]","value":"8.95"}]},"credits_used":5,"credits_remaining":null}},"attribute_selection":{"summary":"Attribute selection","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"4 matches found.","matches":[{"path":"/store[1]/book[1]/@category","value":"reference"},{"path":"/store[1]/book[2]/@category","value":"fiction"},{"path":"/store[1]/book[3]/@category","value":"fiction"},{"path":"/store[1]/book[4]/@category","value":"fiction"}]},"credits_used":5,"credits_remaining":null}},"position_predicate":{"summary":"Position predicate","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"1 match found.","matches":[{"path":"/store[1]/book[2]/title[1]","value":"Sword of Honour"}]},"credits_used":5,"credits_remaining":null}},"attribute_equality_predicate":{"summary":"Attribute-equality predicate","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"3 matches found.","matches":[{"path":"/store[1]/book[2]/title[1]","value":"Sword of Honour"},{"path":"/store[1]/book[3]/title[1]","value":"Moby Dick"},{"path":"/store[1]/book[4]/title[1]","value":"The Lord of the Rings"}]},"credits_used":5,"credits_remaining":null}},"text_node_test":{"summary":"text() node test","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"1 match found.","matches":[{"path":"/store[1]/book[1]/title[1]/text()[1]","value":"Sayings of the Century"}]},"credits_used":5,"credits_remaining":null}},"count":{"summary":"count()","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"Count: 4","matches":[{"path":"count(//book)","value":"4"}]},"credits_used":5,"credits_remaining":null}},"unsupported_unquoted_predicate_value_throws_not_a_silent_empty_wrong_result":{"summary":"Unsupported unquoted predicate value throws (not a silent empty/wrong result)","value":{"tool":"xpath-tester","tool_version":"1.0.2","outputs":{"summary":"Error — Expected a quoted string after '=' in predicate \"[@category=fiction]\" (unquoted/numeric comparisons are not supported).","matches":[]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Result"},"matches":{"type":"array","description":"Matches","items":{"type":"object","properties":{"path":{"type":"string","description":"Path"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["path","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/youtube-thumbnail-downloader":{"post":{"operationId":"run_youtube_thumbnail_downloader","summary":"YouTube Thumbnail Downloader","tags":["Utilities"],"description":"Get the thumbnail image URLs of any YouTube video in every available size (1280×720 down to 120×90) — paste the video, Shorts, or youtu.be link and download the image you need.\n\n[Try YouTube Thumbnail Downloader in your browser →](https://iotools.cloud/tool/youtube-thumbnail-downloader/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"videoUrl":{"type":"string","description":"YouTube video URL"}},"required":[]},"examples":{"standard_watch_url":{"summary":"Standard watch URL","value":{"videoUrl":"https://www.youtube.com/watch?v=erLk59H86ww"}},"short_youtu_be_link":{"summary":"Short youtu.be link","value":{"videoUrl":"https://youtu.be/LXb3EKWsInQ?t=42"}},"youtube_shorts_link":{"summary":"YouTube Shorts link","value":{"videoUrl":"https://www.youtube.com/shorts/KLuTLF3x9sA"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"standard_watch_url":{"summary":"Standard watch URL","value":{"tool":"youtube-thumbnail-downloader","tool_version":"1.0.2","outputs":{"videoId":"erLk59H86ww","thumbnails":[{"quality":"Max resolution (maxresdefault)","resolution":"1280×720","image-url":"https://img.youtube.com/vi/erLk59H86ww/maxresdefault.jpg"},{"quality":"Standard definition (sddefault)","resolution":"640×480","image-url":"https://img.youtube.com/vi/erLk59H86ww/sddefault.jpg"},{"quality":"High quality (hqdefault)","resolution":"480×360","image-url":"https://img.youtube.com/vi/erLk59H86ww/hqdefault.jpg"},{"quality":"Medium quality (mqdefault)","resolution":"320×180","image-url":"https://img.youtube.com/vi/erLk59H86ww/mqdefault.jpg"},{"quality":"Small thumbnail (default)","resolution":"120×90","image-url":"https://img.youtube.com/vi/erLk59H86ww/default.jpg"}]},"credits_used":5,"credits_remaining":null}},"short_youtu_be_link":{"summary":"Short youtu.be link","value":{"tool":"youtube-thumbnail-downloader","tool_version":"1.0.2","outputs":{"videoId":"LXb3EKWsInQ","thumbnails":[{"quality":"Max resolution (maxresdefault)","resolution":"1280×720","image-url":"https://img.youtube.com/vi/LXb3EKWsInQ/maxresdefault.jpg"},{"quality":"Standard definition (sddefault)","resolution":"640×480","image-url":"https://img.youtube.com/vi/LXb3EKWsInQ/sddefault.jpg"},{"quality":"High quality (hqdefault)","resolution":"480×360","image-url":"https://img.youtube.com/vi/LXb3EKWsInQ/hqdefault.jpg"},{"quality":"Medium quality (mqdefault)","resolution":"320×180","image-url":"https://img.youtube.com/vi/LXb3EKWsInQ/mqdefault.jpg"},{"quality":"Small thumbnail (default)","resolution":"120×90","image-url":"https://img.youtube.com/vi/LXb3EKWsInQ/default.jpg"}]},"credits_used":5,"credits_remaining":null}},"youtube_shorts_link":{"summary":"YouTube Shorts link","value":{"tool":"youtube-thumbnail-downloader","tool_version":"1.0.2","outputs":{"videoId":"KLuTLF3x9sA","thumbnails":[{"quality":"Max resolution (maxresdefault)","resolution":"1280×720","image-url":"https://img.youtube.com/vi/KLuTLF3x9sA/maxresdefault.jpg"},{"quality":"Standard definition (sddefault)","resolution":"640×480","image-url":"https://img.youtube.com/vi/KLuTLF3x9sA/sddefault.jpg"},{"quality":"High quality (hqdefault)","resolution":"480×360","image-url":"https://img.youtube.com/vi/KLuTLF3x9sA/hqdefault.jpg"},{"quality":"Medium quality (mqdefault)","resolution":"320×180","image-url":"https://img.youtube.com/vi/KLuTLF3x9sA/mqdefault.jpg"},{"quality":"Small thumbnail (default)","resolution":"120×90","image-url":"https://img.youtube.com/vi/KLuTLF3x9sA/default.jpg"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"videoId":{"type":"string","description":"Video ID"},"thumbnails":{"type":"array","description":"Thumbnails","items":{"type":"object","properties":{"quality":{"type":"string","description":"Quality"},"resolution":{"type":"string","description":"Resolution"},"image-url":{"type":"string","description":"Image URL"}}},"x-iotools-columns":["quality","resolution","image-url"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/youtube-playlist-extractor":{"post":{"operationId":"run_youtube_playlist_extractor","summary":"YouTube Playlist Extractor","tags":["Utilities"],"description":"Turn a YouTube playlist link into a full list of its videos — paste the link and get every video's ID, watch URL, title, channel and duration as a downloadable table.\n\n[Try YouTube Playlist Extractor in your browser →](https://iotools.cloud/tool/youtube-playlist-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"playlistUrl":{"type":"string","description":"YouTube playlist URL"}},"required":["playlistUrl"]},"examples":{"thenewboston_java_programming_tutorials":{"summary":"thenewboston — Java Programming Tutorials","value":{"playlistUrl":"https://www.youtube.com/playlist?list=PLFE2CE09D83EE3E28"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"playlistTitle":{"type":"string","description":"Playlist"},"channel":{"type":"string","description":"Channel"},"videos":{"type":"array","description":"Videos","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"video-id":{"type":"string","description":"Video ID"},"title":{"type":"string","description":"Title"},"channel":{"type":"string","description":"Channel"},"duration":{"type":"string","description":"Duration"},"watch-url":{"type":"string","description":"Watch URL"},"thumbnail-url":{"type":"string","description":"Thumbnail URL"}}},"x-iotools-columns":["index","video-id","title","channel","duration","watch-url","thumbnail-url"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vimeo-playlist-extractor":{"post":{"operationId":"run_vimeo_playlist_extractor","summary":"Vimeo Playlist Extractor","tags":["Utilities"],"description":"Turn a Vimeo Showcase (Vimeo's playlist feature) into a full list of its videos — paste the link and get every video's ID, watch URL, title, uploader and duration as a downloadable table.\n\n[Try Vimeo Playlist Extractor in your browser →](https://iotools.cloud/tool/vimeo-playlist-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":9,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"showcaseUrl":{"type":"string","description":"Vimeo showcase URL"}},"required":["showcaseUrl"]},"examples":{"church_of_england_in_saddleworth_hymnary":{"summary":"Church of England in Saddleworth — Hymnary","value":{"showcaseUrl":"https://vimeo.com/showcase/8449374"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"playlistTitle":{"type":"string","description":"Showcase"},"owner":{"type":"string","description":"Owner"},"videos":{"type":"array","description":"Videos","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"video-id":{"type":"string","description":"Video ID"},"title":{"type":"string","description":"Title"},"uploader":{"type":"string","description":"Uploader"},"duration":{"type":"string","description":"Duration"},"watch-url":{"type":"string","description":"Watch URL"},"thumbnail-url":{"type":"string","description":"Thumbnail URL"}}},"x-iotools-columns":["index","video-id","title","uploader","duration","watch-url","thumbnail-url"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dailymotion-playlist-extractor":{"post":{"operationId":"run_dailymotion_playlist_extractor","summary":"Dailymotion Playlist Extractor","tags":["Utilities"],"description":"Turn a Dailymotion playlist link into a full list of its videos — paste the link and get every video's ID, watch URL, title and duration in a downloadable table.\n\n[Try Dailymotion Playlist Extractor in your browser →](https://iotools.cloud/tool/dailymotion-playlist-extractor/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"playlistUrl":{"type":"string","description":"Dailymotion playlist URL"}},"required":["playlistUrl"]},"examples":{"extract_a_public_dailymotion_playlist":{"summary":"Extract a public Dailymotion playlist","value":{"playlistUrl":"https://www.dailymotion.com/playlist/x6d14y"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"playlistTitle":{"type":"string","description":"Playlist"},"owner":{"type":"string","description":"Owner"},"videos":{"type":"array","description":"Videos","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"video-id":{"type":"string","description":"Video ID"},"title":{"type":"string","description":"Title"},"duration":{"type":"string","description":"Duration"},"watch-url":{"type":"string","description":"Watch URL"},"thumbnail-url":{"type":"string","description":"Thumbnail URL"}}},"x-iotools-columns":["index","video-id","title","duration","watch-url","thumbnail-url"]},"notes":{"type":"string","description":"Notes"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/zip-code-validator":{"post":{"operationId":"run_zip_code_validator","summary":"ZIP Code Validator","tags":["Utilities"],"description":"Validate US ZIP codes — check one or many at once for correct 5-digit or ZIP+4 format.\n\n[Try ZIP Code Validator in your browser →](https://iotools.cloud/tool/zip-code-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"zipCodes":{"type":"string","description":"ZIP Codes"}},"required":[]},"examples":{"mixed_valid_and_invalid_zip_codes":{"summary":"Mixed valid and invalid ZIP codes","value":{"zipCodes":"90210\n10001\n99501-3456\n12345\n00000\n123\n90210-\n90210-12\n55555-4444\nABCDE\n12345-6789"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_valid_and_invalid_zip_codes":{"summary":"Mixed valid and invalid ZIP codes","value":{"tool":"zip-code-validator","tool_version":"1.0.2","outputs":{"results":[{"zip-code":"90210","status":"Valid","format":"5-digit"},{"zip-code":"10001","status":"Valid","format":"5-digit"},{"zip-code":"99501-3456","status":"Valid","format":"ZIP+4"},{"zip-code":"12345","status":"Valid","format":"5-digit"},{"zip-code":"00000","status":"Valid","format":"5-digit"},{"zip-code":"123","status":"Invalid","format":""},{"zip-code":"90210-","status":"Invalid","format":""},{"zip-code":"90210-12","status":"Invalid","format":""},{"zip-code":"55555-4444","status":"Valid","format":"ZIP+4"},{"zip-code":"ABCDE","status":"Invalid","format":""},{"zip-code":"12345-6789","status":"Valid","format":"ZIP+4"}],"summary":"11 ZIP codes checked: 7 valid, 4 invalid"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"results":{"type":"array","description":"Validation Results","items":{"type":"object","properties":{"zip-code":{"type":"string","description":"ZIP Code"},"status":{"type":"string","description":"Status"},"format":{"type":"string","description":"Format"}}},"x-iotools-columns":["zip-code","status","format"]},"summary":{"type":"string","description":"Summary"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/shell-glob-pattern-tester":{"post":{"operationId":"run_shell_glob_pattern_tester","summary":"Shell Glob Pattern Tester","tags":["Utilities"],"description":"Test a shell glob pattern against a list of file paths and see which ones match. Supports *, ?, ** globstar, [abc] character classes, {a,b} brace expansion and ! negation across Bash, Zsh, .gitignore, Python fnmatch and Go path.Match semantics.\n\n[Try Shell Glob Pattern Tester in your browser →](https://iotools.cloud/tool/shell-glob-pattern-tester/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"globPattern":{"type":"string","description":"Glob Pattern"},"shellMode":{"enum":["bash","zsh","gitignore","fnmatch","go"],"description":"Shell / Mode"},"filePaths":{"type":"string","description":"File Paths (one per line)"}},"required":[]},"examples":{"web_project_bash_braces_globstar":{"summary":"Web project (bash, braces + globstar)","value":{"globPattern":"src/**/*.{js,ts}","shellMode":"bash","filePaths":"src/index.js\nsrc/utils/helpers.ts\nsrc/components/Button.tsx\nsrc/styles/main.css\ntests/unit/index.test.js\nREADME.md\npackage.json\ndist/bundle.js"}},"gitignore_globstar":{"summary":".gitignore globstar","value":{"globPattern":"**/*.log","shellMode":"gitignore","filePaths":"app.log\nlogs/error.log\nlogs/2026/01/access.log\nsrc/debug.log.txt\nsrc/app.ts\nREADME.md"}},"character_class_bash":{"summary":"Character class (bash)","value":{"globPattern":"docs/**/[Rr]eadme.md","shellMode":"bash","filePaths":"docs/Readme.md\ndocs/api/readme.md\ndocs/api/v1/README.md\ndocs/guide/intro.md\ndocs/api/v1/changelog.md\nREADME.md"}},"negation_fnmatch_spans_slashes":{"summary":"Negation (fnmatch, * spans slashes)","value":{"globPattern":"!*.test.js","shellMode":"fnmatch","filePaths":"app.js\napp.test.js\nutils/helper.js\nutils/helper.test.js"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"web_project_bash_braces_globstar":{"summary":"Web project (bash, braces + globstar)","value":{"tool":"shell-glob-pattern-tester","tool_version":"1.0.2","outputs":{"result":[{"path":"src/index.js","result":"Match"},{"path":"src/utils/helpers.ts","result":"Match"},{"path":"src/components/Button.tsx","result":"No match"},{"path":"src/styles/main.css","result":"No match"},{"path":"tests/unit/index.test.js","result":"No match"},{"path":"README.md","result":"No match"},{"path":"package.json","result":"No match"},{"path":"dist/bundle.js","result":"No match"}]},"credits_used":5,"credits_remaining":null}},"gitignore_globstar":{"summary":".gitignore globstar","value":{"tool":"shell-glob-pattern-tester","tool_version":"1.0.2","outputs":{"result":[{"path":"app.log","result":"Match"},{"path":"logs/error.log","result":"Match"},{"path":"logs/2026/01/access.log","result":"Match"},{"path":"src/debug.log.txt","result":"No match"},{"path":"src/app.ts","result":"No match"},{"path":"README.md","result":"No match"}]},"credits_used":5,"credits_remaining":null}},"character_class_bash":{"summary":"Character class (bash)","value":{"tool":"shell-glob-pattern-tester","tool_version":"1.0.2","outputs":{"result":[{"path":"docs/Readme.md","result":"Match"},{"path":"docs/api/readme.md","result":"Match"},{"path":"docs/api/v1/README.md","result":"No match"},{"path":"docs/guide/intro.md","result":"No match"},{"path":"docs/api/v1/changelog.md","result":"No match"},{"path":"README.md","result":"No match"}]},"credits_used":5,"credits_remaining":null}},"negation_fnmatch_spans_slashes":{"summary":"Negation (fnmatch, * spans slashes)","value":{"tool":"shell-glob-pattern-tester","tool_version":"1.0.2","outputs":{"result":[{"path":"app.js","result":"Match"},{"path":"app.test.js","result":"No match"},{"path":"utils/helper.js","result":"Match"},{"path":"utils/helper.test.js","result":"No match"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Match Results","items":{"type":"object","properties":{"path":{"type":"string","description":"Path"},"result":{"type":"string","description":"Result"}}},"x-iotools-columns":["path","result"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/svg-path-visualizer":{"post":{"operationId":"run_svg_path_visualizer","summary":"SVG Path Visualizer","tags":["Utilities"],"description":"Parse an SVG path's d attribute into its individual commands (M, L, C, Q, A, Z and more), see a labelled breakdown table, and render an annotated preview with numbered vertices and Bézier control points. Convert between absolute and relative coordinates. Runs entirely in your browser.\n\n[Try SVG Path Visualizer in your browser →](https://iotools.cloud/tool/svg-path-visualizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pathInput":{"type":"string","description":"SVG path data (d attribute)"},"viewBox":{"type":"string","description":"viewBox"},"strokeColor":{"type":"string","description":"Stroke"},"strokeWidth":{"type":"number","description":"Stroke width","minimum":0,"maximum":50},"fillMode":{"enum":["none","solid"],"description":"Fill"},"fillColor":{"type":"string","description":"Fill colour"},"coordMode":{"enum":["keep","absolute","relative"],"description":"Coordinates"},"precision":{"type":"number","description":"Precision (decimals)","minimum":0,"maximum":6},"showGrid":{"type":"boolean","description":"Show grid"},"showPoints":{"type":"boolean","description":"Number command endpoints"},"showControlPoints":{"type":"boolean","description":"Show Bézier control points"}},"required":[]},"examples":{"mixed_commands_line_curves_arc":{"summary":"Mixed commands (line, curves, arc)","value":{"pathInput":"M 10 10 40 10 l 0 30 Q 60 60 40 80 C 20 90 20 60 40 50 A 10 10 0 0 1 60 50 Z","viewBox":"0 0 100 100","strokeColor":"#464aff","strokeWidth":"2","fillMode":"none","coordMode":"keep","precision":"3","showGrid":"","showPoints":"","showControlPoints":""}},"convert_to_absolute":{"summary":"Convert to absolute","value":{"pathInput":"m 20 20 l 30 0 l 0 30 z","viewBox":"0 0 100 100","coordMode":"absolute","precision":"3","showGrid":"","showPoints":"","showControlPoints":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"mixed_commands_line_curves_arc":{"summary":"Mixed commands (line, curves, arc)","value":{"tool":"svg-path-visualizer","tool_version":"1.0.2","outputs":{"commandTable":[{"command":"M","type":"Move to","parameters":"x=10 y=10","coordinates":"Absolute"},{"command":"L","type":"Line to","parameters":"x=40 y=10","coordinates":"Absolute"},{"command":"l","type":"Line to","parameters":"x=0 y=30","coordinates":"Relative"},{"command":"Q","type":"Quadratic Bézier","parameters":"x1=60 y1=60 x=40 y=80","coordinates":"Absolute"},{"command":"C","type":"Cubic Bézier","parameters":"x1=20 y1=90 x2=20 y2=60 x=40 y=50","coordinates":"Absolute"},{"command":"A","type":"Elliptical arc","parameters":"rx=10 ry=10 rot=0 large-arc=0 sweep=1 x=60 y=50","coordinates":"Absolute"},{"command":"Z","type":"Close path","parameters":"—","coordinates":"Absolute"}],"svgOutput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid meet\"><rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" fill=\"#ffffff\"/><path d=\"M 10 10 L 40 10 l 0 30 Q 60 60 40 80 C 20 90 20 60 40 50 A 10 10 0 0 1 60 50 Z\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>"},"credits_used":5,"credits_remaining":null}},"convert_to_absolute":{"summary":"Convert to absolute","value":{"tool":"svg-path-visualizer","tool_version":"1.0.2","outputs":{"commandTable":[{"command":"M","type":"Move to","parameters":"x=20 y=20","coordinates":"Absolute"},{"command":"L","type":"Line to","parameters":"x=50 y=20","coordinates":"Absolute"},{"command":"L","type":"Line to","parameters":"x=50 y=50","coordinates":"Absolute"},{"command":"Z","type":"Close path","parameters":"—","coordinates":"Absolute"}],"svgOutput":"<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"xMidYMid meet\"><rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" fill=\"#ffffff\"/><path d=\"M 20 20 L 50 20 L 50 50 Z\" fill=\"none\" stroke=\"#464aff\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"commandTable":{"type":"array","description":"Command breakdown","items":{"type":"object","properties":{"command":{"type":"string","description":"Command"},"type":{"type":"string","description":"Type"},"parameters":{"type":"string","description":"Parameters"},"coordinates":{"type":"string","description":"Coordinates"}}},"x-iotools-columns":["command","type","parameters","coordinates"]},"svgOutput":{"type":"string","description":"Annotated preview SVG"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/swift-bic-validator":{"post":{"operationId":"run_swift_bic_validator","summary":"SWIFT/BIC Validator","tags":["Utilities"],"description":"Validate a SWIFT/BIC bank identifier code (ISO 9362). Checks the 8- or 11-character format — institution code, country code, location code and optional branch code — and breaks the code down into its parts, including the participant status decoded from the location code.\n\n[Try SWIFT/BIC Validator in your browser →](https://iotools.cloud/tool/swift-bic-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"bic":{"type":"string","description":"SWIFT/BIC Code"}},"required":[]},"examples":{"valid_8_char_bic_deutsche_bank_frankfurt":{"summary":"Valid 8-char BIC (Deutsche Bank, Frankfurt)","value":{"bic":"DEUTDEFF"}},"valid_11_char_bic_with_branch_code":{"summary":"Valid 11-char BIC with branch code","value":{"bic":"DEUTDEFF500"}},"invalid_wrong_length":{"summary":"Invalid — wrong length","value":{"bic":"NOTAREAL1"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_8_char_bic_deutsche_bank_frankfurt":{"summary":"Valid 8-char BIC (Deutsche Bank, Frankfurt)","value":{"tool":"swift-bic-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid"},{"property":"Valid","value":"Yes"},{"property":"Formatted","value":"DEUT DE FF"},{"property":"Institution Code","value":"DEUT"},{"property":"Country Code","value":"DE"},{"property":"Location Code","value":"FF"},{"property":"Branch Code","value":"(head office)"},{"property":"Code Type","value":"8 chars (head office)"},{"property":"Participant Status","value":"Active (live connection)"}]},"credits_used":5,"credits_remaining":null}},"valid_11_char_bic_with_branch_code":{"summary":"Valid 11-char BIC with branch code","value":{"tool":"swift-bic-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid"},{"property":"Valid","value":"Yes"},{"property":"Formatted","value":"DEUT DE FF 500"},{"property":"Institution Code","value":"DEUT"},{"property":"Country Code","value":"DE"},{"property":"Location Code","value":"FF"},{"property":"Branch Code","value":"500"},{"property":"Code Type","value":"11 chars (with branch)"},{"property":"Participant Status","value":"Active (live connection)"}]},"credits_used":5,"credits_remaining":null}},"invalid_wrong_length":{"summary":"Invalid — wrong length","value":{"tool":"swift-bic-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid — Length must be 8 or 11 characters (got 9)"},{"property":"Valid","value":"No"},{"property":"Formatted","value":"NOTAREAL1"},{"property":"Institution Code","value":"—"},{"property":"Country Code","value":"—"},{"property":"Location Code","value":"—"},{"property":"Branch Code","value":"—"},{"property":"Code Type","value":"—"},{"property":"Participant Status","value":"—"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/syllable-counter-poetry-analyzer":{"post":{"operationId":"run_syllable_counter_poetry_analyzer","summary":"Syllable Counter & Poetry Analyzer","tags":["Utilities"],"description":"Count syllables per word and per line, then validate fixed poetic forms — haiku (5-7-5), tanka (5-7-5-7-7) and limerick (8-8-5-5-8). Optionally highlight each word's stressed syllable.\n\n[Try Syllable Counter & Poetry Analyzer in your browser →](https://iotools.cloud/tool/syllable-counter-poetry-analyzer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text"},"mode":{"enum":["standard","haiku","tanka","limerick"],"description":"Analysis mode"},"showStress":{"type":"boolean","description":"Highlight stressed syllables"}},"required":[]},"examples":{"valid_haiku_5_7_5":{"summary":"Valid haiku (5-7-5)","value":{"inputText":"An old silent pond\nA frog jumps into the pond\nSplash! Silence again","mode":"haiku","showStress":""}},"standard_analysis":{"summary":"Standard analysis","value":{"inputText":"The quick brown fox","mode":"standard","showStress":""}},"stress_highlighting":{"summary":"Stress highlighting","value":{"inputText":"Hello beautiful morning","mode":"standard","showStress":"true"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_haiku_5_7_5":{"summary":"Valid haiku (5-7-5)","value":{"tool":"syllable-counter-poetry-analyzer","tool_version":"1.0.2","outputs":{"form":"Valid Haiku: 5-7-5 ✓","annotatedSource":"<div style=\"margin-bottom:.35rem;line-height:2.2\"><span>An<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>old<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>silent<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span> <span>pond<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span><span style=\"font-size:.75em;font-weight:600;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem;background:#d4edda;color:#155724\">5</span></div>\n<div style=\"margin-bottom:.35rem;line-height:2.2\"><span>A<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>frog<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>jumps<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>into<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span> <span>the<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>pond<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span><span style=\"font-size:.75em;font-weight:600;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem;background:#d4edda;color:#155724\">7</span></div>\n<div style=\"margin-bottom:.35rem;line-height:2.2\"><span>Splash<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span>! <span>Silence<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span> <span>again<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span><span style=\"font-size:.75em;font-weight:600;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem;background:#d4edda;color:#155724\">5</span></div>","stats":[{"metric":"Total Syllables","value":"17"},{"metric":"Total Words","value":"13"},{"metric":"Total Lines","value":"3"},{"metric":"Average Syllables / Line","value":"5.67"},{"metric":"Average Syllables / Word","value":"1.31"},{"metric":"Stressed Syllables (est.)","value":"Off"}]},"credits_used":5,"credits_remaining":null}},"standard_analysis":{"summary":"Standard analysis","value":{"tool":"syllable-counter-poetry-analyzer","tool_version":"1.0.2","outputs":{"form":"Standard analysis — no fixed form to validate.","annotatedSource":"<div style=\"margin-bottom:.35rem;line-height:2.2\"><span>The<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>quick<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>brown<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span> <span>fox<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">1</sup></span><span style=\"font-size:.75em;font-weight:600;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem;background:#e8e9ff;color:#464aff\">4</span></div>","stats":[{"metric":"Total Syllables","value":"4"},{"metric":"Total Words","value":"4"},{"metric":"Total Lines","value":"1"},{"metric":"Average Syllables / Line","value":"4.00"},{"metric":"Average Syllables / Word","value":"1.00"},{"metric":"Stressed Syllables (est.)","value":"Off"}]},"credits_used":5,"credits_remaining":null}},"stress_highlighting":{"summary":"Stress highlighting","value":{"tool":"syllable-counter-poetry-analyzer","tool_version":"1.0.2","outputs":{"form":"Standard analysis — no fixed form to validate.","annotatedSource":"<div style=\"margin-bottom:.35rem;line-height:2.2\"><span><mark style=\"background:#fff3a8;border-radius:2px;padding:0 1px\">Hel</mark>lo<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span> <span><mark style=\"background:#fff3a8;border-radius:2px;padding:0 1px\">beau</mark>tiful<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">3</sup></span> <span><mark style=\"background:#fff3a8;border-radius:2px;padding:0 1px\">mor</mark>ning<sup style=\"font-size:.65em;font-weight:600;color:#464aff;margin-left:1px\">2</sup></span><span style=\"font-size:.75em;font-weight:600;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem;background:#e8e9ff;color:#464aff\">7</span></div>","stats":[{"metric":"Total Syllables","value":"7"},{"metric":"Total Words","value":"3"},{"metric":"Total Lines","value":"1"},{"metric":"Average Syllables / Line","value":"7.00"},{"metric":"Average Syllables / Word","value":"2.33"},{"metric":"Stressed Syllables (est.)","value":"3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"form":{"type":"string","description":"Form check"},"annotatedSource":{"type":"string","description":"Annotated HTML"},"stats":{"type":"array","description":"Statistics","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tls-ssl-config-snippet-grader":{"post":{"operationId":"run_tls_ssl_config_snippet_grader","summary":"TLS/SSL Config Snippet Grader","tags":["Utilities"],"description":"Paste an Apache or Nginx TLS/SSL config block and get an A-to-F security grade, a finding-by-finding breakdown (deprecated protocols, weak ciphers, missing HSTS/OCSP stapling), and a Mozilla best-practice replacement snippet. Analyzed entirely in your browser — nothing is sent to a server.\n\n[Try TLS/SSL Config Snippet Grader in your browser →](https://iotools.cloud/tool/tls-ssl-config-snippet-grader/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"configInput":{"type":"string","description":"TLS/SSL Config Snippet"},"serverType":{"enum":["auto","apache","nginx"],"description":"Server Type"},"targetProfile":{"enum":["modern","intermediate","old"],"description":"Mozilla Profile"}},"required":[]},"examples":{"good_nginx_config_intermediate":{"summary":"Good Nginx config (intermediate)","value":{"configInput":"server {\n    listen 443 ssl http2;\n    server_name example.com;\n\n    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;\n    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;\n\n    ssl_protocols       TLSv1.2 TLSv1.3;\n    ssl_ciphers         ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;\n    ssl_prefer_server_ciphers on;\n\n    ssl_stapling on;\n    ssl_stapling_verify on;\n\n    add_header Strict-Transport-Security \"max-age=63072000; includeSubDomains\" always;\n\n    root /var/www/example.com/public;\n}","serverType":"auto","targetProfile":"intermediate"}},"weak_apache_config_intermediate":{"summary":"Weak Apache config (intermediate)","value":{"configInput":"<VirtualHost *:443>\n    ServerName example.com\n    DocumentRoot /var/www/example.com/public\n\n    SSLEngine on\n    SSLCertificateFile      /etc/letsencrypt/live/example.com/fullchain.pem\n    SSLCertificateKeyFile   /etc/letsencrypt/live/example.com/privkey.pem\n\n    SSLProtocol             all -SSLv3\n    SSLCipherSuite          HIGH:!aNULL:!MD5:RC4\n    SSLHonorCipherOrder     on\n</VirtualHost>","serverType":"auto","targetProfile":"intermediate"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"good_nginx_config_intermediate":{"summary":"Good Nginx config (intermediate)","value":{"tool":"tls-ssl-config-snippet-grader","tool_version":"1.0.2","outputs":{"gradeSummary":[{"metric":"Grade","value":"A — Excellent — config follows current best practices."},{"metric":"Score","value":"100 / 100"},{"metric":"Server","value":"Nginx"},{"metric":"Profile","value":"Intermediate"}],"findings":[{"severity":"OK","issue":"No deprecated protocols enabled","detail":"TLS 1.0/1.1/SSLv2/SSLv3 are correctly disabled.","impact":""},{"severity":"OK","issue":"Forward-secret (ECDHE) ciphers present","detail":"Server supports perfect forward secrecy.","impact":""},{"severity":"OK","issue":"HSTS configured with strong max-age","detail":"max-age=63072000; includeSubDomains","impact":""},{"severity":"OK","issue":"OCSP stapling enabled","detail":"Faster, more private handshakes.","impact":""}],"suggestion":"# Mozilla Intermediate configuration (Nginx)\nssl_protocols TLSv1.2 TLSv1.3;\nssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;\nssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;\nssl_prefer_server_ciphers on;\nssl_session_tickets off;\nssl_stapling on;\nssl_stapling_verify on;\nadd_header Strict-Transport-Security \"max-age=63072000; includeSubDomains\" always;"},"credits_used":5,"credits_remaining":null}},"weak_apache_config_intermediate":{"summary":"Weak Apache config (intermediate)","value":{"tool":"tls-ssl-config-snippet-grader","tool_version":"1.0.2","outputs":{"gradeSummary":[{"metric":"Grade","value":"F — Failing — critical vulnerabilities present."},{"metric":"Score","value":"15 / 100"},{"metric":"Server","value":"Apache"},{"metric":"Profile","value":"Intermediate"}],"findings":[{"severity":"CRITICAL","issue":"TLS 1.0 enabled","detail":"TLS 1.0 is deprecated (RFC 8996) and disallowed by PCI DSS / browser vendors.","impact":"-20 pts"},{"severity":"CRITICAL","issue":"TLS 1.1 enabled","detail":"TLS 1.1 is deprecated (RFC 8996). Disable it.","impact":"-20 pts"},{"severity":"CRITICAL","issue":"Weak cipher token: RC4","detail":"RC4 is broken and prohibited by RFC 7465.","impact":"-15 pts"},{"severity":"CRITICAL","issue":"No forward-secret (ECDHE/DHE) ciphers","detail":"Without forward secrecy, a compromised server key decrypts all past traffic.","impact":"-15 pts"},{"severity":"WARNING","issue":"Cipher list relies on OpenSSL aliases (HIGH/MEDIUM)","detail":"Aliases like HIGH change across OpenSSL versions. Prefer an explicit list of ECDHE/forward-secret suites.","impact":"-5 pts"},{"severity":"WARNING","issue":"No HSTS header","detail":"Without Strict-Transport-Security, downgrade attacks (SSL stripping) remain possible.","impact":"-8 pts"},{"severity":"INFO","issue":"OCSP stapling not configured","detail":"Enable SSLUseStapling on (Apache) or ssl_stapling on (Nginx).","impact":"-2 pts"}],"suggestion":"# Mozilla Intermediate configuration (Apache)\nSSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.0 -TLSv1.1\nSSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305\nSSLOpenSSLConfCmd       Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256\nSSLHonorCipherOrder     on\nSSLSessionTickets       off\nSSLUseStapling          on\nSSLStaplingCache        \"shmcb:logs/stapling-cache(150000)\"\nHeader always set Strict-Transport-Security \"max-age=63072000; includeSubDomains\""},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"gradeSummary":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"findings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"issue":{"type":"string","description":"Issue"},"detail":{"type":"string","description":"Detail"},"impact":{"type":"string","description":"Impact"}}},"x-iotools-columns":["severity","issue","detail","impact"]},"suggestion":{"type":"string"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/uuid-validator-decoder":{"post":{"operationId":"run_uuid_validator_decoder","summary":"UUID Validator & Decoder","tags":["Utilities"],"description":"Validate a UUID's 8-4-4-4-12 format and decode its version and variant. For time-based UUIDs (v1, v6, v7) it extracts the embedded timestamp; paste one UUID per line to validate a whole batch at once.\n\n[Try UUID Validator & Decoder in your browser →](https://iotools.cloud/tool/uuid-validator-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"uuid":{"type":"string","description":"UUID(s)"}},"required":[]},"examples":{"nil_uuid":{"summary":"Nil UUID","value":{"uuid":"00000000-0000-0000-0000-000000000000"}},"random_v4_uuid":{"summary":"Random v4 UUID","value":{"uuid":"550e8400-e29b-41d4-a716-446655440000"}},"time_ordered_v7_uuid":{"summary":"Time-ordered v7 UUID","value":{"uuid":"01890a5d-ac96-774b-bcce-b302099a8057"}},"batch_of_mixed_uuids":{"summary":"Batch of mixed UUIDs","value":{"uuid":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6\n01890a5d-ac96-774b-bcce-b302099a8057\n00000000-0000-0000-0000-000000000000\nnot-a-real-uuid"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"nil_uuid":{"summary":"Nil UUID","value":{"tool":"uuid-validator-decoder","tool_version":"1.0.2","outputs":{"summary":"Valid Nil UUID — all zero bits.","details":[{"property":"Status","value":"Valid Nil UUID (RFC 4122 §4.1.7) — all zero bits"},{"property":"Canonical","value":"00000000-0000-0000-0000-000000000000"}],"batch":[]},"credits_used":5,"credits_remaining":null}},"random_v4_uuid":{"summary":"Random v4 UUID","value":{"tool":"uuid-validator-decoder","tool_version":"1.0.2","outputs":{"summary":"Valid UUID — v4 — Random.","details":[{"property":"Status","value":"Valid UUID"},{"property":"Canonical (lowercase)","value":"550e8400-e29b-41d4-a716-446655440000"},{"property":"Uppercase","value":"550E8400-E29B-41D4-A716-446655440000"},{"property":"Hex (no dashes)","value":"550e8400e29b41d4a716446655440000"},{"property":"URN","value":"urn:uuid:550e8400-e29b-41d4-a716-446655440000"},{"property":"Version","value":"v4 — Random"},{"property":"Variant","value":"RFC 4122 (DCE 1.1, ISO/IEC 11578:1996)"},{"property":"Random bits","value":"122 bits of randomness (6 bits fixed for version + variant)"}],"batch":[]},"credits_used":5,"credits_remaining":null}},"time_ordered_v7_uuid":{"summary":"Time-ordered v7 UUID","value":{"tool":"uuid-validator-decoder","tool_version":"1.0.2","outputs":{"summary":"Valid UUID — v7 — Unix timestamp + random (sortable, RFC 9562).","details":[{"property":"Status","value":"Valid UUID"},{"property":"Canonical (lowercase)","value":"01890a5d-ac96-774b-bcce-b302099a8057"},{"property":"Uppercase","value":"01890A5D-AC96-774B-BCCE-B302099A8057"},{"property":"Hex (no dashes)","value":"01890a5dac96774bbcceb302099a8057"},{"property":"URN","value":"urn:uuid:01890a5d-ac96-774b-bcce-b302099a8057"},{"property":"Version","value":"v7 — Unix timestamp + random (sortable, RFC 9562)"},{"property":"Variant","value":"RFC 4122 (DCE 1.1, ISO/IEC 11578:1996)"},{"property":"Unix timestamp (ms)","value":"1688096058518"},{"property":"Timestamp","value":"2023-06-30T03:34:18.518Z (Fri, 30 Jun 2023 03:34:18 GMT)"},{"property":"Random A (12 bits)","value":"0x74b"},{"property":"Random B (62 bits)","value":"0xceb302099a8057"}],"batch":[]},"credits_used":5,"credits_remaining":null}},"batch_of_mixed_uuids":{"summary":"Batch of mixed UUIDs","value":{"tool":"uuid-validator-decoder","tool_version":"1.0.2","outputs":{"summary":"4 UUID(s) checked — 3 valid, 1 invalid.","details":[{"property":"Status","value":"Valid UUID"},{"property":"Canonical (lowercase)","value":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6"},{"property":"Uppercase","value":"F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6"},{"property":"Hex (no dashes)","value":"f81d4fae7dec11d0a76500a0c91e6bf6"},{"property":"URN","value":"urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"},{"property":"Version","value":"v1 — Time-based (Gregorian timestamp + node ID/MAC)"},{"property":"Variant","value":"RFC 4122 (DCE 1.1, ISO/IEC 11578:1996)"},{"property":"Timestamp (100-ns since 1582-10-15)","value":"1997-02-03T17:43:12.216Z (Mon, 03 Feb 1997 17:43:12 GMT)"},{"property":"Clock sequence","value":"10085 (0x2765)"},{"property":"Node ID / MAC","value":"00:a0:c9:1e:6b:f6 — Globally unique MAC address (likely real network adapter)"}],"batch":[{"index":"1","uuid":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","valid":"Valid","version":"v1","notes":"v1 timestamp 1997-02-03T17:43:12.216Z"},{"index":"2","uuid":"01890a5d-ac96-774b-bcce-b302099a8057","valid":"Valid","version":"v7","notes":"v7 timestamp 2023-06-30T03:34:18.518Z"},{"index":"3","uuid":"00000000-0000-0000-0000-000000000000","valid":"Valid","version":"Nil","notes":"Special \"empty\" UUID"},{"index":"4","uuid":"not-a-real-uuid","valid":"Invalid","version":"—","notes":"Not a valid UUID format (expected 8-4-4-4-12 lowercase/uppercase hex)"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"details":{"type":"array","description":"Decoded details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"batch":{"type":"array","description":"Batch results","items":{"type":"object","properties":{"index":{"type":"string","description":"#"},"uuid":{"type":"string","description":"UUID"},"valid":{"type":"string","description":"Valid"},"version":{"type":"string","description":"Version"},"notes":{"type":"string","description":"Notes"}}},"x-iotools-columns":["index","uuid","valid","version","notes"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/vat-number-validator":{"post":{"operationId":"run_vat_number_validator","summary":"VAT Number Validator","tags":["Utilities"],"description":"Validate an EU VAT number's format. Detects the 2-letter country prefix and checks the national number against that country's expected structure, showing the country, country code and expected format. Structural check only — it does not contact the EU VIES registry.\n\n[Try VAT Number Validator in your browser →](https://iotools.cloud/tool/vat-number-validator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"vatNumber":{"type":"string","description":"VAT Number"}},"required":[]},"examples":{"valid_german_vat_number":{"summary":"Valid German VAT number","value":{"vatNumber":"DE123456789"}},"valid_austrian_vat_number_atu_prefix":{"summary":"Valid Austrian VAT number (ATU prefix)","value":{"vatNumber":"ATU12345678"}},"valid_french_vat_number":{"summary":"Valid French VAT number","value":{"vatNumber":"FR12345678901"}},"invalid_wrong_length_for_germany":{"summary":"Invalid — wrong length for Germany","value":{"vatNumber":"DE12345"}},"invalid_no_country_prefix":{"summary":"Invalid — no country prefix","value":{"vatNumber":"123456789"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"valid_german_vat_number":{"summary":"Valid German VAT number","value":{"tool":"vat-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid VAT number format"},{"property":"Valid","value":"Yes"},{"property":"Input","value":"DE123456789"},{"property":"Country","value":"Germany"},{"property":"Country Code","value":"DE"},{"property":"Local Number","value":"123456789"},{"property":"Expected Format","value":"DE + 9 digits"}]},"credits_used":5,"credits_remaining":null}},"valid_austrian_vat_number_atu_prefix":{"summary":"Valid Austrian VAT number (ATU prefix)","value":{"tool":"vat-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid VAT number format"},{"property":"Valid","value":"Yes"},{"property":"Input","value":"ATU12345678"},{"property":"Country","value":"Austria"},{"property":"Country Code","value":"AT"},{"property":"Local Number","value":"U12345678"},{"property":"Expected Format","value":"ATU + 8 digits"}]},"credits_used":5,"credits_remaining":null}},"valid_french_vat_number":{"summary":"Valid French VAT number","value":{"tool":"vat-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Valid VAT number format"},{"property":"Valid","value":"Yes"},{"property":"Input","value":"FR12345678901"},{"property":"Country","value":"France"},{"property":"Country Code","value":"FR"},{"property":"Local Number","value":"12345678901"},{"property":"Expected Format","value":"FR + 2 characters + 9 digits"}]},"credits_used":5,"credits_remaining":null}},"invalid_wrong_length_for_germany":{"summary":"Invalid — wrong length for Germany","value":{"tool":"vat-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid VAT number"},{"property":"Valid","value":"No"},{"property":"Input","value":"DE12345"},{"property":"Country","value":"Germany"},{"property":"Country Code","value":"DE"},{"property":"Expected Format","value":"DE + 9 digits"},{"property":"Error","value":"The number does not match the expected format for Germany: DE + 9 digits"}]},"credits_used":5,"credits_remaining":null}},"invalid_no_country_prefix":{"summary":"Invalid — no country prefix","value":{"tool":"vat-number-validator","tool_version":"1.0.2","outputs":{"result":[{"property":"Status","value":"Invalid VAT number"},{"property":"Valid","value":"No"},{"property":"Input","value":"123456789"},{"property":"Error","value":"Could not detect a valid EU country prefix. Please include the 2-letter country code (e.g. DE, FR, AT)."}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"result":{"type":"array","description":"Validation Result","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-replacer":{"post":{"operationId":"run_text_replacer","summary":"Text Replacer","tags":["Utilities"],"description":"Find and replace text or regex patterns across a block of text. Case-sensitive, whole-word, replace-all-vs-first and regex modes with capture-group substitution, plus a live match count.\n\n[Try Text Replacer in your browser →](https://iotools.cloud/tool/text-replacer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Source Text"},"find":{"type":"string","description":"Find"},"replaceWith":{"type":"string","description":"Replace With"},"useRegex":{"type":"boolean","description":"Treat \"Find\" as a regular expression"},"caseSensitive":{"type":"boolean","description":"Case sensitive"},"wholeWord":{"type":"boolean","description":"Whole word only"},"replaceAll":{"type":"boolean","description":"Replace all occurrences (unchecked = first match only)"}},"required":[]},"examples":{"replace_all_literal":{"summary":"Replace all (literal)","value":{"inputText":"The cat sat on the mat. The cat ran away.","find":"cat","replaceWith":"dog","caseSensitive":"true","replaceAll":"true"}},"regex_with_capture_groups":{"summary":"Regex with capture groups","value":{"inputText":"Contact hello@example.com for details.","find":"(\\w+)@(\\w+\\.\\w+)","replaceWith":"$1 at $2","useRegex":"true","caseSensitive":"true","replaceAll":"true"}},"case_insensitive_whole_word_first_match_only":{"summary":"Case-insensitive, whole word, first match only","value":{"inputText":"cat CAT scatter","find":"cat","replaceWith":"dog","caseSensitive":"false","wholeWord":"true","replaceAll":"false"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"replace_all_literal":{"summary":"Replace all (literal)","value":{"tool":"text-replacer","tool_version":"1.0.2","outputs":{"output":"The dog sat on the mat. The dog ran away.","matchCount":"2 replacements made."},"credits_used":5,"credits_remaining":null}},"regex_with_capture_groups":{"summary":"Regex with capture groups","value":{"tool":"text-replacer","tool_version":"1.0.2","outputs":{"output":"Contact hello at example.com for details.","matchCount":"1 replacement made."},"credits_used":5,"credits_remaining":null}},"case_insensitive_whole_word_first_match_only":{"summary":"Case-insensitive, whole word, first match only","value":{"tool":"text-replacer","tool_version":"1.0.2","outputs":{"output":"dog CAT scatter","matchCount":"1 replacement made (2 total matches, first only replaced)."},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"matchCount":{"type":"string","description":"Result Summary"},"output":{"type":"string","description":"Replaced Text"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-similarity-checker":{"post":{"operationId":"run_text_similarity_checker","summary":"Text Similarity Checker","tags":["Utilities"],"description":"Score how similar two blocks of text are — a character-level similarity percentage plus a word-overlap breakdown showing shared and unique words.\n\n[Try Text Similarity Checker in your browser →](https://iotools.cloud/tool/text-similarity-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"textA":{"type":"string","description":"Text A"},"textB":{"type":"string","description":"Text B"},"caseSensitive":{"type":"boolean","description":"Case sensitive"}},"required":[]},"examples":{"near_identical_sentences":{"summary":"Near-identical sentences","value":{"textA":"The quick brown fox jumps over the lazy dog.","textB":"The quick brown fox leaps over the lazy dog."}},"identical_text":{"summary":"Identical text","value":{"textA":"Hello world","textB":"Hello world"}},"completely_different_text":{"summary":"Completely different text","value":{"textA":"Apples and oranges","textB":"Distant blue mountains"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"near_identical_sentences":{"summary":"Near-identical sentences","value":{"tool":"text-similarity-checker","tool_version":"1.0.2","outputs":{"similarity":"88.57%","breakdown":[{"metric":"Character similarity (Dice)","value":"88.57%"},{"metric":"Word overlap (Jaccard)","value":"77.78%"},{"metric":"Common words","value":"7"},{"metric":"Unique to Text A","value":"1"},{"metric":"Unique to Text B","value":"1"}]},"credits_used":5,"credits_remaining":null}},"identical_text":{"summary":"Identical text","value":{"tool":"text-similarity-checker","tool_version":"1.0.2","outputs":{"similarity":"100.00%","breakdown":[{"metric":"Character similarity (Dice)","value":"100.00%"},{"metric":"Word overlap (Jaccard)","value":"100.00%"},{"metric":"Common words","value":"2"},{"metric":"Unique to Text A","value":"0"},{"metric":"Unique to Text B","value":"0"}]},"credits_used":5,"credits_remaining":null}},"completely_different_text":{"summary":"Completely different text","value":{"tool":"text-similarity-checker","tool_version":"1.0.2","outputs":{"similarity":"5.88%","breakdown":[{"metric":"Character similarity (Dice)","value":"5.88%"},{"metric":"Word overlap (Jaccard)","value":"0.00%"},{"metric":"Common words","value":"0"},{"metric":"Unique to Text A","value":"3"},{"metric":"Unique to Text B","value":"3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"similarity":{"type":"string","description":"Similarity score"},"breakdown":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/text-summarizer":{"post":{"operationId":"run_text_summarizer","summary":"Text Summarizer","tags":["Utilities"],"description":"Condense a long article or block of text into a short summary with AI — choose the target length and whether you want flowing prose or a bulleted list of key points.\n\n[Try Text Summarizer in your browser →](https://iotools.cloud/tool/text-summarizer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":24,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to summarize"},"length":{"enum":["short","medium","long"],"description":"Summary length"},"format":{"enum":["paragraph","bullet-points"],"description":"Format"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"The advancement of artificial intelligence has fundamentally transformed the landscape of modern technology. Machine learning algorithms, particularly deep neural networks, have demonstrated remarkable capabilities in pattern recognition, natural language processing, and decision-making tasks. These systems now power everything from recommendation engines to autonomous vehicles, reshaping industries that were previously untouched by automation. However, this rapid progress has also raised significant questions about job displacement, algorithmic bias, and the concentration of technological power among a small number of large organizations. Researchers and policymakers alike are grappling with how to harness the benefits of AI while mitigating its risks, leading to growing calls for regulation, transparency, and ethical guidelines that can keep pace with the technology's rapid evolution."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"stats":{"type":"string","description":"Length change"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/xml-diff-comparator":{"post":{"operationId":"run_xml_diff_comparator","summary":"XML Diff Comparator","tags":["Utilities"],"description":"Compare two XML documents and see exactly what changed — added/removed elements, attribute changes and text changes with an XPath-like path to each one, plus a unified line diff of the normalized markup. Runs entirely in your browser.\n\n[Try XML Diff Comparator in your browser →](https://iotools.cloud/tool/xml-diff-comparator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"xmlA":{"type":"string","description":"XML A (original)"},"xmlB":{"type":"string","description":"XML B (modified)"},"ignoreWhitespace":{"type":"boolean","description":"Ignore whitespace differences"},"ignoreComments":{"type":"boolean","description":"Ignore comment nodes"}},"required":[]},"examples":{"attribute_change_added_removed_elements_added_child":{"summary":"Attribute change, added/removed elements, added child","value":{"xmlA":"<?xml version=\"1.0\"?>\n<library>\n  <book id=\"1\" genre=\"fiction\">\n    <title>The Hobbit</title>\n    <author>J.R.R. Tolkien</author>\n    <year>1937</year>\n  </book>\n  <book id=\"2\" genre=\"science\">\n    <title>A Brief History of Time</title>\n    <author>Stephen Hawking</author>\n    <year>1988</year>\n  </book>\n</library>","xmlB":"<?xml version=\"1.0\"?>\n<library>\n  <book id=\"1\" genre=\"fantasy\">\n    <title>The Hobbit</title>\n    <author>J.R.R. Tolkien</author>\n    <year>1937</year>\n    <pages>310</pages>\n  </book>\n  <book id=\"3\" genre=\"history\">\n    <title>Sapiens</title>\n    <author>Yuval Noah Harari</author>\n    <year>2011</year>\n  </book>\n</library>","ignoreWhitespace":"true","ignoreComments":"true"}},"identical_documents":{"summary":"Identical documents","value":{"xmlA":"<root><a>1</a><b>2</b></root>","xmlB":"<root><a>1</a><b>2</b></root>","ignoreWhitespace":"true","ignoreComments":"true"}},"comment_nodes_compared_when_not_ignored":{"summary":"Comment nodes compared when not ignored","value":{"xmlA":"<root><!-- keep --><a>1</a></root>","xmlB":"<root><!-- keep --><!-- new --><a>1</a></root>","ignoreWhitespace":"true","ignoreComments":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"attribute_change_added_removed_elements_added_child":{"summary":"Attribute change, added/removed elements, added child","value":{"tool":"xml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"1"},{"metric":"Removed","value":"0"},{"metric":"Modified","value":"3"},{"metric":"Attribute changes","value":"3"},{"metric":"Result","value":"7 differences"}],"structuralDiff":"~ /library/book[1]  @genre: \"fiction\" -> \"fantasy\"\n+ /library/book[1]/pages  <pages>310</pages>\n~ /library/book[2]  @id: \"2\" -> \"3\"\n~ /library/book[2]  @genre: \"science\" -> \"history\"\n~ /library/book[2]/title  text: \"A Brief History of Time\" -> \"Sapiens\"\n~ /library/book[2]/author  text: \"Stephen Hawking\" -> \"Yuval Noah Harari\"\n~ /library/book[2]/year  text: \"1988\" -> \"2011\"","unifiedDiff":"--- XML A\n+++ XML B\n@@ -1,12 +1,13 @@\n <library>\n-  <book id=\"1\" genre=\"fiction\">\n+  <book id=\"1\" genre=\"fantasy\">\n     <title>The Hobbit</title>\n     <author>J.R.R. Tolkien</author>\n     <year>1937</year>\n+    <pages>310</pages>\n   </book>\n-  <book id=\"2\" genre=\"science\">\n-    <title>A Brief History of Time</title>\n-    <author>Stephen Hawking</author>\n-    <year>1988</year>\n+  <book id=\"3\" genre=\"history\">\n+    <title>Sapiens</title>\n+    <author>Yuval Noah Harari</author>\n+    <year>2011</year>\n   </book>\n </library>\n\\ No newline at end of file","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>&lt;library&gt;</div><div>  &lt;book id=\"1\" genre=\"<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">fiction</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">fantasy</span>\"&gt;</div><div>    &lt;title&gt;The Hobbit&lt;/title&gt;</div><div>    &lt;author&gt;J.R.R. Tolkien&lt;/author&gt;</div><div>    &lt;year&gt;1937&lt;/year&gt;</div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">    &lt;pages&gt;310&lt;/pages&gt;</span></div><div>  &lt;/book&gt;</div><div>  &lt;book id=\"<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">2</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">3</span>\" genre=\"<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">science</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">history</span>\"&gt;</div><div>    &lt;title&gt;<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">A Brief History of Time</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">Sapiens</span>&lt;/title&gt;</div><div>    &lt;author&gt;<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">Stephen</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">Yuval</span> <span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">Hawking</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">Noah Harari</span>&lt;/author&gt;</div><div>    &lt;year&gt;<span style=\"color:#b91c1c;background-color:#fee2e2;text-decoration:line-through\">1988</span><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">2011</span>&lt;/year&gt;</div><div>  &lt;/book&gt;</div><div>&lt;/library&gt;</div></div>"},"credits_used":5,"credits_remaining":null}},"identical_documents":{"summary":"Identical documents","value":{"tool":"xml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"0"},{"metric":"Removed","value":"0"},{"metric":"Modified","value":"0"},{"metric":"Attribute changes","value":"0"},{"metric":"Result","value":"Documents are identical"}],"structuralDiff":"No structural differences.","unifiedDiff":"","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>&lt;root&gt;</div><div>  &lt;a&gt;1&lt;/a&gt;</div><div>  &lt;b&gt;2&lt;/b&gt;</div><div>&lt;/root&gt;</div></div>"},"credits_used":5,"credits_remaining":null}},"comment_nodes_compared_when_not_ignored":{"summary":"Comment nodes compared when not ignored","value":{"tool":"xml-diff-comparator","tool_version":"1.0.2","outputs":{"summary":[{"metric":"Added","value":"1"},{"metric":"Removed","value":"0"},{"metric":"Modified","value":"0"},{"metric":"Attribute changes","value":"0"},{"metric":"Result","value":"1 difference"}],"structuralDiff":"+ /root  <!--new-->","unifiedDiff":"--- XML A\n+++ XML B\n@@ -1,4 +1,5 @@\n <root>\n   <!-- keep -->\n+  <!-- new -->\n   <a>1</a>\n </root>\n\\ No newline at end of file","diffHtml":"<div style=\"font-family:monospace;white-space:pre-wrap\"><div>&lt;root&gt;</div><div>  &lt;!-- keep --&gt;</div><div><span style=\"color:#15803d;background-color:#dcfce7;text-decoration:underline\">  &lt;!-- new --&gt;</span></div><div>  &lt;a&gt;1&lt;/a&gt;</div><div>&lt;/root&gt;</div></div>"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"structuralDiff":{"type":"string","description":"Structural diff"},"unifiedDiff":{"type":"string","description":"Unified diff (normalized markup)"},"diffHtml":{"type":"string","description":"Diff view HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/x509-certificate-parser":{"post":{"operationId":"run_x509_certificate_parser","summary":"X.509 Certificate Parser","tags":["Utilities"],"description":"Parse a PEM-encoded X.509 certificate or certificate signing request (CSR) — subject, issuer, validity window, serial number, signature/public-key algorithms, extensions (SANs, key usage, basic constraints…), CSR signature verification, and SHA-256/SHA-1/SHA-512 fingerprints. Parsed entirely in your browser; nothing is uploaded.\n\n[Try X.509 Certificate Parser in your browser →](https://iotools.cloud/tool/x509-certificate-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"pemInput":{"type":"string","description":"PEM Certificate or CSR"},"referenceTime":{"type":"string","description":"Reference Time (now)"}},"required":[]},"examples":{"isrg_root_x1_real_self_signed_rsa_4096_root_ca":{"summary":"ISRG Root X1 (real self-signed RSA-4096 root CA)","value":{"pemInput":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\nWhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\nZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\nMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\nh77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\nA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\nT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\nB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\nB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\nKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\nOlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\njh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\nqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\nrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\nhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\nubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\nNFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\nORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\nTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\njNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\noyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\nmRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\nemyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n-----END CERTIFICATE-----","referenceTime":"2024-01-01T00:00:00Z"}},"same_certificate_evaluated_after_its_2035_expiry":{"summary":"Same certificate, evaluated after its 2035 expiry","value":{"pemInput":"-----BEGIN CERTIFICATE-----\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4\nWhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\nZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\nMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\nh77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\n0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U\nA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW\nT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH\nB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC\nB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\nKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\nOlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\njh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw\nqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI\nrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq\nhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\nubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\n3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\nNFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\nORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur\nTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC\njNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc\noyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq\n4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\nmRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\nemyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\n-----END CERTIFICATE-----","referenceTime":"2036-01-01T00:00:00Z"}},"certificate_signing_request_csr_with_a_san_extension":{"summary":"Certificate Signing Request (CSR) with a SAN extension","value":{"pemInput":"-----BEGIN CERTIFICATE REQUEST-----\nMIICuTCCAaECAQAwOjEUMBIGA1UEAxMLZXhhbXBsZS5jb20xFTATBgNVBAoTDEV4\nYW1wbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\nggEKAoIBAQDFJU/zCxn6eL/66gQcU+uWSm51NnZoV/YEs8hqfTfEKgUWNtrCjpx9\nFt6RrE4nugoMAQkHALgBDWG82V8M7VScYiVhAF8P1/yP9vPfjuXhM5ZJ4Mf10nuL\nQO367wBzO9NBZD4QCAjvxd6Xnn0AvCpKMTOyOfTkDgUy/GHa14KpYxGOGg9ewsyx\n9uEAPvkl8npfhskcHn5sfD2E/VUAIvlumo1rtCzURboiaptIj0JysfNovAxC4I0a\no6ZH+BrgbBHKTbjsTmIWHhdCLdzoKzpkJMrYtSVW/CZJEtQQXePF8+xJaiRNqRtj\nhA11nSbR9UjLzMaAH0VhKz2Biv8kNrE1AgMBAAGgOjA4BgkqhkiG9w0BCQ4xKzAp\nMCcGA1UdEQQgMB6CC2V4YW1wbGUuY29tgg93d3cuZXhhbXBsZS5jb20wDQYJKoZI\nhvcNAQELBQADggEBAIawtWiMBC6GDQ0zmSslvf2UfxhPoWzauaO5V5EwA10UmisT\nTZKVuDA01nhQqnlSFdG6YugPYv9yJn/JXBeAP3o9Cviw3DTO6ISJgX4Vh1B7dzkp\nADWjWiGUM00P59aogAY3byFEA8LA259bB1VIWQ6m8RK99zZCY4EJI6WHAL6S/AYT\nlj2JsiaPvYY3GAX4Iex+tI/cBW1LLn+z+TGY3V38OhVew7lQu1YrsmDA0Nu0vJo3\n1Hyu6hZIAxD6oNufBu7AHtInv23X6tSKl5BW6a2ZvRfVagXfa0M7/d0PKzug8taA\nWE5tGZiJ3F9y9eMgewMtfb3NJ3A98cJ1pA2ILhY=\n-----END CERTIFICATE REQUEST-----","referenceTime":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"isrg_root_x1_real_self_signed_rsa_4096_root_ca":{"summary":"ISRG Root X1 (real self-signed RSA-4096 root CA)","value":{"tool":"x509-certificate-parser","tool_version":"1.0.2","outputs":{"warnings":[{"severity":"Warning","message":"This is a self-signed certificate (Subject = Issuer)."}],"type":[{"property":"Type","value":"X.509 Certificate"}],"subject":[{"field":"Country (C)","value":"US"},{"field":"Organization (O)","value":"Internet Security Research Group"},{"field":"Common Name (CN)","value":"ISRG Root X1"}],"issuer":[{"field":"Country (C)","value":"US"},{"field":"Organization (O)","value":"Internet Security Research Group"},{"field":"Common Name (CN)","value":"ISRG Root X1"}],"validity":[{"field":"Not Before","value":"2015-06-04T11:04:38Z"},{"field":"Not After","value":"2035-06-04T11:04:38Z"},{"field":"Status","value":"Valid (expires in 4172d 11h)"}],"details":[{"property":"Version","value":"v3"},{"property":"Serial Number","value":"00:82:10:CF:B0:D2:40:E3:59:44:63:E0:BB:63:82:8B:00"},{"property":"Signature Algorithm","value":"SHA-256 with RSA"},{"property":"Public Key Algorithm","value":"RSA"},{"property":"Public Key Size","value":"4096 bits"},{"property":"Public Key Exponent","value":"65537"},{"property":"Self-Signed","value":"Yes"}],"extensions":[{"extension":"Key Usage (critical)","value":"Certificate Sign, CRL Sign"},{"extension":"Basic Constraints (critical)","value":"CA: TRUE"},{"extension":"Subject Key Identifier","value":"79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E"}],"fingerprints":[{"algorithm":"SHA-256","fingerprint":"96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6"},{"algorithm":"SHA-1","fingerprint":"CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8"},{"algorithm":"SHA-512","fingerprint":"3B:40:F2:7E:82:83:23:F5:B9:1F:89:09:88:3A:78:A2:1C:86:55:17:61:F2:7B:38:02:9F:AA:EC:14:AF:5B:7A:A9:6F:B9:F9:CC:93:EE:20:1B:5E:B1:D0:FE:F1:7B:29:07:47:E8:B8:39:D2:E4:9A:8F:36:C5:EB:F3:C7:C9:10"}]},"credits_used":5,"credits_remaining":null}},"same_certificate_evaluated_after_its_2035_expiry":{"summary":"Same certificate, evaluated after its 2035 expiry","value":{"tool":"x509-certificate-parser","tool_version":"1.0.2","outputs":{"warnings":[{"severity":"Danger","message":"Certificate has expired — expired 210d 12h ago (at 2035-06-04T11:04:38Z)."},{"severity":"Warning","message":"This is a self-signed certificate (Subject = Issuer)."}],"type":[{"property":"Type","value":"X.509 Certificate"}],"subject":[{"field":"Country (C)","value":"US"},{"field":"Organization (O)","value":"Internet Security Research Group"},{"field":"Common Name (CN)","value":"ISRG Root X1"}],"issuer":[{"field":"Country (C)","value":"US"},{"field":"Organization (O)","value":"Internet Security Research Group"},{"field":"Common Name (CN)","value":"ISRG Root X1"}],"validity":[{"field":"Not Before","value":"2015-06-04T11:04:38Z"},{"field":"Not After","value":"2035-06-04T11:04:38Z"},{"field":"Status","value":"Expired (210d 12h ago)"}],"details":[{"property":"Version","value":"v3"},{"property":"Serial Number","value":"00:82:10:CF:B0:D2:40:E3:59:44:63:E0:BB:63:82:8B:00"},{"property":"Signature Algorithm","value":"SHA-256 with RSA"},{"property":"Public Key Algorithm","value":"RSA"},{"property":"Public Key Size","value":"4096 bits"},{"property":"Public Key Exponent","value":"65537"},{"property":"Self-Signed","value":"Yes"}],"extensions":[{"extension":"Key Usage (critical)","value":"Certificate Sign, CRL Sign"},{"extension":"Basic Constraints (critical)","value":"CA: TRUE"},{"extension":"Subject Key Identifier","value":"79:B4:59:E6:7B:B6:E5:E4:01:73:80:08:88:C8:1A:58:F6:E9:9B:6E"}],"fingerprints":[{"algorithm":"SHA-256","fingerprint":"96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6"},{"algorithm":"SHA-1","fingerprint":"CA:BD:2A:79:A1:07:6A:31:F2:1D:25:36:35:CB:03:9D:43:29:A5:E8"},{"algorithm":"SHA-512","fingerprint":"3B:40:F2:7E:82:83:23:F5:B9:1F:89:09:88:3A:78:A2:1C:86:55:17:61:F2:7B:38:02:9F:AA:EC:14:AF:5B:7A:A9:6F:B9:F9:CC:93:EE:20:1B:5E:B1:D0:FE:F1:7B:29:07:47:E8:B8:39:D2:E4:9A:8F:36:C5:EB:F3:C7:C9:10"}]},"credits_used":5,"credits_remaining":null}},"certificate_signing_request_csr_with_a_san_extension":{"summary":"Certificate Signing Request (CSR) with a SAN extension","value":{"tool":"x509-certificate-parser","tool_version":"1.0.2","outputs":{"warnings":[],"type":[{"property":"Type","value":"Certificate Signing Request (CSR)"},{"property":"Signature Valid","value":"Yes"}],"subject":[{"field":"Common Name (CN)","value":"example.com"},{"field":"Organization (O)","value":"Example Inc."},{"field":"Country (C)","value":"US"}],"issuer":[{"field":"Note","value":"Not applicable for a CSR"}],"validity":[{"field":"Note","value":"Not applicable for a CSR"}],"details":[{"property":"Version","value":"v1"},{"property":"Signature Algorithm","value":"SHA-256 with RSA"},{"property":"Public Key Algorithm","value":"RSA"},{"property":"Public Key Size","value":"2048 bits"},{"property":"Public Key Exponent","value":"65537"}],"extensions":[{"extension":"Subject Alternative Name (SAN)","value":"DNS: example.com, DNS: www.example.com"}],"fingerprints":[{"algorithm":"SHA-256","fingerprint":"38:47:4A:B0:7E:30:B9:00:0B:A4:E9:32:73:EE:B5:99:7A:0F:0A:24:70:79:B0:2E:97:F7:28:AA:33:95:CC:96"},{"algorithm":"SHA-1","fingerprint":"EE:8C:0E:BE:FA:93:AD:80:86:C2:23:4E:B5:6C:5A:98:83:10:34:5A"},{"algorithm":"SHA-512","fingerprint":"5D:66:50:E4:C8:56:96:60:33:E0:1A:BC:72:BA:45:68:70:90:20:6B:C1:2F:87:F3:F8:4B:54:2F:DC:EF:36:80:7A:CD:9E:8E:7F:2F:22:9A:99:35:49:90:45:77:BF:22:CC:B1:CD:42:68:94:26:20:C2:FE:7C:8D:14:4E:CB:D3"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"warnings":{"type":"array","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","message"]},"type":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"subject":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"issuer":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"validity":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"details":{"type":"array","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"extensions":{"type":"array","items":{"type":"object","properties":{"extension":{"type":"string","description":"Extension"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["extension","value"]},"fingerprints":{"type":"array","items":{"type":"object","properties":{"algorithm":{"type":"string","description":"Algorithm"},"fingerprint":{"type":"string","description":"Fingerprint"}}},"x-iotools-columns":["algorithm","fingerprint"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/brotli-compression":{"post":{"operationId":"run_brotli_compression","summary":"Brotli Compression Encoder/Decoder","tags":["Utilities"],"description":"Compress or decompress data with Brotli — the algorithm behind modern HTTP content-encoding — right in your browser, with size and ratio stats. Free in the browser (WASM); also available as a paid API (Node's native zlib).\n\n[Try Brotli Compression Encoder/Decoder in your browser →](https://iotools.cloud/tool/brotli-compression/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","description":"Input data (Base64)"},"mode":{"enum":["compress","decompress"],"description":"Mode"},"quality":{"type":"number","description":"Compression level (0 = fastest, 11 = best)","minimum":0,"maximum":11}},"required":["input"]},"examples":{"compress_a_short_text_at_the_highest_level":{"summary":"Compress a short text at the highest level","value":{"input":"SGVsbG8sIEJyb3RsaSBjb21wcmVzc2lvbiEgQnJvdGxpIGlzIGEgbW9kZXJuIGNvbXByZXNzaW9uIGFsZ29yaXRobSBkZXZlbG9wZWQgYnkgR29vZ2xlLg==","mode":"compress","quality":"11"}},"decompress_a_brotli_payload_back_to_text":{"summary":"Decompress a Brotli payload back to text","value":{"input":"G1cA4JwJdixkMorQOV4KvclVWFqDuMzRaZCQNDaOceDwdQ0TLTLasAFH8NayBpnV7z4Ix6ADJKfUPZqtaX5sAQ==","mode":"decompress"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output (Base64)"},"stats":{"type":"array","description":"Statistics","items":{"type":"object","properties":{"statistic":{"type":"string","description":"Statistic"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["statistic","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/zstd-compression":{"post":{"operationId":"run_zstd_compression","summary":"Zstandard (Zstd) Compression Tool","tags":["Utilities"],"description":"Compress or decompress text or a file with Zstandard (zstd) at a chosen compression level (1-22), with size and ratio stats. Free and private in your browser; also available as a paid API.\n\n[Try Zstandard (Zstd) Compression Tool in your browser →](https://iotools.cloud/tool/zstd-compression/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["compress","decompress"],"description":"Mode"},"inputText":{"type":"string","description":"Input text"},"file":{"type":"string","contentEncoding":"base64","description":"Or upload a file"},"level":{"type":"number","description":"Compression level (1 = fastest, 22 = best ratio)","minimum":1,"maximum":22}},"required":[]},"examples":{"compress_a_short_text_at_level_3":{"summary":"Compress a short text at level 3","value":{"mode":"compress","inputText":"The quick brown fox jumps over the lazy dog.","level":"3"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Output (Base64)"},"statsTable":{"type":"array","description":"Stats","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ai-content-detector":{"post":{"operationId":"run_ai_content_detector","summary":"AI Content Detector","tags":["Utilities"],"description":"Analyze pasted text with AI to estimate whether it was written by an AI model or a human, with a confidence score and supporting indicators. A probabilistic estimate, not proof — see the disclaimer below.\n\n[Try AI Content Detector in your browser →](https://iotools.cloud/tool/ai-content-detector/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":12,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputText":{"type":"string","description":"Text to Analyze"}},"required":["inputText"]},"examples":{"default":{"summary":"Default","value":{"inputText":"The advancement of artificial intelligence has fundamentally transformed the landscape of modern technology. Machine learning algorithms, particularly deep neural networks, have demonstrated remarkable capabilities in pattern recognition, natural language processing, and decision-making tasks."}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"verdict":{"type":"string","description":"Verdict"},"confidence":{"type":"string","description":"Confidence"},"indicators":{"type":"string","description":"Key Indicators"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/raw-http-request-parser":{"post":{"operationId":"run_raw_http_request_parser","summary":"HTTP Request Parser","tags":["Utilities"],"description":"Paste a raw HTTP request and get the method, target, version, headers and body split out — with the query string decoded into parameters, the body pretty-printed by Content-Type, and a ready-to-run cURL command to replay it. Runs entirely in your browser.\n\n[Try HTTP Request Parser in your browser →](https://iotools.cloud/tool/raw-http-request-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rawRequest":{"type":"string","description":"Raw HTTP request"},"bodyHandling":{"enum":["decode","raw"],"description":"Body"},"scheme":{"enum":["https","http"],"description":"Scheme for the cURL URL"}},"required":[]},"examples":{"json_api_request":{"summary":"JSON API request","value":{"rawRequest":"POST /api/v1/users?verbose=true&fields=id,name HTTP/1.1\nHost: api.example.com\nUser-Agent: curl/8.6.0\nAccept: application/json\nContent-Type: application/json\nContent-Length: 64\nAuthorization: Bearer eyJhbGciOiJIUzI1NiJ9.abc.def\n\n{\"name\":\"Ada Lovelace\",\"email\":\"ada@example.com\",\"role\":\"admin\"}"}},"form_login_repeated_cookie_header":{"summary":"Form login (repeated Cookie header)","value":{"rawRequest":"POST /login HTTP/1.1\nHost: www.example.com\nContent-Type: application/x-www-form-urlencoded\nContent-Length: 41\nCookie: session=abc123\nCookie: theme=dark\n\nusername=ada&password=hunter+2&remember=1"}},"get_with_repeated_query_keys":{"summary":"GET with repeated query keys","value":{"rawRequest":"GET /search?q=raw%20http&page=2&tag=a&tag=b HTTP/2\nHost: example.org\nAccept-Language: en-GB,en;q=0.9\nReferer: https://example.org/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"json_api_request":{"summary":"JSON API request","value":{"tool":"raw-http-request-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Method","value":"POST"},{"field":"Path","value":"/api/v1/users"},{"field":"Query string","value":"verbose=true&fields=id,name"},{"field":"HTTP version","value":"HTTP/1.1"},{"field":"Host","value":"api.example.com"},{"field":"Content-Type","value":"application/json"},{"field":"Headers","value":"6"},{"field":"Query parameters","value":"2"},{"field":"Body size","value":"64 bytes"}],"headers":[{"header":"Host","value":"api.example.com"},{"header":"User-Agent","value":"curl/8.6.0"},{"header":"Accept","value":"application/json"},{"header":"Content-Type","value":"application/json"},{"header":"Content-Length","value":"64"},{"header":"Authorization","value":"Bearer eyJhbGciOiJIUzI1NiJ9.abc.def"}],"query":[{"parameter":"verbose","value":"true"},{"parameter":"fields","value":"id,name"}],"body":"{\n  \"name\": \"Ada Lovelace\",\n  \"email\": \"ada@example.com\",\n  \"role\": \"admin\"\n}","curl":"curl -X POST 'https://api.example.com/api/v1/users?verbose=true&fields=id,name' \\\n  -H 'User-Agent: curl/8.6.0' \\\n  -H 'Accept: application/json' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.abc.def' \\\n  --data-raw '{\"name\":\"Ada Lovelace\",\"email\":\"ada@example.com\",\"role\":\"admin\"}'","json":"{\n  \"method\": \"POST\",\n  \"target\": \"/api/v1/users?verbose=true&fields=id,name\",\n  \"httpVersion\": \"HTTP/1.1\",\n  \"path\": \"/api/v1/users\",\n  \"queryParameters\": [\n    {\n      \"name\": \"verbose\",\n      \"value\": \"true\"\n    },\n    {\n      \"name\": \"fields\",\n      \"value\": \"id,name\"\n    }\n  ],\n  \"headers\": [\n    {\n      \"name\": \"Host\",\n      \"values\": [\n        \"api.example.com\"\n      ]\n    },\n    {\n      \"name\": \"User-Agent\",\n      \"values\": [\n        \"curl/8.6.0\"\n      ]\n    },\n    {\n      \"name\": \"Accept\",\n      \"values\": [\n        \"application/json\"\n      ]\n    },\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"application/json\"\n      ]\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"values\": [\n        \"64\"\n      ]\n    },\n    {\n      \"name\": \"Authorization\",\n      \"values\": [\n        \"Bearer eyJhbGciOiJIUzI1NiJ9.abc.def\"\n      ]\n    }\n  ],\n  \"body\": {\n    \"raw\": \"{\\\"name\\\":\\\"Ada Lovelace\\\",\\\"email\\\":\\\"ada@example.com\\\",\\\"role\\\":\\\"admin\\\"}\",\n    \"bytes\": 64,\n    \"contentType\": \"application/json\",\n    \"parsed\": {\n      \"name\": \"Ada Lovelace\",\n      \"email\": \"ada@example.com\",\n      \"role\": \"admin\"\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"form_login_repeated_cookie_header":{"summary":"Form login (repeated Cookie header)","value":{"tool":"raw-http-request-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Method","value":"POST"},{"field":"Path","value":"/login"},{"field":"Query string","value":"(none)"},{"field":"HTTP version","value":"HTTP/1.1"},{"field":"Host","value":"www.example.com"},{"field":"Content-Type","value":"application/x-www-form-urlencoded"},{"field":"Headers","value":"4"},{"field":"Query parameters","value":"0"},{"field":"Body size","value":"41 bytes"}],"headers":[{"header":"Host","value":"www.example.com"},{"header":"Content-Type","value":"application/x-www-form-urlencoded"},{"header":"Content-Length","value":"41"},{"header":"Cookie","value":"session=abc123"},{"header":"Cookie","value":"theme=dark"}],"query":[],"body":"username = ada\npassword = hunter 2\nremember = 1","curl":"curl -X POST 'https://www.example.com/login' \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -H 'Cookie: session=abc123' \\\n  -H 'Cookie: theme=dark' \\\n  --data-raw 'username=ada&password=hunter+2&remember=1'","json":"{\n  \"method\": \"POST\",\n  \"target\": \"/login\",\n  \"httpVersion\": \"HTTP/1.1\",\n  \"path\": \"/login\",\n  \"queryParameters\": [],\n  \"headers\": [\n    {\n      \"name\": \"Host\",\n      \"values\": [\n        \"www.example.com\"\n      ]\n    },\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"application/x-www-form-urlencoded\"\n      ]\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"values\": [\n        \"41\"\n      ]\n    },\n    {\n      \"name\": \"Cookie\",\n      \"values\": [\n        \"session=abc123\",\n        \"theme=dark\"\n      ]\n    }\n  ],\n  \"body\": {\n    \"raw\": \"username=ada&password=hunter+2&remember=1\",\n    \"bytes\": 41,\n    \"contentType\": \"application/x-www-form-urlencoded\",\n    \"parsed\": [\n      {\n        \"name\": \"username\",\n        \"value\": \"ada\"\n      },\n      {\n        \"name\": \"password\",\n        \"value\": \"hunter 2\"\n      },\n      {\n        \"name\": \"remember\",\n        \"value\": \"1\"\n      }\n    ]\n  }\n}"},"credits_used":5,"credits_remaining":null}},"get_with_repeated_query_keys":{"summary":"GET with repeated query keys","value":{"tool":"raw-http-request-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Method","value":"GET"},{"field":"Path","value":"/search"},{"field":"Query string","value":"q=raw%20http&page=2&tag=a&tag=b"},{"field":"HTTP version","value":"HTTP/2"},{"field":"Host","value":"example.org"},{"field":"Content-Type","value":"(not set)"},{"field":"Headers","value":"3"},{"field":"Query parameters","value":"4"},{"field":"Body size","value":"0 bytes"}],"headers":[{"header":"Host","value":"example.org"},{"header":"Accept-Language","value":"en-GB,en;q=0.9"},{"header":"Referer","value":"https://example.org/"}],"query":[{"parameter":"q","value":"raw http"},{"parameter":"page","value":"2"},{"parameter":"tag","value":"a"},{"parameter":"tag","value":"b"}],"body":"","curl":"curl -X GET 'https://example.org/search?q=raw%20http&page=2&tag=a&tag=b' \\\n  -H 'Accept-Language: en-GB,en;q=0.9' \\\n  -H 'Referer: https://example.org/'","json":"{\n  \"method\": \"GET\",\n  \"target\": \"/search?q=raw%20http&page=2&tag=a&tag=b\",\n  \"httpVersion\": \"HTTP/2\",\n  \"path\": \"/search\",\n  \"queryParameters\": [\n    {\n      \"name\": \"q\",\n      \"value\": \"raw http\"\n    },\n    {\n      \"name\": \"page\",\n      \"value\": \"2\"\n    },\n    {\n      \"name\": \"tag\",\n      \"value\": \"a\"\n    },\n    {\n      \"name\": \"tag\",\n      \"value\": \"b\"\n    }\n  ],\n  \"headers\": [\n    {\n      \"name\": \"Host\",\n      \"values\": [\n        \"example.org\"\n      ]\n    },\n    {\n      \"name\": \"Accept-Language\",\n      \"values\": [\n        \"en-GB,en;q=0.9\"\n      ]\n    },\n    {\n      \"name\": \"Referer\",\n      \"values\": [\n        \"https://example.org/\"\n      ]\n    }\n  ],\n  \"body\": {\n    \"raw\": \"\",\n    \"bytes\": 0,\n    \"contentType\": null,\n    \"parsed\": null\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Request","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"headers":{"type":"array","description":"Headers","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["header","value"]},"query":{"type":"array","description":"Query parameters","items":{"type":"object","properties":{"parameter":{"type":"string","description":"Parameter"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["parameter","value"]},"body":{"type":"string","description":"Body"},"curl":{"type":"string","description":"Equivalent cURL command"},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-merge-patch-tool":{"post":{"operationId":"run_json_merge_patch_tool","summary":"JSON Merge Patch Tool","tags":["Utilities"],"description":"Apply an RFC 7386 JSON Merge Patch to a document, or work backwards and generate the minimal merge patch between two documents. Shows the patched result plus a per-key list of what was added, replaced and removed — all in your browser.\n\n[Try JSON Merge Patch Tool in your browser →](https://iotools.cloud/tool/json-merge-patch-tool/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["apply","generate"],"description":"Mode"},"baseJson":{"type":"string","description":"Base JSON document"},"patchJson":{"type":"string","description":"Merge patch"},"modifiedJson":{"type":"string","description":"Modified JSON document"},"indent":{"enum":["2","4","tab","minified"],"description":"Output indentation"}},"required":[]},"examples":{"apply_the_rfc_7386_example_patch":{"summary":"Apply the RFC 7386 example patch","value":{"mode":"apply","baseJson":"{\n  \"title\": \"Goodbye!\",\n  \"author\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"tags\": [\"example\", \"sample\"],\n  \"content\": \"This will be unchanged\",\n  \"phoneNumber\": \"+01-123-456-7890\"\n}","patchJson":"{\n  \"title\": \"Hello!\",\n  \"phoneNumber\": null,\n  \"author\": {\n    \"familyName\": null\n  },\n  \"tags\": [\"example\"]\n}","indent":"2"}},"generate_the_patch_from_before_and_after":{"summary":"Generate the patch from before and after","value":{"mode":"generate","baseJson":"{\n  \"title\": \"Goodbye!\",\n  \"author\": {\n    \"givenName\": \"John\",\n    \"familyName\": \"Doe\"\n  },\n  \"tags\": [\"example\", \"sample\"],\n  \"content\": \"This will be unchanged\",\n  \"phoneNumber\": \"+01-123-456-7890\"\n}","modifiedJson":"{\n  \"title\": \"Hello!\",\n  \"author\": {\n    \"givenName\": \"John\"\n  },\n  \"tags\": [\"example\"],\n  \"content\": \"This will be unchanged\"\n}","indent":"2"}},"non_object_patch_replaces_the_document":{"summary":"Non-object patch replaces the document","value":{"mode":"apply","baseJson":"{\"a\":{\"b\":1}}","patchJson":"[\"replaced\"]","indent":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"apply_the_rfc_7386_example_patch":{"summary":"Apply the RFC 7386 example patch","value":{"tool":"json-merge-patch-tool","tool_version":"1.0.2","outputs":{"output":"{\n  \"title\": \"Hello!\",\n  \"author\": {\n    \"givenName\": \"John\"\n  },\n  \"tags\": [\n    \"example\"\n  ],\n  \"content\": \"This will be unchanged\"\n}","changes":[{"operation":"Replace","path":"title","new-value":"\"Hello!\""},{"operation":"Remove","path":"phoneNumber","new-value":""},{"operation":"Remove","path":"author.familyName","new-value":""},{"operation":"Replace","path":"tags","new-value":"[\"example\"]"}]},"credits_used":5,"credits_remaining":null}},"generate_the_patch_from_before_and_after":{"summary":"Generate the patch from before and after","value":{"tool":"json-merge-patch-tool","tool_version":"1.0.2","outputs":{"output":"{\n  \"phoneNumber\": null,\n  \"title\": \"Hello!\",\n  \"author\": {\n    \"familyName\": null\n  },\n  \"tags\": [\n    \"example\"\n  ]\n}","changes":[{"operation":"Remove","path":"phoneNumber","new-value":""},{"operation":"Replace","path":"title","new-value":"\"Hello!\""},{"operation":"Remove","path":"author.familyName","new-value":""},{"operation":"Replace","path":"tags","new-value":"[\"example\"]"}]},"credits_used":5,"credits_remaining":null}},"non_object_patch_replaces_the_document":{"summary":"Non-object patch replaces the document","value":{"tool":"json-merge-patch-tool","tool_version":"1.0.2","outputs":{"output":"[\"replaced\"]","changes":[{"operation":"Replace","path":"(root)","new-value":"[\"replaced\"]"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"changes":{"type":"array","description":"Changes","items":{"type":"object","properties":{"operation":{"type":"string","description":"Operation"},"path":{"type":"string","description":"Path"},"new-value":{"type":"string","description":"New value"}}},"x-iotools-columns":["operation","path","new-value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-lines-merger":{"post":{"operationId":"run_json_lines_merger","summary":"JSON Lines Merger","tags":["Utilities"],"description":"Merge several JSON Lines (JSONL/NDJSON) sources into one JSON array or one NDJSON stream. Combines a pasted blob with any number of uploaded files, expands sources that are already JSON arrays, drops duplicate records, tags each record with where it came from, and reports invalid lines instead of failing on them.\n\n[Try JSON Lines Merger in your browser →](https://iotools.cloud/tool/json-lines-merger/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonLines":{"type":"string","description":"JSON Lines input"},"files":{"type":"array","items":{"type":"string","contentEncoding":"base64"},"description":"Add JSONL / NDJSON / JSON files"},"outputFormat":{"enum":["array","ndjson"],"description":"Merge into"},"indent":{"enum":["2","4","tab","minified"],"description":"Indentation"},"dedupe":{"type":"boolean","description":"Remove duplicate records"},"addSource":{"type":"boolean","description":"Tag each record with a \"_source\" key"},"sortKeys":{"type":"boolean","description":"Sort object keys alphabetically"},"skipInvalid":{"type":"boolean","description":"Skip invalid lines"}},"required":[]},"examples":{"merge_json_lines_into_a_json_array":{"summary":"Merge JSON Lines into a JSON array","value":{"jsonLines":"{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n{\"id\":2,\"event\":\"click\",\"user\":\"bob\",\"page\":\"/pricing\"}\n{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n\n{\"id\":3,\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99}\nnot-json-at-all","outputFormat":"array","indent":"2","dedupe":"","addSource":"","sortKeys":"","skipInvalid":"true"}},"deduplicate_and_tag_each_record_with_its_source":{"summary":"Deduplicate and tag each record with its source","value":{"jsonLines":"{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n{\"id\":2,\"event\":\"click\",\"user\":\"bob\",\"page\":\"/pricing\"}\n{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n\n{\"id\":3,\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99}\nnot-json-at-all","outputFormat":"ndjson","indent":"2","dedupe":"true","addSource":"true","sortKeys":"","skipInvalid":"true"}},"expand_a_json_array_source_into_json_lines":{"summary":"Expand a JSON array source into JSON Lines","value":{"jsonLines":"[{\"id\":4,\"event\":\"signup\",\"user\":\"dave\"},{\"id\":5,\"event\":\"logout\",\"user\":\"alice\"}]","outputFormat":"ndjson","indent":"2","dedupe":"","addSource":"","sortKeys":"true","skipInvalid":"true"}},"stop_on_invalid_lines_instead_of_skipping_them":{"summary":"Stop on invalid lines instead of skipping them","value":{"jsonLines":"{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n{\"id\":2,\"event\":\"click\",\"user\":\"bob\",\"page\":\"/pricing\"}\n{\"id\":1,\"event\":\"login\",\"user\":\"alice\"}\n\n{\"id\":3,\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99}\nnot-json-at-all","outputFormat":"array","indent":"minified","dedupe":"","addSource":"","sortKeys":"","skipInvalid":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"merge_json_lines_into_a_json_array":{"summary":"Merge JSON Lines into a JSON array","value":{"tool":"json-lines-merger","tool_version":"1.0.2","outputs":{"output":"[\n  {\n    \"id\": 1,\n    \"event\": \"login\",\n    \"user\": \"alice\"\n  },\n  {\n    \"id\": 2,\n    \"event\": \"click\",\n    \"user\": \"bob\",\n    \"page\": \"/pricing\"\n  },\n  {\n    \"id\": 1,\n    \"event\": \"login\",\n    \"user\": \"alice\"\n  },\n  {\n    \"id\": 3,\n    \"event\": \"purchase\",\n    \"user\": \"carol\",\n    \"amount\": 29.99\n  }\n]","summary":[{"metric":"Status","value":"Merged"},{"metric":"Sources","value":"1"},{"metric":"Records merged","value":"4"},{"metric":"Duplicates removed","value":"0"},{"metric":"Invalid lines","value":"1"},{"metric":"Blank lines skipped","value":"1"}],"issues":[{"source":"Pasted input","line":"6","issue":"Invalid JSON: not-json-at-all"}]},"credits_used":5,"credits_remaining":null}},"deduplicate_and_tag_each_record_with_its_source":{"summary":"Deduplicate and tag each record with its source","value":{"tool":"json-lines-merger","tool_version":"1.0.2","outputs":{"output":"{\"id\":1,\"event\":\"login\",\"user\":\"alice\",\"_source\":\"Pasted input\"}\n{\"id\":2,\"event\":\"click\",\"user\":\"bob\",\"page\":\"/pricing\",\"_source\":\"Pasted input\"}\n{\"id\":3,\"event\":\"purchase\",\"user\":\"carol\",\"amount\":29.99,\"_source\":\"Pasted input\"}","summary":[{"metric":"Status","value":"Merged"},{"metric":"Sources","value":"1"},{"metric":"Records merged","value":"3"},{"metric":"Duplicates removed","value":"1"},{"metric":"Invalid lines","value":"1"},{"metric":"Blank lines skipped","value":"1"}],"issues":[{"source":"Pasted input","line":"6","issue":"Invalid JSON: not-json-at-all"}]},"credits_used":5,"credits_remaining":null}},"expand_a_json_array_source_into_json_lines":{"summary":"Expand a JSON array source into JSON Lines","value":{"tool":"json-lines-merger","tool_version":"1.0.2","outputs":{"output":"{\"event\":\"signup\",\"id\":4,\"user\":\"dave\"}\n{\"event\":\"logout\",\"id\":5,\"user\":\"alice\"}","summary":[{"metric":"Status","value":"Merged"},{"metric":"Sources","value":"1"},{"metric":"Records merged","value":"2"},{"metric":"Duplicates removed","value":"0"},{"metric":"Invalid lines","value":"0"},{"metric":"Blank lines skipped","value":"0"}],"issues":[]},"credits_used":5,"credits_remaining":null}},"stop_on_invalid_lines_instead_of_skipping_them":{"summary":"Stop on invalid lines instead of skipping them","value":{"tool":"json-lines-merger","tool_version":"1.0.2","outputs":{"output":"","summary":[{"metric":"Status","value":"Halted — invalid lines found"},{"metric":"Sources","value":"1"},{"metric":"Records merged","value":"0"},{"metric":"Duplicates removed","value":"0"},{"metric":"Invalid lines","value":"1"},{"metric":"Blank lines skipped","value":"1"}],"issues":[{"source":"Pasted input","line":"6","issue":"Invalid JSON: not-json-at-all"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Merged output"},"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"issues":{"type":"array","description":"Invalid lines","items":{"type":"object","properties":{"source":{"type":"string","description":"Source"},"line":{"type":"string","description":"Line"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["source","line","issue"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/ini-overlay-merger":{"post":{"operationId":"run_ini_overlay_merger","summary":"INI Overlay Merger","tags":["Utilities"],"description":"Merge an INI config with one or two overlay files — the way a deployment layers defaults, environment and local settings. Overridden values are edited in place, so the base file's comments, blank lines, key order and indentation all survive, and a change report shows exactly which keys were added, changed or left alone.\n\n[Try INI Overlay Merger in your browser →](https://iotools.cloud/tool/ini-overlay-merger/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"baseIni":{"type":"string","description":"Base INI"},"overlayIni":{"type":"string","description":"Overlay INI"},"secondOverlayIni":{"type":"string","description":"Second overlay INI (optional)"},"newKeys":{"enum":["add","ignore"],"description":"Keys only in an overlay"},"preserveComments":{"type":"boolean","description":"Keep the base file's comment lines and blank lines"},"ignoreCase":{"type":"boolean","description":"Match section and key names case-insensitively"},"assignment":{"enum":["spaced","tight"],"description":"Assignment style for added keys"}},"required":[]},"examples":{"layer_a_production_overlay_onto_defaults":{"summary":"Layer a production overlay onto defaults","value":{"baseIni":"; Application defaults — keep this file in version control\napp_name = \"My App\"\ndebug = false\n\n[server]\nhost = 127.0.0.1\nport = 8080          ; internal port, not the public one\nworkers = 2\n\n[database]\ndriver = postgres\nhost = localhost\npool = 5","overlayIni":"; production.ini\ndebug = true\n\n[server]\nhost = 0.0.0.0\nworkers = 8\ntimeout = 30\n\n[logging]\nlevel = warn","secondOverlayIni":"","newKeys":"add","preserveComments":"true","ignoreCase":"","assignment":"spaced"}},"two_overlays_the_last_one_wins":{"summary":"Two overlays — the last one wins","value":{"baseIni":"; Application defaults — keep this file in version control\napp_name = \"My App\"\ndebug = false\n\n[server]\nhost = 127.0.0.1\nport = 8080          ; internal port, not the public one\nworkers = 2\n\n[database]\ndriver = postgres\nhost = localhost\npool = 5","overlayIni":"; production.ini\ndebug = true\n\n[server]\nhost = 0.0.0.0\nworkers = 8\ntimeout = 30\n\n[logging]\nlevel = warn","secondOverlayIni":"[server]\nworkers = 16","newKeys":"add","preserveComments":"true","ignoreCase":"","assignment":"spaced"}},"strip_comments_and_refuse_keys_the_base_doesn_t_declare":{"summary":"Strip comments and refuse keys the base doesn't declare","value":{"baseIni":"; Application defaults — keep this file in version control\napp_name = \"My App\"\ndebug = false\n\n[server]\nhost = 127.0.0.1\nport = 8080          ; internal port, not the public one\nworkers = 2\n\n[database]\ndriver = postgres\nhost = localhost\npool = 5","overlayIni":"; production.ini\ndebug = true\n\n[server]\nhost = 0.0.0.0\nworkers = 8\ntimeout = 30\n\n[logging]\nlevel = warn","secondOverlayIni":"","newKeys":"ignore","preserveComments":"","ignoreCase":"","assignment":"spaced"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"layer_a_production_overlay_onto_defaults":{"summary":"Layer a production overlay onto defaults","value":{"tool":"ini-overlay-merger","tool_version":"1.0.2","outputs":{"mergedIni":"; Application defaults — keep this file in version control\napp_name = \"My App\"\ndebug = true\n\n[server]\nhost = 0.0.0.0\nport = 8080          ; internal port, not the public one\nworkers = 8\ntimeout = 30\n\n[database]\ndriver = postgres\nhost = localhost\npool = 5\n\n[logging]\nlevel = warn","changes":[{"section":"(global)","key":"debug","base-value":"false","merged-value":"true","change":"Changed"},{"section":"server","key":"host","base-value":"127.0.0.1","merged-value":"0.0.0.0","change":"Changed"},{"section":"server","key":"workers","base-value":"2","merged-value":"8","change":"Changed"},{"section":"server","key":"timeout","base-value":"","merged-value":"30","change":"Added"},{"section":"logging","key":"level","base-value":"","merged-value":"warn","change":"Added"}]},"credits_used":5,"credits_remaining":null}},"two_overlays_the_last_one_wins":{"summary":"Two overlays — the last one wins","value":{"tool":"ini-overlay-merger","tool_version":"1.0.2","outputs":{"mergedIni":"; Application defaults — keep this file in version control\napp_name = \"My App\"\ndebug = true\n\n[server]\nhost = 0.0.0.0\nport = 8080          ; internal port, not the public one\nworkers = 16\ntimeout = 30\n\n[database]\ndriver = postgres\nhost = localhost\npool = 5\n\n[logging]\nlevel = warn","changes":[{"section":"(global)","key":"debug","base-value":"false","merged-value":"true","change":"Changed"},{"section":"server","key":"host","base-value":"127.0.0.1","merged-value":"0.0.0.0","change":"Changed"},{"section":"server","key":"workers","base-value":"2","merged-value":"16","change":"Changed"},{"section":"server","key":"timeout","base-value":"","merged-value":"30","change":"Added"},{"section":"logging","key":"level","base-value":"","merged-value":"warn","change":"Added"}]},"credits_used":5,"credits_remaining":null}},"strip_comments_and_refuse_keys_the_base_doesn_t_declare":{"summary":"Strip comments and refuse keys the base doesn't declare","value":{"tool":"ini-overlay-merger","tool_version":"1.0.2","outputs":{"mergedIni":"app_name = \"My App\"\ndebug = true\n[server]\nhost = 0.0.0.0\nport = 8080          ; internal port, not the public one\nworkers = 8\n[database]\ndriver = postgres\nhost = localhost\npool = 5","changes":[{"section":"(global)","key":"debug","base-value":"false","merged-value":"true","change":"Changed"},{"section":"server","key":"host","base-value":"127.0.0.1","merged-value":"0.0.0.0","change":"Changed"},{"section":"server","key":"workers","base-value":"2","merged-value":"8","change":"Changed"},{"section":"server","key":"timeout","base-value":"","merged-value":"30","change":"Ignored"},{"section":"logging","key":"level","base-value":"","merged-value":"warn","change":"Ignored"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"mergedIni":{"type":"string","description":"Merged INI"},"changes":{"type":"array","description":"Changes","items":{"type":"object","properties":{"section":{"type":"string","description":"Section"},"key":{"type":"string","description":"Key"},"base-value":{"type":"string","description":"Base value"},"merged-value":{"type":"string","description":"Merged value"},"change":{"type":"string","description":"Change"}}},"x-iotools-columns":["section","key","base-value","merged-value","change"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/dns-zone-file-parser":{"post":{"operationId":"run_dns_zone_file_parser","summary":"DNS Zone File Parser","tags":["Utilities"],"description":"Paste a BIND zone file and read it as a table: every record with its owner name fully qualified, its inherited TTL resolved, and its type and rdata split out. Honours $ORIGIN, $TTL and multi-line SOA blocks, flags the classic mistakes (missing SOA, a CNAME sharing a name, a target missing its trailing dot), and exports to CSV or JSON. Runs entirely in your browser — no DNS lookups.\n\n[Try DNS Zone File Parser in your browser →](https://iotools.cloud/tool/dns-zone-file-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"zoneFile":{"type":"string","description":"Zone file"},"origin":{"type":"string","description":"Origin"},"defaultTtl":{"type":"string","description":"Default TTL"},"ttlFormat":{"enum":["seconds","human"],"description":"TTL display"}},"required":[]},"examples":{"full_zone_soa_inherited_owner_relative_mx_target":{"summary":"Full zone (SOA, inherited owner, relative MX target)","value":{"zoneFile":"$ORIGIN example.com.\n$TTL 1h\n\n@   IN  SOA ns1.example.com. hostmaster.example.com. (\n        2026072601  ; serial\n        7200        ; refresh\n        900         ; retry\n        1209600     ; expire\n        3600 )      ; minimum\n\n@           IN  NS      ns1.example.com.\n            IN  NS      ns2.example.com.\n@           IN  A       192.0.2.10\n@       300 IN  AAAA    2001:db8::10\nwww         IN  CNAME   @\nmail        IN  A       192.0.2.20\n@           IN  MX  10  mail\n@           IN  TXT     \"v=spf1 ip4:192.0.2.20 -all\"\n_sip._tcp   IN  SRV 10 5 5060 sipserver.example.com.\n@           IN  CAA 0 issue \"letsencrypt.org\""}},"zone_with_mistakes_cname_conflict_duplicate_a":{"summary":"Zone with mistakes (CNAME conflict, duplicate A)","value":{"zoneFile":"$ORIGIN example.net.\n$TTL 300\n\n@       IN  SOA ns1.example.net. admin.example.net. ( 1 7200 900 1209600 3600 )\n@       IN  NS  ns1.example.net.\nshop    IN  CNAME   storefront.example.net.\nshop    IN  TXT     \"verification=abc123\"\nblog    IN  A   198.51.100.5\nblog    IN  A   198.51.100.5"}},"no_origin_or_ttl_filled_in_from_the_options":{"summary":"No $ORIGIN or $TTL — filled in from the options","value":{"zoneFile":"@\t3600\tIN\tSOA\tns1.example.org. admin.example.org. ( 1 7200 900 1209600 3600 )\n@\tIN\tNS\tns1.example.org.\nwww\tIN\tA\t203.0.113.7","origin":"example.org","defaultTtl":"90m","ttlFormat":"human"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"full_zone_soa_inherited_owner_relative_mx_target":{"summary":"Full zone (SOA, inherited owner, relative MX target)","value":{"tool":"dns-zone-file-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Origin","value":"example.com."},{"field":"Records","value":"11"},{"field":"Distinct names","value":"4"},{"field":"Record types","value":"9"},{"field":"Shortest TTL","value":"300"},{"field":"Longest TTL","value":"3600"},{"field":"Unparsed lines","value":"0"},{"field":"Issues","value":"0 errors, 1 warning"}],"records":[{"name":"example.com.","ttl":"3600","class":"IN","type":"SOA","value":"ns1.example.com. hostmaster.example.com. 2026072601 7200 900 1209600 3600"},{"name":"example.com.","ttl":"3600","class":"IN","type":"NS","value":"ns1.example.com."},{"name":"example.com.","ttl":"3600","class":"IN","type":"NS","value":"ns2.example.com."},{"name":"example.com.","ttl":"3600","class":"IN","type":"A","value":"192.0.2.10"},{"name":"example.com.","ttl":"300","class":"IN","type":"AAAA","value":"2001:db8::10"},{"name":"www.example.com.","ttl":"3600","class":"IN","type":"CNAME","value":"@"},{"name":"mail.example.com.","ttl":"3600","class":"IN","type":"A","value":"192.0.2.20"},{"name":"example.com.","ttl":"3600","class":"IN","type":"MX","value":"10 mail"},{"name":"example.com.","ttl":"3600","class":"IN","type":"TXT","value":"\"v=spf1 ip4:192.0.2.20 -all\""},{"name":"_sip._tcp.example.com.","ttl":"3600","class":"IN","type":"SRV","value":"10 5 5060 sipserver.example.com."},{"name":"example.com.","ttl":"3600","class":"IN","type":"CAA","value":"0 issue \"letsencrypt.org\""}],"typeCounts":[{"type":"A","count":"2"},{"type":"NS","count":"2"},{"type":"AAAA","count":"1"},{"type":"CAA","count":"1"},{"type":"CNAME","count":"1"},{"type":"MX","count":"1"},{"type":"SOA","count":"1"},{"type":"SRV","count":"1"},{"type":"TXT","count":"1"}],"issues":[{"severity":"Warning","line":"17","detail":"MX target \"mail\" has no trailing dot, so it resolves to mail.example.com. — add the dot if you meant an external name."}],"normalized":"$ORIGIN example.com.\nexample.com.\t3600\tIN\tSOA\tns1.example.com. hostmaster.example.com. 2026072601 7200 900 1209600 3600\nexample.com.\t3600\tIN\tNS\tns1.example.com.\nexample.com.\t3600\tIN\tNS\tns2.example.com.\nexample.com.\t3600\tIN\tA\t192.0.2.10\nexample.com.\t300\tIN\tAAAA\t2001:db8::10\nwww.example.com.\t3600\tIN\tCNAME\t@\nmail.example.com.\t3600\tIN\tA\t192.0.2.20\nexample.com.\t3600\tIN\tMX\t10 mail\nexample.com.\t3600\tIN\tTXT\t\"v=spf1 ip4:192.0.2.20 -all\"\n_sip._tcp.example.com.\t3600\tIN\tSRV\t10 5 5060 sipserver.example.com.\nexample.com.\t3600\tIN\tCAA\t0 issue \"letsencrypt.org\"\n","json":"{\n  \"origin\": \"example.com.\",\n  \"directives\": [\n    {\n      \"name\": \"$ORIGIN\",\n      \"value\": \"example.com.\"\n    },\n    {\n      \"name\": \"$TTL\",\n      \"value\": \"3600\"\n    }\n  ],\n  \"records\": [\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"SOA\",\n      \"rdata\": \"ns1.example.com. hostmaster.example.com. 2026072601 7200 900 1209600 3600\",\n      \"target\": null,\n      \"line\": 4\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"NS\",\n      \"rdata\": \"ns1.example.com.\",\n      \"target\": \"ns1.example.com.\",\n      \"line\": 11\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"NS\",\n      \"rdata\": \"ns2.example.com.\",\n      \"target\": \"ns2.example.com.\",\n      \"line\": 12\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"A\",\n      \"rdata\": \"192.0.2.10\",\n      \"target\": null,\n      \"line\": 13\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"record\",\n      \"class\": \"IN\",\n      \"type\": \"AAAA\",\n      \"rdata\": \"2001:db8::10\",\n      \"target\": null,\n      \"line\": 14\n    },\n    {\n      \"name\": \"www.example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"CNAME\",\n      \"rdata\": \"@\",\n      \"target\": \"example.com.\",\n      \"line\": 15\n    },\n    {\n      \"name\": \"mail.example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"A\",\n      \"rdata\": \"192.0.2.20\",\n      \"target\": null,\n      \"line\": 16\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"MX\",\n      \"rdata\": \"10 mail\",\n      \"target\": \"mail.example.com.\",\n      \"line\": 17\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"TXT\",\n      \"rdata\": \"\\\"v=spf1 ip4:192.0.2.20 -all\\\"\",\n      \"target\": null,\n      \"line\": 18\n    },\n    {\n      \"name\": \"_sip._tcp.example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"SRV\",\n      \"rdata\": \"10 5 5060 sipserver.example.com.\",\n      \"target\": \"sipserver.example.com.\",\n      \"line\": 19\n    },\n    {\n      \"name\": \"example.com.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"CAA\",\n      \"rdata\": \"0 issue \\\"letsencrypt.org\\\"\",\n      \"target\": null,\n      \"line\": 20\n    }\n  ],\n  \"issues\": [\n    {\n      \"severity\": \"Warning\",\n      \"line\": \"17\",\n      \"message\": \"MX target \\\"mail\\\" has no trailing dot, so it resolves to mail.example.com. — add the dot if you meant an external name.\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"zone_with_mistakes_cname_conflict_duplicate_a":{"summary":"Zone with mistakes (CNAME conflict, duplicate A)","value":{"tool":"dns-zone-file-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Origin","value":"example.net."},{"field":"Records","value":"6"},{"field":"Distinct names","value":"3"},{"field":"Record types","value":"5"},{"field":"Shortest TTL","value":"300"},{"field":"Longest TTL","value":"300"},{"field":"Unparsed lines","value":"0"},{"field":"Issues","value":"1 error, 1 warning"}],"records":[{"name":"example.net.","ttl":"300","class":"IN","type":"SOA","value":"ns1.example.net. admin.example.net. 1 7200 900 1209600 3600"},{"name":"example.net.","ttl":"300","class":"IN","type":"NS","value":"ns1.example.net."},{"name":"shop.example.net.","ttl":"300","class":"IN","type":"CNAME","value":"storefront.example.net."},{"name":"shop.example.net.","ttl":"300","class":"IN","type":"TXT","value":"\"verification=abc123\""},{"name":"blog.example.net.","ttl":"300","class":"IN","type":"A","value":"198.51.100.5"},{"name":"blog.example.net.","ttl":"300","class":"IN","type":"A","value":"198.51.100.5"}],"typeCounts":[{"type":"A","count":"2"},{"type":"CNAME","count":"1"},{"type":"NS","count":"1"},{"type":"SOA","count":"1"},{"type":"TXT","count":"1"}],"issues":[{"severity":"Error","line":"6","detail":"shop.example.net. has a CNAME alongside TXT — a CNAME must be the only record at its name."},{"severity":"Warning","line":"9","detail":"Duplicate A for blog.example.net. (already on line 8)."}],"normalized":"$ORIGIN example.net.\nexample.net.\t300\tIN\tSOA\tns1.example.net. admin.example.net. 1 7200 900 1209600 3600\nexample.net.\t300\tIN\tNS\tns1.example.net.\nshop.example.net.\t300\tIN\tCNAME\tstorefront.example.net.\nshop.example.net.\t300\tIN\tTXT\t\"verification=abc123\"\nblog.example.net.\t300\tIN\tA\t198.51.100.5\nblog.example.net.\t300\tIN\tA\t198.51.100.5\n","json":"{\n  \"origin\": \"example.net.\",\n  \"directives\": [\n    {\n      \"name\": \"$ORIGIN\",\n      \"value\": \"example.net.\"\n    },\n    {\n      \"name\": \"$TTL\",\n      \"value\": \"300\"\n    }\n  ],\n  \"records\": [\n    {\n      \"name\": \"example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"SOA\",\n      \"rdata\": \"ns1.example.net. admin.example.net. 1 7200 900 1209600 3600\",\n      \"target\": null,\n      \"line\": 4\n    },\n    {\n      \"name\": \"example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"NS\",\n      \"rdata\": \"ns1.example.net.\",\n      \"target\": \"ns1.example.net.\",\n      \"line\": 5\n    },\n    {\n      \"name\": \"shop.example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"CNAME\",\n      \"rdata\": \"storefront.example.net.\",\n      \"target\": \"storefront.example.net.\",\n      \"line\": 6\n    },\n    {\n      \"name\": \"shop.example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"TXT\",\n      \"rdata\": \"\\\"verification=abc123\\\"\",\n      \"target\": null,\n      \"line\": 7\n    },\n    {\n      \"name\": \"blog.example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"A\",\n      \"rdata\": \"198.51.100.5\",\n      \"target\": null,\n      \"line\": 8\n    },\n    {\n      \"name\": \"blog.example.net.\",\n      \"ttl\": 300,\n      \"ttlSource\": \"directive\",\n      \"class\": \"IN\",\n      \"type\": \"A\",\n      \"rdata\": \"198.51.100.5\",\n      \"target\": null,\n      \"line\": 9\n    }\n  ],\n  \"issues\": [\n    {\n      \"severity\": \"Error\",\n      \"line\": \"6\",\n      \"message\": \"shop.example.net. has a CNAME alongside TXT — a CNAME must be the only record at its name.\"\n    },\n    {\n      \"severity\": \"Warning\",\n      \"line\": \"9\",\n      \"message\": \"Duplicate A for blog.example.net. (already on line 8).\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}},"no_origin_or_ttl_filled_in_from_the_options":{"summary":"No $ORIGIN or $TTL — filled in from the options","value":{"tool":"dns-zone-file-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Origin","value":"example.org."},{"field":"Records","value":"3"},{"field":"Distinct names","value":"2"},{"field":"Record types","value":"3"},{"field":"Shortest TTL","value":"1h"},{"field":"Longest TTL","value":"1h 30m"},{"field":"Unparsed lines","value":"0"},{"field":"Issues","value":"0 errors, 1 warning"}],"records":[{"name":"example.org.","ttl":"1h","class":"IN","type":"SOA","value":"ns1.example.org. admin.example.org. 1 7200 900 1209600 3600"},{"name":"example.org.","ttl":"1h 30m","class":"IN","type":"NS","value":"ns1.example.org."},{"name":"www.example.org.","ttl":"1h 30m","class":"IN","type":"A","value":"203.0.113.7"}],"typeCounts":[{"type":"A","count":"1"},{"type":"NS","count":"1"},{"type":"SOA","count":"1"}],"issues":[{"severity":"Warning","line":"—","detail":"Records without a TTL and no $TTL directive — the Default TTL option was used instead."}],"normalized":"$ORIGIN example.org.\nexample.org.\t3600\tIN\tSOA\tns1.example.org. admin.example.org. 1 7200 900 1209600 3600\nexample.org.\t5400\tIN\tNS\tns1.example.org.\nwww.example.org.\t5400\tIN\tA\t203.0.113.7\n","json":"{\n  \"origin\": \"example.org.\",\n  \"directives\": [],\n  \"records\": [\n    {\n      \"name\": \"example.org.\",\n      \"ttl\": 3600,\n      \"ttlSource\": \"record\",\n      \"class\": \"IN\",\n      \"type\": \"SOA\",\n      \"rdata\": \"ns1.example.org. admin.example.org. 1 7200 900 1209600 3600\",\n      \"target\": null,\n      \"line\": 1\n    },\n    {\n      \"name\": \"example.org.\",\n      \"ttl\": 5400,\n      \"ttlSource\": \"fallback\",\n      \"class\": \"IN\",\n      \"type\": \"NS\",\n      \"rdata\": \"ns1.example.org.\",\n      \"target\": \"ns1.example.org.\",\n      \"line\": 2\n    },\n    {\n      \"name\": \"www.example.org.\",\n      \"ttl\": 5400,\n      \"ttlSource\": \"fallback\",\n      \"class\": \"IN\",\n      \"type\": \"A\",\n      \"rdata\": \"203.0.113.7\",\n      \"target\": null,\n      \"line\": 3\n    }\n  ],\n  \"issues\": [\n    {\n      \"severity\": \"Warning\",\n      \"line\": \"—\",\n      \"message\": \"Records without a TTL and no $TTL directive — the Default TTL option was used instead.\"\n    }\n  ]\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Zone","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"records":{"type":"array","description":"Records","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"ttl":{"type":"string","description":"TTL"},"class":{"type":"string","description":"Class"},"type":{"type":"string","description":"Type"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["name","ttl","class","type","value"]},"typeCounts":{"type":"array","description":"Record types","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"count":{"type":"string","description":"Count"}}},"x-iotools-columns":["type","count"]},"issues":{"type":"array","description":"Issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"line":{"type":"string","description":"Line"},"detail":{"type":"string","description":"Detail"}}},"x-iotools-columns":["severity","line","detail"]},"normalized":{"type":"string","description":"Normalised zone"},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/raw-http-response-parser":{"post":{"operationId":"run_raw_http_response_parser","summary":"HTTP Response Parser","tags":["Utilities"],"description":"Paste a raw HTTP response and get the status line, headers and body split out — with the status code explained, every Set-Cookie broken into its name, value and attributes, and the body pretty-printed by Content-Type. Exports to CSV or JSON and runs entirely in your browser.\n\n[Try HTTP Response Parser in your browser →](https://iotools.cloud/tool/raw-http-response-parser/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"rawResponse":{"type":"string","description":"Raw HTTP response"},"bodyHandling":{"enum":["decode","raw"],"description":"Body"}},"required":[]},"examples":{"json_api_response_with_two_cookies":{"summary":"JSON API response with two cookies","value":{"rawResponse":"HTTP/1.1 200 OK\nDate: Sat, 26 Jul 2026 09:14:02 GMT\nContent-Type: application/json; charset=utf-8\nContent-Length: 70\nCache-Control: private, max-age=0, no-store\nETag: \"a1b2c3d4\"\nSet-Cookie: session=8f3c2a; Path=/; HttpOnly; Secure; SameSite=Lax\nSet-Cookie: theme=dark; Path=/; Max-Age=31536000\nVary: Accept-Encoding\n\n{\"id\":42,\"name\":\"Ada Lovelace\",\"email\":\"ada@example.com\",\"admin\":true}"}},"301_redirect_http_2_no_reason_phrase":{"summary":"301 redirect (HTTP/2, no reason phrase)","value":{"rawResponse":"HTTP/2 301\ndate: Sat, 26 Jul 2026 09:20:11 GMT\nlocation: https://www.example.com/new-home\ncache-control: max-age=3600\ncontent-type: text/html; charset=iso-8859-1\ncontent-length: 132\n\n<html><head><title>301 Moved Permanently</title></head>\n<body><h1>Moved Permanently</h1><p>The document has moved.</p></body></html>"}},"429_rate_limit_folded_header_body_left_raw":{"summary":"429 rate limit (folded header, body left raw)","value":{"rawResponse":"HTTP/1.1 429 Too Many Requests\nContent-Type: text/plain\nRetry-After: 60\nX-RateLimit-Limit: 100\nX-RateLimit-Remaining: 0\nX-Long-Header: this value continues\n  onto a folded second line\n\nRate limit exceeded. Try again in 60 seconds.","bodyHandling":"raw"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"json_api_response_with_two_cookies":{"summary":"JSON API response with two cookies","value":{"tool":"raw-http-response-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Status","value":"200 OK"},{"field":"Class","value":"Success"},{"field":"HTTP version","value":"HTTP/1.1"},{"field":"Content-Type","value":"application/json; charset=utf-8"},{"field":"Headers","value":"7"},{"field":"Cookies set","value":"2"},{"field":"Body size","value":"70 bytes"}],"headers":[{"header":"Date","value":"Sat, 26 Jul 2026 09:14:02 GMT"},{"header":"Content-Type","value":"application/json; charset=utf-8"},{"header":"Content-Length","value":"70"},{"header":"Cache-Control","value":"private, max-age=0, no-store"},{"header":"ETag","value":"\"a1b2c3d4\""},{"header":"Set-Cookie","value":"session=8f3c2a; Path=/; HttpOnly; Secure; SameSite=Lax"},{"header":"Set-Cookie","value":"theme=dark; Path=/; Max-Age=31536000"},{"header":"Vary","value":"Accept-Encoding"}],"cookies":[{"name":"session","value":"8f3c2a","attributes":"Path=/; HttpOnly; Secure; SameSite=Lax"},{"name":"theme","value":"dark","attributes":"Path=/; Max-Age=31536000"}],"body":"{\n  \"id\": 42,\n  \"name\": \"Ada Lovelace\",\n  \"email\": \"ada@example.com\",\n  \"admin\": true\n}","json":"{\n  \"httpVersion\": \"HTTP/1.1\",\n  \"status\": {\n    \"code\": 200,\n    \"reasonPhrase\": \"OK\",\n    \"class\": \"Success\"\n  },\n  \"headers\": [\n    {\n      \"name\": \"Date\",\n      \"values\": [\n        \"Sat, 26 Jul 2026 09:14:02 GMT\"\n      ]\n    },\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"application/json; charset=utf-8\"\n      ]\n    },\n    {\n      \"name\": \"Content-Length\",\n      \"values\": [\n        \"70\"\n      ]\n    },\n    {\n      \"name\": \"Cache-Control\",\n      \"values\": [\n        \"private, max-age=0, no-store\"\n      ]\n    },\n    {\n      \"name\": \"ETag\",\n      \"values\": [\n        \"\\\"a1b2c3d4\\\"\"\n      ]\n    },\n    {\n      \"name\": \"Set-Cookie\",\n      \"values\": [\n        \"session=8f3c2a; Path=/; HttpOnly; Secure; SameSite=Lax\",\n        \"theme=dark; Path=/; Max-Age=31536000\"\n      ]\n    },\n    {\n      \"name\": \"Vary\",\n      \"values\": [\n        \"Accept-Encoding\"\n      ]\n    }\n  ],\n  \"cookies\": [\n    {\n      \"name\": \"session\",\n      \"value\": \"8f3c2a\",\n      \"attributes\": [\n        {\n          \"name\": \"Path\",\n          \"value\": \"/\"\n        },\n        {\n          \"name\": \"HttpOnly\",\n          \"value\": \"\"\n        },\n        {\n          \"name\": \"Secure\",\n          \"value\": \"\"\n        },\n        {\n          \"name\": \"SameSite\",\n          \"value\": \"Lax\"\n        }\n      ]\n    },\n    {\n      \"name\": \"theme\",\n      \"value\": \"dark\",\n      \"attributes\": [\n        {\n          \"name\": \"Path\",\n          \"value\": \"/\"\n        },\n        {\n          \"name\": \"Max-Age\",\n          \"value\": \"31536000\"\n        }\n      ]\n    }\n  ],\n  \"body\": {\n    \"raw\": \"{\\\"id\\\":42,\\\"name\\\":\\\"Ada Lovelace\\\",\\\"email\\\":\\\"ada@example.com\\\",\\\"admin\\\":true}\",\n    \"bytes\": 70,\n    \"contentType\": \"application/json; charset=utf-8\",\n    \"parsed\": {\n      \"id\": 42,\n      \"name\": \"Ada Lovelace\",\n      \"email\": \"ada@example.com\",\n      \"admin\": true\n    }\n  }\n}"},"credits_used":5,"credits_remaining":null}},"301_redirect_http_2_no_reason_phrase":{"summary":"301 redirect (HTTP/2, no reason phrase)","value":{"tool":"raw-http-response-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Status","value":"301 Moved Permanently"},{"field":"Class","value":"Redirection"},{"field":"Location","value":"https://www.example.com/new-home"},{"field":"HTTP version","value":"HTTP/2"},{"field":"Content-Type","value":"text/html; charset=iso-8859-1"},{"field":"Headers","value":"5"},{"field":"Cookies set","value":"0"},{"field":"Body size","value":"132 bytes"}],"headers":[{"header":"date","value":"Sat, 26 Jul 2026 09:20:11 GMT"},{"header":"location","value":"https://www.example.com/new-home"},{"header":"cache-control","value":"max-age=3600"},{"header":"content-type","value":"text/html; charset=iso-8859-1"},{"header":"content-length","value":"132"}],"cookies":[],"body":"<html><head><title>301 Moved Permanently</title></head>\n<body><h1>Moved Permanently</h1><p>The document has moved.</p></body></html>","json":"{\n  \"httpVersion\": \"HTTP/2\",\n  \"status\": {\n    \"code\": 301,\n    \"reasonPhrase\": \"Moved Permanently\",\n    \"class\": \"Redirection\"\n  },\n  \"headers\": [\n    {\n      \"name\": \"date\",\n      \"values\": [\n        \"Sat, 26 Jul 2026 09:20:11 GMT\"\n      ]\n    },\n    {\n      \"name\": \"location\",\n      \"values\": [\n        \"https://www.example.com/new-home\"\n      ]\n    },\n    {\n      \"name\": \"cache-control\",\n      \"values\": [\n        \"max-age=3600\"\n      ]\n    },\n    {\n      \"name\": \"content-type\",\n      \"values\": [\n        \"text/html; charset=iso-8859-1\"\n      ]\n    },\n    {\n      \"name\": \"content-length\",\n      \"values\": [\n        \"132\"\n      ]\n    }\n  ],\n  \"cookies\": [],\n  \"body\": {\n    \"raw\": \"<html><head><title>301 Moved Permanently</title></head>\\n<body><h1>Moved Permanently</h1><p>The document has moved.</p></body></html>\",\n    \"bytes\": 132,\n    \"contentType\": \"text/html; charset=iso-8859-1\",\n    \"parsed\": null\n  }\n}"},"credits_used":5,"credits_remaining":null}},"429_rate_limit_folded_header_body_left_raw":{"summary":"429 rate limit (folded header, body left raw)","value":{"tool":"raw-http-response-parser","tool_version":"1.0.2","outputs":{"summary":[{"field":"Status","value":"429 Too Many Requests"},{"field":"Class","value":"Client error"},{"field":"HTTP version","value":"HTTP/1.1"},{"field":"Content-Type","value":"text/plain"},{"field":"Headers","value":"5"},{"field":"Cookies set","value":"0"},{"field":"Body size","value":"45 bytes"}],"headers":[{"header":"Content-Type","value":"text/plain"},{"header":"Retry-After","value":"60"},{"header":"X-RateLimit-Limit","value":"100"},{"header":"X-RateLimit-Remaining","value":"0"},{"header":"X-Long-Header","value":"this value continues onto a folded second line"}],"cookies":[],"body":"Rate limit exceeded. Try again in 60 seconds.","json":"{\n  \"httpVersion\": \"HTTP/1.1\",\n  \"status\": {\n    \"code\": 429,\n    \"reasonPhrase\": \"Too Many Requests\",\n    \"class\": \"Client error\"\n  },\n  \"headers\": [\n    {\n      \"name\": \"Content-Type\",\n      \"values\": [\n        \"text/plain\"\n      ]\n    },\n    {\n      \"name\": \"Retry-After\",\n      \"values\": [\n        \"60\"\n      ]\n    },\n    {\n      \"name\": \"X-RateLimit-Limit\",\n      \"values\": [\n        \"100\"\n      ]\n    },\n    {\n      \"name\": \"X-RateLimit-Remaining\",\n      \"values\": [\n        \"0\"\n      ]\n    },\n    {\n      \"name\": \"X-Long-Header\",\n      \"values\": [\n        \"this value continues onto a folded second line\"\n      ]\n    }\n  ],\n  \"cookies\": [],\n  \"body\": {\n    \"raw\": \"Rate limit exceeded. Try again in 60 seconds.\",\n    \"bytes\": 45,\n    \"contentType\": \"text/plain\",\n    \"parsed\": null\n  }\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Response","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"headers":{"type":"array","description":"Headers","items":{"type":"object","properties":{"header":{"type":"string","description":"Header"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["header","value"]},"cookies":{"type":"array","description":"Cookies","items":{"type":"object","properties":{"name":{"type":"string","description":"Name"},"value":{"type":"string","description":"Value"},"attributes":{"type":"string","description":"Attributes"}}},"x-iotools-columns":["name","value","attributes"]},"body":{"type":"string","description":"Body"},"json":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/tls-ssl-certificate-checker":{"post":{"operationId":"run_tls_ssl_certificate_checker","summary":"TLS/SSL Certificate Checker","tags":["Utilities"],"description":"Connect to a live host and inspect the TLS/SSL certificate it presents right now — subject, issuer, validity window, full chain, and whether the handshake is trusted — without needing to paste a PEM yourself.\n\n[Try TLS/SSL Certificate Checker in your browser →](https://iotools.cloud/tool/tls-ssl-certificate-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","description":"Host"},"port":{"type":"number","description":"Port","minimum":1,"maximum":65535}},"required":["host"]},"examples":{"google":{"summary":"Google","value":{"host":"www.google.com","port":"443"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"Summary","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"warnings":{"type":"array","description":"Warnings","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"message":{"type":"string","description":"Message"}}},"x-iotools-columns":["severity","message"]},"subject":{"type":"array","description":"Subject","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"issuer":{"type":"array","description":"Issuer","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"validity":{"type":"array","description":"Validity","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"details":{"type":"array","description":"Certificate details","items":{"type":"object","properties":{"property":{"type":"string","description":"Property"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["property","value"]},"subjectAltNames":{"type":"array","description":"Subject alternative names","items":{"type":"object","properties":{"type":{"type":"string","description":"Type"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["type","value"]},"chain":{"type":"array","description":"Certificate chain","items":{"type":"object","properties":{"depth":{"type":"string","description":"#"},"subject-cn":{"type":"string","description":"Subject CN"},"issuer-cn":{"type":"string","description":"Issuer CN"},"valid-to":{"type":"string","description":"Valid to"}}},"x-iotools-columns":["depth","subject-cn","issuer-cn","valid-to"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/json-patch-generator":{"post":{"operationId":"run_json_patch_generator","summary":"JSON Patch Generator","tags":["Utilities"],"description":"Generate the minimal RFC 6902 JSON Patch operations that turn one JSON document into another — add, remove, replace and move, computed automatically by diffing the two documents — or paste an existing JSON Patch and apply it to see the result. Both directions run entirely in your browser.\n\n[Try JSON Patch Generator in your browser →](https://iotools.cloud/tool/json-patch-generator/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["generate","apply"],"description":"Mode"},"baseJson":{"type":"string","description":"Original JSON document"},"modifiedJson":{"type":"string","description":"Modified JSON document"},"patchJson":{"type":"string","description":"JSON Patch (RFC 6902 array)"},"detectMoves":{"type":"boolean","description":"Detect moved values (emit move instead of remove+add)"},"indent":{"enum":["2","4","tab","minified"],"description":"Output indentation"}},"required":[]},"examples":{"generate_replace_add_and_a_reordered_array":{"summary":"Generate: replace, add and a reordered array","value":{"mode":"generate","baseJson":"{\n  \"id\": 1,\n  \"name\": \"Widget\",\n  \"price\": 9.99,\n  \"tags\": [\"sale\", \"featured\", \"new\"]\n}","modifiedJson":"{\n  \"id\": 1,\n  \"name\": \"Widget Pro\",\n  \"price\": 12.99,\n  \"inStock\": true,\n  \"tags\": [\"featured\", \"new\", \"sale\"]\n}","detectMoves":"true","indent":"2"}},"apply_run_a_patch_against_a_document":{"summary":"Apply: run a patch against a document","value":{"mode":"apply","baseJson":"{\n  \"id\": 1,\n  \"name\": \"Widget\",\n  \"price\": 9.99,\n  \"tags\": [\"sale\", \"featured\", \"new\"]\n}","patchJson":"[\n  { \"op\": \"replace\", \"path\": \"/name\", \"value\": \"Widget Pro\" },\n  { \"op\": \"replace\", \"path\": \"/price\", \"value\": 12.99 },\n  { \"op\": \"add\", \"path\": \"/inStock\", \"value\": true }\n]","indent":"2"}},"non_object_replaces_the_whole_document":{"summary":"Non-object replaces the whole document","value":{"mode":"apply","baseJson":"{\"a\":{\"b\":1}}","patchJson":"[{\"op\":\"replace\",\"path\":\"\",\"value\":[\"replaced\"]}]","indent":"minified"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"generate_replace_add_and_a_reordered_array":{"summary":"Generate: replace, add and a reordered array","value":{"tool":"json-patch-generator","tool_version":"1.0.2","outputs":{"output":"[\n  {\n    \"op\": \"replace\",\n    \"path\": \"/name\",\n    \"value\": \"Widget Pro\"\n  },\n  {\n    \"op\": \"replace\",\n    \"path\": \"/price\",\n    \"value\": 12.99\n  },\n  {\n    \"op\": \"move\",\n    \"from\": \"/tags/0\",\n    \"path\": \"/tags/2\"\n  },\n  {\n    \"op\": \"add\",\n    \"path\": \"/inStock\",\n    \"value\": true\n  }\n]","operations":[{"op":"replace","path":"/name","from":"","value":"\"Widget Pro\""},{"op":"replace","path":"/price","from":"","value":"12.99"},{"op":"move","path":"/tags/2","from":"/tags/0","value":""},{"op":"add","path":"/inStock","from":"","value":"true"}]},"credits_used":5,"credits_remaining":null}},"apply_run_a_patch_against_a_document":{"summary":"Apply: run a patch against a document","value":{"tool":"json-patch-generator","tool_version":"1.0.2","outputs":{"output":"{\n  \"id\": 1,\n  \"name\": \"Widget Pro\",\n  \"price\": 12.99,\n  \"tags\": [\n    \"sale\",\n    \"featured\",\n    \"new\"\n  ],\n  \"inStock\": true\n}","operations":[{"op":"replace","path":"/name","from":"","value":"\"Widget Pro\""},{"op":"replace","path":"/price","from":"","value":"12.99"},{"op":"add","path":"/inStock","from":"","value":"true"}]},"credits_used":5,"credits_remaining":null}},"non_object_replaces_the_whole_document":{"summary":"Non-object replaces the whole document","value":{"tool":"json-patch-generator","tool_version":"1.0.2","outputs":{"output":"[\"replaced\"]","operations":[{"op":"replace","path":"","from":"","value":"[\"replaced\"]"}]},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"output":{"type":"string","description":"Result"},"operations":{"type":"array","description":"Operations","items":{"type":"object","properties":{"op":{"type":"string","description":"Op"},"path":{"type":"string","description":"Path"},"from":{"type":"string","description":"From"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["op","path","from","value"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/locale-cloaking-checker":{"post":{"operationId":"run_locale_cloaking_checker","summary":"Locale Cloaking Checker","tags":["Utilities"],"description":"Fetch a live URL as Googlebot and as a browser sending a different Accept-Language and diff what each gets back — title, h1, canonical, &lt;html lang>, word count — to catch locale-adaptive serving Google never crawls, which can read as unintentional cloaking.\n\n[Try Locale Cloaking Checker in your browser →](https://iotools.cloud/tool/locale-cloaking-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"locale":{"enum":["fr-FR,fr;q=0.9","de-DE,de;q=0.9","es-ES,es;q=0.9","pt-BR,pt;q=0.9","ja-JP,ja;q=0.9","zh-CN,zh;q=0.9","ar,ar-SA;q=0.9","hi-IN,hi;q=0.9"],"description":"Locale to simulate"}},"required":["url"]},"examples":{"a_public_homepage_checked_against_french":{"summary":"A public homepage, checked against French","value":{"url":"https://example.com/","locale":"fr-FR,fr;q=0.9"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"issues":{"type":"array","description":"Cloaking risk issues","items":{"type":"object","properties":{"severity":{"type":"string","description":"Severity"},"field":{"type":"string","description":"Field"},"issue":{"type":"string","description":"Issue"}}},"x-iotools-columns":["severity","field","issue"]},"comparison":{"type":"array","description":"Googlebot vs. locale request","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"googlebot-default":{"type":"string","description":"Googlebot (default)"},"locale-request":{"type":"string","description":"Locale request"},"match":{"type":"string","description":"Match"}}},"x-iotools-columns":["field","googlebot-default","locale-request","match"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/page-source-viewer":{"post":{"operationId":"run_page_source_viewer","summary":"Page Source Viewer","tags":["Utilities"],"description":"Fetch any URL server-side and view its raw HTML source, syntax-highlighted — no browser CORS restrictions, and an optional Googlebot user agent to spot content that's cloaked from search crawlers.\n\n[Try Page Source Viewer in your browser →](https://iotools.cloud/tool/page-source-viewer/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"userAgent":{"enum":["browser","googlebot","bingbot"],"description":"Fetch as"}},"required":["url"]},"examples":{"example_page":{"summary":"Example page","value":{"url":"https://example.com","userAgent":"browser"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"meta":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"html":{"type":"string","description":"Raw HTML"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/check-server-status":{"post":{"operationId":"run_check_server_status","summary":"Check Server Status","tags":["Utilities"],"description":"Check a batch of URLs for reachability — see each site's HTTP status, whether it's online or offline, and its response time, all in one pass.\n\n[Try Check Server Status in your browser →](https://iotools.cloud/tool/check-server-status/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urls":{"type":"string","description":"URLs (one per line)"}},"required":["urls"]},"examples":{"a_couple_of_sites":{"summary":"A couple of sites","value":{"urls":"https://example.com\nhttps://github.com"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"results":{"type":"array","description":"Per-URL results","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"state":{"type":"string","description":"State"},"http-status":{"type":"string","description":"HTTP status"},"response-time":{"type":"string","description":"Response time"},"final-url-after-redirects":{"type":"string","description":"Final URL (after redirects)"}}},"x-iotools-columns":["url","state","http-status","response-time","final-url-after-redirects"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/page-comparison":{"post":{"operationId":"run_page_comparison","summary":"Page Comparison","tags":["Utilities"],"description":"Fetch two live web pages and compare them side by side — title, meta description, canonical, robots, word count, headings and internal/external links — with every metric flagged as matching or different.\n\n[Try Page Comparison in your browser →](https://iotools.cloud/tool/page-comparison/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"urlA":{"type":"string","description":"Page A"},"urlB":{"type":"string","description":"Page B"}},"required":["urlA","urlB"]},"examples":{"two_example_domains":{"summary":"Two example domains","value":{"urlA":"https://example.com/","urlB":"https://www.iana.org/help/example-domains"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"comparison":{"type":"array","description":"Side-by-side comparison","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"page-a":{"type":"string","description":"Page A"},"page-b":{"type":"string","description":"Page B"},"match":{"type":"string","description":"Match"}}},"x-iotools-columns":["field","page-a","page-b","match"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/website-seo-score-checker":{"post":{"operationId":"run_website_seo_score_checker","summary":"Website SEO Score Checker","tags":["Utilities"],"description":"Fetch a live URL and score its on-page SEO — title/description length, heading structure, canonical & indexability, HTTPS, Open Graph, viewport, structured data, image alt coverage, robots.txt/sitemap and more — as a 0-100 score with a pass/warning/fail checklist.\n\n[Try Website SEO Score Checker in your browser →](https://iotools.cloud/tool/website-seo-score-checker/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Website URL"},"keyword":{"type":"string","description":"Target keyword (optional)"}},"required":["url"]},"examples":{"example_domain":{"summary":"Example domain","value":{"url":"https://example.com/","keyword":""}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"array","description":"SEO score","items":{"type":"object","properties":{"metric":{"type":"string","description":"Metric"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["metric","value"]},"checks":{"type":"array","description":"Checklist","items":{"type":"object","properties":{"category":{"type":"string","description":"Category"},"check":{"type":"string","description":"Check"},"status":{"type":"string","description":"Status"},"details":{"type":"string","description":"Details"}}},"x-iotools-columns":["category","check","status","details"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/website-ping-tool":{"post":{"operationId":"run_website_ping_tool","summary":"Website Ping Tool","tags":["Utilities"],"description":"Notify search engines that a URL is new or updated so they re-crawl it sooner — submits via IndexNow (Bing, Yandex, Naver, Seznam.cz, Yep), the working protocol that replaced Google/Bing's now-dead sitemap ping endpoints.\n\n[Try Website Ping Tool in your browser →](https://iotools.cloud/tool/website-ping-tool/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"IndexNow key"},"keyLocation":{"type":"string","description":"Key file location (optional)"},"urls":{"type":"string","description":"URLs to ping (one per line)"}},"required":["key","urls"]},"examples":{"ping_a_page":{"summary":"Ping a page","value":{"key":"a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4","keyLocation":"","urls":"https://example.com/"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"summary":{"type":"string","description":"Summary"},"results":{"type":"array","description":"Per-URL results","items":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"result":{"type":"string","description":"Result"},"detail":{"type":"string","description":"Detail"}}},"x-iotools-columns":["url","result","detail"]}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}},"/v1/tool/websocket-frame-decoder":{"post":{"operationId":"run_websocket_frame_decoder","summary":"WebSocket Frame Decoder (RFC 6455)","tags":["Utilities"],"description":"Paste raw WebSocket frame bytes (hex or binary) and decode the RFC 6455 header field by field — FIN, RSV, opcode, MASK, the 7/16/64-bit payload-length forms, the masking key, and the XOR-unmasked payload — with a byte-offset breakdown.\n\n[Try WebSocket Frame Decoder (RFC 6455) in your browser →](https://iotools.cloud/tool/websocket-frame-decoder/)","security":[{"bearerAuth":[]}],"x-iotools-credit-cost":5,"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"frameInput":{"type":"string","description":"WebSocket Frame Bytes"}},"required":[]},"examples":{"unmasked_text_frame_hello_server_client":{"summary":"Unmasked text frame \"Hello\" (server → client)","value":{"frameInput":"81 05 48 65 6c 6c 6f"}},"masked_text_frame_hello_client_server":{"summary":"Masked text frame \"Hello\" (client → server)","value":{"frameInput":"81 85 37 fa 21 3d 7f 9f 4d 51 58"}},"close_frame_with_status_code_1000_normal_closure":{"summary":"Close frame with status code 1000 (normal closure)","value":{"frameInput":"88 02 03 e8"}}}}}},"responses":{"200":{"description":"Tool output","content":{"application/json":{"examples":{"unmasked_text_frame_hello_server_client":{"summary":"Unmasked text frame \"Hello\" (server → client)","value":{"tool":"websocket-frame-decoder","tool_version":"1.0.2","outputs":{"fields":[{"field":"FIN","value":"1 (final frame)"},{"field":"RSV1 / RSV2 / RSV3","value":"0 / 0 / 0"},{"field":"Opcode","value":"0x1 — Text"},{"field":"MASK","value":"0 (unmasked)"},{"field":"Payload Length field","value":"5 (7-bit form)"},{"field":"Actual Payload Length","value":"5 bytes"},{"field":"Masking Key","value":"— (not masked)"},{"field":"Total Frame Length (received)","value":"7 bytes"},{"field":"Warnings","value":"None"}],"structure":[{"offset":"0","bytes-hex":"81","part":"FIN/RSV1-3/Opcode","decoded":"10000001 → FIN=1 RSV=000 opcode=0x1 — Text"},{"offset":"1","bytes-hex":"05","part":"MASK/Payload len","decoded":"00000101 → MASK=0 len=5"},{"offset":"2-6","bytes-hex":"48 65 6c 6c 6f","part":"Payload data (5 bytes)","decoded":"48 65 6c 6c 6f"}],"payload":[{"field":"Payload (hex)","value":"48 65 6c 6c 6f"},{"field":"Decoded Text","value":"Hello"}],"jsonOutput":"{\n  \"fin\": true,\n  \"rsv1\": false,\n  \"rsv2\": false,\n  \"rsv3\": false,\n  \"opcode\": 1,\n  \"opcodeName\": \"Text\",\n  \"masked\": false,\n  \"payloadLengthForm\": \"7-bit\",\n  \"payloadLength\": 5,\n  \"maskingKeyHex\": null,\n  \"totalFrameLength\": 7,\n  \"payloadHexUnmasked\": \"48 65 6c 6c 6f\",\n  \"decodedText\": \"Hello\",\n  \"close\": null,\n  \"warnings\": []\n}"},"credits_used":5,"credits_remaining":null}},"masked_text_frame_hello_client_server":{"summary":"Masked text frame \"Hello\" (client → server)","value":{"tool":"websocket-frame-decoder","tool_version":"1.0.2","outputs":{"fields":[{"field":"FIN","value":"1 (final frame)"},{"field":"RSV1 / RSV2 / RSV3","value":"0 / 0 / 0"},{"field":"Opcode","value":"0x1 — Text"},{"field":"MASK","value":"1 (masked)"},{"field":"Payload Length field","value":"5 (7-bit form)"},{"field":"Actual Payload Length","value":"5 bytes"},{"field":"Masking Key","value":"0x37fa213d"},{"field":"Total Frame Length (received)","value":"11 bytes"},{"field":"Warnings","value":"None"}],"structure":[{"offset":"0","bytes-hex":"81","part":"FIN/RSV1-3/Opcode","decoded":"10000001 → FIN=1 RSV=000 opcode=0x1 — Text"},{"offset":"1","bytes-hex":"85","part":"MASK/Payload len","decoded":"10000101 → MASK=1 len=5"},{"offset":"2-5","bytes-hex":"37 fa 21 3d","part":"Masking key","decoded":"0x37fa213d"},{"offset":"6-10","bytes-hex":"7f 9f 4d 51 58","part":"Payload data (5 bytes)","decoded":"unmasked: 48 65 6c 6c 6f"}],"payload":[{"field":"Masked Payload (hex, as received)","value":"7f 9f 4d 51 58"},{"field":"Unmasked Payload (hex)","value":"48 65 6c 6c 6f"},{"field":"Decoded Text","value":"Hello"}],"jsonOutput":"{\n  \"fin\": true,\n  \"rsv1\": false,\n  \"rsv2\": false,\n  \"rsv3\": false,\n  \"opcode\": 1,\n  \"opcodeName\": \"Text\",\n  \"masked\": true,\n  \"payloadLengthForm\": \"7-bit\",\n  \"payloadLength\": 5,\n  \"maskingKeyHex\": \"37fa213d\",\n  \"totalFrameLength\": 11,\n  \"payloadHexUnmasked\": \"48 65 6c 6c 6f\",\n  \"decodedText\": \"Hello\",\n  \"close\": null,\n  \"warnings\": []\n}"},"credits_used":5,"credits_remaining":null}},"close_frame_with_status_code_1000_normal_closure":{"summary":"Close frame with status code 1000 (normal closure)","value":{"tool":"websocket-frame-decoder","tool_version":"1.0.2","outputs":{"fields":[{"field":"FIN","value":"1 (final frame)"},{"field":"RSV1 / RSV2 / RSV3","value":"0 / 0 / 0"},{"field":"Opcode","value":"0x8 — Connection Close"},{"field":"MASK","value":"0 (unmasked)"},{"field":"Payload Length field","value":"2 (7-bit form)"},{"field":"Actual Payload Length","value":"2 bytes"},{"field":"Masking Key","value":"— (not masked)"},{"field":"Total Frame Length (received)","value":"4 bytes"},{"field":"Warnings","value":"None"}],"structure":[{"offset":"0","bytes-hex":"88","part":"FIN/RSV1-3/Opcode","decoded":"10001000 → FIN=1 RSV=000 opcode=0x8 — Connection Close"},{"offset":"1","bytes-hex":"02","part":"MASK/Payload len","decoded":"00000010 → MASK=0 len=2"},{"offset":"2-3","bytes-hex":"03 e8","part":"Payload data (2 bytes)","decoded":"03 e8"}],"payload":[{"field":"Payload (hex)","value":"03 e8"},{"field":"Close Status Code","value":"1000"},{"field":"Close Reason","value":"(none)"}],"jsonOutput":"{\n  \"fin\": true,\n  \"rsv1\": false,\n  \"rsv2\": false,\n  \"rsv3\": false,\n  \"opcode\": 8,\n  \"opcodeName\": \"Connection Close\",\n  \"masked\": false,\n  \"payloadLengthForm\": \"7-bit\",\n  \"payloadLength\": 2,\n  \"maskingKeyHex\": null,\n  \"totalFrameLength\": 4,\n  \"payloadHexUnmasked\": \"03 e8\",\n  \"decodedText\": null,\n  \"close\": {\n    \"code\": 1000,\n    \"reason\": null\n  },\n  \"warnings\": []\n}"},"credits_used":5,"credits_remaining":null}}},"schema":{"type":"object","required":["tool","tool_version","outputs","credits_used","credits_remaining"],"properties":{"outputs":{"type":"object","properties":{"fields":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"structure":{"type":"array","items":{"type":"object","properties":{"offset":{"type":"string","description":"Offset"},"bytes-hex":{"type":"string","description":"Bytes (hex)"},"part":{"type":"string","description":"Part"},"decoded":{"type":"string","description":"Decoded"}}},"x-iotools-columns":["offset","bytes-hex","part","decoded"]},"payload":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Field"},"value":{"type":"string","description":"Value"}}},"x-iotools-columns":["field","value"]},"jsonOutput":{"type":"string","description":"JSON"}}},"tool":{"type":"string","description":"The tool's slug, echoing the {slug} in the request path."},"tool_version":{"type":"string","description":"Output-contract version for this tool."},"credits_used":{"type":"integer","description":"Credits this call consumed, after any settlement refund. 0 when metering is disabled."},"credits_remaining":{"type":["integer","null"],"description":"Credits left in the current monthly allowance, or null when metering is disabled."},"request_id":{"type":"string","description":"Correlation id, also sent as x-request-id."}}}}}},"400":{"$ref":"#/components/responses/ValidationError"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"403":{"$ref":"#/components/responses/ToolNotAllowed"},"404":{"$ref":"#/components/responses/ToolNotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"422":{"$ref":"#/components/responses/UnprocessableInput"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/ToolFailed"},"503":{"$ref":"#/components/responses/ToolDisabled"}}}}}}