---
title: "Create a project-owned dynamic QR record"
method: POST
path: "/api/dynamic-qr-vaults/{vaultId}/qr"
---

# Create a project-owned dynamic QR record

`POST /api/dynamic-qr-vaults/{vaultId}/qr`

## Request

- Base URL: `https://qrcodecrafter.com`
- URL: `https://qrcodecrafter.com/api/dynamic-qr-vaults/{vaultId}/qr`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/qrcodecrafter/apis/qrcodecrafter-api-2/docs/api/dynamic-qr-vaults/:vaultId/qr/post.ts> (a function with typed inputs; its response is checked against the schema)

Requires the current vault ETag. The child is controlled only by the vault capability; no child token or token hash is returned.

## Headers

- `If-Match` string, required
- `X-Dynamic-QR-Vault-Version` string

## Request body

- DynamicQrVaultChildCreateRequest
  - `destination` string, uri, required
  - `label` string
  - `folder` string
  - `tags` string[]

## Response `201`

Project-owned child created

- DynamicQrVaultChildResponse
  - `success` boolean, required
  - `record` DynamicQrVaultChildRecord, required
    - `slug` string, required
    - `destination` string, uri, required
    - `label` string, required
    - `status` 'active' | 'paused', required
    - `version` integer, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `folder` string
    - `tags` string[]

## Other responses

- `400`: Invalid destination or metadata
- `401`: Invalid vault capability
- `412`: Missing or stale vault ETag

---

[API](https://skmtc.dev/qrcodecrafter/apis/qrcodecrafter-api-2.md) - [All operations](https://skmtc.dev/qrcodecrafter/apis/qrcodecrafter-api-2/llms.txt) - [OpenAPI document](https://skmtc.dev/qrcodecrafter/apis/qrcodecrafter-api-2/revisions/e66d9e8a52bf?raw)
