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.
POST
https://theqrcode.io/api/public/qr-codes No auth 100 req/hr free JSON in, PNG out
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 URLEndpoint reference
One endpoint handles all QR code types.
POST
/api/public/qr-codesRequest body
| Field | Type | Required | Notes |
|---|---|---|---|
| type | enum | url wifi contact text | |
| content | string | Data to encode | |
| settings.size | integer | — | 64–1024px. Default 256 |
| settings.color.dark | string | — | Hex, e.g. #000000 |
| settings.color.light | string | — | 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": "WIFI:T:WPA;S:MyNet;P:pass;;" }contactvCard 3.0
{ "type": "contact",
"content": "BEGIN:VCARD\nFN:Jane Doe\nEMAIL:jane@example.com\nEND:VCARD" }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": "WIFI:T:WPA;S:MyNetwork;P:MyPassword;;"
}'Rate limits
Free tier is per-IP. Paid plans unlock higher limits and authenticated endpoints.
| Tier | Rate limit | Auth | Dynamic codes | Analytics |
|---|---|---|---|---|
| Free | 100 req/hr per IP | None | — | — |
| Pro $29/mo | 5,000 req/hr | API key |
Start building
No account. No key. One endpoint.
POST
https://theqrcode.io/api/public/qr-codes