Developer QR Code Tools
The Developer → QR Code Tools page is a visible workspace for previewing the QR code API without writing acurl call: you type a phone number or URL, and the dashboard renders exactly what the API returns. Use it to verify the encoded deep link before a QR goes onto print collateral, signage, or a web embed.
The page is available to the owner, admin, and developer roles. Everything it generates runs through the server-side /qr/* endpoints — the same routes the QR API guide documents — so what you preview is what your API integration gets.
Generate a QR code
Open Developer → QR Code Tools and pick one of the three tabs:- SMS — enter a phone number and optional message. Scanning the QR opens the device’s native SMS composer addressed to that number, with the message pre-filled.
- WhatsApp — enter a phone number and optional message. Scanning opens a WhatsApp click-to-chat (
wa.me) link to that number. - Custom URL — enter any
http(s)://URL or plain text (event check-in codes, coupon URLs, support pages). Payloads that start with a script-execution scheme such asjavascript:ordata:are rejected by the server.
+<digits> with at most 15 digits) instead of firing a request.
Output formats and copying the deep link
Once the preview renders, the page shows the QR image plus a caption and the exact encoded link underneath in monospace. Two actions are available:- Download PNG — saves the QR image as a PNG file for print or web use.
- Copy Link — copies the encoded deep link (
sms:<E.164>?body=…,https://wa.me/<digits>?text=…, or your custom URL) to the clipboard, so you can inspect or reuse exactly what a scanned device would open.
curl integration — use the /api/v1/qr/* endpoints directly; see Click-to-chat QR codes for print and web for request shapes, the size and format parameters, and the raw-PNG vs. data-URL envelope.
Sandbox vs. live numbers
Every number the dashboard normalizes is validated as a dialable international number before encoding, so both test and production numbers work. Use test API keys and sandbox-tier numbers while you prototype; the rendered QR behaves the same either way — scan it with any phone, yours or a customer’s. For high-volume generation (per-recipient one-time tokens, millions of codes), don’t call the render endpoints inline — generate once, store the assets, and serve them yourself. The on-demand endpoints are rate-limited for interactive use, the same constraint that applies when you call them from your own code.Troubleshooting
- 400
INVALID_PHONEon SMS or WhatsApp. The number must parse as a dialable international number. A shape like+12or a bare country code is rejected — pass the full E.164 form. - Custom URL rejected.
data:andjavascript:(and similar script-execution schemes) are blocked. Encode a plain URL or text payload. - Preview never renders. One of the active tab’s required fields is empty — the SMS and WhatsApp tabs need a phone number, and Custom URL needs a URL.