> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iotools.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# LaTeX Equation Renderer

> 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.

[Try LaTeX Equation Renderer in your browser →](https://iotools.cloud/tool/latex-equation-renderer/)



## OpenAPI

````yaml https://api.iotools.cloud/v1/openapi post /v1/tool/latex-equation-renderer
openapi: 3.1.0
info:
  title: iotools.cloud API
  version: 1.0.0
  description: >-
    Run any iotools.cloud tool over HTTP.


    Authenticate with `Authorization: Bearer iot_live_…`.


    **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.


    Failures are RFC 9457 problem documents — branch on `code`.
servers:
  - url: https://api.iotools.cloud
    description: Production
security:
  - bearerAuth: []
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.
paths:
  /v1/tool/latex-equation-renderer:
    post:
      tags:
        - Generators
      summary: LaTeX Equation Renderer
      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.


        [Try LaTeX Equation Renderer in your browser
        →](https://iotools.cloud/tool/latex-equation-renderer/)
      operationId: run_latex_equation_renderer
      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.1
                    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: 3
                    credits_remaining: null
                fraction_white_background:
                  summary: Fraction, white background
                  value:
                    tool: latex-equation-renderer
                    tool_version: 1.0.1
                    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: 3
                    credits_remaining: null
                pythagorean_inline:
                  summary: Pythagorean, inline
                  value:
                    tool: latex-equation-renderer
                    tool_version: 1.0.1
                    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: 3
                    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'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ToolFailed'
        '503':
          $ref: '#/components/responses/ToolDisabled'
      security:
        - bearerAuth: []
components:
  responses:
    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://iotools.cloud/docs/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://iotools.cloud/docs/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
    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://iotools.cloud/docs/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://iotools.cloud/docs/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
    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://iotools.cloud/docs/errors/insufficient_credits
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Insufficient credits
              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
              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://iotools.cloud/docs/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://iotools.cloud/docs/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://iotools.cloud/docs/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://iotools.cloud/docs/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://iotools.cloud/docs/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://iotools.cloud/docs/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://iotools.cloud/docs/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
    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://iotools.cloud/docs/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://iotools.cloud/docs/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
    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://iotools.cloud/docs/errors/processing_error
                  - https://iotools.cloud/docs/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://iotools.cloud/docs/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
    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://iotools.cloud/docs/errors/tool_disabled
                  - https://iotools.cloud/docs/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://iotools.cloud/docs/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_…

````