The API, explained
Every design is a query string: the same parameters as the designer's address. The API takes them, and makes and changes dynamic codes. It comes with Pro, and free for ANBI organisations.
Keys
Make a key on your account page and send it with every request:
curl -H 'Authorization: Bearer qr_…' 'https://qr.dopecode.com/api/v1/codes'600 requests a minute a key. Answers are JSON, or the file asked for; a problem is JSON with an error.
A design's file
GET https://qr.dopecode.com/api/v1/render?u=example.org&b=fluid&ef=rounded&eb=rounded&format=svg
format: svg, png or pdfDoes it scan?
GET https://qr.dopecode.com/api/v1/check?u=example.org&fg=%23DDDDDD
{"verdict": "unreadable", "worst": null, "meta": { "version": 2, "modules": 25, "ecc": "H",
"findings": [{ "code": "contrast", "level": "bad", "value": 1.37, "fix": "fg=#6E6E6E" }], … }}verdict is scans, risky or unreadable: read back at three pixels a module, softened; only large and sharp, or with a warning; not at all. worst is the weakest block's share of its error correction in the best read.
Dynamic codes
GET https://qr.dopecode.com/api/v1/codes
POST https://qr.dopecode.com/api/v1/codes {"target": "https://example.org", "name": "Poster", "design": "b=dots&fg=%2312355B"}
GET https://qr.dopecode.com/api/v1/codes/7K3QXM the code and its last 30 days of scans
PATCH https://qr.dopecode.com/api/v1/codes/7K3QXM any of target, name, design, state (live or paused)A code carries its url in capitals, as carries says: the compact alphanumeric mode keeps the code small. Draw it with render, u set to carries and the code's design. A code is never deleted; pause it.
Parameters
| key | what | values |
|---|---|---|
| t | what it opens | url text wifi vcard email tel sms geo event epc |
| u | a link (t=url) | an address; cu=1 writes its scheme and host in capitals |
| x | text (t=text) | any text |
| ws, wp, wt, wh | Wi-Fi | network, password, WPA WEP nopass, hidden 1 |
| vn vl vo vt vp ve vu va vz vc vk vx | a contact card | first and last name, organisation, role, phone, email, website, street, postcode, city, country, note |
| ea, es, eb | an email | address, subject, body |
| p, sm | a phone call, a text message | number, message |
| gl, gn, gm | a place | latitude, longitude, geo google apple osm |
| ks, kb, ke, kl, kd | an event | title, start, end (2026-10-03T19:00), location, description |
| pn, pi, pb, pa, pr | a SEPA transfer (EPC) | beneficiary, IBAN, BIC, amount in euros, description |
| b | body | square soft fluid dots diamond pixel hbars vbars leaf |
| bs, br | module size, corner radius | 50–100, 0–50 (percent) |
| ef, eb | eye frame, eye centre | square rounded circle leaf drop squircle |
| fg, fg2, g, ga | ink, second ink, gradient, angle | #RRGGBB, solid linear radial, 0–360 |
| ec, ei | eye frame and centre colours | #RRGGBB |
| bg, bgr | ground, its corner radius | #RRGGBB or none, 0–8 modules |
| m, e | quiet zone, error correction | 0–10 modules, auto l m q h |
| li, ls, lc, lk | logo, size, clear space, cut-out | /logos/<hash> or a data: address, 10–40 percent, 0–3 modules, square circle none |
| w, mm | PNG width, print size | pixels (rounded to whole pixels a module), millimetres |