Asset tags generated from your inventory system
Give every asset a code that opens its record. Create them in bulk from the system that already knows the asset IDs, and choose static or dynamic per label depending on whether the record URL can ever move.
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": "Asset LAP-00912",
"type": "url",
"category": "static",
"content": {
"url": "https://example.com/assets/LAP-00912"
},
"client_ref": "asset-LAP-00912"
},
{
"name": "Asset FRK-0044",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/assets/FRK-0044"
},
"destinations": [
{
"target_url": "https://example.com/assets/FRK-0044"
}
],
"client_ref": "asset-FRK-0044"
}
]
}'How the integration works
Your inventory or CMMS system creates a code when an asset is registered, with the asset ID as the client_ref. If the record URL is permanent, a static code is enough and never counts against your QR allowance. If you may migrate systems, use dynamic codes and repoint them later.
- 1Create an API key under Developers.
- 2Register assets in batches of up to 50 with POST /qrcodes/bulk, the asset ID as client_ref.
- 3Print the preview_url SVG on the asset label.
- 4Re-run an import whenever you like: an asset ID already used as a client_ref returns its existing code, so no label is ever duplicated.
What you get
Static labels are free of the cap
Static codes do not count against your plan QR allowance. Each create is still one API call.
Survive a system migration
Dynamic labels can be repointed when the asset record moves to a new system, without relabelling a single item.
Where assets are scanned
Per-code analytics show the city and device of each scan on dynamic labels.
Folders and tags
folder_id and the tags endpoints organise codes by site, department or asset class.
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.
Inventory API FAQ
Static or dynamic?
Static if the record URL will never change: the link is printed into the code and no scan ever touches Qravio. Dynamic if it might, or if you want scan analytics.
Do static codes count against my plan?
Not against the QR allowance, which only counts dynamic codes. Each one still costs one API call to create.
What if an import runs twice?
Nothing is duplicated. An item whose client_ref this workspace already used comes back as the existing code, so re-running a failed import is safe.
Other things teams build
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.
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.
Start generating codes
Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.