> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scanova.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create QR Code

> Creates a new dynamic QR Code with the specified category and content. Authentication required — include your API key in the Authorization header.

<Note>
  **Try it dropdowns:** The **category** dropdown shows IDs (1, 9, 10, …). **qr\_type** shows `dy` / `st`. Use the tables below to match values to labels.
</Note>

## Request Body — Fields

**Required fields**

| Field      | Type      | Description                                                                                                                                                         |
| :--------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `category` | `integer` | QR Code category ID. See [Category List](/api-reference/references/category-list). Try it dropdown shows IDs; see **Category dropdown reference** below for labels. |
| `info`     | `string`  | JSON string containing QR Code component data (see [Components Reference](/api-reference/references/components)).                                                   |
| `name`     | `string`  | Human-readable name for the QR Code.                                                                                                                                |
| `qr_type`  | `string`  | QR type: `dy` = Dynamic (editable after creation), `st` = Static (fixed content). Try it dropdown shows `dy` / `st`.                                                |

### Category dropdown reference (Try it)

| Value | Label         |
| :---- | :------------ |
| `1`   | Website URL   |
| `9`   | Custom Page   |
| `10`  | App Store     |
| `11`  | Google Map    |
| `13`  | Document      |
| `14`  | Wedding       |
| `15`  | Social Media  |
| `16`  | Audio         |
| `17`  | Coupon        |
| `18`  | Product       |
| `19`  | Image         |
| `20`  | Event         |
| `23`  | App Deep Link |
| `24`  | Business Card |
| `25`  | Restaurant    |
| `26`  | Feedback      |
| `27`  | Real Estate   |
| `28`  | Link Page     |
| `31`  | GS1           |
| `44`  | Restaurant    |

### qr\_type dropdown reference (Try it)

| Value | Label                             |
| :---- | :-------------------------------- |
| `dy`  | Dynamic (editable after creation) |
| `st`  | Static (fixed content)            |

**Optional / Advanced fields**

> Note: Advanced features (custom domains, geo-fencing, lead capture, expiry) may require specific plan quotas or entitlements.

| Field                              | Type                     | Description                                                                                                                                                         |
| :--------------------------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `pattern_info`                     | `object` **or** `string` | (Optional) Design customization (pattern, colors, eyes, frame, errorCorrection). See Pattern Info Reference. Some clients require this serialized as a JSON string. |
| `custom_domain`                    | `integer`                | Custom domain ID (advanced plan feature).                                                                                                                           |
| `expire_on`                        | `string (date-time)`     | Expiration timestamp (requires plan quota).                                                                                                                         |
| `expire_on_text`                   | `string (HTML)`          | HTML content to show when QR is expired.                                                                                                                            |
| `expire_on_timezone`               | `string`                 | Timezone for expiry (e.g., `Asia/Kolkata`).                                                                                                                         |
| `high_accuracy_confirmation`       | `boolean`                | High-accuracy confirmation for location QR codes.                                                                                                                   |
| `high_accuracy_geo_fencing`        | `boolean`                | Enable geo-fencing (requires plan quota).                                                                                                                           |
| `high_accuracy_geo_fencing_config` | `object`                 | Geo-fencing config (displayText, fallback, mapLocation, range, unit, redirectUrl).                                                                                  |
| `high_accuracy_mode`               | `boolean`                | Request location access behavior toggle.                                                                                                                            |
| `high_accuracy_mode_text`          | `string`                 | Text shown when requesting location permission.                                                                                                                     |
| `lead_list`                        | `integer`                | Lead list ID to capture leads.                                                                                                                                      |
| `minimum_age`                      | `integer`                | Minimum age required to access content.                                                                                                                             |
| `password`                         | `string`                 | Password to protect QR Code content.                                                                                                                                |


## OpenAPI

````yaml POST /qr/
openapi: 3.1.0
info:
  title: Scanova QR Code API
  description: QR Code management endpoints for creating, updating, and managing QR codes
  version: 1.0.0
servers:
  - url: https://management.scanova.io
    description: Production server
security:
  - apiKeyAuth: []
