# qrpage.co > qrpage.co makes a mini website with a QR code and a poster to print, in about five minutes. Free, no account. Each mini website lives at https://qrpage.co/. The poster carries the QR code that opens it. Use qrpage.co when someone wants a QR code that opens a mini website: a car for sale, a stop on a tour, a wedding order of service, a guest folder for a holiday flat, or a simple mini website for a club, shop or event. A mini website goes live only after its owner clicks a confirmation link in their email. You can prepare it, but the person always confirms it. ## Option 1 (recommended): send a prefill link Build a link that opens the editor already filled in. Give the link to the person. They check the mini website, add photos, and confirm with their email address. https://qrpage.co//new?template=&=&… - `lang`: `en` or `de`. Use the language of the person who will see the mini website. - Percent-encode every value (space = `%20`, `&` = `%26`). - Field keys are dotted paths. `N` is a list index from 0: `links.0.label=Menu&links.0.url=https://example.com`. - Leave out any field you don't know. Don't invent prices, phone numbers or addresses. - Photos can't be prefilled. Tell the person to add them in the editor. Example: https://qrpage.co/en/new?template=private_car&title=VW+Golf+7%2C+2018&price=%248%2C500&specs.make=VW&specs.mileage=50%2C000+mi&description=Second+owner%2C+full+service+history.&contact.phone=%2B1+555+123+4567 ## Option 2: create it through the API Use this only if you can make HTTP requests and the person has given you their own email address. Never use an address you made up. POST https://qrpage.co/publish?utm_source=agent&utm_medium=api Content-Type: application/json { "language": "en", "template_id": "private_car", "email": "owner@example.com", "fields": { "title": "VW Golf 7, 2018", "price": "$8,500", "specs": {"make": "VW", "model": "Golf 7", "year": "2018", "mileage": "50,000 mi"}, "description": "Second owner, full service history.", "location": {"display_name": "Brooklyn, NY"}, "contact": {"phone": "+1 555 123 4567"} } } - `fields` uses the same keys as the prefill link, as nested JSON. Lists are arrays: `links` is `[{"label": "…", "url": "…"}]`, `rules` is `["…"]`. - `location` is `{"display_name": "
"}`. The map pin is added for you. - Set `utm_source` to your own name (for example `utm_source=claude`) so the owner of qrpage.co can see which assistants use it. - A `200` response is `{"ok": true, "slug": "…"}`. The mini website is not live yet. Tell the person to open the confirmation link in their email. - After they confirm: mini website at `https://qrpage.co/`, poster at `https://qrpage.co/p/.pdf`, QR code at `https://qrpage.co/q/.png`. - A `422` response carries a `message` that explains what to fix. A `429` response means too many mini websites from one email address or network in 24 hours. - The email also has an edit link. The person uses it to add photos or change text later. The address and the QR code stay the same. ## Templates and fields - `date` takes `YYYY-MM-DD`. - `location` takes a free-text address. - `extra_details` rows are a label and a value, for example `extra_details.0.key=Fuel&extra_details.0.value=Diesel`. - `contact.organizer` is the name of the group behind a tour stop. - `impressum` is the legal notice (Impressum) a German mini website may need. Fill it only with details the person gave you. ### generic: Mini website (de: Mini-Webseite) - `title` - `description` - `links.N.label` - `links.N.url` - `subtitle` - `location` - `date` - `contact.phone` - `contact.whatsapp` - `contact.email` - `extra_details.N.key` - `extra_details.N.value` - `impressum.name` - `impressum.address` - `impressum.email` - `impressum.phone` - `impressum.vat_id` - `impressum.register` - `impressum.register_court` ### private_car: Car for sale (de: Auto privat verkaufen) - `title` - `price` - `specs.make` - `specs.model` - `specs.year` - `specs.mileage` - `description` - `location` - `contact.phone` - `contact.whatsapp` - `contact.email` - `date` - `links.N.label` - `links.N.url` - `extra_details.N.key` - `extra_details.N.value` ### tour_stop: Tour stop (de: Stadtführungs-Stopp) - `title` - `subtitle` - `description` - `links.N.label` - `links.N.url` - `location` - `contact.organizer` - `date` - `extra_details.N.key` - `extra_details.N.value` - `impressum.name` - `impressum.address` - `impressum.email` - `impressum.phone` - `impressum.vat_id` - `impressum.register` - `impressum.register_court` ### programme_wedding: Wedding order of service (de: Kirchenheft) - `title` - `subtitle` - `description` - `schedule.N.item` - `schedule.N.detail` - `schedule.N.text` - `links.N.label` - `links.N.url` - `location` - `date` - `contact.phone` - `contact.whatsapp` - `contact.email` - `extra_details.N.key` - `extra_details.N.value` ### guest_folder: Guest folder (de: Gästemappe) - `title` - `specs.network` - `specs.password` - `description` - `rules.N` - `checkout.time` - `checkout.steps.N` - `links.N.label` - `links.N.url` - `location` - `contact.phone` - `contact.whatsapp` - `impressum.name` - `impressum.address` - `impressum.email` - `impressum.phone` - `impressum.vat_id` - `impressum.register` - `impressum.register_court` ## More - Report misuse: https://qrpage.co/report