REST API
Create, edit and measure your QR codes from your own tools. Available from the Pro plan up.
Authentication
Every workspace can create API keys from its settings. The key is shown only once. Send it in the Authorization header.
curl -H "Authorization: Bearer sc_xxxxxxxx…" https://www.scanolo.com/api/v1/codes
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/codes | List of the workspace's codes (paginated). |
POST | /api/v1/codes | Creates a code. JSON body: name, kind, mode, payload, design. |
GET | /api/v1/codes/{id} | Details of a code, including its short address. |
PATCH | /api/v1/codes/{id} | Edits the name, destination, design or status. |
DELETE | /api/v1/codes/{id} | Deletes a code (it stops redirecting after explicit confirmation). |
GET | /api/v1/codes/{id}/image.svg | Code image in SVG or PNG (size parameter for PNG). |
GET | /api/v1/codes/{id}/stats | Scan stats between two dates. |
POST | /api/v1/render | Renders a static code without storing it. |
Example
curl -X POST https://www.scanolo.com/api/v1/codes \
-H "Authorization: Bearer sc_xxxxxxxx…" \
-H "Content-Type: application/json" \
-d '{"name": "Menu terrasse", "kind": "url", "mode": "dynamic",
"payload": {"url": "https://example.com/menu"},
"design": {"fg": "#10211F", "module": "rounded"}}'
{"id": 42, "slug": "k7Hp3Qz", "short_url": "https://www.scanolo.com/r/k7Hp3Qz",
"kind": "url", "mode": "dynamic", "status": "active", "safety_status": "safe",
"scans_total": 0, "created_at": "2026-09-06T10:00:00Z"}
Limits
Pro: 60 requests per minute. Business: 300. Beyond that, the response is 429 with a Retry-After header. The plan's dynamic code quotas also apply through the API.