Generate QR Codes
with One API Call
The simplest QR code API for developers. Drop in a single HTTP request and get back a QR code in PNG, SVG, or base64. No bloated SDKs. No confusing dashboards.
No credit card required
GET https://api.citoapi.com/api/v1/qr/generate?data=https://citoapi.com&format=png&size=400Simple. Fast. Honest.
Sub-200ms
QR codes generated and returned globally in under 200ms. Your users will never notice the API call.
All Formats
PNG, SVG, or base64 JSON — whatever your stack needs. Custom size, colors, margin, error correction, and logo embedding all supported.
Honest Pricing
500 QR codes/month free, forever. When you need more, pricing is published and simple — no ‘contact sales’ surprises.
Three steps to your first QR code
Get your API key
Sign up in 30 seconds. No credit card. You'll have your API key before your coffee gets cold.
Make your first request
One GET or POST request. Pass your data, pick your format. We have examples in Python, JavaScript, PHP, and cURL.
Ship your feature
Your QR code comes back as a PNG binary, SVG string, or base64 JSON. Drop it straight into your app, PDF, email, or printout.
It really is this simple.
Copy-paste ready. Works in any language that can make an HTTP request.
1import requests23API_KEY = "YOUR_API_KEY"45# Simple QR code — GET request, returns PNG binary6response = requests.get(7 "https://api.citoapi.com/api/v1/qr/generate",8 headers={"x-api-key": API_KEY},9 params={10 "data": "https://citoapi.com",11 "size": "400",12 "format": "png",13 "fg": "#000000",14 "bg": "#ffffff",15 "margin": "4",16 "ec": "M",17 },18)1920with open("qrcode.png", "wb") as f:21 f.write(response.content)2223print("QR code saved to qrcode.png")API Parameters
Auth header on every request: x-api-key: YOUR_API_KEY
| Parameter | Type | Description |
|---|---|---|
datarequired | string | URL or text to encode. Max 2048 chars. |
size | number | Output size in pixels (100–2000). Default: 300. |
format | string | "png" | "svg" | "base64". Default: "png". |
fg / foreground | string | Foreground hex color. Default: "#000000". |
bg / background | string | Background hex color. Default: "#ffffff". |
margin | number | Quiet zone size 0–10. Default: 4. |
ec / errorCorrection | string | "L" | "M" | "Q" | "H". Default: "M". Auto-set to "H" when a logo is present. |
logo.image | string | Base64 data URL of the logo (POST only). |
logo.sizeRatio | number | Logo width as fraction of QR size (0.1–0.35). Default: 0.25. |
logo.padding | number | White padding behind logo in px (0–50). Default: 8. |
GET requests use query params (fg/bg/ec). POST requests accept a JSON body (foreground/background/errorCorrection) and support logo embedding. Full API reference →
Pricing that doesn't require a spreadsheet
Start free. Upgrade when you need to. No hidden fees.
Basic
50,000 / month
- PNG, SVG & base64 formats
- Custom colors
- Logo embedding
- 99.9% SLA
- Email support (48 hr)
Pro
250,000 / month
- PNG, SVG & base64 formats
- Custom colors
- Logo embedding
- 99.9% SLA
- Priority email (24 hr)
Business
2,000,000 / month
- PNG, SVG & base64 formats
- Custom colors
- Logo embedding
- 99.9% SLA + Slack
- Priority support (12 hr)
Need more than 2M calls? Contact us for a custom plan →
QR Code API vs. building your own
Generating QR codes yourself means pulling in a library, writing server-side generation code, handling image format conversion, and maintaining it whenever dependencies break. That's a weekend of work before you've shipped anything.
Our hosted API handles all of that — sub-200ms response times, 99.9% uptime, and format support out of the box. Ship your feature today instead of next sprint.
Frequently asked questions
Ready to build?
Get your free API key in 30 seconds. No credit card, no commitment, no nonsense.
Get Free API Key500 free QR codes/month · No card required