REST API · OpenAPI 3.1 · Idempotent · Webhook-friendly

Every dashboard action,
one HTTP call away.

Embed qrlia in your CRM, CMS, event platform or internal tool. Mint codes from a CSV, design from a brand kit, pipe scan analytics into your warehouse — without ever opening the UI.

Mint a vCard QR · cURLPOST /api/v1/qrs
curl -X POST https://qrlia.com/api/v1/qrs \
  -H "Authorization: Bearer qrc_live_xxxxxxxx" \
  -H "Idempotency-Key: speaker-${slug}" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Ada Lovelace · Speaker",
    "type":   "vcard",
    "payload": {
      "fullName":     "Ada Lovelace",
      "organization": "Acme Inc",
      "email":        ["ada@acme.example"],
      "phone":        [{ "type": "work", "number": "+44 20 7000 1234" }],
      "photoUrl":     "https://acme.example/headshots/ada.png"
    },
    "design": { "templateId": "tpl_brand_default" }
  }'

Same shape behind the dashboard. Same shape behind the MCP gateway. One mental model.

What it is

A REST API that doesn’t fight you.

Predictable

Resource paths read like English. Same auth across every endpoint. Errors are RFC 7807 problem documents, not lottery-ticket strings. Pagination is cursors, not page numbers.

Idempotent on writes

Send an Idempotency-Key on every POST and replay safely — bulk imports, retried CI jobs and at-least-once webhook handlers all behave. ETag on update means optimistic concurrency without the fuss.

Schema-first

Every endpoint is generated from the same Zod schemas the dashboard validates against. The OpenAPI 3.1 doc is canonical: load it into Postman, generate clients, type-check your fetches.

Why it matters

The boring 80% of QR ops shouldn’t need a person.

Product teams
QRs scattered across Notion, Figma, brand decks — none of them tracked or refreshable.
One source of truth your product owns. Issue, retire and roll codes without ever leaving your stack.
Integrators
Every customer wants ‘QR codes in our app’ but rolling your own renderer + analytics is a quarter.
White-label qrlia from your back-end. Mint into your customer’s tenant, surface their analytics.
Internal tools
Every event, every product launch, every campaign rebuilds the same scripts.
One script, parameterised. Mint, label, design, archive — all over a stable endpoint.
Why qrlia

Built for production, day one.

OpenAPI 3.1, canonical

The reference at /api/docs is generated from the running Zod schemas — never out of sync. Codegen your client of choice (TypeScript, Go, Python, Kotlin) without manual stubs.

Idempotency-Key + ETag

Idempotency-Key dedups POSTs across retries. ETag-on-update locks out lost-update races. Both are first-class — not retro-fitted.

Cursor pagination

Stable, opaque cursors that survive concurrent inserts. No off-by-page-size, no missing rows when your collection grows mid-iteration.

Multi-scoped keys

Tenant-scope keys see every company in the workspace. Company-scope keys can’t leave their lane. Rotate, revoke and audit each independently.

Signed scan webhooks

HMAC-signed, exponentially-backed-off, retryable. Drop in for Slack, n8n, Zapier or your own services. Replay-protected by event id.

MCP gateway free with every key

Same auth, same scopes — point Claude / Cursor / Zed at the gateway URL and you’ve got conversational ops on top of the REST surface.

In the wild

What teams build with the API.

CRM-driven QR mint
HubSpot deal closes → workflow POSTs to /api/v1/qrs to create the customer’s welcome card.
Bulk CSV import
Marketing drops a CSV into the shared folder → cron job mints one branded QR per row, idempotent on email.
Scan → BigQuery
Webhook fires on every scan → Cloud Function lands the row in BigQuery for the company-wide funnel dashboard.
Custom PDF builder
Conference platform stitches a vCard + agenda QR into the printable badge PDF, server-rendered.
White-label embed
SaaS adds a ‘QR for your invoice’ feature using a tenant-scoped key — customer never knows we exist.
Domain rollover
Acquisition closes → script swaps every short link from acme.com to newbrand.com without re-printing physical assets.

curl it. Ship it.

Free workspace, no credit card. Your API key (and an MCP key) are waiting in the dashboard the moment you sign in.