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.
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.
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.
The boring 80% of QR ops shouldn’t need a person.
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.
What teams build with the API.
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.