Skip to content

Short link and QR code API

The Krealo QR REST API lets you create short links, list them, change their destination and fetch their QR code from your own tools. It is available on the Pro plan only, at US$5.99 a month plus taxes. You generate a personal token on your account page and send it in the Authorization header.

Endpoint reference

GET/domainsapi.op.listDomains
GET/meThe token’s account (email, plan)
GET/linksList your links (folder, tag, state filters; cursor)
POST/linksCreate a link (url; optional slug, title and design, logo included)
POST/links/bulkCreate up to 100 links, one result per item
GET/links/{slug}A link with its stats
PATCH/links/{slug}Change the destination, title, state or QR design (colours, styles, frame, logo)
DELETE/links/{slug}Archive the link (deleted 30 days later)
GET/links/{slug}/statsStats for a period (366 days at most)
GET/links/{slug}/qrQR code as SVG or PNG, with its design
PUT/design/defaultSave a default design for new links (null clears it)
GET/webhooksList your webhooks
POST/webhooksCreate a webhook (secret shown once)
DELETE/webhooks/{id}Delete a webhook

OpenAPI 3.1 specification (for Postman, Insomnia or a client generator): /api/v1/openapi.json

No code

  • Zapier: “New Link” and “New Scan” triggers, “Create Link” and “Change Destination” actions. Add the Krealo QR app to your Zapier
  • Claude, ChatGPT and other assistants (MCP): add a custom connector with the address https://krlo.ca/mcp
  • Integrations

Examples

POST /links · curl
curl -X POST https://krlo.ca/api/v1/links \
  -H "Authorization: Bearer kqr_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: menu-2026" \
  -d '{"url":"https://example.com/menu","slug":"menu"}'
POST /links · JavaScript
const r = await fetch('https://krlo.ca/api/v1/links', {
  method: 'POST',
  headers: { Authorization: 'Bearer kqr_…', 'Content-Type': 'application/json' },
  body: JSON.stringify({ url: 'https://example.com/menu', slug: 'menu' }),
});
const lien = await r.json(); // { slug, short_url, … }
POST /links · Python
import requests

r = requests.post("https://krlo.ca/api/v1/links",
    headers={"Authorization": "Bearer kqr_…"},
    json={"url": "https://example.com/menu", "slug": "menu"})
print(r.json()["short_url"])
GET /links/{slug}/stats
curl "https://krlo.ca/api/v1/links/menu/stats?from=2026-09-01&to=2026-09-30" -H "Authorization: Bearer kqr_…"
PATCH /links/{slug} · design
curl -X PATCH https://krlo.ca/api/v1/links/menu -H "Authorization: Bearer kqr_…" -H "Content-Type: application/json" \
  -d '{"design":{"color":"#1e3a8a","dots":"rounded","corners":"extra-rounded","logo_url":"https://example.com/logo.png","frame":{"style":"cinta","text":"Menu"}}}'
GET /links/{slug}/qr
curl "https://krlo.ca/api/v1/links/menu/qr?format=png&size=1024" -H "Authorization: Bearer kqr_…" -o menu.png
POST /webhooks
curl -X POST https://krlo.ca/api/v1/webhooks -H "Authorization: Bearer kqr_…" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hooks/krealo","events":["link.scanned"]}'

Error codes

400invalid_requestInvalid data or refused destination.
401unauthorizedToken missing, invalid, revoked or expired.
402pro_requiredThe Pro plan is required.
403forbiddenAction refused on this account.
403insufficient_scopeRead-only token: it can only read (GET).
404not_foundThis link does not exist or is not yours.
409slug_takenThis slug is already taken.
409idempotency_in_progressIdempotency-Key already used: request in progress (409) or with different content (422).
422idempotency_mismatchIdempotency-Key already used: request in progress (409) or with different content (422).
429rate_limitedMore than 120 requests per minute: wait Retry-After seconds.
503not_configuredService temporarily unavailable.

Authentication

The API is for Pro accounts only. Generate your personal token on your account page, then send it in the header Authorization: Bearer <token>. The base URL is https://qr.krealomedia.com/api/v1.

What the API can do

  • Create a link, or up to 100 at once, with an Idempotency-Key header so you never create two.
  • List your links, filtered by folder, tag or state, with cursor pagination.
  • Change a link’s destination, title or state, and archive it.
  • Read stats for a period: scans, unique visitors, countries and devices.
  • Set the QR design when you create or update a link: colours, dot and corner styles, frame with text, and your logo from a public https address or in base64 (PNG, JPEG or WEBP, up to 2 MB).
  • Download the QR code as SVG or PNG with its design: colours, dots, logo and frame.
  • Receive signed webhooks when a link is created, updated, archived, blocked or scanned.

Rate limit

The limit is 120 requests per minute per account. Every response tells you where you stand with the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers; beyond the limit, the 429 response says in Retry-After how many seconds to wait.

Accepted destinations

Only http and https addresses are accepted. Dangerous destinations, such as javascript: or data:, are blocked.

See also

Free QR code generatorFree QR code generator: paste an address, get a QR code and a tracked short link, then download the PNG. No credit card needed.Link shortener with click trackingLink shortener: create short links, count clicks and change the destination later with Pro. Free for up to 10 active links. Account required.QR code with logoQR code with logo, custom colours and styles, in PNG, SVG or PDF for printing. A Krealo QR Pro feature at US$5.99 a month.Dynamic QR codeDynamic QR code: edit the destination address without reprinting the code, and track scans. A Krealo QR Pro feature at US$5.99 a month.vCard QR code for your business cardCreate a vCard QR code for your business card: a contact page with an “Add to contacts” button (.vcf) and an optional photo. Free to start.Wi-Fi QR codeCreate a free Wi-Fi QR code: guests scan it and join your network without typing the password. The details stay inside the code itself.Restaurant menu QR codeCreate a QR code for your restaurant menu as a PDF: guests open it on their phone, and you can replace the PDF without changing the code.WhatsApp QR codeCreate a WhatsApp QR code: one scan opens a chat with your number, with a message already written. Free with an account, scans are counted.Link in bio pageCreate a link in bio page with buttons and social links, shared by short link or QR code. Free with 5 buttons; Pro for more pages and 20 buttons.A Bitly alternative for short links and QR codesAn honest comparison of Krealo QR and Bitly: short links, dynamic QR codes, analytics and link pages. Where Bitly wins and where Krealo QR is enough.A QR Code Monkey alternative with scan trackingAn honest comparison of Krealo QR and QR Code Monkey: design options, formats, static or dynamic codes and scan tracking. Which tool should you pick?A QR Code Generator PRO alternativeAn honest comparison of Krealo QR and QR Code Generator PRO: dynamic codes, scan tracking, code types and free trial. No third-party prices.

Frequently asked questions

Who can use the API?

Pro plan accounts. The personal token is generated on the account page.

What is the request limit?

It is 120 requests per minute.

Can the QR code returned by the API have a logo?

Yes. The /links/{slug}/qr endpoint returns the QR code with the link’s saved design (colours, dot style, logo and frame), as SVG or as a PNG from 128 to 2048 pixels. The design is set in the app, or with the design field of POST /links and PATCH /links/{slug}, logo included.