object: "qr_group". Status and destination are nullable because they’re inheritable — when set, child codes that don’t override them inherit. See the inheritance model.
Example
Identifiers
Always
"qr_group".Stable UUID. The value child codes carry in their
group_id.Operator-facing name. Required on
POST. Free-form, not unique.Free-form description. Operator-facing.
Status
One of
unconfigured, active, inactive, archived, or null.When non-null, every child code that doesn’t override this inherits the value at scan time. When null, each child uses its own status.| Value | Effect on inheriting children |
|---|---|
null | No inheritance — child’s own status applies. |
unconfigured | Children show “not configured” until they’re set up. |
active | Children resolve and redirect. |
inactive | Children show “paused”. |
archived | Children soft-deleted from listings. |
Destination
Inheritable destination. When
destination.type is non-null, child codes that don’t set their own destination inherit this one at scan time. When null, each child uses its own destination.Exactly one of chatbot, page, knowledge_base, or url is non-null when type is set.Timestamps
When the group was created. ISO 8601.
Last mutation. ISO 8601.
Listing the group’s children
QR Groups don’t expose achildren[] array on the group object. To list child codes, query the QR Codes endpoint and filter by group_id:
Delete behaviour
DELETE /qr-groups/{id} returns 204 No Content. The group row is removed and every child has its group_id set to null (ON DELETE SET NULL at the database). Child codes are not deleted.

