Qravio
QR code API for inventory

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
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.

  1. 1Create an API key under Developers.
  2. 2Register assets in batches of up to 50 with POST /qrcodes/bulk, the asset ID as client_ref.
  3. 3Print the preview_url SVG on the asset label.
  4. 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.

PlanAPI callsDynamic QRsWebhooks
Free, StarterNo API accessn/aNo
Pro3,000 a month300Scan, lead, scan limit
Agency25,000 a monthNo capAdds 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.

Start generating codes

Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.