QRCG Public API (Preview) (3.0.0-preview.1)

Download OpenAPI specification:

📋 Preview Release: This API is currently in preview. While production-ready, the API may evolve based on customer feedback. We will communicate any breaking changes in advance through our developer portal and provide migration guides when needed.

The QR Code Generator PRO API

QR Code Generator PRO's API enables you to rapidly create and customize QR Codes and view QR Code scan data within your existing workflow, making it easier to automate and manage your QR Codes.

What you can do

The API enables the following actions:

  1. Generate new URL QR Codes
  2. Customize QR Codes
  3. Update destination URLs of existing QR Codes
  4. Pull aggregate scan analytics for individual QR Codes

Note - only URL QR Codes are currently available through the API. If you have requests for future iterations of the API or use cases you'd like to see supported, please reach out to api-support@qr-code-generator.com.

What you need to get started

A QR Code Generator PRO account. Log in to your account and verify your QR Code creation limits.

An API Key.

  1. Log in and navigate to Account Settings
  2. Generate your API key

Authentication

All endpoints require an API key to be provided via the Authorization header using the Key scheme (e.g., Authorization: Key <your-api-key>).

QR Codes

QR Code creation and management

List all dynamic QR Codes

Retrieves a list of all dynamic QR Codes for the authenticated account.

Authorizations:
apiKeyAuth
query Parameters
perPage
integer [ 1 .. 50 ]
Default: 10

Maximum number of QR codes to return (default 10, max 50)

cursor
string^[A-Za-z0-9+/=_-]+$

Cursor for pagination. Use the value from nextCursor from the previous response.

Responses

Response Schema: application/json
required
Array of objects (QrCodeListResponse)
Array
id
required
string (QrCodeId) ^[0-9]{1,10}$
Example: "1337"

Unique identifier of the QR Code

type
required
string (QrCodeType)
Value: "url"
Example: "url"

The type of the QR Code.

title
string
Example: "My QR Code"

Title of the QR Code as displayed in the app.

status
required
string (QrCodeStatus)
Enum: "active" "paused"
Example: "active"

Whether the QR Code is active (scannable) or paused (not scannable).

createdAt
required
string <date-time>
Example: "2025-09-18T07:38:50Z"

The creation timestamp of the QR Code in ISO 8601 format.

required
object (QrCodeScansTotal)
previewUrl
required
string <uri>
Example: "https://cdn.qr-code-generator.com/qrcode-preview-api/iwqenadIAdaduiasdasnmsadyyqweqpaskdjadUAIDADASDnadjad7sad8ad8a"

The preview URL of the QR Code image. Note that this is a temporary URL meant for preview purposes and may expire after some time.

required
object (PaginationResponse)
nextCursor
string
Example: "eyJpZCI6IjEyMzQ1In0"

Cursor for the next page. Omitted when there are no more results.

hasMore
required
boolean
Example: "true"

Whether more results are available

Response samples

Content type
application/json
Example
{}

Create a dynamic QR Code

Creates a dynamic QR Code. The type field in the request body determines the QR Code type. Currently only "url" type is supported. Requires a valid subscription. All customizations are optional.

Authorizations:
apiKeyAuth
Request Body schema: application/json
required
type
required
string (QrCodeType)
Example: "url"

The type of QR Code to create. Must be "url" for this request.

url
required
string (QrCodeDestinationUrl) [ 1 .. 1500 ] characters ^https?://.*
Example: "https://example.com"

The destination URL for the QR Code. Must be a valid HTTP or HTTPS URL. Supports internationalized URLs with non-ASCII characters.

title
string <= 150 characters
Example: "My Dynamic QR Code"

Optional title of the QR Code as displayed in the app.

object (QrCodeCustomizationRequest)

Customization options for requests. All fields are optional - omitted fields will use defaults.

object (QrCodeFrame)
object (QrCodeBackground)
object (QrCodeCorners)
object (QrCodePattern)
object (QrCodeLogo)

Responses

Request samples

Content type
application/json
{
  • "type": "url",
  • "title": "My Dynamic QR Code",
  • "customizations": {
    }
}

Response samples

Content type
application/json
{
  • "id": "1337",
  • "type": "url",
  • "title": "string",
  • "createdAt": "2025-09-18T07:38:50Z",
  • "status": "active",
  • "customizations": {
    },
}

