QRcodly
APIQr code

Create a new QR code

Creates a new QR code based on the provided data. Supports 8 content types: URL, Text, WiFi, vCard, Email, Location, Event, and EPC. If the QR code is dynamic (contentType=URL and isDynamic=true), a short URL is automatically generated and linked so the destination can be changed later. This endpoint is publicly accessible (no auth required) but rate-limited. Authenticated users get their QR codes saved to their account.

POST
/qr-code

Authorization

bearerAuth
AuthorizationBearer <token>

Authenticate with a Bearer token. Pass your API key in the Authorization header: Authorization: Bearer <your-api-key>

In: header

Request Body

application/json

name*|

User-defined name for the QR code (max 50 characters)

Lengthlength <= 50
content*|||||||

QR code content as a discriminated union — the "type" field determines which data schema applies

config?

QR code visual styling configuration. Optional when templateId is provided — the template styling will be used as the base. Any fields provided here override the template values.

templateId?string

ID of a saved design template to apply. The template styling (colors, shapes, logo) is used as the base config. You can override individual fields via the config parameter.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
[key: string]?never

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.qrcodly.de/api/v1/qr-code" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "content": {      "type": "url",      "data": {        "url": "http://example.com"      }    }  }'
{
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "name": "string",
  "config": {
    "width": 0,
    "height": 0,
    "margin": 0,
    "image": "string",
    "imageOptions": {
      "hideBackgroundDots": true
    },
    "dotsOptions": {
      "type": "dots",
      "style": {
        "type": "hex",
        "value": "string"
      }
    },
    "cornersSquareOptions": {
      "type": "dot",
      "style": {
        "type": "hex",
        "value": "string"
      }
    },
    "cornersDotOptions": {
      "type": "dot",
      "style": {
        "type": "hex",
        "value": "string"
      }
    },
    "backgroundOptions": {
      "style": {
        "type": "hex",
        "value": "string"
      }
    }
  },
  "content": {
    "type": "url",
    "data": {
      "url": "http://example.com",
      "isDynamic": true
    }
  },
  "qrCodeData": "string",
  "previewImage": "string",
  "createdBy": "string",
  "shortUrl": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "shortCode": "strin",
    "name": null,
    "destinationUrl": "http://example.com",
    "qrCodeId": "8a619d64-dbe8-4c9d-9490-babe22a53a28",
    "customDomainId": null,
    "isActive": true,
    "createdBy": "string",
    "deletedAt": null
  },
  "tags": []
}
{
  "message": "string",
  "code": 0,
  "fieldErrors": {
    "property1": null,
    "property2": null
  }
}
{
  "message": "string",
  "code": 0
}
{
  "message": "string",
  "code": 0
}