Generate 10,000 unique QR codes from your application
Create editable, trackable QR codes from your own systems, 50 per request, safe to retry. Each one comes back with a short link, a scannable SVG and its own scan analytics.
curl -X POST https://api.qravio.app/api/public/v1/qrcodes/bulk \
-H "Authorization: Bearer $QRAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"name": "Table 1",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/menu?table=1"
},
"destinations": [
{
"target_url": "https://example.com/menu?table=1"
}
],
"client_ref": "outlet-7-table-1"
},
{
"name": "Table 2",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/menu?table=2"
},
"destinations": [
{
"target_url": "https://example.com/menu?table=2"
}
],
"client_ref": "outlet-7-table-2"
}
]
}'Built for volume
50 codes per request
POST /qrcodes/bulk takes up to 50 items. The whole batch is checked against your plan before a single code is created.
Safe to retry
Send your own ID as client_ref. A reference this workspace has already used returns the existing code, never a duplicate.
Editable after printing
Dynamic codes encode a short link. PATCH the destination and every printed copy follows.
An image in every response
Each QR comes back with preview_url, a scannable SVG you can place straight into artwork or a PDF.
Scan analytics per code
GET /qrcodes/{id}/analytics returns scans by day, device and country for every code you made.
Signed webhooks
Scan, lead and scan-limit events are posted to your server, HMAC-signed and retried on failure.
Expiry, schedules and caps
end_at, start_at, daily hours and scan_limit control when and how often each code opens.
Static codes too
Permanent codes with the data in the pattern itself. They do not count against your plan QR allowance.
What teams build with it
Packaging
Generate a unique, editable QR code per SKU or production batch from your ERP. Repoint printed boxes after they ship and see scans by country.
Tickets
Issue a unique QR code per ticket from your booking system, stop it working after the event, and pause it when a ticket is refunded.
Restaurant tables
Generate a QR code for every table across every outlet from your POS, and see which tables and outlets get scanned, and when.
Inventory
Tag every asset with a QR code generated from your inventory system. Static codes for permanent labels, dynamic codes when the record can move.
Certificates
Put a verification QR code on every certificate you issue, generated from your LMS or credential system. Static codes do not count against your plan allowance.
Loyalty
Issue a personal QR code per loyalty member from your CRM, and receive a webhook each time it is scanned.
Campaigns
Generate a tracked QR code for every placement, store or channel in a campaign, with UTM tags and a schedule, from your own tools.
SaaS products
Add editable, tracked QR codes to your own product. Create them on behalf of your customers, organise them per account, and show scan analytics in your UI.
What each plan allows
Every call counts against the monthly quota, and a bulk request counts one call per item. Static codes use calls but not the dynamic QR allowance.
| Plan | API calls | Dynamic QRs | Webhooks |
|---|---|---|---|
| Free, Starter | No API access | n/a | No |
| Pro | 3,000 a month | 300 | Scan, lead, scan limit |
| Agency | 25,000 a month | No cap | Adds scan milestones |
Prices are on the pricing page.
Developer FAQ
Can I really generate 10,000 codes?
Yes, on the Agency plan: it has no cap on dynamic QRs and allows 25,000 API calls a month. 10,000 codes is 200 bulk requests of 50. Pro allows 300 dynamic QRs and 3,000 calls a month.
How is a bulk request counted?
One call per item. A 50-item batch costs 50 calls, the same as 50 single creates. The quota is checked first, so a batch that does not fit creates nothing and returns 429.
Do static codes count against my plan?
Not against the QR allowance, which counts dynamic codes only. Each create is still one API call. Static codes cannot take a scan limit or a schedule, because their scans never reach us.
Which plans include the API?
Pro and Agency. Free and Starter have no API access. Keys are created by an owner or editor under Developers in the workspace.
What if something fails halfway through a batch?
Items are validated as a batch before any row is written. If an insert fails after that, the codes already created stay, so re-send the batch with the same client_refs: the finished ones come back as they are and only the rest are created.
Make your first code in one request
Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.