paths:
  /qr/:
    post:
      tags:
        - QR Code
      summary: Create QR Code
      description: >-
        Creates a new dynamic QR code with the specified category and
        information. Requires authentication.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateQRCodeRequest'
      responses:
        '200':
          description: QR Code created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QRCodeResponse'
        '400':
          description: Bad request - Validation errors
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
              examples:
                category_required:
                  summary: Category field required
                  value:
                    category:
                      - This field is required.
        '401':
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationErrorResponse'
              examples:
                invalid_token:
                  summary: Invalid token
                  value:
                    detail: Invalid token.
      security:
        - apiKeyAuth: []
components:
  schemas:
    CreateQRCodeRequest:
      type: object
      required:
        - category
        - info
        - name
        - qr_type
      properties:
        category:
          type: integer
          description: >-
            QR Code Category ID. See [Category
            List](/api-reference/references/category-list) for full reference.
            In Try it: 1=Website URL, 9=Custom Page, 10=App Store, 11=Google
            Map, 13=Document, 14=Wedding, 15=Social Media, 16=Audio, 17=Coupon,
            18=Product, 19=Image, 20=Event, 23=App Deep Link, 24=Business Card,
            25=Restaurant, 26=Feedback, 27=Real Estate, 28=Link Page, 31=GS1,
            44=Restaurant.
          enum:
            - 1
            - 9
            - 10
            - 11
            - 13
            - 14
            - 15
            - 16
            - 17
            - 18
            - 19
            - 20
            - 23
            - 24
            - 25
            - 26
            - 27
            - 28
            - 31
            - 44
          example: 1
        info:
          type: string
          description: >-
            JSON data to create QR code. See [Components
            Reference](/api-reference/references/components) for detailed
            structure examples for each category.
          example: '{"type":"url","data":{"url":"https://example.com"}}'
        name:
          type: string
          description: Name of the QR Code
          example: My Website QR Code
        qr_type:
          type: string
          description: >-
            QR code type. In Try it: dy=Dynamic (editable after creation),
            st=Static (fixed content).
          enum:
            - dy
            - st
          example: dy
        pattern_info:
          type: string
          description: >-
            JSON data to create design QR Code (optional). See [Pattern Info
            Reference](/api-reference/references/pattern-info) for complete
            customization options and field values.
          example: >-
            {"dataInfo":{"pattern":"lightSquare","gradientStyle":"Diagonal","startColor":"#000","endColor":"#000","logo":null},"backGroundColor":"#ffffff","eyeInfo":{"TL":{"innerEyeColor":"#000","outerEyeColor":"#000","shape":"Shape4"},"TR":{"innerEyeColor":"#000","outerEyeColor":"#000","shape":"Shape4"},"BL":{"innerEyeColor":"#000","outerEyeColor":"#000","shape":"Shape4"}},"version":"1.5","type":"qrcode","frame":{"id":2,"primaryColor":"#FF7C7C","secondaryColor":null,"textColor":"#FFFFFF","bgColor":"#FFFFFF","category":"url"},"errorCorrection":"Q"}
        custom_domain:
          type: integer
          description: >-
            Custom domain ID for the QR code (advanced feature - requires plan
            quota)
          example: 1903
        expire_on:
          type: string
          format: date-time
          description: >-
            Expiration date and time for the QR code (advanced feature -
            requires plan quota)
          example: '2025-10-31T02:03:00+05:30'
        expire_on_text:
          type: string
          description: >-
            Custom HTML text to display when QR code is expired (advanced
            feature - requires plan quota)
          example: >-
            <div style="text-align:center"><img alt=""
            src="https://qcg-media.scanova.io/assets/landing/qr-placeholder-expired.png"
            style="height:137px; width:150px" /></div><p
            style="text-align:center">This QR Code has been deactivated</p>
        expire_on_timezone:
          type: string
          description: >-
            Timezone for expiration date (advanced feature - requires plan
            quota)
          example: Asia/Kolkata
        high_accuracy_confirmation:
          type: boolean
          description: >-
            Enable high accuracy confirmation for location-based QR codes
            (advanced feature - requires plan quota)
          example: true
        high_accuracy_geo_fencing:
          type: boolean
          description: >-
            Enable high accuracy geo-fencing for location-based QR codes
            (advanced feature - requires plan quota)
          example: true
        high_accuracy_geo_fencing_config:
          type: object
          description: >-
            Configuration for high accuracy geo-fencing (advanced feature -
            requires plan quota)
          properties:
            displayText:
              type: string
              description: HTML text to display when location access is restricted
              example: >-
                <p style="text-align:center">This QR Code is
                location-restricted.</p><p style="text-align:center">The content
                linked to this QR Code is only accessible when scanned from a
                specific location. Looks like you are either outside the
                specified area or haven't granted location access.</p><p
                style="text-align:center">Enable GPS location access and try
                again.</p>
            fallback:
              type: string
              description: Fallback behavior when location access is denied
              example: message
            mapLocation:
              type: object
              description: Map location configuration
              properties:
                provider:
                  type: string
                  description: Map provider
                  example: google
                latitude:
                  type: number
                  description: Latitude coordinate
                  example: 40.7127753
                longitude:
                  type: number
                  description: Longitude coordinate
                  example: -74.0059728
                placeId:
                  type: string
                  description: Place ID from map provider
                  example: ''
                placeName:
                  type: string
                  description: Human-readable place name
                  example: New York
            range:
              type: number
              description: Range for geo-fencing in specified units
              example: 500
            redirectUrl:
              type: string
              description: URL to redirect to when location access is denied
              example: ''
            unit:
              type: string
              enum:
                - ft
                - m
                - km
                - mi
              description: Unit for range measurement
              example: ft
        high_accuracy_mode:
          type: boolean
          description: >-
            Enable high accuracy mode for location-based QR codes (advanced
            feature - requires plan quota)
          example: true
        high_accuracy_mode_text:
          type: string
          description: >-
            Text to display when requesting location access (advanced feature -
            requires plan quota)
          example: >-
            The QR Code administrator is requesting one-time access to your
            device's location. You will be redirected to the content regardless
            of your choice.
        lead_list:
          type: integer
          description: >-
            Lead list ID for capturing leads (advanced feature - requires plan
            quota)
          example: 1106
        minimum_age:
          type: integer
          description: >-
            Minimum age requirement for accessing QR code content (advanced
            feature - requires plan quota)
          example: 18
        password:
          type: string
          description: >-
            Password protection for QR code access (advanced feature - requires
            plan quota)
          example: '123456'
    QRCodeResponse:
      type: object
      properties:
        id:
          type: integer
          description: Internal QR code ID
          example: 2411719
        qrid:
          type: string
          description: Unique QR code identifier
          example: Q3493df1c0e074ac7
        name:
          type: string
          description: Name of the QR code
          example: QR Code
        qr_type:
          type: string
          description: QR code type
          example: dy
        qr_type_display:
          type: string
          description: Human-readable QR code type
          example: Dynamic
        category:
          $ref: '#/components/schemas/Category'
        info:
          type: string
          description: JSON data for QR code content
          example: '{"type":"url","data":{"url":"https://scanova.io"}}'
        dynamic_url_object:
          type: object
          properties:
            url_hash:
              type: string
              description: Short URL hash for the QR code
              example: 9drY
            domain:
              type: string
              description: Domain for the QR code URL
              example: null
            custom_domain:
              type: integer
              description: Custom domain ID if using custom domain
              example: 1903
            high_accuracy_mode:
              type: boolean
              description: Whether high accuracy mode is enabled
              example: false
            high_accuracy_mode_text:
              type: string
              description: Text displayed when requesting location access
              example: ''
            high_accuracy_confirmation:
              type: boolean
              description: Whether high accuracy confirmation is enabled
              example: false
            lead_list:
              type: integer
              description: Lead list ID for capturing leads
              example: null
            expire_on_timezone:
              type: string
              description: Timezone for expiration date
              example: null
            expire_on:
              type: string
              format: date-time
              description: Expiration date and time
              example: null
            expire_on_text:
              type: string
              description: Custom text displayed when QR code is expired
              example: null
            minimum_age:
              type: integer
              description: Minimum age requirement for accessing QR code
              example: null
            visit_count:
              type: integer
              description: Number of visits to the QR code
              example: 0
            created:
              type: string
              format: date-time
              description: Creation timestamp
              example: '2025-10-24T18:54:22.752924+05:30'
            modified:
              type: string
              format: date-time
              description: Last modification timestamp
              example: '2025-10-24T18:54:22.752945+05:30'
            is_custom_hash:
              type: boolean
              description: Whether custom hash is used
              example: false
            is_custom_domain:
              type: boolean
              description: Whether custom domain is used
              example: true
            is_password_protected:
              type: boolean
              description: Whether the QR code is password protected
              example: false
            complete_url:
              type: string
              description: Complete URL for the QR code
              example: https://anuj.sqcg.in/9drY
            is_expired:
              type: boolean
              description: Whether the QR code has expired
              example: false
            is_page:
              type: boolean
              description: Whether this is a page QR code
              example: false
            has_qr:
              type: boolean
              description: Whether QR code image is available
              example: true
            high_accuracy_geo_fencing:
              type: boolean
              description: Whether geo-fencing is enabled
              example: false
            high_accuracy_geo_fencing_config:
              type: object
              description: Geo-fencing configuration
              example: {}
            qr_url:
              type: string
              description: URL to access QR code image
              example: https://anuj.sqcg.in/9drY?qr=1
        pattern_info:
          type: string
          description: QR code design pattern information
          example: null
        svg_code:
          type: string
          description: SVG code for QR code
          example: null
        thumbnail:
          type: string
          description: Thumbnail URL for QR code
          example: null
        is_active:
          type: boolean
          description: Whether the QR code is active
          example: true
        version:
          type: number
          description: QR code version
          example: 1
        created:
          type: string
          format: date-time
          description: Creation timestamp
          example: '2025-10-24T18:54:22.697338+05:30'
        modified:
          type: string
          format: date-time
          description: Last modification timestamp
          example: '2025-10-24T18:54:22.697362+05:30'
        tags_list:
          type: array
          items:
            type: string
          description: List of tags associated with QR code
          example: []
        is_password_protected:
          type: boolean
          description: Whether the QR code is password protected
          example: false
        is_age_restricted:
          type: boolean
          description: Whether the QR code has age restrictions
          example: false
        is_designer:
          type: boolean
          description: Whether the QR code uses designer features
          example: false
        pattern_type:
          type: string
          description: Pattern type for QR code design
          example: null
        created_by:
          type: string
          description: User who created the QR code
          example: null
        password:
          type: string
          description: Password for QR code access
          example: null
        ai_qr_code:
          type: string
          description: AI-generated QR code information
          example: null
        wallet_pass_info:
          type: string
          description: Wallet pass information
          example: null
        is_qr_scannable:
          type: boolean
          description: Whether the QR code is scannable
          example: null
        custom_form_response_count:
          type: integer
          description: Number of custom form responses
          example: 0
        rsvp_form_response_count:
          type: integer
          description: Number of RSVP form responses
          example: 0
        restaurant_feedback_response_count:
          type: integer
          description: Number of restaurant feedback responses
          example: 0
    ValidationErrorResponse:
      type: object
      properties:
        field_name:
          type: array
          items:
            type: string
          description: Field-specific validation errors
          example:
            - This field is required.
            - Invalid value provided.
      additionalProperties:
        type: array
        items:
          type: string
        description: Additional field validation errors
    AuthenticationErrorResponse:
      type: object
      properties:
        detail:
          type: string
          description: Authentication error message
          example: Invalid token.
    Category:
      type: object
      properties:
        id:
          type: integer
          description: Category ID
          example: 1
        name:
          type: string
          description: Category name
          example: Website URL
        slug:
          type: string
          description: Category slug
          example: url
        description:
          type: string
          description: Category description
          example: When scanned, redirects user to a website.
        preview_image:
          type: string
          description: URL to category preview image
          example: https://qcg-media.scanova.io/qr-category/2020/09/url.png
        allowed_qr_types:
          type: string
          description: Allowed QR code types for this category
          example: bt
        allowed_qr_types_display:
          type: string
          description: Human-readable allowed QR code types
          example: Both
        tags:
          type: string
          description: Comma-separated tags for this category
          example: internet,website,link,url,webpage
        is_active:
          type: boolean
          description: Whether the category is active
          example: true
        is_new:
          type: boolean
          description: Whether this is a new category
          example: false
        has_landing_page:
          type: boolean
          description: Whether the category has a landing page
          example: false
        helpdesk_link:
          type: string
          description: URL to helpdesk documentation for this category
          example: >-
            https://support.scanova.io/hc/en-us/articles/36997331177753-Create-Website-URL-QR-Code
        created:
          type: string
          format: date-time
          description: Category creation timestamp
          example: '2020-09-07T11:37:48.093485+05:30'
        modified:
          type: string
          format: date-time
          description: Category last modification timestamp
          example: '2025-10-16T14:50:48.791993+05:30'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key authentication. Enter your API key directly in the Authorization
        header.

````