Skip to content

Paperless pages

QRalto can turn one Dynamic QR into a hosted mobile menu, salon service list, product-information page, brochure, or memory collection. The printed QR stays the same while an authorized workspace editor updates the content.

Secure upload-first workflow

  1. Upload each file with POST /api/v1/qr-assets as multipart/form-data using the field name file.
  2. Copy the returned asset id values into the payload's assetIds array.
  3. Create the Dynamic QR with POST /api/v1/qr-codes.

Unattached uploads are private and are removed automatically after 24 hours. An asset can be attached only inside its workspace and to one QR. Files cannot be fetched from the public asset route until they are attached to an active QR with a current subscription. Responses are non-cacheable so the next request rechecks deactivation and expiry.

curl --request POST "https://api.qralto.com/api/v1/qr-assets" \
  --header "X-Api-Key: $QRALTO_API_KEY" \
  --form "file=@menu.pdf;type=application/pdf"

Accepted formats are genuine PNG/JPG images and passive PDFs. QRalto verifies file signatures, dimensions, byte limits, declared MIME type, and rejects PDFs containing scripts, launch actions, forms, encryption, rich media, or embedded files. Public PDFs are forced to download and all responses use nosniff and a restrictive content-security policy.

The default workspace allowance is 512 MB of active hosted assets, with a separate 50 MB allowance for uploads that have not yet been attached to a QR. These server-side limits are configurable through Uploads:MaxTenantBytes and Uploads:MaxUnclaimedBytes; callers must still obey the smaller per-file and per-experience limits.

Restaurant or salon menu

Use MenuModern, MenuWarm, or SalonLuxe. A menu requires at least one asset and supports up to eight.

{
  "name": "Olive & Ember menu",
  "mode": "Dynamic",
  "payloadType": "Menu",
  "content": "{\"businessName\":\"Olive & Ember\",\"title\":\"Dinner menu\",\"description\":\"Seasonal dishes and chef specials.\",\"phone\":\"+971501234567\",\"website\":\"https://example.com\",\"assetIds\":[\"ASSET_UUID\"]}",
  "style": {
    "templateCode": "MenuModern",
    "experienceTemplateCode": "MenuModern",
    "experienceFontFamily": "Modern",
    "experiencePrimaryColor": "#173B35",
    "experienceAccentColor": "#3B7A6D",
    "experienceSurfaceColor": "#FFFDF7"
  }
}

Product or information page

Use DocumentClean or ProductStory. Provide full details, up to four assets, or both.

{"title":"Product care","summary":"Keep it looking its best.","details":"Cleaning and storage instructions.","ctaLabel":"View product","ctaUrl":"https://example.com/product","assetIds":["ASSET_UUID"]}

Memory collection

Use MemoryGallery or MemoryJournal. Memory collections accept up to twelve images and never accept PDF files.

{"title":"Our favourite moments","story":"A small collection from a wonderful year.","dateLabel":"Summer 2026","location":"Dubai, UAE","assetIds":["IMAGE_ASSET_UUID"]}

Shared, not private

Anyone who receives or photographs a QR can open its published page while the campaign and subscription are active. Do not publish credentials, payment data, identity documents, medical records, or confidential/intimate material.

Page styling

Hosted page typography accepts Modern, Editorial, Elegant, Rounded, or Classic. Primary text, accent, and surface colours must be six-digit hex values and pass server-side 4.5:1 contrast validation. QR geometry has its own independent contrast, quiet-zone, error-correction, and logo checks.