Business

QRVow API

Everything you can do with dynamic codes on My codes, from your own code: create codes, change where they point, add smart rules and read scan stats.

1. Get a key

  1. Open My codes and scroll to API keys & MCP.
  2. Type what the key is for (for example "Website") and choose Create key.
  3. Copy the key straight away. It starts with qv_ and is shown only once. Store it like a password.

2. Call the API

Base URL: https://api.qrvow.com/v1. Send the key in the Authorization header.

curl https://api.qrvow.com/v1/codes \
  -H "Authorization: Bearer qv_YOUR_KEY"

Create a code

curl -X POST https://api.qrvow.com/v1/codes \
  -H "Authorization: Bearer qv_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destination": "https://yourcafe.com/menu", "name": "Table tent menu"}'

The answer includes code.short_url (what you print) and code.id.

Add smart rules

curl -X PATCH https://api.qrvow.com/v1/codes/AbC1234 \
  -H "Authorization: Bearer qv_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "timezone": "Asia/Kolkata",
  "rules": [
    {"label": "Late night", "destination": "https://swiggy.com/yourcafe",
     "when": {"start": "21:00", "end": "06:00"}},
    {"label": "iPhone app", "destination": "https://apps.apple.com/app/id123",
     "when": {"devices": ["ios"]}}
  ]
}'

Rules replace the code's whole rule list; send [] to remove them. See Smart rules for how matching works. Every link is safety-checked; a blocked link returns 422 with reasons.

Endpoints

MethodPathWhat it does
GET/v1/codesList your codes
POST/v1/codesCreate: destination, optional name, rules, timezone, style
GET/v1/codes/{id}One code
PATCH/v1/codes/{id}Change destination, name, rules, timezone or style
POST/v1/codes/{id}/revertUndo the last destination change
DELETE/v1/codes/{id}Delete (the code stops working for good)
GET/v1/codes/{id}/stats?days=30Scans per day, country and device
GET/v1/meYour plan, limits and code count
GET/v1/me/exportEverything, as JSON

Errors and limits

  • 401: missing or revoked key. 403: your plan no longer includes the API (your codes keep working).
  • 402: over your plan's code limit. 422: the link was refused by safety checks (see reasons).
  • 429: more than 120 requests a minute for one key. Wait a minute and retry.
  • Errors come back as JSON: {"error": "…"}, sometimes with reasons.

Keep keys safe

  • Never put a key in a website's front-end code or a public repository.
  • Use one key per app, so you can revoke one without breaking the others.
  • Keys can't delete your account or create other keys.

Other QR apps switch your codes off when you stop paying. We made a vow not to.