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

# Classic QR + Logo

> Same as GET, plus an optional logo image file to embed in the center.

Send the logo as a **multipart file upload** in the `logo` field:

```bash
curl -X POST "https://qr.spoo.me/api/v1/classic" \
  -F "content=https://example.com" \
  -F "logo=@my-logo.png"
```



## OpenAPI

````yaml /openapi-qr.json post /api/v1/classic
openapi: 3.1.0
info:
  title: QR Code Generator API
  description: >-
    Open-source QR code generator API with support for classic solid-fill,
    gradient, and custom-styled QR codes.


    **Features:**

    - Classic QR codes with customizable fill and background colors

    - Gradient QR codes with vertical gradient coloring

    - Multiple module drawer styles (rounded, circle, bars, gapped)

    - Multiple gradient types (vertical, horizontal, radial, square)

    - SVG and PNG output formats

    - Logo/image embedding in QR codes

    - Batch QR code generation

    **Base URL:** `https://qr.spoo.me`
  contact:
    name: spoo.me
    url: https://spoo.me/contact
    email: support@spoo.me
  license:
    name: AGPL-3.0
    url: https://github.com/spoo-me/qr/blob/main/LICENSE
  version: 1.0.0
servers:
  - url: https://qr.spoo.me
    description: Production
security: []
tags:
  - name: QR Code Generation
    description: Generate styled QR codes in PNG and SVG formats
  - name: Batch
    description: Generate multiple QR codes in a single request
paths:
  /api/v1/classic:
    post:
      tags:
        - QR Code Generation
      summary: Classic QR + Logo
      description: |-
        Same as GET, plus an optional logo image file to embed in the center.

        Send the logo as a **multipart file upload** in the `logo` field:

        ```bash
        curl -X POST "https://qr.spoo.me/api/v1/classic" \
          -F "content=https://example.com" \
          -F "logo=@my-logo.png"
        ```
      operationId: generate_classic_post_api_v1_classic_post
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_generate_classic_post_api_v1_classic_post
      responses:
        '200':
          description: Successful Response
        '400':
          description: Bad Request — invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    Body_generate_classic_post_api_v1_classic_post:
      properties:
        content:
          type: string
          title: Content
          description: Text or URL to encode
        color:
          type: string
          title: Color
          description: Fill color (hex, name, or RGB)
          default: black
        background:
          type: string
          title: Background
          description: Background color
          default: white
        size:
          anyOf:
            - type: integer
              maximum: 1000
              minimum: 10
            - type: 'null'
          title: Size
          description: Output size in pixels
        style:
          $ref: '#/components/schemas/ModuleStyle'
          description: Module drawing style
          default: rounded
        output:
          $ref: '#/components/schemas/OutputFormat'
          description: Output format
          default: png
        logo:
          anyOf:
            - type: string
              contentMediaType: application/octet-stream
            - type: 'null'
          title: Logo
          description: Logo image to embed (optional)
      type: object
      required:
        - content
      title: Body_generate_classic_post_api_v1_classic_post
    ErrorResponse:
      properties:
        error:
          type: string
          title: Error
        code:
          type: string
          title: Code
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
        details:
          anyOf:
            - {}
            - type: 'null'
          title: Details
      type: object
      required:
        - error
        - code
      title: ErrorResponse
      description: Standard error JSON body produced by the AppError exception handler.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ModuleStyle:
      type: string
      enum:
        - rounded
        - square
        - circle
        - gapped
        - horizontal_bars
        - vertical_bars
      title: ModuleStyle
      description: QR code module (pixel) drawing styles.
    OutputFormat:
      type: string
      enum:
        - png
        - svg
      title: OutputFormat
      description: Output image format.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError

````