Update QR Code

Updates properties of an existing dynamic QR Code, such as its status (active or paused), destination URL and design/customization.

Authorizations:
apiKeyAuth
path Parameters
qrcodeId
required
string (QrCodeId) ^[0-9]{1,10}$
Example: 1337

Unique identifier of the QR Code

Request Body schema: application/json
required
status
string (QrCodeStatus)
Enum: "active" "paused"
Example: "active"

Whether the QR Code is active (scannable) or paused (not scannable).

url
string (QrCodeDestinationUrl) [ 1 .. 1500 ] characters ^https?://.*
Example: "https://example.com"

The destination URL for the QR Code. Must be a valid HTTP or HTTPS URL. Supports internationalized URLs with non-ASCII characters.

title
string <= 150 characters
Example: "My Dynamic QR Code"

Optional title of the QR Code.

object (QrCodeCustomizationRequest)

Customization options for requests. All fields are optional - omitted fields will use defaults.

object (QrCodeFrame)
object (QrCodeBackground)
object (QrCodeCorners)
object (QrCodePattern)
object (QrCodeLogo)

Responses

Response Schema: application/json
One of
id
string (QrCodeId) ^[0-9]{1,10}$
Example: "1337"

Unique identifier of the QR Code

type
string
Example: "url"

The type of the QR Code.

title
string

Title of the QR Code as displayed in the app.

createdAt
string <date-time>
Example: "2025-09-18T07:38:50Z"

The creation timestamp of the QR Code in ISO 8601 format.

status
string (QrCodeStatus)
Enum: "active" "paused"
Example: "active"

Whether the QR Code is active (scannable) or paused (not scannable).

object (QrCodeCustomizationResponse)

Customization options in responses. All fields are always present with their current or default values.

required
object (QrCodeFrame)
required
object (QrCodeBackground)
required
object (QrCodeCorners)
required
object (QrCodePattern)
required
object (QrCodeLogo)
url
required
string (QrCodeDestinationUrl) [ 1 .. 1500 ] characters ^https?://.*
Example: "https://example.com"

The destination URL for the QR Code. Must be a valid HTTP or HTTPS URL. Supports internationalized URLs with non-ASCII characters.

previewUrl
string <uri>
Example: "https://cdn.qr-code-generator.com/qrcode-preview-api/iwqenadIAdaduiasdasnmsadyyqweqpaskdjadUAIDADASDnadjad7sad8ad8a"

The preview URL of the QR Code image. Note that this is a temporary URL meant for preview purposes and may expire after some time.

Request samples

Content type
application/json
Example
{
  • "status": "paused"
}

Response samples

Content type
application/json
{
  • "id": "1337",
  • "type": "url",
  • "title": "string",
  • "createdAt": "2025-09-18T07:38:50Z",
  • "status": "active",
  • "customizations": {
    },
}

Retrieve details of a dynamic QR Code

Retrieves the details of a dynamic QR Code by its unique identifier.

Authorizations:
apiKeyAuth
path Parameters
qrcodeId
required
string (QrCodeId) ^[0-9]{1,10}$
Example: 1337

Unique identifier of the QR Code

Responses

Response Schema: application/json
id
string (QrCodeId) ^[0-9]{1,10}$
Example: "1337"

Unique identifier of the QR Code

type
string
Example: "url"

The type of the QR Code.

title
string

Title of the QR Code as displayed in the app.

createdAt
string <date-time>
Example: "2025-09-18T07:38:50Z"

The creation timestamp of the QR Code in ISO 8601 format.

status
string (QrCodeStatus)
Enum: "active" "paused"
Example: "active"

Whether the QR Code is active (scannable) or paused (not scannable).

object (QrCodeCustomizationResponse)

Customization options in responses. All fields are always present with their current or default values.

required
object (QrCodeFrame)
required
object (QrCodeBackground)
required
object (QrCodeCorners)
required
object (QrCodePattern)
required
object (QrCodeLogo)
url
required
string (QrCodeDestinationUrl) [ 1 .. 1500 ] characters ^https?://.*
Example: "https://example.com"

The destination URL for the QR Code. Must be a valid HTTP or HTTPS URL. Supports internationalized URLs with non-ASCII characters.

