API documentation
Create, edit and track your QR codes programmatically. The REST API is included on Business; the OpenAPI 3.1 specification is public.
Updated September 24, 2026
Authentication
Every request carries an API key in the Authorization: Bearer qrt_live_... header. Create keys in Settings, API, with read-only or read and write scope. qrt_test_ keys create real codes outside your quota, visible only with a test key.
Rate limits
60 requests per minute and 50,000 per month per account. X-RateLimit-* headers show your usage; beyond the limits the API returns 429.
Base URL
https://qrtada.com/api/public/v1Endpoints
| Method | Path |
|---|---|
| GET | /codes |
| POST | /codes |
| POST | /codes/bulk |
| GET | /codes/{id} |
| PATCH | /codes/{id} |
| DELETE | /codes/{id} |
| GET | /codes/{id}/image |
| GET | /codes/{id}/stats |
| GET | /folders |
| POST | /folders |
| GET | /account/usage |
Examples
GET /codes : list codes
cURL
curl -X GET "https://qrtada.com/api/public/v1/codes?limit=30" \
-H "Authorization: Bearer $QRTADA_API_KEY"JavaScript
const res = await fetch("https://qrtada.com/api/public/v1/codes?limit=30", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.QRTADA_API_KEY}`,
},
});
const { data } = await res.json();Python
import os, requests
res = requests.get(
"https://qrtada.com/api/public/v1/codes?limit=30",
headers={"Authorization": f"Bearer {os.environ['QRTADA_API_KEY']}"},
)
data = res.json()["data"]POST /codes : create a code
cURL
curl -X POST "https://qrtada.com/api/public/v1/codes" \
-H "Authorization: Bearer $QRTADA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Menu du midi","kind":"dynamic","type":"url","content":{"url":"https://chezpaul.fr/menu"}}'JavaScript
const res = await fetch("https://qrtada.com/api/public/v1/codes", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.QRTADA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name":"Menu du midi","kind":"dynamic","type":"url","content":{"url":"https://chezpaul.fr/menu"}}),
});
const { data } = await res.json();Python
import os, requests
res = requests.post(
"https://qrtada.com/api/public/v1/codes",
headers={"Authorization": f"Bearer {os.environ['QRTADA_API_KEY']}"},
json={"name":"Menu du midi","kind":"dynamic","type":"url","content":{"url":"https://chezpaul.fr/menu"}},
)
data = res.json()["data"]Ready to print a QR code that never dies?
7 days for $0, card required, a reminder 2 days before the first charge, cancel in 2 clicks.
Try it 7 days for $0See pricingReady to print a QR code that never dies?
7 days for $0, card required, a reminder 2 days before the first charge, cancel in 2 clicks.