API Reference
Last updated:
Authentication
Pass your API key via the x-api-key header on every request:
x-api-key: qk_live_YOUR_API_KEY
Get your key from Settings → API Keys.
Error Responses
{
"error": {
"code": "quota_exceeded",
"message": "Monthly limit reached. Upgrade your plan.",
"suggestion": "Upgrade to Pro for unlimited QR codes."
}
}| Status | Meaning |
|---|---|
| 400 | Validation error |
| 401 | Missing or invalid API key |
| 403 | Quota exceeded or feature not available on your plan |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
POST /v2/qr/generate
Generate a styled QR code. Returns a public image URL and optional base64 data.
// Request
{
"content": "https://qr-maker.io",
"format": "png",
"style": {
"width": 500,
"height": 500,
"margin": 10,
"dotsOptions": { "color": "#6366f1", "type": "rounded" },
"backgroundOptions": { "color": "#ffffff" },
"cornersSquareOptions": { "type": "extra-rounded", "color": "#6366f1" },
"cornersDotOptions": { "type": "dot", "color": "#6366f1" }
}
}
// Response 200
{
"data": {
"id": "uuid",
"content": "https://qr-maker.io",
"format": "png",
"type": "image",
"url": "https://...public-url.png",
"alt": "QR code for https://qr-maker.io",
"short_link": { "code": "AbCdEfG", "url": "https://go-to.at/AbCdEfG" },
"created_at": "2026-04-12T..."
}
}Dot types: square dots rounded extra-rounded classy classy-rounded
POST /v2/links
Create a tracked short link with click analytics.
// Request
{
"target_url": "https://qr-maker.io",
"custom_code": "my-link" // optional
}
// Response 201
{
"data": {
"id": "...",
"code": "my-link",
"short_url": "https://go-to.at/my-link",
"target_url": "https://qr-maker.io",
"status": "active",
"created_at": "2026-04-12T..."
}
}GET /v2/links
List your short links with cursor pagination.
GET /v2/links?limit=25&cursor=2026-04-01T00:00:00Z
PATCH /v2/links/:id
Update target URL, status, or expiration. Change destination without reprinting the QR.
{
"target_url": "https://new-destination.com",
"status": "active" // or "disabled"
}DELETE /v2/links/:id
Permanently delete a short link and all associated data. Returns 204.
GET /v2/links/:id/analytics
Click analytics for the last 30 days.
// Response 200
{
"data": {
"total_clicks": 142,
"unique_visitors": 89,
"by_country": [{ "country": "ES", "clicks": 87 }, ...],
"by_day": [{ "date": "2026-04-01", "clicks": 12 }, ...]
}
}POST /v2/templates
Save a QR style preset. Presets are unlimited and store visual settings (colors, dots, logos) for reuse.
// Request
{
"name": "Brand Violet",
"options": {
"dotsOptions": { "color": "#6366f1", "type": "rounded" },
"backgroundOptions": { "color": "#0f172a" }
}
}
// Response 201
{
"data": {
"id": "...",
"name": "Brand Violet",
"options": { ... },
"thumbnail_url": "https://...",
"version": 1
}
}POST /v2/templates/:id/render
Generate a QR code using a saved style preset.
{
"content": "https://qr-maker.io",
"format": "png"
}POST /v2/landings/publish-with-qr
Publish an HTML landing page, create a short link, and generate a QR code — all in one call.
// Request
{
"html": "<html><body><h1>Hello</h1></body></html>",
"title": "My Landing"
}
// Response 201
{
"data": {
"landing": { "url": "https://go-to.at/abc123", "short_url": "https://go-to.at/abc123", "title": "My Landing" },
"qr": { "type": "image", "format": "png", "url": "https://...qr.png", "alt": "QR code for My Landing" },
"manage": { "url": "https://qr-maker.io/manage/abc123?token=..." }
}
}GET /v2/usage
Current billing period usage and plan limits.
GET /v2/capabilities
Full feature matrix for your plan — quotas, rate limits, and available features.
Need help?
Email support@qr-maker.io or check the OpenAPI spec for all parameters.