SmartQRCode
Pricing
  1. Home
  2. /For business
  3. /QR code API
  4. /API reference
Version 1.1.0

QR code API reference

Every endpoint, parameter and response. Generated from the specification the API itself is tested against, so it cannot describe something that is not there.

See business plansTalk to us

Create and manage dynamic QR codes, and read their scan analytics.

Authentication

Every request takes a bearer token: Authorization: Bearer sk_live_.... Keys are created in the dashboard under API access and are shown once — we store only a SHA-256 hash, so a lost key is replaced rather than recovered.

Rate limits and quota

Responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. The limit is a monthly request quota and resets at the start of the next UTC month; X-RateLimit-Limit is the string unlimited on plans with no cap. There is also a short burst limit, which responds 429 with Retry-After in seconds.

Idempotency

POST accepts an Idempotency-Key header. Sending the same key with the same body replays the original response — including its status code — with Idempotent-Replay: true, rather than creating a second code. Sending the same key with a *different* body is a 409: reusing a key for a different request is always a client bug, and replaying the wrong response would hide it.

Keys are remembered for 24 hours. Retries are safe to send without a key too; they simply are not deduplicated.

Retargeting

Changing target_url on a dynamic code is the point of the product: the printed code keeps working and resolves somewhere new. Static and landing-page codes have no single target, so they reject a target_url update with a 409 instead of silently accepting one that could not take effect.

The machine-readable OpenAPI 3.1 document is at GET /api/v1/openapi and needs any valid key. Generate a client from it rather than from this page.

Endpoints

Every response is JSON. Errors carry a single error string, and every endpoint can return 401 for a missing key or 429 when a limit is hit.

get/api/v1/qr-codes

List QR codes

Your codes, newest first, excluding deleted ones. scan_count includes archived scans, so it never shrinks.

Parameters

limitquery · integer
Page size. Values above 100 are clamped to 100.
offsetquery · integer

Responses

200
A page of QR codes.
401
Missing or invalid API key.
429
Monthly quota or burst limit exceeded.
500
Server error.
post/api/v1/qr-codes

Create a dynamic QR code

Creates a redirect code. Send Idempotency-Key to make a retry safe. Codes created here are always dynamic redirects: a landing-page type needs content this endpoint does not accept yet, and defaulting to one would produce a code that scans to an empty page.

Headers and parameters

Idempotency-Keyheader · string
An opaque value you generate per logical create. A repeat with the same body replays the first response; a repeat with a different body is a 409.

Request body

target_urlstring · required
Required. Must be http or https.
namestring · optional
A label for your own reference.
campaign_typestring · optional
domain_idstring · optional
Optional. One of your verified custom domains, from the Domains page. Omit for the platform domain. A domain that is not yours, or not yet verified, is rejected with 400 rather than silently replaced — the hostname is baked into the printed image.

Responses

201
Created.
400
Missing or invalid `target_url`, an unknown or unverified `domain_id`, malformed JSON, or an over-long idempotency key.
401
Missing or invalid API key.
403
The plan's QR code limit has been reached.
409
This `Idempotency-Key` was used with a different body, or a request with it is still in flight.
429
Monthly quota or burst limit exceeded.
503
A short code could not be allocated, or idempotency could not be guaranteed. Retry.
get/api/v1/qr-codes/{id}

Retrieve a QR code

Responses

200
The QR code.
401
Missing or invalid API key.
404
No such code on this account.
429
Monthly quota or burst limit exceeded.
patch/api/v1/qr-codes/{id}

Update a QR code

Retarget, rename, or pause. Send only the fields you want to change; omitted fields are left alone. At least one recognised field is required.

Request body

target_urlstring · optional
Only valid on codes that have a target. Static and landing-page codes return 409.
namestring or null · optional
pausedboolean · optional
A paused code resolves to a 'paused' page instead of its target.

Responses

200
The updated QR code.
400
A field had the wrong type, or no recognised field was supplied.
401
Missing or invalid API key.
404
No such code on this account.
409
This code type has no target to change.
429
Monthly quota or burst limit exceeded.
delete/api/v1/qr-codes/{id}

Delete a QR code

A soft delete: the code stops resolving and scans of the printed code reach a 'no longer active' page. Its scan history is retained and it can be restored from the dashboard.

Responses

200
Deleted.
401
Missing or invalid API key.
404
No such code on this account.
429
Monthly quota or burst limit exceeded.
get/api/v1/qr-codes/{id}/analytics

Scan analytics for a QR code

total_scans is the code's lifetime total including archived scans. The breakdowns cover the requested window only — the two are different periods on purpose, and labelled as such.

Parameters

periodquery · integer
Window in days for the breakdowns.

Responses

200
Scan analytics.
401
Missing or invalid API key.
404
No such code on this account.
429
Monthly quota or burst limit exceeded.
500
Server error.
Ready when you are

Keys are created in the dashboard, in about a minute

Business plans include the API, webhooks and a monthly request quota. Tell us the call volume you expect and we will point you at the right tier.

See business plansTalk to us
SmartQRCode

Dynamic QR codes you can edit after they are printed, with scan analytics on every one. Used by 120,000+ businesses, from a single table tent to a warehouse of asset tags.

Create a QR codeTalk about Business

QR code types

  • Website QR code
  • Menu QR code
  • WiFi QR code
  • PDF QR code
  • Business card QR code
  • WhatsApp QR code
  • Google review QR code
  • Event QR code
  • Location QR code

More QR codes

  • Text QR code
  • Image QR code
  • Video QR code
  • Social media QR code
  • App download QR code
  • Google Form QR code
  • Business profile QR code
  • Facebook QR code
  • All QR code types

Features

  • Dynamic QR codes
  • QR codes with tracking
  • QR code with logo
  • Custom QR code design
  • QR codes that never expire
  • One-time payment QR code
  • No-subscription QR codes
  • Unlimited QR codes

Business

  • QR codes for business
  • Bulk QR code generator
  • QR code API
  • QR code webhooks
  • Custom scan domains
  • White label QR codes
  • Team accounts and roles
  • QR code management platform

Solutions

  • Restaurants
  • Retail
  • Events
  • Healthcare
  • Real estate
  • Hotels
  • All use cases

Resources

  • Guides
  • Compare QR generators
  • Static vs dynamic
  • QR code cost
  • Buy a QR code
  • Cheap QR codes
  • Pricing
  • Help centre
  • About us
  • Contact us
GDPR compliantSSL securedPrivacy first
Terms of servicePrivacy policySecurity·© 2026 SmartQRCode