> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getqr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mallit

> Tallenna uudelleenkäytettäviä QR-koodien ulkoasuja ja käytä niitä uusissa QR-koodeissa.

> [!NOTE]
>
> GetQR API on beetavaiheessa, ja se on käytettävissä valituissa työtiloissa. Yksityiskohdat voivat muuttua ennen yleistä julkaisua.

Malli tallentaa uudelleenkäytettävän ulkoasun: `styles`, `frameOptions` ja `logoOptions`. Se ei koskaan sisällä sisältöä tai linkkiä. Mallit jaetaan kaikkien työtilan jäsenten kesken.

| Metodi | Polku | Kuvaus |
| - | - | - |
| `GET` | `/api/v1/templates` | [Listaa mallit](#listaa-mallit) |
| `POST` | `/api/v1/templates` | [Luo malli](#luo-malli) |
| `GET` | `/api/v1/templates/{templateId}` | [Hae malli](#hae-malli) |
| `PATCH` | `/api/v1/templates/{templateId}` | [Päivitä malli](#päivitä-malli) |
| `DELETE` | `/api/v1/templates/{templateId}` | [Poista malli](#poista-malli) |
| `POST` | `/api/v1/templates/{templateId}/duplicate` | [Monista malli](#monista-malli) |

## Mallin käyttäminen

Välitä `templateId`, kun [luot QR-koodin](https://docs.getqr.com/fi/api/endpoints/qr-codes.md). Mallin ulkoasu otetaan uuteen QR-koodiin. Samassa pyynnössä lähettämäsi ulkoasuobjektit yhdistetään sen päälle.

* **Kopioitu, ei linkitetty.** QR-koodi säilyttää oman kopionsa ulkoasusta. Mallin muokkaaminen tai poistaminen myöhemmin ei muuta sitä.
* **Vain mukautetut ulkoasut.** Mallia, jonka `designKind` on `branded` tai `ai`, ei voi käyttää API:n kautta, ja se palauttaa `422` (`art_template_unsupported`).
* **Vain oma työtilasi.** Tuntematon malli tai toisen työtilan malli palauttaa `404`.

## Otsakkeet

**Authorization** `string` *required*

`Bearer` ja sen perässä API-avaimesi. Katso [Todennus](https://docs.getqr.com/fi/api/authentication.md).

**Content-Type** `string`

`application/json`. Pakollinen pyynnöissä, joissa on runko.

## Malliobjekti

**id** `string`

Mallin tunnus, esimerkiksi `qrt_8Hs2mQvKpLd4RtYw`.

**name** `string`

Nimi, joka näkyy mallia valittaessa.

**designKind** `string`

Vain luku. `custom` on ulkoasu, jota API voi muokata kokonaan. `branded` ja `ai` ovat hallintapaneelissa tehty brändätty tai tekoälyllä luotu ulkoasu: sen kuvaa ei voi muokata API:n kautta, ja se säilyy, kun muutat muita ulkoasukenttiä.

**design** `object`

Tallennettu ulkoasu. Kullakin kentällä on sama rakenne kuin samannimisellä pyynnön kentällä, joten voit lähettää sen takaisin.

**properties**

**styles** `object | null`

Pisteiden ja kulmien muodot sekä värit.

**frameOptions** `object | null`

QR-koodia ympäröivä kehys ja sen toimintakehote.

**logoOptions** `object | null`

Logo keskellä.

**createdAt** `string`

Luontipäivä, ISO 8601.

**updatedAt** `string`

Viimeisimmän päivityksen päivä, ISO 8601.

## Listaa mallit

`GET /api/v1/templates`

Palauttaa työtilasi mallit, uusimmat ensin. Lista on sivutettu: katso [Sivutus](https://docs.getqr.com/fi/api/introduction.md#sivutus).

**page** `integer` (default: 1)

Palautettava sivu, 1 tai suurempi.

**pageSize** `integer` (default: 100)

Tuloksia sivua kohti, 1–100.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/templates?page=1&pageSize=100" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "data": [
    {
      "id": "qrt_8Hs2mQvKpLd4RtYw",
      "name": "Brand blue",
      "designKind": "custom",
      "design": {
        "styles": {
          "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
          "backgroundOptions": { "color": "#FFFFFF" }
        },
        "frameOptions": null,
        "logoOptions": null
      },
      "createdAt": "2026-07-20T09:12:00.000Z",
      "updatedAt": "2026-07-20T09:12:00.000Z"
    }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 1, "hasMore": false }
}
```

## Luo malli

`POST /api/v1/templates`

Tallentaa uuden ulkoasun. Vastaa `201 Created`. Ulkoasukentät tarkistetaan [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md)-oppaan luetteloita vasten, joten tuntematon muoto, kehys tai logo hylätään koodilla `422`.

**name** `string` *required*

Nimi, joka näkyy mallia valittaessa, 1–40 merkkiä.

**styles** `object`

Pisteiden ja kulmien muodot sekä värit. Katso [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md).

**frameOptions** `object`

QR-koodin ympärille piirretty kehys ja sen toimintakehote. Katso [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md).

**logoOptions** `object`

Keskelle sijoitettu logo: ehdotettu logo tai oma tiedostosi, joka on ladattu [Tiedostot](https://docs.getqr.com/fi/api/endpoints/files.md)-päätepisteen targetilla `logo`. Katso [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md).

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/templates" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Brand blue",
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    }
  }'
```

```json 201 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-07-20T09:12:00.000Z"
}
```

## Hae malli

`GET /api/v1/templates/{templateId}`

**templateId** `string` *required*

Mallin tunnus. Ota se listauksen tai luonnin vastauksesta.

```bash cURL theme={null}
curl "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-07-20T09:12:00.000Z"
}
```

## Päivitä malli

`PATCH /api/v1/templates/{templateId}`

Lähetä vain ne kentät, joita haluat muuttaa. Ulkoasuobjektit yhdistetään tallennettuun ulkoasuun, joten osittainen `styles` säilyttää loput. Mallista jo luodut QR-koodit säilyttävät ulkoasun, jolla ne tehtiin.

**templateId** `string` *required*

Mallin tunnus.

**name** `string`

Uusi nimi, 1–40 merkkiä.

**styles** `object`

Tyylimuutokset, jotka yhdistetään tallennettuun `styles`-objektiin.

**frameOptions** `object`

Kehysmuutokset, jotka yhdistetään tallennettuun kehykseen.

**logoOptions** `object`

Logomuutokset, jotka yhdistetään tallennettuun logoon.

```bash cURL theme={null}
curl -X PATCH "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Brand blue (2026)" }'
```

```json 200 theme={null}
{
  "id": "qrt_8Hs2mQvKpLd4RtYw",
  "name": "Brand blue (2026)",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-07-20T09:12:00.000Z",
  "updatedAt": "2026-08-14T09:00:00.000Z"
}
```

## Poista malli

`DELETE /api/v1/templates/{templateId}`

Poistaa mallin. Siitä luodut QR-koodit säilyttävät ulkoasunsa.

**templateId** `string` *required*

Mallin tunnus.

```bash cURL theme={null}
curl -X DELETE "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{ "id": "qrt_8Hs2mQvKpLd4RtYw", "deleted": true }
```

## Monista malli

`POST /api/v1/templates/{templateId}/duplicate`

Luo kopion nimellä `<name> copy`. Kopiolla on oma tunnus ja itsenäinen ulkoasu, jota voit muokata vapaasti. Ei ota pyynnön runkoa. Vastaa `201 Created`.

**templateId** `string` *required*

Kopioitavan mallin tunnus.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/templates/qrt_8Hs2mQvKpLd4RtYw/duplicate" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 201 theme={null}
{
  "id": "qrt_2Kd9pLm4Xs7BnVcQ",
  "name": "Brand blue copy",
  "designKind": "custom",
  "design": {
    "styles": {
      "dotsOptions": { "type": "rounded", "color": "#1E40AF" },
      "backgroundOptions": { "color": "#FFFFFF" }
    },
    "frameOptions": null,
    "logoOptions": null
  },
  "createdAt": "2026-08-14T09:30:00.000Z",
  "updatedAt": "2026-08-14T09:30:00.000Z"
}
```

## Yleisiä ongelmia

> [accordion] 404 "QR template not found."
>
> `templateId` ei vastaa työtilasi mallia. Ota se kohdasta [Listaa mallit](#listaa-mallit).

> [accordion] 422 mallia luotaessa tai päivitettäessä
>
> Jokin ulkoasukenttä ei vastaa luetteloita, esimerkiksi tuntematon pistetyyppi, kehys tai ehdotettu logo. Viesti nimeää kentän. Katso [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md).

> [accordion] 422 art\_template\_unsupported QR-koodia luotaessa
>
> Malli käyttää brändättyä tai tekoälyllä luotua ulkoasua. Käytä sen sijaan mallia, jonka `designKind` on `custom`.

## Mitä seuraavaksi

> [card] [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md)

> [card] [QR-koodit](https://docs.getqr.com/fi/api/endpoints/qr-codes.md)

> [card] [Mallit sovelluksessa](https://docs.getqr.com/fi/templates/save-template.md)

> [card] [Tiedostot](https://docs.getqr.com/fi/api/endpoints/files.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.