---
title: "Upload QR graphic asset"
method: PUT
path: "/api/sites/{id}/qr-codes/{qrID}/asset"
tags: ["QR Campaigns"]
---

# Upload QR graphic asset

`PUT /api/sites/{id}/qr-codes/{qrID}/asset`

## Request

- Base URL: `https://demo.hitkeep.com`
- URL: `https://demo.hitkeep.com/api/sites/{id}/qr-codes/{qrID}/asset`
- Auth: API key in cookie `hk_token`

Stores a PNG, JPEG, or WebP graphic for a QR code under the configured HitKeep data directory and persists only metadata in the control-plane database. Maximum size is 2 MB. Requires site.manage_data.

## Path parameters

- `id` string, uuid, required
- `qrID` string, uuid, required

## Response `200`

QR asset

- QRCodeAsset: Public QR graphic metadata. The raster image is stored under the configured HitKeep data directory; filesystem storage keys and binary payloads are not exposed in JSON or table takeout.
  - `byte_size` integer
  - `checksum` string
  - `content_type` 'image/png' | 'image/jpeg' | 'image/webp'
  - `created_at` string, date-time
  - `filename` string
  - `height` integer
  - `qr_code_id` string, uuid
  - `site_id` string, uuid
  - `updated_at` string, date-time
  - `width` integer

## Other responses

- `400`: Invalid asset
- `413`: Asset too large

---

[API](https://skmtc.dev/hitkeep/apis/hitkeep-rest-api.md) · [All operations](https://skmtc.dev/hitkeep/apis/hitkeep-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hitkeep/apis/hitkeep-rest-api/revisions/bb2df36ab2a4?raw)
