REST API

QR Code API
No auth. No keys. No signup.

One endpoint. POST some JSON. Get a QR code. Works from any language in under a minute.

POSThttps://theqrcode.io/api/public/qr-codes
No auth 100 req/hr free JSON in, PNG out

Need authentication, analytics, bulk operations, and webhooks? See the full REST API reference →

100

requests/hour free

4

QR code types

0

required headers

Quick start

Three ways to make your first request.

curl
curl -X POST https://theqrcode.io/api/public/qr-codes \
  -H "Content-Type: application/json" \
  -d '{
    "type": "url",
    "content": "https://example.com"
  }'
JavaScript
const res = await fetch('https://theqrcode.io/api/public/qr-codes', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    type: 'url',
    content: 'https://example.com',
  }),
});

const { imageUrl, qrImage } = await res.json();
// imageUrl  — hosted PNG, shareable, valid 24h
// qrImage   — data:image/png;base64,...
Python
import requests

res = requests.post(
    'https://theqrcode.io/api/public/qr-codes',
    json={'type': 'url', 'content': 'https://example.com'},
)
data = res.json()
print(data['imageUrl'])   # hosted PNG URL
print(data['qrImage'])    # base64 data URL

Endpoint reference

One endpoint handles all QR code types.

POST/api/public/qr-codes

Request body

FieldTypeRequiredNotes
typeenumurl wifi contact text
contentstringData to encode
settings.sizeinteger-64-1024px. Default 256
settings.color.darkstring-Hex, e.g. #000000
settings.color.lightstring-Background hex color

Response

{
  "qrImage": "data:image/png;base64,iVBORw0KGgo...",
  "imageUrl": "https://theqrcode.io/api/public/qr-codes/view/abc123",
  "type": "url",
  "content": "https://example.com",
  "_meta": {
    "apiVersion": "1.0.0",
    "generatedAt": "2025-04-13T12:00:00.000Z"
  }
}

Rate limit headers

X-RateLimit-Limit

100

X-RateLimit-Remaining

requests left in window

X-RateLimit-Reset

Unix timestamp

QR code types

urlAny web URL
{ "type": "url", "content": "https://example.com" }
wifiWPA/WPA2 networks
{ "type": "wifi",
  "content": "{\"ssid\":\"MyNet\",\"password\":\"pass\",\"security\":\"WPA2\"}" }
contactvCard 3.0
{ "type": "contact",
  "content": "{\"firstName\":\"Jane\",\"lastName\":\"Doe\",\"phone\":\"+15551234567\",\"email\":\"jane@example.com\"}" }
textPlain string
{ "type": "text", "content": "Table 12" }
Custom colors + size
{
  "type": "url",
  "content": "https://example.com",
  "settings": {
    "size": 512,
    "color": {
      "dark": "#1a1a2e",
      "light": "#ffffff"
    }
  }
}
WiFi: full curl example
curl -X POST https://theqrcode.io/api/public/qr-codes \
  -H "Content-Type: application/json" \
  -d '{
    "type": "wifi",
    "content": "{\"ssid\":\"MyNetwork\",\"password\":\"MyPassword\",\"security\":\"WPA2\"}"
  }'
# For wifi & contact, "content" is a JSON string (not a raw WIFI:/vCard payload).

Rate limits

Free tier is per-IP. Paid plans include higher limits and authenticated endpoints.

TierRate limitAuthDynamic codesAnalytics
Free100 req/hr per IPNone--
Developer $19/mo5,000 req/hrAPI key API + dashboard
Pro $29/mo5,000 req/hrAPI key API + real-time dashboard

Building against the API? Developer is the plan. Same 5,000 req/hr rate limit, webhooks and developer console as Pro, for $10/month less. It also carries all three MCP tools list_qr_codes and get_analytics as well as generation, at 2,000 MCP requests/hr; Pro's MCP access is generation only, at 500/hr. Pro adds real-time analytics, logo embedding, frames, SVG/PDF downloads, Menu QR codes, bulk management in the dashboard, and 1,000,000 scans a month (Developer: 500,000).

Start building

No account. No key. One endpoint.

POSThttps://theqrcode.io/api/public/qr-codes
Free QR Code API — No Auth, No Key, No Signup | TheQRCode.io