Wordspace Public API
QR Codes
Create, list, update, move, and delete QR codes within the API key account.
curl https://api.wordspace.io/api/v1/workspaces/{workspace_id}/qr-codes \
-H "Authorization: Bearer wdsp_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Summer menu",
"destination_url": "https://example.com/menu",
"vanity_domain_id": "{custom_domain_id}",
"vanity_slug": "summer-menu",
"design": {
"foreground": "#111827",
"background": "#FFF7ED",
"style": "rounded",
"errorCorrection": "H",
"size": 1024,
"cornerSquareShape": "extra-rounded",
"cornerDotShape": "dot",
"frame": {
"enabled": true,
"type": "circle",
"color": "#FDBA74",
"borderThickness": 18,
"labelTop": "SCAN ME",
"labelBottom": "SUMMER 2026"
}
},
"utm": {
"source": "print",
"medium": "qr",
"campaign": "summer-2026"
}
}'curl https://api.wordspace.io/api/v1/qr-codes/{id} \
-X PATCH \
-H "Authorization: Bearer wdsp_live_..." \
-H "Content-Type: application/json" \
-d '{ "workspace_id": "{workspace_id}" }'curl "https://api.wordspace.io/api/v1/qr-codes/{id}/export?format=svg&size=1024" \
-H "Authorization: Bearer wdsp_live_..." \
--output summer-menu.svgv1 does not expose a separate /links resource. Creating a QR code creates the short link behind it and returns both vanity_url and canonical_url.
To request a custom slug, send both vanity_domain_id and vanity_slug. Custom slugs are only available on verified custom domains; if you omit vanity_slug, Wordspace generates it.
The design payload matches the app styling surface for colors, module shapes, logos, frames, and corner styling. Circle frames and frame labels require the Premium Frames add-on and otherwise return premium_frames_required.
Moving a QR code changes its workspace context without changing the account that owns it. A key cannot move or read QR codes across account boundaries.
The export route supports png, jpg, and svg. If format is omitted, Wordspace defaults to png. If size is omitted, Wordspace defaults to 1024.
Create requests that exceed account QR-code capacity return qr_code_limit_reached.