Quickstart
1. Get a key
In the app, open Settings → API and choose New key. Pick the scopes the integration needs (codes:read and codes:write are enough here). The secret starts with sk_live_ and is shown once: store it in your server's secrets, never in a browser or a mobile app.
The API is included on Pro, Business and Enterprise. There is no separate test mode: use a second workspace for experiments.
2. Create a code
POST the destination to /v1/codes with your key as a bearer token and an Idempotency-Key, so a retried request never creates a duplicate.
curl -X POST https://api.dotwick.com/v1/codes \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: van-014-2026-09-10" \ -d '{ "name": "Van fleet – unit 14", "content": { "type": "url", "url": "https://example.com/fleet/van-014" }, "design": { "pattern": "rounded", "eyes": { "frame": "circle", "ball": "circle" }, "colors": { "fg": "#18181B", "bg": "#FFFFFF" } }, "folderId": "fld_8k2m4q7x" }'{ "id": "qr_8841ce2mxk", "name": "Van fleet – unit 14", "type": "url", "dynamic": true, "status": "active", "slug": "Xq7mK2p", "shortUrl": "https://dotwick.co/Xq7mK2p", "content": { "type": "url", "url": "https://example.com/fleet/van-014" }, "folderId": "fld_8k2m4q7x", "createdAt": "2026-09-10T09:41:08.000Z"}3. Test it
The response's shortUrl works at once. Scan it or open it in a browser: it redirects to your destination and the scan shows up in analytics within a few seconds.
Next: change the destination with PATCH /v1/codes/{id}, or register a webhook to hear about every scan.