Point a QR at a landing page, form, menu, or campaign
A dynamic QR code is a redirect. The printed pattern never changes; you control where it lands. That means the same code can point at any hosted destination you build in ExaRoutes, and you can move it from one to another without reprinting.
This guide covers the hosted surfaces a dynamic QR can target and how to wire them up.
The hosted-URL bridge
Every hosted feature below produces a URL. A dynamic QR simply redirects to that URL, so the pattern is always the same:
- Build the destination in the dashboard (landing page, form, menu, and so on).
- Publish it. The feature gives you a hosted URL.
- Create or edit a dynamic QR and set its destination to that URL.
- Print the QR. Later, repoint it at a different destination without reprinting.
Because the QR only stores its own short redirect URL, swapping the destination is instant and keeps all the scan analytics on the same code.
Hosted landing pages
Build a scan destination without a website: hero image, headline, call-to-action buttons, and social links. Useful for a link-in-bio, a product page, or an event splash. Publish it, then point a QR at its URL.
Lead-capture forms
Skip the redirect and collect information directly from a scan. Hosted forms support custom fields, CSV export, and webhook fan-out to your CRM. Point a QR at a form’s URL so a scan opens the form.
Restaurant menus
Hosted multi-section menus with allergen tags, multi-language support, and per-location management. A table-tent QR points at a location’s menu URL; update prices or items in the dashboard and every printed code shows the new menu.
Serialized and anti-counterfeit codes
Serialized codes mint a unique, verifiable code per physical unit. The first scan returns “authentic”; later scans flag “already scanned”. These are managed as a batch in the dashboard, and each unit’s verification page is a hosted URL. See the dedicated Serialized / anti-counterfeit codes guide for the full workflow (mint, print, verify, track, buy more), or the Serialized codes API reference to automate it.
A/B campaigns
Run weighted variants behind a single QR. Each scan is routed to one variant, and you see which destination wins. Configure the split in the dashboard; the QR itself does not change.
Device and geo routing rules
Route by the scanner’s device or location from one printed code: iOS to the App Store, Android to Play, EU visitors to a GDPR-clean page. Rules are configured on the QR in the dashboard.
Managing these over the API
You can manage these features in the dashboard, or programmatically through the API. The QR API creates and repoints a dynamic QR at any URL, including a hosted landing page, form, or menu URL.
Managing features through the API
Landing pages, forms, menus, brand kits, and serialized batches have CRUD endpoints, authenticated with the same Bearer API key as the QR endpoints and scoped to your key’s workspace. Plan entitlements apply exactly as in the dashboard (for example, menus require the Business plan).
| Feature | Endpoints |
|---|---|
| Landing pages | GET/POST /api/qr/landing-pages, GET/PATCH/DELETE /api/qr/landing-pages/{pageId} |
| Forms | GET/POST /api/qr/forms, GET/PATCH/DELETE /api/qr/forms/{formId}, GET /api/qr/forms/{formId}/submissions |
| Menus | GET/POST /api/qr/menus, GET/PATCH/DELETE /api/qr/menus/{menuId} |
| Brand kits | GET/POST /api/qr/brand-kits, PATCH/DELETE /api/qr/brand-kits/{kitId} |
| Serialized batches | GET/POST /api/qr/serialized-batches, GET /api/qr/serialized-batches/{batchId} |
A typical flow: create a landing page, take its hosted URL, then create a dynamic QR pointed at it, all over the API.
# 1. Create a landing page
curl -X POST https://api.exaroutes.com/api/qr/landing-pages \
-H "Authorization: Bearer exr_live_..." -H "Content-Type: application/json" \
-d '{ "name": "Spring promo", "headline": "20% off" }'
# 2. Point a dynamic QR at its hosted URL (from the response / dashboard)
curl -X POST https://api.exaroutes.com/api/qr/codes \
-H "Authorization: Bearer exr_live_..." -H "Content-Type: application/json" \
-d '{ "data": "https://qr.exaroutes.com/p/<pageId>", "dataType": "url" }'The request/response bodies mirror the dashboard exactly. A/B campaigns,
routing rules, and deep links are configured on the QR itself, via
PUT /api/qr/codes/{id} (see Update a QR code).
That same endpoint also updates the code’s full styling.