All help articles

Power features

Automate QR creation with the API

Create, update, and read QR codes from your own backend in a few curl commands.

4 min read · Updated April 2026

If you're creating QRs as part of a product or workflow — one per invoice, one per lead, one per order — doing it by hand stops scaling around row 50. The REST API is the usual answer. Here's the shortest path from a blank terminal to a working integration.

Get a key

Dashboard → Developer → create a secret key. Keys start with sk_live_. You'll see the full value once — put it in your secret manager now. Secret keys require a Pro plan or higher.

Make your first call

curl -X POST https://gigaqr.com/api/v1/qr \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Invoice 2026-042",
    "qrType": "url",
    "data": { "type": "url", "url": "billing.example.com/i/042" }
  }'

The response includes a scanUrl. That's the short URL printed into the QR — embed it in your invoice template and you're done.

Change the destination later

curl -X PATCH https://gigaqr.com/api/v1/qr/<id> \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "data": { "type": "url", "url": "billing.example.com/i/042/paid" } }'

Every printed copy starts redirecting to the new URL on the next scan. No cache invalidation, no reprint.

Read scans

curl https://gigaqr.com/api/v1/qr/<id>/scans \
  -H "Authorization: Bearer sk_live_..."

You get totals plus the most recent events. For warehouse- scale pulls over a date range, use /scans/export?format=ndjson — it streams one event per line, straight into a pipeline.

When to use what

  • Per-record QRs. Call POST /qr when you create the record. Store the returned id alongside the record so you can update it later.
  • Bulk backfills. Don't loop POST /qr ten thousand times. Use POST /qr/bulk — one call, one rate-limit charge, asynchronous processing.
  • Reacting to scans. Skip polling. Register a webhook for qr.scanned and your service gets told.

Reference

Every endpoint, every field, with an interactive try-it: GigaQR API reference.