canonical: https://jentic.com/apis/qr-manager.ai/qr-manager

# QR Manager AI API

The QR Manager AI API creates and styles QR codes and tracks how often they are scanned. A code can be a dynamic URL redirect whose destination changes after printing, a short link, or a static vCard, WiFi, SMS, email, or phone code, styled with colours, gradients, dot and corner styles, frames, and logo sizing. It also returns per-code and account-wide scan analytics, sets scan and expiry alerts, and organises codes into folders.

## For AI agents

Create, restyle, and retarget QR codes in QR Manager AI, read per-code and account scan analytics, set scan and expiry notifications, and file codes into folders.

## Scope

Does not print materials, shorten links outside QR Manager AI, or run ad campaigns. Use for creating, styling, tracking, and organising QR codes only.

## Capabilities

- Create a dynamic URL QR code with redirectUrl and utmSource, utmMedium, and utmCampaign tags
- Encode vCard, WiFi, SMS, email, or phone details directly in a QR code using qrType
- Style a code with fgColor, bgColor, gradientType, dotStyle, cornerStyle, and a frameStyle with frameText
- Cap a code with maxScans or an expiresAt date and change its settings later by slug
- Read scan analytics for one code or the whole account over a range or from and to dates, with granularity and tz
- Set alerts with notifyOnScanCount, notifyOnScansLeft, notifyOnExpiryDays, and notifyOnInactiveDays
- Organise codes into nested folders with a parentId

## Use cases

### Agent-managed campaign QR codes through Jentic

A marketing agent creates tracked QR codes for each campaign and later reports on scans. Through Jentic it calls the create and analytics operations, the developer's own Jentic One instance injects the qrm_ bearer key, and a rule can pin the agent to specific code slugs so it cannot delete others.

Example prompt: POST /qr with qrType 'URL', title 'Summer Campaign', redirectUrl 'https://example.com/summer', utmCampaign 'summer26', then GET `/qr/{slug}/analytics` with range 7

### Retargeting printed codes

Printed QR codes outlive the pages they point to. A dynamic URL code keeps its pattern while its redirectUrl is updated through PATCH `/qr/{slug}`, so posters and packaging keep working after a campaign page moves.

Example prompt: PATCH `/qr/{slug}` for the poster code with redirectUrl 'https://example.com/autumn'

### Scan analytics reporting

GET `/qr/{slug}/analytics` and GET /analytics return scan data for one code or the whole account, filtered by range or period or by from and to dates with a timezone and granularity, so an agent can produce weekly scan reports per campaign.

Example prompt: GET /analytics with from '2026-11-01', to '2026-11-07', tz 'Europe/Dublin', and granularity 'day', then summarise scans per day

### Usage alerts and expiry

Codes with maxScans or expiresAt limits need watching. PATCH `/qr/{slug}/notifications` sets thresholds such as notifyOnScansLeft and notifyOnExpiryDays, and notifyOnInactiveDays flags codes that stopped getting scans.

Example prompt: PATCH `/qr/{slug}/notifications` with notifyOnScansLeft 100 and notifyOnExpiryDays 7

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/qr` | Create a QR code |
| GET | `/qr` | List QR codes |
| PATCH | `/qr/{slug}` | Update a QR code |
| GET | `/qr/{slug}/analytics` | Get QR code analytics |
| GET | `/analytics` | Get account-wide analytics |
| PATCH | `/qr/{slug}/notifications` | Update notification settings |
| POST | `/folders` | Create a folder |

## Key resources

- **QR codes** — Create, read, restyle, retarget, and delete codes by slug
- **Analytics** — Per-code and account-wide scan analytics with date ranges and granularity
- **Notifications** — Scan count, scans left, expiry, and inactivity alerts per code
- **Folders** — Nested folders for organising codes

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 69 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 63 / 100
  - Developer Experience & Jentic Compatibility: 71 / 100
  - AI-Readiness & Agent Experience: 60 / 100
  - Agent Usability: 94 / 100
  - Security: 60 / 100
  - AI Discoverability: 82 / 100
- **View full report:** https://jentic.com/apis/qr-manager.ai/qr-manager/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring QR Manager AI by hand means issuing a qrm_ key, sending it as a bearer token, and mapping the long create body of style, redirect, and vCard or WiFi fields yourself. Through Jentic you install once, import QR Manager AI from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** QR Manager AI puts the code slug in the URL path (`/qr/{slug}`), so a rule can pin your agent to one QR code: it can read analytics or update notifications for that code and nothing else. You choose the operations it may call, so destructive ones like QR code deletion or folder deletion are not included unless you add them.
- **Credential handling:** Your QR Manager AI key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a dynamic QR code' or 'get QR scan analytics', and Jentic returns the matching QR Manager AI operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **QR Code Generator API** — QR code generation service
- **D-QR REST API** — Dynamic QR code service
- **Bitly API** — Link shortening with click analytics

## FAQ

### What authentication does the QR Manager AI API use?

The QR Manager AI API declares an HTTP bearer scheme named ApiKeyAuth in its OpenAPI spec: you send an API key, prefixed with qrm_ and issued under Settings, API Keys, as a bearer token. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at execution time.

### Which plan do I need to create QR codes through the API?

Per the plan table in the spec, the Free tier has no API access, Starter covers listing, reading, analytics, notifications, and folders, and the Pro tier and above add creating, updating, and deleting QR codes.

### What are the rate limits for the QR Manager AI API?

The OpenAPI spec does not state a request rate; its 429 response signals that a plan limit was reached. Check https://qr-manager.ai for the limits attached to your plan.

### How do I create a tracked QR code with QR Manager AI through Jentic?

Install Jentic One, import the QR Manager AI API from the Jentic API Directory, and store your qrm_ key. Your agent searches for 'create a dynamic QR code', Jentic returns POST /qr with its schema, and the agent calls it with qrType, redirectUrl, and UTM fields. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a QR Manager AI MCP server?

You don't need an MCP server to give your agent QR Manager AI. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it, discovering operations on demand rather than loading every tool definition into its context.

### Can I limit what my agent is allowed to do with the QR Manager AI API?

Yes. For a reporting agent, write a rule that allows only GET /analytics and GET `/qr/{slug}/analytics` for the slug 'abc12345', so it can report scans for that one code while creating, retargeting, or deleting codes stays out of reach. Every call it makes is logged.
