QR Code REST API

Generate, manage, and track QR codes programmatically. Integrate QR code creation into your app, workflow, or service in minutes.

Authentication

All API requests require a Bearer token. Generate your API key from your API key settings. Include it in every request:

Authorization: Bearer YOUR_API_KEY

Endpoints

MethodEndpointDescription
POST/api/v1/qrCreate a new QR code
GET/api/v1/qrList your QR codes

POSTCreate a QR Code

Creates a new QR code and returns either JSON metadata or the image file directly, depending on the format parameter.

Request Body

ParameterTypeDescription
namestringRequiredA label for this QR code (1-100 chars)
typestringRequiredURL, WIFI, VCARD, TEXT, EMAIL, PHONE, SMS, or SOCIAL
dataobjectRequiredType-specific data (see QR types below)
formatstringResponse format: "json" (default), "png", or "svg"
sizenumberImage dimensions in pixels, 100-4800 (default: 600)
isDynamicbooleanCreate a dynamic QR code with a trackable redirect URL (default: false)
styleobjectOptional styling (see Styling below)

Example: Create and get JSON metadata

The default format is "json". The QR code is saved to your account and you get back its ID and metadata.

curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Website",
    "type": "URL",
    "data": { "url": "https://example.com" }
  }'

Response (201):

{
  "id": "cm4x...",
  "name": "My Website",
  "type": "URL",
  "isDynamic": false,
  "shortCode": null,
  "shortUrl": null,
  "createdAt": "2026-03-04T12:00:00.000Z"
}

Example: Create and download as PNG

Set "format": "png" to receive the QR code image directly as binary PNG data. The QR code ID is returned in the X-QR-ID response header. Use -o with curl to save to a file.

# Returns the PNG image directly (binary)
curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o my-qr.png \
  -d '{
    "name": "My Website",
    "type": "URL",
    "data": { "url": "https://example.com" },
    "format": "png",
    "size": 800
  }'

Example: Create and download as SVG

Set "format": "svg" for a vector SVG file that scales to any size without losing quality.

# Returns the SVG image directly (XML)
curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o my-qr.svg \
  -d '{
    "name": "My Website",
    "type": "URL",
    "data": { "url": "https://example.com" },
    "format": "svg",
    "size": 600
  }'

Example: Custom styling

Pass a style object to customize colors, dot patterns, and corner shapes.

curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o styled-qr.png \
  -d '{
    "name": "Branded QR",
    "type": "URL",
    "data": { "url": "https://example.com" },
    "format": "png",
    "size": 1000,
    "style": {
      "dotsColor": "#1a1a2e",
      "backgroundColor": "#ffffff",
      "dotsType": "rounded",
      "cornersSquareType": "extra-rounded",
      "cornersSquareColor": "#e94560"
    }
  }'
Style PropertyValues
dotsColorHex color (e.g. "#1a1a2e")
backgroundColorHex color (e.g. "#ffffff")
dotsTyperounded, dots, classy, classy-rounded, square, extra-rounded
cornersSquareTypedot, square, extra-rounded
cornersSquareColorHex color
cornersDotTypedot, square
cornersDotColorHex color

Example: Dynamic QR code

Dynamic QR codes encode a short redirect URL (qrbloom.com/r/...) instead of the target URL directly. You can change the destination later without reprinting the code, and every scan is tracked with analytics.

curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Campaign Link",
    "type": "URL",
    "data": { "url": "https://example.com/promo" },
    "isDynamic": true
  }'

Response (201):

{
  "id": "cm4x...",
  "name": "Campaign Link",
  "type": "URL",
  "isDynamic": true,
  "shortCode": "a1b2c3d4",
  "shortUrl": "https://qrbloom.com/r/a1b2c3d4",
  "createdAt": "2026-03-04T12:00:00.000Z"
}

Example: WiFi QR code

curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o wifi-qr.png \
  -d '{
    "name": "Office WiFi",
    "type": "WIFI",
    "data": {
      "ssid": "MyNetwork",
      "password": "s3cureP@ss",
      "encryption": "WPA"
    },
    "format": "png"
  }'

Example: vCard contact card

curl -X POST https://qrbloom.com/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -o contact.png \
  -d '{
    "name": "Jane Smith Contact",
    "type": "VCARD",
    "data": {
      "firstName": "Jane",
      "lastName": "Smith",
      "organization": "Acme Inc",
      "title": "CTO",
      "email": "jane@acme.com",
      "phone": "+15551234567",
      "website": "https://acme.com"
    },
    "format": "png"
  }'

QR Types

Each type requires specific fields in the data object.

URLurl (required)
TEXTtext (required, max 4296 chars)
WIFIssid (required), password, encryption (WPA/WEP/nopass), hidden
VCARDfirstName (required), lastName, organization, title, email, phone, website, street, city, state, zip, country
EMAILemail (required), subject, body
PHONEphone (required)
SMSphone (required), message
SOCIALtitle (required), bio, links (array of { platform, url, label })

GETList QR Codes

Returns a paginated list of your QR codes. Use page and limit query parameters (max 100 per page).

curl https://qrbloom.com/api/v1/qr?page=1&limit=10 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response (200):

{
  "data": [
    {
      "id": "cm4x...",
      "name": "My Website",
      "type": "URL",
      "isDynamic": false,
      "shortCode": null,
      "destination": null,
      "scanCount": 42,
      "createdAt": "2026-03-04T12:00:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 1,
    "pages": 1
  }
}

Rate Limits

EndpointLimit
POST /api/v1/qr30 requests / minute
GET /api/v1/qr60 requests / minute

Exceeding the limit returns 429 Too Many Requests.

Features

8 QR Types

URL, WiFi, vCard, Text, Email, Phone, SMS, and Social links

PNG & SVG Export

Download QR codes in raster or vector format

Dynamic QR Codes

Update the destination without reprinting

Scan Analytics

Track scans with device, location, and time data

Custom Styling

Set colors, dot styles, and corner shapes

Rate Limiting

60 requests per minute on paid plans

Bearer Auth

Secure API key authentication

JSON Responses

Clean, predictable JSON for every endpoint

Get your API key

Sign up for a Business plan and generate your API key to start building.