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
- Open My codes and scroll to API keys & MCP.
- Type what the key is for (for example "Website") and choose Create key.
- 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
| Method | Path | What it does |
|---|---|---|
| GET | /v1/codes | List your codes |
| POST | /v1/codes | Create: 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}/revert | Undo the last destination change |
| DELETE | /v1/codes/{id} | Delete (the code stops working for good) |
| GET | /v1/codes/{id}/stats?days=30 | Scans per day, country and device |
| GET | /v1/me | Your plan, limits and code count |
| GET | /v1/me/export | Everything, 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 withreasons.
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.