> ## 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.

# Tiedostot

> Lataa QR-koodeillesi PDF-tiedostoja, kuvia, videoita ja logoja.

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

PDF-, Image- ja Video-QR-koodit osoittavat tiedostoon, ja myös oma logo on tiedosto. Lataus tehdään kahdessa vaiheessa: rekisteröi tiedosto saadaksesi URL-osoitteen ja lähetä sitten tiedoston sisältö kyseiseen osoitteeseen.

| Metodi | Polku | Kuvaus |
| - | - | - |
| `POST` | `/api/v1/files` | [Rekisteröi tiedoston lataus](#rekisteröi-tiedoston-lataus) |

## Lataa tiedosto

**1. Rekisteröi tiedosto**

Kutsu päätepistettä [Rekisteröi tiedoston lataus](#rekisteröi-tiedoston-lataus) ja anna tiedoston `target`, `contentType` ja `size`. `target` määrää hyväksytyt sisältötyypit ja kokorajan. Saat vastauksena `fileId`-tunnuksen ja `uploadUrl`-osoitteen.

**2. Lähetä tiedosto**

Lähetä tiedosto `PUT`-pyynnöllä osoitteeseen `uploadUrl`. Sen `Content-Type`- ja `Content-Length`-arvojen on vastattava täsmälleen rekisteröimiäsi arvoja `contentType` ja `size`: kaikki muu hylätään. URL on valmiiksi allekirjoitettu, joten älä lisää API-avaintasi. Se vanhenee 10 minuutin kuluttua.

```bash theme={null}
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/pdf" \
  --data-binary @menu.pdf
```

**3. Käytä tiedostotunnusta**

Välitä `fileId`, kun [luot QR-koodin](https://docs.getqr.com/fi/api/endpoints/qr-codes.md):

* Kenttänä `fileId` `pdf`-, `image`- tai `video`-QR-koodille. Lataa vastaavalla targetilla.
* Kenttänä `fileId` `vcard`-, `social`-, `multilink`- tai `event`-QR-koodin profiilikuvalle. Lataa targetilla `logo`.
* Kenttänä `logoOptions.fileId`, kun `logoOptions.type` on `uploaded`, omalle logolle. Lataa targetilla `logo`. Katso [Mukauttaminen](https://docs.getqr.com/fi/api/guides/customization.md).

## Rajat

| `target` | Hyväksytyt sisältötyypit | Enimmäiskoko |
| - | - | - |
| `pdf` | `application/pdf` | 20 Mt (20 971 520 tavua) |
| `image` | `image/*` | 5 Mt (5 242 880 tavua) |
| `video` | `video/*` | 50 Mt (52 428 800 tavua) |
| `logo` | `image/*` | 5 Mt (5 242 880 tavua) |

* **Pelkkä MIME-tyyppi.** Lähetä yksi pienin kirjaimin kirjoitettu tyyppi ja alatyyppi, kuten `image/png`. Parametrit, kuten `;charset=`, ja luettelot hylätään.
* **Ei SVG:tä.** XML-pohjaisia tyyppejä, kuten `image/svg+xml`, ei hyväksytä. Lataa rasterikuva, kuten `image/png` tai `image/jpeg`.

## Otsakkeet

**Authorization** `string` *required*

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

**Content-Type** `string` *required*

`application/json`.

## Rekisteröi tiedoston lataus

`POST /api/v1/files`

Rekisteröi tiedoston ja palauttaa valmiiksi allekirjoitetun URL-osoitteen, johon se ladataan. Tämä kutsu ei lataa itse tiedostoa.

**target** `string` *required*

Mihin tiedostoa käytetään: `pdf`, `image`, `video` tai `logo`. Määrää hyväksytyt sisältötyypit ja kokorajan. Katso [Rajat](#rajat).

**contentType** `string` *required*

Tiedoston MIME-tyyppi, esimerkiksi `application/pdf`, ilman parametreja. Latauspyynnön on lähetettävä täsmälleen tämä `Content-Type`.

**size** `integer` *required*

Tiedoston tarkka koko tavuina, positiivinen kokonaisluku. Tarkistetaan targetin rajaa vasten. Latauspyynnön on lähetettävä täsmälleen tämä `Content-Length`.

**name** `string`

Tiedoston alkuperäinen nimi, enintään 255 merkkiä. Säilytetään näyttämistä varten hallintapaneelissa. Polku, jossa on `/` tai `\`, hylätään.

**fileId** `string`

Tunnus, joka välitetään kentässä `fileId` tai `logoOptions.fileId`.

**uploadUrl** `string`

Valmiiksi allekirjoitettu URL, johon tiedosto lähetetään `PUT`-pyynnöllä.

**expiresIn** `integer`

Sekunnit siihen, kun `uploadUrl` vanhenee: `600`.

**method** `string`

Latauksen HTTP-metodi: `PUT`.

```bash cURL theme={null}
curl -X POST "https://getqr.com/api/v1/files" \
  -H "Authorization: Bearer $GETQR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target": "pdf",
    "contentType": "application/pdf",
    "size": 248000,
    "name": "menu.pdf"
  }'
```

```json 200 theme={null}
{
  "fileId": "file_7bQ2xR9mKp",
  "uploadUrl": "https://storage.getqr.com/qrs-content/pdf/file_7bQ2xR9mKp?X-Amz-...",
  "expiresIn": 600,
  "method": "PUT"
}
```

## Yleisiä ongelmia

> [accordion] 422 "Content type … is not allowed for target"
>
> Sisältötyyppi ei vastaa targetia. Esimerkiksi `pdf` hyväksyy vain tyypin `application/pdf`. Katso [Rajat](#rajat).

> [accordion] 422 "must be a single lowercase type/subtype"
>
> Lähetä sisältötyyppi pienin kirjaimin ja ilman parametreja: `image/png`, ei `Image/PNG` tai `image/png; charset=utf-8`.

> [accordion] 422 "File is too large for target"
>
> Ilmoitettu `size` ylittää targetin rajan. Pakkaa tiedosto ennen kuin rekisteröit sen.

> [accordion] Lataus uploadUrl-osoitteeseen epäonnistuu
>
> URL vanhenee 10 minuuttia tiedoston rekisteröinnin jälkeen, ja pyynnön on lähetettävä täsmälleen rekisteröidyt `Content-Type` ja `Content-Length`. Rekisteröi tiedosto uudelleen saadaksesi uuden URL-osoitteen.

> [accordion] 422 "is registered but its content was never uploaded" QR-koodia luotaessa
>
> Rekisteröit tiedoston, mutta `PUT`-pyyntö osoitteeseen `uploadUrl` ei valmistunut. Lataa tiedosto ja luo sitten QR-koodi.

> [accordion] 422 "was uploaded to …" QR-koodia luotaessa
>
> Tiedosto rekisteröitiin eri targetilla, esimerkiksi `image`-tiedosto `pdf`-QR-koodissa. Rekisteröi uusi lataus vastaavalla targetilla.

> [accordion] 404 "File … was not found" QR-koodia luotaessa
>
> `fileId`-tunnusta ei ole olemassa. Ota se päätepisteen [Rekisteröi tiedoston lataus](#rekisteröi-tiedoston-lataus) vastauksesta.

## Mitä seuraavaksi

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

> [card] [QR-tyypit](https://docs.getqr.com/fi/api/guides/qr-types.md)

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

> [card] [Virheet](https://docs.getqr.com/fi/api/errors.md)


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