REST API quickstart
- 1
Mint an API key
In the dashboard: Settings → API keys → New key. The plaintext key is shown once and never stored again — only an HMAC-SHA-256 hash and a short display prefix are kept. The format is `qrs_live_<64 hex chars>`; store it as `QCS_API_KEY`. Pick scopes at mint time: `qrcodes:read`, `qrcodes:write`, `scans:read`, `conversions:write`. The form pre-selects the two read scopes, which is the safe default for a credential that ends up in a CI job. API access is a Business-plan feature; a key on a lower plan authenticates but answers 403 `plan_limit`. Every key is limited to 300 requests per minute.
- 2
Create a dynamic QR code
POST to `/api/v1/qrcodes` with header `Authorization: Bearer $QCS_API_KEY` and body `{"name": "Spring flyer", "type": "url", "destination_url": "https://example.com/landing"}`. The response is `{"data": {…}}` carrying the QR id, the generated slug, and `scan_url` — the tracked `/q/{slug}` address the printed code encodes. `status` accepts `draft`, `active` or `paused`, and `campaign_id` attaches the code to an existing campaign. If the workspace has used up its dynamic-QR quota, the call answers 403 `plan_limit` with `details.limit` and `details.current` rather than a generic error. Static QR types never consume that quota.
- 3
Read scan events
GET `/api/v1/scans?qr_id={id}&days=30&per_page=50` returns one page of scan events plus a `pagination` block. Each event carries `device_type`, `os`, `browser`, `country`, `region`, `city`, `language`, `referrer`, `is_bot`, `ab_variant` and the `destination` the visitor was sent to. `days` accepts 1–365 and defaults to 30. There are no IP addresses in the payload because the platform does not store them: only a keyed hash reaches the database. Omit `qr_id` to read every scan in the workspace.
- 4
Change the destination
PATCH `/api/v1/qrcodes/{id}` with body `{"destination_url": "https://example.com/new-destination"}`. The same endpoint accepts `name`, `payload`, `campaign_id`, and `status` with `draft`, `active`, `paused` or `archived`; at least one field is required. It answers 200 with the updated record. The printed code resolves to the new URL on the very next scan — no reprint, no cache flush. `DELETE /api/v1/qrcodes/{id}` answers 204 and retires the code.
- 5
Record a conversion server-side
POST `/api/v1/conversions` with body `{"event_name": "purchase", "external_id": "order-1042", "amount": 49.9, "currency": "EUR", "qr_slug": "spring-flyer"}`. A new event answers 201 `{"id": …, "created": true}`; replaying the same `external_id` answers 200 `{"duplicate": true}`, so a retrying job cannot double-count revenue. Attribution accepts either `qr_slug` or the `session_ref` value captured on the landing page. The call needs the `conversions:write` scope.
- 6
Errors, and where the WordPress plugin fits
Every failure returns `{"error": {"code": …, "message": …}}` with a stable code you can branch on: `unauthorized`, `insufficient_scope`, `plan_limit`, `validation_error`, `not_found`, `rate_limited`. Validation failures add `details.issues` keyed by field. The WordPress plugin is a connector, not a second API: it syncs into the same workspace over `/api/v1/wp/*` using its licence key, so codes created in WordPress appear in the same `GET /api/v1/qrcodes` list as codes created here. You do not need the plugin to use the API, and you do not need the API to use the plugin.
Frequently asked questions
What is QRCode Suite?
QRCode Suite is a standalone QR code platform: create a free account and generate branded, dynamic QR codes in the browser — no WordPress required. Connectors bring the same codes to WordPress and WooCommerce, where orders can be attributed to specific QR codes.
Does QRCode Suite work without WordPress?
Yes. QRCode Suite is a standalone SaaS — sign up, create QR codes, and track scans entirely on qrcode-suite.com. The WordPress plugin is an optional connector that brings your codes into wp-admin and adds WooCommerce order attribution.
Does QRCode Suite require a separate subscription?
The Free plan is available at no cost — no credit card required. Paid plans (Pro €9, Business €29, Agency €79 per month) unlock unlimited codes, redirect rules, and more. There is no separate per-scan fee.
What QR code types does QRCode Suite support?
QRCode Suite supports 22 QR code types: Static URL, Dynamic URL, Plain Text, Phone, Email, Location, Link Hub, SMS, WhatsApp, Wi-Fi, vCard, Social profile, PDF, File download, App download, Coupon, Calendar event, Lead capture form, Review collection, Wholesale inquiry, Loyalty reward, and Custom payload.
Can I change the destination of a QR code after printing it?
Yes. Dynamic QR codes use a short redirect URL. You can update the destination from your dashboard at any time without generating or reprinting the code.