NiceQR.me Docs

Introduction

NiceQR.me public API for programmatic access and server-to-server integrations with API Keys.

Overview

This documentation only covers programmatic access with API Keys for server-to-server integrations.

JWT-based website and dashboard flows are intentionally excluded from this docs set, including:

  • user registration and login
  • Google login and token refresh
  • dashboard-only QR management
  • dynamic QR management
  • analytics, teams, and other app-internal flows

Base URL

https://api.niceqr.me/v1

Current Public Surface

The currently documented public API surface is:

  • POST /v1/qr/generate

Response Format

Successful responses return a consistent JSON envelope:

{
  "success": true,
  "data": { ... }
}

On error:

{
  "success": false,
  "error": {
    "message": "Description of what went wrong",
    "code": "BAD_REQUEST"
  }
}

Most validation and server errors also use the same envelope:

{
  "success": false,
  "error": {
    "message": "Description of what went wrong",
    "code": "VALIDATION_ERROR"
  }
}

Common Error Codes

CodeDescription
BAD_REQUESTInvalid input or parameters
PREMIUM_REQUIREDThe account lacks the required plan access for the requested QR option
VALIDATION_ERRORData validation failed
SERVER_ERRORInternal server error

Authentication

All documented public endpoints use an API key from Dashboard > API Keys in the X-Api-Key header:

X-Api-Key: nq_live_your_api_key

See API Key Authentication for setup details and failure behavior.

For API-key-protected routes, missing or invalid credentials may intentionally return 404 Not Found with an empty body instead of a JSON error envelope.

Rate Limits

  • POST /v1/qr/generate: 60 req/min route-level protection
  • Each API key also enforces its own dashboard-configured per-minute limit.

Quick Start

# Generate a QR code via the public API key endpoint
curl -X POST https://api.niceqr.me/v1/qr/generate \
  -H "X-Api-Key: nq_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "data": "https://example.com",
    "bodyStyle": "square",
    "bodyBrush": { "type": "Solid", "color": "#000000" }
  }'

# Response: { "success": true, "data": { "svg": "<svg>...</svg>" } }

On this page