API
Connect another product
One workspace key covers every end user of the other product. Stamp each code with externalUserId. The API answers only while the subscription is active or trialing. Free workspaces can still create codes in the dashboard.
Authentication
Create a key under API after upgrading. Send it as a bearer token. The raw key is shown once.
curl https://myqrvision.com/api/v1/codes \
-H "Authorization: Bearer qr_live_..."Base URL https://myqrvision.com/api/v1. Limit is 60 requests a minute per key.
Create a code
Types are url, text, email, sms, phone, vcard, wifi, pdf, and app. The image always encodes the scan URL, so a later payload edit does not require a new file.
curl https://myqrvision.com/api/v1/codes \
-H "Authorization: Bearer qr_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Spring menu",
"type": "url",
"payload": { "url": "https://example.com/menu" },
"externalUserId": "user_123",
"externalId": "menu_1"
}'A new code returns 201. Sending the same externalId with the same type and payload returns 200 and the existing code. A different payload for that id returns 409.
The SVG
Store imageUrl from the response. It is a public SVG. Replace .svg with .png when you need a bitmap. scanUrl is what the phone opens. The file uses the saved appearance, so a later design change shows up at the same address.
{
"id": "378939b8-cf21-4277-b0df-cc6395e66c1a",
"imageUrl": "https://myqrvision.com/q/k7mP3nQ2aR.svg",
"scanUrl": "https://myqrvision.com/s/k7mP3nQ2aR",
"externalUserId": "user_123",
"externalId": "menu_1"
}Appearance
Send design on create, or PATCH just that object later. Colors are #rrggbb. Pattern is square, rounded, dots, or diamond. Eyes are square, rounded, or circle. Frame is none, border, or banner. A logo is a PNG, JPEG, or WebP data URL under 120 KB, and it forces high error correction. A null logo removes it. A repeat externalId does not change a saved design.
curl -X PATCH https://myqrvision.com/api/v1/codes/CODE_ID \
-H "Authorization: Bearer qr_live_..." \
-H "Content-Type: application/json" \
-d '{
"design": {
"foreground": "#312e81",
"background": "#eef2ff",
"eye": "#312e81",
"pattern": "rounded",
"eyes": "rounded",
"frame": "banner",
"frameText": "Menu",
"frameColor": "#312e81"
}
}'The code response includes design. List results set hasLogo and omit the logo bytes. Fetch one code to read the data URL back.
Analytics
Paying keys always receive the daily series plus country, device, and browser. from and to are YYYY-MM-DD. The default range is the last 30 days, and the maximum is 366.
curl "https://myqrvision.com/api/v1/codes/CODE_ID/analytics?from=2026-09-01&to=2026-09-27" \
-H "Authorization: Bearer qr_live_..."List codes with GET /api/v1/codes. Filter one end user with externalUserId.
Errors
| 401 | unauthorized | Missing or unknown key. |
| 402 | payment_required | The workspace is not on an active or trialing subscription. |
| 404 | not_found | That code is not in this workspace. |
| 400 | design_invalid | A design field is missing, the wrong type, or out of range. |
| 409 | external_id_conflict | externalId already points at a different payload. |
| 429 | rate_limited | Over 60 requests in the current minute. Honor Retry-After. |