get_qr_matrix
Return the actual QR MODULE GRID for a payload — the black/white matrix, plus a per-module map of which modules are function patterns (finder, separator, timing, alignment, format info, version info, dark module) and which carry data. Both come back as one row string per row. Costs nothing, mints nothing, stores nothing.
Use this when you are going to RENDER or transform a QR yourself: dithering a photo into it, drawing it as an SVG, laying it out for print, or reasoning about which modules are safe to alter. The function-pattern map is the point — any technique that paints over a QR has to know which modules a scanner uses to FIND the code (finder, timing, alignment) versus which merely carry bits.
Do NOT use it to check whether a payload fits — preview_qr_encoding is smaller and answers that. Do NOT use it to get a qart.uk product: this is a plain standards QR, with no artwork, no scan verdict and no alias behind it. The matrix is canonical and untransformed: invert, rotation, mirror and any subpixel scaling are yours to apply afterwards.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ecc | No | Error correction level. Defaults to H, which is what any paint-over-the-code technique needs. | |
| end | No | For 'event': end datetime. | |
| lat | No | For 'geo': latitude. | |
| lng | No | For 'geo': longitude. | |
| org | No | For 'vcard': organization. | |
| url | No | For 'url': the destination. For 'vcard'/'mecard': the website. | |
| auth | No | For 'wifi': security type. Defaults to WPA. | |
| body | No | For 'mailto': message body. | |
| mask | No | Which of the 8 standard mask patterns to apply. 'auto' (default) picks the lowest-penalty one, exactly as the encoder in the browser does. All 8 are legal and scan identically; they differ only in how the light and dark modules are laid out, which is worth pinning when you are fitting a picture to the grid. | |
| name | No | For 'vcard'/'mecard': full name. | |
| ssid | No | For 'wifi': network name. | |
| text | No | For 'text': the literal text. | |
| No | Email address, for 'vcard'/'mecard'/'mailto'. | ||
| phone | No | Phone number, for 'vcard'/'mecard'/'tel'/'sms'/'whatsapp'. | |
| start | No | For 'event': start datetime (YYYY-MM-DDTHH:MM). | |
| title | No | For 'vcard': job title. For 'event': event title. | |
| allDay | No | For 'event': all-day (DATE values). | |
| amount | No | For 'paypal': optional amount. | |
| handle | No | For social kinds (instagram, twitter, youtube, facebook, tiktok, linkedin, paypal): handle or profile URL. | |
| hidden | No | For 'wifi': hidden network. | |
| address | No | For 'vcard': postal address. | |
| message | No | For 'sms'/'whatsapp': message text. | |
| subject | No | For 'mailto': subject line. | |
| version | No | Force a QR version (1-40, size 21-177 modules). Omit for the smallest that fits. Pinning BELOW the fit is impossible and is raised to the fit, matching the Studio. | |
| location | No | For 'event': location. | |
| password | No | For 'wifi': network password. | |
| username | No | For 'telegram': username or t.me URL. | |
| description | No | For 'event': description. | |
| payloadKind | No | What the code should contain. Defaults to url. |