QRD API v1
The QRD v1 REST API lets you create, list, and update QR codes and read scan events. Authentication uses Bearer API keys issued under Settings → API & MCP. Keys belong to an organization and are rate-limited per plan.
Downloads
- API & MCP developer guide (PDF) — the full reference, ready to share with clients.
- Postman collection (JSON) — import, set
baseUrl+apiKey, and try every endpoint. - “Redeem your Pro code” guide (PDF) — a short how-to for customers redeeming a plan code.
Authentication
Every request must include Authorization: Bearer qrd_live_.... Keys are shown only once at creation. Revoke compromised keys from Settings.
Endpoints
GET /api/v1/qr— list codes. Supportspage,perPage,search.POST /api/v1/qr— create a code. Body:title,targetUrl,type?,tags?, and optionalappearance(foreground,background,size,margin,errorCorrection).GET /api/v1/qr/:id— fetch a single code. The create and single-get responses also inline animage(PNG data URL) andencodedUrlfor convenience.GET /api/v1/qr/:id/image— render the QR image. Query:format(pngdefault, orsvg) plus the same appearance overrides. DYNAMIC codes encode the tracked short link; STATIC encode the raw target.PATCH /api/v1/qr/:id— update title/targetUrl/status/tags.DELETE /api/v1/qr/:id— permanently delete a code and its scans.GET /api/v1/qr/:id/scans— latest scan events.GET/POST /api/v1/reports— list or create scheduled email report subscriptions (recipients,cadence:weekly/monthly).PATCH/DELETE /api/v1/reports/:id— update (recipients, cadence,active) or delete a schedule.
MCP server
The qrd-mcp npm package exposes these endpoints as MCP tools for AI clients (Cursor, Claude Desktop, etc.): qrd_create_qr, qrd_render_qr, qrd_update_qr, qrd_delete_qr, and qrd_list_qr_codes. qrd_render_qr returns the actual PNG/SVG image. No install or repo needed — it runs via npx; just set QRD_API_KEY (and optional QRD_API_BASE_URL). See Settings → API & MCP for a copy-paste config.
{
"mcpServers": {
"qrd": {
"command": "npx",
"args": ["-y", "qrd-mcp"],
"env": {
"QRD_API_KEY": "qrd_live_...",
"QRD_API_BASE_URL": "https://qrd.cx"
}
}
}
}Tracking & reports
Every scan of a DYNAMIC code is tracked (time, country, city, referer, device, resolved destination) and available via GET /api/v1/qr/:id/scans. You can also subscribe email addresses to a recurring organization summary (scans, conversions, top codes, top countries) with POST /api/v1/reports — weekly or monthly. Static codes are not routed through QRD and cannot be tracked.
Example
# 1. Create a dynamic QR (scans are tracked)
curl -X POST https://qrd.cx/api/v1/qr \
-H "Authorization: Bearer qrd_live_..." \
-H "Content-Type: application/json" \
-d '{"title":"Storefront flyer","targetUrl":"https://your-shop.com/deal","type":"DYNAMIC","tags":["promo"],"appearance":{"foreground":"#101010","size":512}}'
# 2. Download the rendered image (use the id from the response above)
curl -L "https://qrd.cx/api/v1/qr/QR_ID/image?format=png&size=512" \
-H "Authorization: Bearer qrd_live_..." -o qr.pngQuotas
Each plan has a daily request limit (Free 500, Pro 10,000, Enterprise 1,000,000). Free includes one active API key for trying integrations. Responses exceeding the limit return exceeding the limit return 429 Too Many Requests.
Errors
All error responses are JSON: { "success": false, "error": "reason" }. Statuses follow HTTP conventions: 401 for auth, 402 for plan gates, 404, 422 for validation, 429 for quotas.