previewUrl
string <uri>
Example: "https://cdn.qr-code-generator.com/qrcode-preview-api/iwqenadIAdaduiasdasnmsadyyqweqpaskdjadUAIDADASDnadjad7sad8ad8a"

The preview URL of the QR Code image. Note that this is a temporary URL meant for preview purposes and may expire after some time.

Response samples

Content type
application/json
{
  • "id": "1337",
  • "type": "url",
  • "title": "string",
  • "createdAt": "2025-09-18T07:38:50Z",
  • "status": "active",
  • "customizations": {
    },
}

Get the total scan count for a dynamic QR Code

Retrieves the total number of times this QR Code has been scanned. Returns both total scans and unique scans (by IP address).

Authorizations:
apiKeyAuth
path Parameters
qrcodeId
required
string (QrCodeId) ^[0-9]{1,10}$
Example: 1337

Unique identifier of the QR Code

Responses

Response Schema: application/json
total
required
integer >= 0
Example: "1337"

Total number of scans for the QR Code since creation

unique
required
integer >= 0
Example: "900"

Number of unique scans (a combination of IP address and user agent) for the QR Code since creation

Response samples

Content type
application/json
{
  • "total": 1337,
  • "unique": 900
}

Get scan totals over time for a dynamic QR Code

Retrieves the total number of scans for this QR Code over time. The results can be filtered by date range and grouped by an interval (hourly, daily, monthly).

Authorizations:
apiKeyAuth
path Parameters
qrcodeId
required
string (QrCodeId) ^[0-9]{1,10}$
Example: 1337

Unique identifier of the QR Code

query Parameters
startDate
required
string <date>
Example: startDate=2024-07-10

Start date (YYYY-MM-DD). Must be before the endDate.

endDate
required
string <date>
Example: endDate=2024-09-11

End date (YYYY-MM-DD). Must be after the startDate.

interval
required
string (ScanTotalsInterval)
Enum: "hour" "day" "month"
Example: interval=month

Aggregation interval for scan totals

Responses

Response Schema: application/json
startDate
required
string <date>
Example: "2024-07-01"

Start date of the aggregation period (YYYY-MM-DD)

endDate
required
string <date>
Example: "2024-09-30"

End date of the aggregation period (YYYY-MM-DD)

interval
required
string (ScanTotalsInterval)
Enum: "hour" "day" "month"
Example: "month"

Aggregation interval for scan totals

required
Array of objects (ScanTotalsItem)
Example: [{"time":"2024-07-01T00:00:00Z","total":45,"unique":42},{"time":"2024-08-02T00:00:00Z","total":89,"unique":67},{"time":"2024-09-03T16:00:00Z","total":123,"unique":98}]

Array of scan data points. Each entry contains the period timestamp and its total and unique scan counts.

Array
time
required
string <date-time>
Example: "2025-06-01T00:00:00Z"

ISO 8601 timestamp representing the start of the aggregation period.

total
required
integer >= 0
Example: "100"

Total number of scans captured during the aggregation period.

unique
required
integer >= 0
Example: "10"

Number of unique scans captured during the aggregation period.

Response samples

Content type
application/json
Example
{
  • "startDate": "2024-07-01",
  • "endDate": "2024-09-30",
  • "interval": "month",
  • "scans": [
    ]
}

Account

Account information and entitlements

Retrieve account entitlements

Returns the entitlements associated with the calling user's account, such as subscription tier, quotas/limits and usage information.

Authorizations:
apiKeyAuth

Responses

Response Schema: application/json
accountType
string (AccountType)
Enum: "free" "trial" "paid"
Example: "paid"

The type of account classification

subscriptionTier
string
Example: "Professional"
Array of objects (AccountEntitlement)
Array
name
required
string
Example: "activeDynamicQrCodes"

Unique identifier for this entitlement type

description
required
string
Example: "Active dynamic QR codes in your account"

Human-readable description of what this entitlement represents for the account

limit
required
integer >= 0
Example: "50"

Maximum allowed value for this entitlement

usage
required
integer >= 0
Example: "42"

Current usage/count for this entitlement

Response samples

Content type
application/json
{
  • "accountType": "paid",
  • "subscriptionTier": "Professional",
  • "entitlements": [
    ]
}