---
title: "Generate a QR code PNG"
method: POST
path: "/v1/qr/generate"
tags: ["Utilities"]
---

# Generate a QR code PNG

`POST /v1/qr/generate`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/qr/generate`
- Auth: HTTP bearer

Encodes `content` (with optional preset shaping for `url`, `wifi`, `vcard`,
`mailto`, `sms`) into a PNG QR code. Returns base64 inline by default; pass
`save_path` (absolute) to write to disk. Configurable size, foreground/background
color, and Reed-Solomon correction level (L/M/Q/H).

## Request body

- QRGenerateRequest
  - `content` string, required: Text to encode (or preset-shaped payload — see `preset`).
  - `preset` 'plain' | 'url' | 'wifi' | 'vcard' | 'mailto' | 'sms': Content shaping preset. Default `plain`.
  - `size_px` integer: Output PNG side length in pixels. Default and max are service-defined.
  - `correction_level` 'L' | 'M' | 'Q' | 'H': Reed-Solomon error correction level. Default `M`.
  - `foreground_color` string: Hex color (e.g. `#000000`). Default `#000000`.
  - `background_color` string: Hex color (e.g. `#FFFFFF`). Default `#FFFFFF`.
  - `save_path` string: Absolute file path to write PNG. If omitted, returns `base64`.

## Response `200`

Generated PNG (base64 or saved path)

- QRGenerateResponse
  - `width` integer, required
  - `height` integer, required
  - `bytes` integer, required
  - `base64` string: Base64-encoded PNG (omitted when `path` is set)
  - `path` string: Absolute path written to disk (omitted when `base64` is set)

## Other responses

- `400`: Invalid request
- `500`: QR rendering or write failed

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
