canonical: https://jentic.com/apis/kuikcode.com/kuikcode

# KuikCode API

The KuikCode API creates dynamic QR codes whose destination can be changed after the code is printed, and reports every scan. It files codes in folders with tags, applies designs, templates, and logos, adds UTM parameters, and can bulk-create or bulk-update codes, then exposes scan lists, totals, and time series filtered by code, folder, or tag. The same key also builds and publishes KuikPage landing pages, deploys hosted sites from a ZIP, collects form submissions, and sends scan events to signed webhooks.

## For AI agents

Create and restyle dynamic KuikCodes, repoint a printed code to a new destination, read scan analytics, and manage the folders, landing pages, and webhooks around them.

## Scope

Does not handle email campaigns, paid ad buying, or general web analytics beyond code scans. Use for creating dynamic QR codes, reading their scans, and managing the KuikPages and webhooks around them only.

## Capabilities

- Create a dynamic QR code with a name, destination, folderId, tags, UTM parameters, design or templateId, and optional accessCode password
- Change where an already printed code points by updating its destination, singly or across many codes with the bulk update
- Bulk-create codes from rows or CSV with a dryRun preview confirmed by previewHash
- Read scans for a code, folder, or tag and pull scan totals and time series for a date range
- Download a code's artwork in a chosen format, size, and background, or preview a restyle before applying it
- Build, edit, and publish KuikPage landing pages and deploy hosted sites from a ZIP upload
- Register webhooks for scan events, test them, retry failed deliveries, and rotate the signing secret

## Use cases

### Repointing Printed QR Codes

A restaurant or retailer prints codes once and changes what they open over time. The agent finds the code by tag or search query, updates its destination to the new menu or offer URL, and the printed code keeps working. For a whole campaign, the bulk update applies a new destination, folder, or tags to a list of code ids in one call.

Example prompt: Call GET /codes with tag 'spring' to find the menu codes, then PATCH `/codes/bulk` with their ids and a destination of type 'url' pointing to 'https://example.com/summer-menu'

### Campaign Scan Reporting

Marketers want to know which printed placements work. The agent reads scan totals and a time series for a date range, filtered by folder or tag, and drills into the raw scans of one code, then summarises which placements drove the most scans. UTM parameters set on each code carry the campaign through to web analytics.

Example prompt: Call GET `/analytics/summary` and GET `/analytics/timeseries` with from '2026-10-01', to '2026-10-31', and tag 'trade-show', then GET `/codes/{id}/scans` for the top code

### Bulk Code Generation for Locations

A chain with many stores needs one code per location. The agent sends rows or a CSV to the bulk-create operation with dryRun to get a preview and a previewHash, checks the preview, then confirms with that previewHash so the codes are created in a new or existing folder with a shared design or template.

Example prompt: Call POST `/codes/bulk` with a CSV of store URLs, dryRun true, and newFolderName 'Store doors', then repeat the call with the returned previewHash to create the codes

### AI Agent QR Campaign Management via Jentic

An AI agent runs KuikCode through Jentic without handling the kc_live_ key. It searches by intent, receives the matching code, scan, or webhook operation with its input schema, and executes with the bearer key injected at run time, so repointing a code or pulling scan numbers is one step in a larger marketing workflow.

Example prompt: Search Jentic for 'change where a QR code points', load the PATCH `/codes/{id}` schema, and execute it with the code id and a new destination

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/codes` | Create a code |
| PATCH | `/codes/{id}` | Update a code |
| PATCH | `/codes/bulk` | Update many codes |
| POST | `/codes/bulk` | Create many codes |
| GET | `/codes/{id}/image` | Download the code's artwork |
| GET | `/scans` | List scans |
| GET | `/analytics/timeseries` | Scans over time |
| POST | `/webhooks` | Create a webhook |

## Key resources

- **Codes** — Create, read, update, delete, bulk-create, bulk-update, restyle, and download dynamic QR codes
- **Scans and analytics** — List scans and read scan totals and time series by code, folder, or tag
- **Folders and templates** — Organise codes in folders and reuse saved designs as templates
- **KuikPages and sites** — Create, edit, and publish landing pages and deploy hosted sites from ZIP archives
- **Webhooks** — Register scan-event webhooks, list deliveries, retry, test, and rotate signing secrets
- **Images** — Generate images, add images, and search and import stock photos

## 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:** 50 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 85 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 24 / 100
  - Agent Usability: 93 / 100
  - Security: 60 / 100
  - AI Discoverability: 84 / 100
- **View full report:** https://jentic.com/apis/kuikcode.com/kuikcode/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 KuikCode by hand means sending a kc_live_ bearer key with the right read or write scope, following next_cursor through every list, sending Idempotency-Key on posts, and backing off on Retry-After. Through Jentic you install once, import KuikCode from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** KuikCode puts the code id in the URL path (`/codes/{id}`), so a rule can pin your agent to one code and the operations you pick. You choose that set, so destructive ones like code deletion or webhook secret rotation are not included unless you add them.
- **Credential handling:** Your KuikCode 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 'QR code scans over time', and Jentic returns the matching KuikCode 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 creation with design options
- **GetDynamicQR API** — Dynamic QR codes with editable destinations
- **Bitly API** — Short links with click analytics

## FAQ

### What authentication does the KuikCode API use?

Per its OpenAPI spec, the KuikCode API uses a scheme named apiKey that is sent as a bearer token: Authorization: Bearer kc_live_... with a key created under Settings, Developers. Keys belong to a workspace and are either read-only or read and write, and a read-only key on a write returns insufficient_scope. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at execution time.

### Can I change where a printed QR code points with the KuikCode API?

Yes. PATCH `/codes/{id}` accepts a new destination, and PATCH `/codes/bulk` applies a destination, folderId, tags, or archived flag to a list of ids at once. The printed code itself does not change, so the new destination takes effect on the next scan.

### What are the rate limits for the KuikCode API?

The API docs in the OpenAPI spec say limits are per key and per minute, with writes drawing from a budget a third the size of reads. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset, and a 429 includes Retry-After. The spec does not state the numeric budget, which depends on your plan.

### How do I read scan analytics through Jentic with the KuikCode API?

Search Jentic for 'QR code scans over time' and it returns the time series operation with its input schema. Execute GET `/analytics/timeseries` with from, to, and an optional codeId, folderId, or tag, and use GET `/analytics/summary` for totals. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Is there a KuikCode MCP server?

You don't need an MCP server to give your agent the KuikCode API. Jentic connects it directly from the API Directory: import it, store your credential once, and your agent calls it. Operations are discovered by intent on demand, so no extra server's tool definitions are loaded into the agent's context.

### Can I limit what my agent is allowed to do with the KuikCode API?

Yes. A reporting agent can be given only the scan and analytics reads, so it can summarise campaign performance but cannot touch any code. If it should maintain a single code, allow GET and PATCH on that one code id and nothing else, and every call it makes is logged by your own instance.
