Skip to content
qrcodegenerator.in
AVAILABLE FROM PRO, NOT ENTERPRISE

API and MCP server

Generate, validate and render codes from your own systems. The two endpoints nobody else has — scanability scoring and payment-QR validation — are available standalone, without the platform.

Base URL
https://api.qrcodegenerator.in/v1
Auth
Bearer API key
Format
JSON, one envelope
Spec
OpenAPI 3.1
curl -X POST https://api.qrcodegenerator.in/v1/qr \
  -H "Authorization: Bearer qr_live_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 4f9b21c8" \
  -d '{
    "type": "url",
    "mode": "dynamic",
    "name": "Andheri table tent",
    "payloadJson": { "url": "https://cafeandheri.in/menu" },
    "design": {
      "colorsJson": { "fg": "#16161A", "bg": "#FFFFFF" },
      "shapesJson": { "dotStyle": "square" },
      "frameJson": { "template": "card", "text": "Scan for the menu" }
    }
  }'

{
  "data": {
    "id": "qr_8Kp2xR",
    "type": "url",
    "mode": "dynamic",
    "name": "Andheri table tent",
    "shortCode": "a8K92x",
    "status": "active",
    "scanabilityScore": null,
    "printLocation": null,
    "createdAt": "2026-06-01T09:12:44.000Z",
    "updatedAt": "2026-06-01T09:12:44.000Z",
    "folderId": null,
    "favourite": false,
    "campaignId": null,
    "domainId": null,
    "shortHost": "qrrd.in",
    "shortUrl": "https://qrrd.in/a8K92x",
    "link": null,
    "payload": null
  },
  "error": null,
  "meta": { "requestId": "req_01J8..." }
}
POST /v1/qrCreates a dynamic code and returns its short link, design and initial scanability report in one call.
EVERY RESPONSE, NO EXCEPTIONS
{ "data": {}, "error": null, "meta": { "requestId": "..." } }

Input is validated with a schema and rejected with 422 plus per-field errors. Idempotency keys on every POST. Cursor pagination. Rate limits in X-RateLimit-* headers.

RATE LIMITS BY PLAN
Pro
50,000 calls/mo · 60 rps
Business
500,000 calls/mo · 120 rps
Agency
2M calls/mo · 240 rps
Enterprise
Custom · negotiated burst
DIFFERENTIATOR ENDPOINTS

Buy the verification without the platform

Print shops, packaging houses and fintechs mostly do not want a QR dashboard. They want to know whether a code will scan, and whether a payment URI is correct, inside their own pipeline. Both are priced as standalone API products.

POST /v1/validate

Scanability as a service

Send an image or a set of design parameters, get the 18-point report, the decode matrix. Minimum print size: returned once the print study is complete.

Print shops validating client artwork · packaging houses gating a run · design tools embedding a pre-flight check.

POST /v1/payment/validate

Payment-QR correctness

Validate a UPI, PIX, QRIS or EPC URI against the spec and against each wallet’s real parser behaviour, with field-level errors.

Fintechs generating merchant QRs · POS vendors · anyone printing payment standees at volume.

ENDPOINT REFERENCE

The full surface

31 of 31 paths below are live on the API today. The rest are marked Coming; this count is generated from the running app, so it cannot drift from what is deployed.

QR CODES
POST
/v1/qrCreate a static or dynamic code
GET
/v1/qrList codes with filters and cursor pagination
GET
/v1/qr/{id}Fetch one code with its current destination and score
PATCH
/v1/qr/{id}Update name, design, folder, campaign or destination
DELETE
/v1/qr/{id}Archive a code — the redirect keeps resolving
POST
/v1/qr/{id}/duplicateClone design and settings to a new code
GET
/v1/qr/{id}/renderRender PNG, SVG, PDF or EPS at any size
GET
/v1/qr/{id}/historyFull destination version history with diffs
STATELESS TOOLS
POST
/v1/renderRender a code without storing it
POST
/v1/validateScanability report from an image or parameters
POST
/v1/decodeDecode any QR or barcode image
POST
/v1/payment/validateCross-app payment-QR compatibility matrix
BULK
POST
/v1/bulkSubmit a bulk job, up to 100,000 rows
GET
/v1/bulk/{id}Job status, progress and score distribution
GET
/v1/bulk/{id}/downloadDownload completed output, partial results included
CONTENT AND ORGANISATION
CRUD
/v1/pagesLanding pages and their blocks
GET
/v1/pages/{id}/submissionsForm submissions with cursor pagination
CRUD
/v1/linksShort links — same engine as dynamic QR
CRUD
/v1/campaigns · /v1/folders · /v1/templatesGrouping and reusable design
CRUD
/v1/domains · /v1/brand-kitsCustom domains and brand assets
ANALYTICS
GET
/v1/qr/{id}/analyticsPer-code metrics and dimensions
GET
/v1/analytics/scansWorkspace-wide scan query with any dimension
GET
/v1/analytics/realtimeLast 60 minutes of scan events
POST
/v1/analytics/reportsGenerate a scheduled or one-off report
ACCOUNT
GET
/v1/me · /v1/usageIdentity, entitlements and current usage
GET
/v1/workspaces · /v1/membersWorkspace and membership listing
MCP SERVER

Twelve tools for AI agents

Every MCP tool is a thin forward to a REST endpoint you already have, with your API key passed through verbatim — same org scope, same rate limits, no separate business logic. Ask an assistant to check a UPI QR before you print five hundred of them.

10 of 12 are implemented, read from the server's own tool list.

list_qr_codesBrowse the library with filters
get_qr_codeOne code and its current state
create_qr_codeCreate static or dynamic
update_destinationRetarget a printed code
get_scanability_reportThe 18 checks for a codeComing
validate_payment_qrThe wallet matrix, conversationally
render_qrProduce an image at any size
get_analyticsScan metrics by dimension
list_bulk_jobsBulk job history
get_bulk_job_statusProgress and failures
get_usageQuota and credit balance
list_invoicesBilling documentsComing
Connect it
{ "mcpServers": { "qrcodegenerator": { "command": "qrcg-mcp", "env": { "QRCG_API_KEY": "qr_live_..." } } } }
The server is in early access — what it does and how to get it
SDKS AND WEBHOOKS

Generated from the spec, every release

The OpenAPI 3.1 document is generated from the code, never hand-maintained, and nine SDKs are generated from it on every minor release — so a client library can never drift from the API it wraps.

  • TypeScript
  • Node
  • Python
  • PHP
  • Laravel
  • Go
  • Java
  • .NET
  • Ruby
WEBHOOK TOPICS
qr.scanned
A code was scanned — geo, device and rule matched
qr.created
A code was created, by API or in the app
qr.updated
Name, design or settings changed
qr.destination_changed
A dynamic code was retargeted, with the previous value
bulk.completed
A bulk job finished, with the score distribution
form.submitted
A landing-page form received a submission
link.clicked
A short link was followed
subscription.*
Plan, payment and entitlement changes

HMAC-signed, delivered from a durable queue with backoff and dead-lettering. Auto-disabled after sustained failure. Your handlers must be idempotent — retries are expected, not exceptional.

Test it with sandbox keys first

Sandbox mode mirrors production behaviour, including scanability scoring and the wallet matrix, without consuming quota or creating live codes.
Get API keys See plan limits