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

# Rule of 72 Calculator

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

[Try Rule of 72 Calculator in your browser →](https://iotools.cloud/tool/rule-of-72-calculator/)



## OpenAPI

````yaml https://api.iotools.cloud/v1/openapi post /v1/tool/rule-of-72-calculator
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/rule-of-72-calculator:
    post:
      tags:
        - Calculators
      summary: Rule of 72 Calculator
      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.


        [Try Rule of 72 Calculator in your browser
        →](https://iotools.cloud/tool/rule-of-72-calculator/)
      operationId: run_rule_of_72_calculator
      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.1
                    outputs:
                      summary: |-
                        === Rule of 72 — Doubling Time ===

                          At 8% per year, your money doubles in about 9.00 years (Rule of 72).
                          The exact doubling time is 9.01 years — the rule is off by -0.07%.

                          Annual Interest Rate:   8%
                          Compounding:            Annually (1x/year)

                          Rule of 72:             9.00 years
                          Rule of 70:             8.75 years
                          Rule of 69.3:           8.66 years
                          Exact (logarithmic):    9.01 years

                        === Formula ===
                          Approximation:  years ≈ 72 / rate
                          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: 3
                    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.1
                    outputs:
                      summary: |-
                        === Rule of 72 — Doubling Time ===

                          At 2% per year, your money doubles in about 36.00 years (Rule of 72).
                          The exact doubling time is 35.00 years — the rule is off by +2.85%.

                          Annual Interest Rate:   2%
                          Compounding:            Annually (1x/year)

                          Rule of 72:             36.00 years
                          Rule of 70:             35.00 years
                          Rule of 69.3:           34.65 years
                          Exact (logarithmic):    35.00 years

                        === Formula ===
                          Approximation:  years ≈ 72 / rate
                          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: 3
                    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.1
                    outputs:
                      summary: |-
                        === Rule of 72 — Required Rate ===

                          To double in 10 years, you need about 7.200% per year (Rule of 72).
                          The exact required rate is 7.177% — the rule is off by +0.32%.

                          Years to double:        10
                          Compounding:            Annually (1x/year)

                          Rule of 72:             7.200%
                          Rule of 70:             7.000%
                          Rule of 69.3:           6.930%
                          Exact (logarithmic):    7.177%

                        === Formula ===
                          Approximation:  rate ≈ 72 / years
                          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: 3
                    credits_remaining: null
                6_compounded_monthly:
                  summary: 6% compounded monthly
                  value:
                    tool: rule-of-72-calculator
                    tool_version: 1.0.1
                    outputs:
                      summary: |-
                        === Rule of 72 — Doubling Time ===

                          At 6% per year, your money doubles in about 12.00 years (Rule of 72).
                          The exact doubling time is 11.58 years — the rule is off by +3.62%.

                          Annual Interest Rate:   6%
                          Compounding:            Monthly (12x/year)

                          Rule of 72:             12.00 years
                          Rule of 70:             11.67 years
                          Rule of 69.3:           11.55 years
                          Exact (logarithmic):    11.58 years

                        === Formula ===
                          Approximation:  years ≈ 72 / rate
                          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: 3
                    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'
        '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_…

````