Text and tokens - goQR

Free goQR API Alternative

goQR's api.qrserver.com is the QR code API most pages embed: a GET with the text in the URL answers an image, and a second endpoint reads a code out of an image. The QR code API endpoint and the QR code decode API endpoint do the same two jobs over JSON: POST the text, get a PNG as Base64; POST an image, get the text. goQR offers more knobs on the image; these endpoints offer one shape a program can rely on, a stated quota, and the same tools inside an AI agent's reach. This page sets the two side by side.

The translation

The goQR facts are from its API documentation and privacy pages as read on 4 November 2026.

StepgoQR (api.qrserver.com)aisenseapi.com
Make a codeGET /v1/create-qr-code/?data=...&size=200x200, also POSTPOST /services/v1/qrcode_encode with {"payload": "..."}
What comes backThe image itself, usable as an img sourceJSON: qrcode_image, the PNG as Base64, and image_type
Image formatspng, gif, jpeg, svg, epsPNG
Sizesize=WxH, 10x10 to 1000x1000 pixels, default 200x200Chosen from the payload: 250 pixels square for a short string, 410 for a 35 character URL in testing; read the width from the image
Error correction, colors, marginecc L, M, Q, H; color, bgcolor; margin, qzoneNot offered
Payload lengthUp to about 900 characters, depending on error correctionUp to about 1,800 bytes in testing
Read a codeGET /v1/read-qr-code/?fileurl=..., or POST the file in a field named file, under 1 MiBPOST /services/v1/qrcode_decode: the file in a field named qrcode_image, up to 10 MB and 25 megapixels, or {"payload": "<base64>"} up to about 190 KB
Read from a URLYes, fileurlNo; fetch the image yourself and upload it
What a read returnsJSON or XML: an array with type, symbol, seq, data, errorJSON: qrcode_content
LimitsStates no request limit; asks to be contacted above 10,000 requests a day5,000 requests per address per day, shared across every endpoint; two images worked on at a time across the image endpoints
Account or keyNone statedNone
HTTPSOffered; its documented examples use plain HTTPHTTPS only
Where the text travelsIn the URL on a GETIn the POST body, never in the URL
For an AI agentAn HTTP callThe create_qr_code and read_qr_code tools of the free MCP server

Making a code:

curl -s -X POST https://aisenseapi.com/services/v1/qrcode_encode \
  -H "Content-Type: application/json" \
  -d '{"payload":"https://aisenseapi.com/"}'
{ "qrcode_image": "iVBORw0KGgoAAAANSUhEUg...", "image_type": "png" }

Reading one back:

curl -s -X POST https://aisenseapi.com/services/v1/qrcode_decode \
  -F qrcode_image=@code.png
{ "qrcode_content": "https://aisenseapi.com/" }

What differs

  • JSON in, JSON out. goQR's create endpoint answers the image bytes, which is what an img tag wants. Here the image comes Base64 encoded inside JSON, which is what a program or an agent wants: decode it, write it to a file, or put it in a data URL. A page that only needs to show a code with no code at all is better served by goQR.
  • Fewer knobs. goQR takes size, error correction level, colors, margin and quiet zone. This endpoint takes the payload and decides the rest, PNG only. If you need a 1000 pixel code in brand colors as SVG, that is goQR's job.
  • Text in the body. A GET puts the encoded text in the URL, where it lands in logs along the way. Here the payload travels in the POST body on every call.
  • Reading accepts larger files. goQR reads images under 1 MiB; this endpoint takes an upload up to 10 MB and 25 megapixels, and refuses anything that is not PNG, JPEG, GIF or WebP before opening it. goQR can fetch the image from a URL you give; here you fetch it and upload it.
  • A stated quota. goQR states no limit and asks heavy users to get in touch. Here every endpoint shares 5,000 requests per address per day, and the image endpoints work on two images at a time.
  • Treat the result as input. On both services a decoded string is whatever someone printed on a label. Validate a URL before opening it and escape the text before it reaches a page or a shell.

From a script

Make a code and write the PNG to disk:

import base64, requests

made = requests.post("https://aisenseapi.com/services/v1/qrcode_encode",
                     json={"payload": "https://aisenseapi.com/"}, timeout=30).json()
with open("code.png", "wb") as handle:
    handle.write(base64.b64decode(made["qrcode_image"]))

Read a code from a file, then from the same bytes as Base64:

with open("code.png", "rb") as handle:
    read = requests.post("https://aisenseapi.com/services/v1/qrcode_decode",
                         files={"qrcode_image": handle}, timeout=30).json()
print(read["qrcode_content"])

read = requests.post("https://aisenseapi.com/services/v1/qrcode_decode",
                     json={"payload": made["qrcode_image"]}, timeout=30).json()
print(read["qrcode_content"])

In a browser the Base64 goes straight into an image: img.src = "data:image/png;base64," + made.qrcode_image.

The fields

FieldTypeMeaning
qrcode_imagestringThe complete PNG file, Base64 encoded. Its width and height depend on the payload.
image_typestringAlways png.
qrcode_contentstringThe text read from the code.

Errors

CaseStatusWhat it means
An upload that is not PNG, JPEG, GIF or WebP415Refused before it is opened; a code in a PDF is read by sending the page as an image.
An image over 10 MB or 25 megapixels, or a JSON body over 256 KiB413Send a smaller image, or upload the file instead of Base64.
The day's requests used up429The shared limit of 5,000 requests per address per day; wait for the reset.

Every refusal is JSON with error and fix.

Privacy and limits

A QR code is an encoding, not a cipher: anyone who can point a camera at the image reads the payload. Keep secrets, tokens and personal data off any public endpoint, and see our privacy policy for log retention.

Every path shares the service-wide ceiling of 5,000 requests per IP address per day, and the image endpoints work on two images at a time. goQR, for comparison, states no request limit, asks to be contacted above 10,000 requests a day, states that it does not store the contents of codes it makes or reads, and offers png, gif, jpeg, svg and eps with size, error correction, color and margin parameters. Those are its statements as of November 2026 and may change.