QR code API

QR code API for developers

Create, update and manage branded QR codes from your own app, website or scripts with a single request. The same designs as the QR.app generator, delivered as SVG or PNG.

Designed your way, by code

Every option of the generator is a JSON field. These codes were made with the API.

  • Classic QR code example
    Classic
    {
      "type": "url",
      "url": "https://qr.app/api"
    }
  • Your brand QR code example
    Your brand
    {
      "type": "url",
      "url": "https://qr.app/api",
      "design": {
        "fg": "#111827",
        "eye": "#E11D2E",
        "dotType": "classy-rounded",
        "frame": "pill"
      },
      "logo": "https://…/logo.svg"
    }
  • With a frame QR code example
    With a frame
    {
      "type": "url",
      "url": "https://qr.app/api",
      "design": {
        "fg": "#1E3A8A",
        "dotType": "dots",
        "cornerSquareType": "dot",
        "frame": "phone",
        "frameText": "OPEN MENU",
        "frameColor": "#1E3A8A"
      }
    }

Everything you need, nothing you don’t

A small, predictable API that does one thing well.

One request

Send a JSON POST and get the finished QR code back right away. No SDK to install.

Your design

Colors, 14 dot styles, corner shapes, margins and 7 frames with your own call to action.

Your logo

Place a logo in the center from a data URL or an image link. We raise error correction so it still scans.

SVG or PNG

Vector SVG for print, or PNG up to 4096 pixels wide. Download any code again later.

Codes that last

Website and text codes are static: the content is in the code, so they keep working forever.

Full control

List, update and delete your codes from your code too. They also appear in the API QR codes tab of your dashboard.

Start in three steps

  1. 1

    Get your API key

    Start your free trial, then open API in your account menu and generate a key. Copy it somewhere safe.

  2. 2

    Send a request

    POST the content and design to https://qr.app/api/v1/qr with your key in the Authorization header.

  3. 3

    Use your QR code

    The response includes the image, ready to show on a page, save as a file or send to print.

API reference

Create a QR code

Creates a static Website URL or Text QR code with your design and returns its image. The code also appears in API QR codes in your dashboard.

Authorizations

Your API key in the Authorization header: Bearer YOUR_API_KEY. Keep it secret: call the API from your server or scripts, never from code that runs in a visitor’s browser.

Request method

POST

Request URL

https://qr.app/api/v1/qr

Body parameters (JSON)

NameTypeRequiredDescription
typestringRequired"url" (Website URL) or "text" (Text). Codes are static: their content is in the code, so they work forever.
urlstringFor "url"The website address, like https://example.com. https:// is added when missing. Up to 2000 characters.
textstringFor "text"Any text, up to 1500 characters.
namestringOptionalThe name shown in your dashboard. Defaults to the website’s domain or the start of the text.
formatstringOptional"svg" (default) or "png": the format of the image in the response.
sizeintegerOptionalPNG width in pixels, from 128 to 4096. Default 1024.
designobjectOptionalColors, shapes and frame, see Design options. Anything you leave out uses the default.
logostringOptionalAn image for the center: a data URL (data:image/png;base64,…) or an http(s) image URL. PNG, JPEG, GIF, WebP or SVG, up to 2 MB.

Design options

Inside design: the same options as the QR.app generator. With a logo, the code switches to high error correction so it still scans.

NameTypeDefaultValues
fgstring"#000000"Color of the dots, as a hex color.
bgstring"#FFFFFF"Background color.
eyestring""Color of the three corner squares. Empty uses the dots color.
dotTypestring"rounded"square, rounded, dots, classy, classy-rounded, extra-rounded, small-square, diamond, star, sparkle, heart, plus, cross, flower
cornerSquareTypestring"extra-rounded"square, extra-rounded, rounded, dot, classy, classy-rounded, dots
cornerDotTypestring"dot"square, rounded, extra-rounded, dot, classy, classy-rounded, diamond, star, sparkle, heart, plus, flower
margininteger12Quiet zone around the code, 0 to 40.
framestring"none"none, pill, bottom, top, tab, circle, phone, corners
frameTextstring"SCAN ME"The frame’s call to action, up to 30 characters.
frameFontstring"jakarta"jakarta (bold), inter (sans-serif), playfair (serif), caveat (handwritten)
frameColorstring"#000000"Color of the frame.

Example request

curl https://qr.app/api/v1/qr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "url",
    "url": "https://example.com",
    "name": "Spring campaign",
    "format": "png",
    "size": 1024,
    "design": {
      "fg": "#111827",
      "eye": "#E11D2E",
      "dotType": "rounded",
      "frame": "pill",
      "frameText": "SCAN ME"
    },
    "logo": "https://example.com/logo.png"
  }'

Response

image is the finished code as a data URL, ready for an <img src> or to save as a file.

HTTP/1.1 201 Created
{
  "id": 1234,
  "name": "Spring campaign",
  "type": "url",
  "data": "https://example.com",
  "design": { "fg": "#111827", "bg": "#FFFFFF", "eye": "#E11D2E", "dotType": "rounded", … },
  "hasLogo": true,
  "format": "png",
  "image": "data:image/png;base64,iVBORw0KGgo…",
  "imageUrl": "https://qr.app/api/v1/qr/1234.png",
  "createdAt": "2026-11-09T14:30:00-03:00",
  "updatedAt": "2026-11-09T14:30:00-03:00"
}

Errors

Errors come back as JSON with a message you can show, like {"error": "\"url\" must be a website address…"}.

StatusMeaning
400The body isn’t a JSON object.
401The API key is missing or wrong.
402Your free trial has ended. Upgrade to keep using the API.
413The request is larger than 4 MB.
422A field is missing or invalid. The message says which one and why.
429More than 60 requests in a minute or 500 in a day. Wait for the seconds in the Retry-After header.
503We couldn’t create or load the code right now. Try again.

Up to 60 requests a minute and 500 a day per account (the day resets at midnight Argentina time, UTC−3). The API needs an active free trial or plan.

FAQ

API questions

What developers ask before they start.

Is the QR code API free?

The API is part of your QR.app account. You can use it free during your 7-day trial, no credit card needed. After the trial it needs an active plan.

What QR codes can I create with the API?

Static Website URL and Text QR codes. The content is stored in the code itself, so they work forever and never depend on our servers. Static codes don’t track scans.

Can I add my logo and brand colors?

Yes. Set the colors, dot and corner shapes, a frame with your own call to action, and a logo in the center. Send the logo as a data URL or as a link to a PNG, JPEG, GIF, WebP or SVG image up to 2 MB.

Which file formats does the API return?

SVG, which scales to any size, or PNG from 128 to 4096 pixels wide. Codes you create also appear in your dashboard, where you can download them as JPEG, PDF, EPS and more.

Are there rate limits?

Yes: up to 60 requests a minute and 500 a day per account. The daily count resets at midnight Argentina time (UTC−3). If you go over, the API answers with status 429 and tells you how many seconds to wait.

How do I keep my API key safe?

Call the API from your server or scripts, never from code that runs in a visitor’s browser. We only show your key once. If you lose it or think it leaked, generate a new one in your dashboard and the old one stops working right away.

Can I change or delete a QR code after creating it?

Yes. The API can list your codes and update their name, content, design or logo, or delete them. These are static codes, so an update creates a new image: copies you already printed or shared keep their old content. The API only works with codes created through the API.

Where do codes created with the API go?

To the API QR codes tab in your dashboard, apart from the codes you make on the website. You can move them to folders, download them again or delete them there too.

Start building with the QR.app API

The API is included in your 7-day free trial. No credit card needed.