A single code
Read one code with its redirect rules, or change its destination, name or status.
Plan: Starter and up.
Get a code
GET /api/v1/codes/{id}
Returns the code object plus its rules, the code's redirect rules in order.
{
"data": {
"id": "0b8f6c2e-3f7a-4d0e-9a61-2f4c7f1d9b10",
"name": "Spring menu flyer",
"kind": "dynamic",
"status": "active",
"type": "url",
"destination": "https://example.com/menu",
"content": { "type": "url", "url": "https://example.com/menu" },
"shortUrl": "https://qrmgr.link/k7Pq2x",
"tags": ["spring"],
"createdAt": "2026-11-01T10:15:00.000Z",
"updatedAt": "2026-11-10T08:02:41.000Z",
"rules": []
}
}
Returns 404 NOT_FOUND if the id isn't a code in this workspace.
Update a code
PATCH /api/v1/codes/{id}
Send only the fields to change.
| Body field | Notes |
|---|---|
url | New destination, http or https, up to 2048 characters. URL codes only |
name | New name, 1 to 120 characters |
status | active or paused. People who scan a paused code see a "Temporarily unavailable" page |
curl -X PATCH https://dynaqr.app/api/v1/codes/0b8f6c2e-3f7a-4d0e-9a61-2f4c7f1d9b10 \
-H "Authorization: Bearer qrm_live_your_key" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/autumn-menu"}'
Returns the updated code object in data (without rules).
Errors to expect:
409 INVALID_STATE: you senturlfor a code that isn't a URL code (change those in the dashboard), or the code was disabled by a safety check.409 EDIT_LOCKED: the code is over the plan's limit after a downgrade.402 PLAN_LIMIT: you sent"status": "active"for a paused code, but the workspace already has as many live dynamic codes as its plan allows.422 DESTINATION_BLOCKED: the new URL failed a safety check, or there were too many changes in a short time.
There is no delete endpoint. Archive codes in the dashboard.