MyQRx Sign up free
QR Code API

Your agent can draw a QR code. It can't keep one alive for five years.

A REST API for the hard part: dynamic codes on tilg.in that you can repoint after printing, with every destination safety-checked and every scan counted. Same account, quota and checks as the web builder.

Static or dynamic

The quota, honestly.

Dynamic: the default

Uses one slot of your plan's quota (Free includes 5). You can change where it points after printing, and it reports every scan. Use it whenever anyone will ask whether the code worked.

Static: unlimited

Free on every plan, no quota. Right for Wi-Fi credentials, vCards and content that never changes and is never measured. Honestly, a library can draw these too.

Five rules for choosing · Build or buy?

Quick start

Create, measure, compare, act.

  1. 1. Get a token. Sign up, confirm your email, then create a token under Settings → API tokens.

  2. 2. Create a dynamic code. No type means dynamic. Send an Idempotency-Key so a retry never spends two slots.

    curl -X POST https://myqrx.com/api/v1/codes \
      -H "Authorization: Bearer $MYQRX_TOKEN" \
      -H "Idempotency-Key: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{"url": "https://example.com/menu", "name": "Andheri store window"}'
  3. 3. Download it for print. SVG, PNG, JPG or PDF.

    curl "https://myqrx.com/api/v1/codes/$CODE_ID/image?format=svg" \
      -H "Authorization: Bearer $MYQRX_TOKEN" -o code.svg
  4. 4. Measure, then compare placements. Totals, unique share, change against the previous period, top countries and devices, peak hour.

    curl "https://myqrx.com/api/v1/analytics/compare?codes[]=$STORE_A&codes[]=$STORE_B&from=2026-11-01&to=2026-11-30" \
      -H "Authorization: Bearer $MYQRX_TOKEN"
  5. 5. Act. Repoint the weaker code without reprinting. The new address is safety-checked; scans see a notice until it clears.

    curl -X PATCH https://myqrx.com/api/v1/codes/$STORE_B \
      -H "Authorization: Bearer $MYQRX_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"destination": "https://example.com/better-offer"}'
MCP

Or let your agent call it directly.

The same calls as tools in Claude Code, Cursor, VS Code, Claude Desktop and Windsurf, signed in with the same token. In Claude Code:

claude mcp add --transport http myqrx https://myqrx.com/mcp --header "Authorization: Bearer $MYQRX_TOKEN"

Setup guides for every app

Endpoints

Everything under /api/v1.

API endpoints
Call Does Token ability
POST /codes Create a code. Dynamic by default; set type for static. codes:write
GET /codes List your codes, 50 a page. ?kind=dynamic|static codes:read
GET /codes/{id} One code, with its destination and safety verdict. codes:read
PATCH /codes/{id} Rename it, or change a dynamic code's destination. codes:write
GET /codes/{id}/image SVG, PNG, JPG or PDF, with the saved design. codes:read
GET /codes/{id}/analytics Decision-ready scan summary for a date range. analytics:read
GET /analytics/compare 2–10 codes ranked side by side. analytics:read
POST /url-safety-checks The verdict we give every destination, for any URL. any
Limits

What each plan gets.

API limits by plan
Plan Requests / min / token URL safety checks / day
Free 60 10
Pro 120 100
Pro Max 300 400
Enterprise 600 2,000

Creating codes is limited to 20 a minute on every plan, the same as the web builder. Each account can hold 3 tokens. Need more tokens or safety checks? Request a higher limit from Settings. Every response carries X-RateLimit-Remaining and X-Quota-Remaining (dynamic code slots left).

Errors

Written to be read by a program.

{"error": {"code": "quota_exceeded", "message": "You have used all 5 codes on your plan…",
  "hint": "Static codes are unlimited and need no slot…", "docs_url": "https://myqrx.com/qr-code-api#errors"}}
Error codes
401 unauthenticated Missing, unknown or revoked token.
402 quota_exceeded No dynamic slots left. Static codes still work; upgrade or buy a code pack for more.
403 missing_ability The token lacks the ability this call needs.
403 account_not_activated Confirm the account's email address first.
404 not_found No such code in this account.
409 edit_refused This code cannot be changed right now; the message says why.
422 validation_failed Fix the fields in error.fields.
422 not_dynamic Static codes cannot change destination.
422 idempotency_key_reused Same Idempotency-Key, different body.
429 rate_limited Wait for Retry-After seconds.
429 daily_limit_reached Today's URL safety checks are used up.

Building with an AI agent? Why agents should use MyQRx · What it does for marketers

FAQ

Questions about the API.

Is there a free QR code API?

Yes. Every plan includes the API, Free too: 5 dynamic codes and unlimited static codes, with a token you create after signing up and confirming your email.

Does a static QR code use my quota?

No. Static codes are unlimited on every plan. Only dynamic codes use a quota slot, because they keep a redirect running for you and report scans back.

Are API-created codes checked for phishing?

Yes, exactly like codes made on the website. Every destination is checked against phishing and malware lists when it is created and every time it changes, and scans see a safety notice until it clears.

Can I change a QR code destination through the API?

Yes, for dynamic codes: PATCH /api/v1/codes/{id} with a new destination. Printed copies follow the change.

What happens if my agent retries a create?

Send an Idempotency-Key header. A retry with the same key within 24 hours returns the first response and creates nothing new.