editable qr code API
Automate QR creation and management from your stack. Authenticate every call with an API key from Dashboard → API keys:
curl -H "Authorization: Bearer qrb_…" https://your-domain/api/v1/qr-codes
Authentication
Pass Authorization: Bearer <key>. Keys are scoped read or read+write; write keys refuse to work on inactive accounts. Rate limits apply per key.
QR types
Static types (vcard, wifi, text, email, phone, whatsapp, gs1) embed their payload directly; the rest resolve a tracked short link. Hosted-page types take a content object validated per type.
Media ZIP uploads
POST a qr_type (image, video or pdf) to /api/v1/qr-codes/batch/upload. PUT the ZIP directly to the returned upload_url, then POST qr_type and upload_id to /api/v1/qr-codes/batch. Poll the returned status_url. Limit: 25 MB compressed, 100 MB expanded, 100 media files and a 1 MB manifest. ZIP exports are available in Dashboard → Bulk create.
Endpoints
- GET
/api/v1/qr-codesList your QR codes (cursor-paginated: ?limit=50&cursor=…)read - POST
/api/v1/qr-codesCreate a QR of any type (content validated per type)write - GET
/api/v1/qr-codes/{id}Fetch one QR coderead - PATCH
/api/v1/qr-codes/{id}Update destination / name / designwrite - DELETE
/api/v1/qr-codes/{id}Soft-delete (scans stop resolving)write - POST
/api/v1/qr-codes/{id}/duplicateClone a QR under a fresh slugwrite - GET
/api/v1/qr-codes/{id}/imageCurrent render — ?format=png|svg&size=512|1024|2048read - GET
/api/v1/qr-codes/{id}/analyticsScan analytics for one QRread - POST
/api/v1/qr-codes/{id}/complete-uploadConfirm a binary upload landed (image/video/pdf)write - POST
/api/v1/qr-codes/batchBulk create (≤1000 rows)write - GET
/api/v1/batches/{id}Batch status + resultsread - POST
/api/v1/qr-codes/batch/uploadInitialize a direct Storage upload for a media ZIPwrite
Create example
curl -X POST https://your-domain/api/v1/qr-codes \
-H "Authorization: Bearer qrb_…" \
-H "content-type: application/json" \
-d '{"qr_type":"menu","name":"Cafe menu","content":{"restaurant":"Cafe","sections":[{"title":"Mains","items":[{"name":"Ramen","price":"18"}]}]}}'Errors are JSON: { "error": { "code", "message" }, "request_id" } — quote the request_id in support requests.