Quick start
The v1 API creates managed dynamic QR codes. Use the Dashboard manager to edit, pause, review analytics or delete a code.
Business workspaces can create dynamic QR codes with API keys and receive creation events through webhooks. All production requests use the CraftMyQR API host shown below.
The v1 API creates managed dynamic QR codes. Use the Dashboard manager to edit, pause, review analytics or delete a code.
Create an API key in API & integrations. The complete secret is shown once; afterward the service stores only a hash, prefix and last four characters.
Authorization: Bearer YOUR_API_KEYOpen API & integrationsThis endpoint creates a managed QR code with an editable destination and scan analytics, then returns its CraftMyQR short link.
{
"title": "Menu",
"targetUrl": "https://your-site.com/menu",
"folder": "Stores",
"tags": ["menu", "print"],
"expiresAt": null,
"scanLimit": 10000
}curl -X POST https://craftmyqr.com/api/v1/qr-codes \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Menu","targetUrl":"https://your-site.com/menu","folder":"Stores","tags":["menu","print"],"scanLimit":10000}'{
"ok": true,
"code": {
"id": "qr_xxxxxxxx",
"slug": "AbC1234",
"title": "Menu",
"targetUrl": "https://your-site.com/menu",
"folder": "Stores",
"tags": ["menu", "print"],
"expiresAt": null,
"scanLimit": 10000,
"isExpired": false,
"scanLimitReached": false,
"isActive": true,
"createdAt": "2026-08-25T09:00:00.000Z",
"updatedAt": "2026-08-25T09:00:00.000Z",
"shortUrl": "https://craftmyqr.com/r/AbC1234",
"scansCount": 0,
"scansThisMonth": 0
}
}By default, shortUrl uses https://craftmyqr.com/r/.... If a custom short domain is configured and routed to CraftMyQR, the API returns that domain instead.
After you configure a webhook URL in API & integrations, creating a dynamic QR code sends a signed event. Webhook delivery runs after creation and does not delay the API response.
X-CraftMyQR-Event: dynamic_qr.created
X-CraftMyQR-Signature: HMAC_SHA256_SIGNATURE{
"event": "dynamic_qr.created",
"createdAt": "2026-08-25T09:00:00.000Z",
"data": {
"id": "qr_xxxxxxxx",
"shortUrl": "https://craftmyqr.com/r/AbC1234"
}
}The signature is the lowercase hexadecimal HMAC-SHA256 digest of the raw JSON body using your webhook secret.