Ironfang · Schema

QrRequest

Developer Toolsscreenshot-apiwebsite screenshotHTML to PDFPDF APIImage APIOG Image APIQR Code APIWebsite-to-VideoRendering InfrastructureMCPUK-hosted

Properties

Name Type Description
data string The payload - a URL, WiFi string, or any text up to 1KB.
size integer Output side in pixels. Output is always square PNG.
ecc string Error-correction level. Forced to `H` when a logo is present - the logo destroys the modules it covers, and that budget has to come from somewhere.
dark string Module color, `#rgb` or `#rrggbb`. Must actually be darker than `light`.
light string Background color, or `transparent`. Transparent codes are verified against a white ground - place them on light surfaces.
dots string Module style. `circle` draws separated dots. Finder patterns always render solid - styled finders are how QR generators produce codes that do not scan.
eyes string Finder-pattern style. Defaults to match `dots`.
margin integer Quiet zone, in modules.
invert boolean Light modules on a dark ground. Explicit because it narrows the audience: modern phone cameras read inverted codes, many embedded and in-app scanners do not - use it for screens, not print or payments
logo string Center mark as a base64 `data:` URI, png or jpeg, up to 1MB decoded. Mutually exclusive with `logo_url`.
logo_url string Center mark by URL. SSRF-guarded and rate-capped like a render target.
logo_size number Logo tile as a fraction of the symbol width.
logo_pad boolean Knockout tile behind the logo so it sits on clean ground.
View JSON Schema on GitHub

JSON Schema

ironfang-qr-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/ironfang/main/json-schema/ironfang-qr-request-schema.json",
  "title": "QrRequest",
  "x-generated": "2026-09-28",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ironfang-render-api-openapi.yml#/components/schemas/QrRequest",
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "string",
      "maxLength": 1024,
      "description": "The payload - a URL, WiFi string, or any text up to 1KB."
    },
    "size": {
      "type": "integer",
      "default": 512,
      "minimum": 64,
      "maximum": 2048,
      "description": "Output side in pixels. Output is always square PNG."
    },
    "ecc": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M",
      "description": "Error-correction level. Forced to `H` when a logo is present -\nthe logo destroys the modules it covers, and that budget has to\ncome from somewhere.\n"
    },
    "dark": {
      "type": "string",
      "default": "#000000",
      "description": "Module color, `#rgb` or `#rrggbb`. Must actually be darker than `light`."
    },
    "light": {
      "type": "string",
      "default": "#ffffff",
      "description": "Background color, or `transparent`. Transparent codes are\nverified against a white ground - place them on light surfaces.\n"
    },
    "dots": {
      "type": "string",
      "enum": [
        "square",
        "circle"
      ],
      "default": "square",
      "description": "Module style. `circle` draws separated dots. Finder patterns\nalways render solid - styled finders are how QR generators\nproduce codes that do not scan.\n"
    },
    "eyes": {
      "type": "string",
      "enum": [
        "square",
        "rounded"
      ],
      "description": "Finder-pattern style. Defaults to match `dots`."
    },
    "margin": {
      "type": "integer",
      "default": 4,
      "minimum": 0,
      "maximum": 8,
      "description": "Quiet zone, in modules."
    },
    "invert": {
      "type": "boolean",
      "default": false,
      "description": "Light modules on a dark ground. Explicit because it narrows the\naudience: modern phone cameras read inverted codes, many\nembedded and in-app scanners do not - use it for screens, not\nprint or payments. With the flag set, `dark` (the module color)\nmust be lighter than `light` (the ground). Verified against the\nnegative, so the structural guarantee holds.\n"
    },
    "logo": {
      "type": "string",
      "description": "Center mark as a base64 `data:` URI, png or jpeg, up to 1MB\ndecoded. Mutually exclusive with `logo_url`.\n"
    },
    "logo_url": {
      "type": "string",
      "format": "uri",
      "description": "Center mark by URL. SSRF-guarded and rate-capped like a render target."
    },
    "logo_size": {
      "type": "number",
      "default": 0.22,
      "minimum": 0.12,
      "maximum": 0.3,
      "description": "Logo tile as a fraction of the symbol width."
    },
    "logo_pad": {
      "type": "boolean",
      "default": true,
      "description": "Knockout tile behind the logo so it sits on clean ground."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/ironfang-qr-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.