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

# Filer

> Last opp PDF-er, bilder, videoer og logoer til QR-kodene dine.

> [!NOTE]
>
> GetQR API-et er i beta og er tilgjengelig for utvalgte arbeidsområder. Detaljer kan endres før den generelle lanseringen.

PDF-, bilde- og video-QR-koder peker mot en fil, og en egen logo er også en fil. Opplasting skjer i to trinn: registrer filen for å få en URL, og send deretter innholdet til den URL-en.

| Metode | Bane | Beskrivelse |
| - | - | - |
| `POST` | `/api/v1/files` | [Registrer en filopplasting](#registrer-en-filopplasting) |

## Last opp en fil

**1. Registrer filen**

Kall [Registrer en filopplasting](#registrer-en-filopplasting) med filens `target`, `contentType` og `size`. `target` bestemmer hvilke innholdstyper som godtas, og størrelsesgrensen. Du får en `fileId` og en `uploadUrl`.

**2. Send filen**

Send filen med en `PUT`-forespørsel til `uploadUrl`. `Content-Type` og `Content-Length` må stemme nøyaktig med `contentType` og `size` du registrerte: alt annet avvises. URL-en er forhåndssignert, så ikke legg til API-nøkkelen din. Den utløper etter 10 minutter.

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

**3. Bruk fil-ID-en**

Send `fileId` når du [oppretter en QR-kode](https://docs.getqr.com/no/api/endpoints/qr-codes.md):

* Som `fileId` for en `pdf`-, `image`- eller `video`-QR-kode. Last opp med tilsvarende target.
* Som `fileId` for profilbildet til en `vcard`-, `social`-, `multilink`- eller `event`-QR-kode. Last opp med target `logo`.
* Som `logoOptions.fileId`, med `logoOptions.type` satt til `uploaded`, for en egen logo. Last opp med target `logo`. Se [Tilpasning](https://docs.getqr.com/no/api/guides/customization.md).

## Grenser

| `target` | Godtatte innholdstyper | Maksimal størrelse |
| - | - | - |
| `pdf` | `application/pdf` | 20 MB (20 971 520 byte) |
| `image` | `image/*` | 5 MB (5 242 880 byte) |
| `video` | `video/*` | 50 MB (52 428 800 byte) |
| `logo` | `image/*` | 5 MB (5 242 880 byte) |

* **Ren MIME-type.** Send én type og undertype med små bokstaver, for eksempel `image/png`. Parametere som `;charset=` og lister avvises.
* **Ingen SVG.** XML-baserte typer som `image/svg+xml` godtas ikke. Last opp et rasterbilde, for eksempel `image/png` eller `image/jpeg`.

## Headere

**Authorization** `string` *required*

`Bearer` etterfulgt av API-nøkkelen din. Se [Autentisering](https://docs.getqr.com/no/api/authentication.md).

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

`application/json`.

## Registrer en filopplasting

`POST /api/v1/files`

Registrerer en fil og returnerer en forhåndssignert URL som filen skal lastes opp til. Dette kallet laster ikke opp selve filen.

**target** `string` *required*

Hva filen skal brukes til: `pdf`, `image`, `video` eller `logo`. Bestemmer hvilke innholdstyper som godtas, og størrelsesgrensen. Se [Grenser](#grenser).

**contentType** `string` *required*

MIME-typen til filen, for eksempel `application/pdf`, uten parametere. Opplastingsforespørselen må sende nøyaktig denne `Content-Type`.

**size** `integer` *required*

Nøyaktig filstørrelse i byte, et positivt heltall. Kontrolleres mot grensen for target. Opplastingsforespørselen må sende nøyaktig denne `Content-Length`.

**name** `string`

Opprinnelig filnavn, opptil 255 tegn. Beholdes for visning i dashbordet. En bane med `/` eller `\` avvises.

**fileId** `string`

ID som skal sendes som `fileId` eller `logoOptions.fileId`.

**uploadUrl** `string`

Forhåndssignert URL som filen skal sendes til med `PUT`.

**expiresIn** `integer`

Sekunder til `uploadUrl` utløper: `600`.

**method** `string`

HTTP-metode for opplastingen: `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"
}
```

## Vanlige problemer

> [accordion] 422 "Content type … is not allowed for target"
>
> Innholdstypen passer ikke til target. For eksempel godtar `pdf` bare `application/pdf`. Se [Grenser](#grenser).

> [accordion] 422 "must be a single lowercase type/subtype"
>
> Send innholdstypen med små bokstaver og uten parametere: `image/png`, ikke `Image/PNG` eller `image/png; charset=utf-8`.

> [accordion] 422 "File is too large for target"
>
> Den oppgitte `size` er over grensen for target. Komprimer filen før du registrerer den.

> [accordion] Opplastingen til uploadUrl mislykkes
>
> URL-en utløper 10 minutter etter at du registrerte filen, og forespørselen må sende nøyaktig den registrerte `Content-Type` og `Content-Length`. Registrer filen på nytt for å få en ny URL.

> [accordion] 422 "is registered but its content was never uploaded" når jeg oppretter en QR-kode
>
> Du registrerte filen, men `PUT` til `uploadUrl` ble ikke fullført. Last opp filen, og opprett deretter QR-koden.

> [accordion] 422 "was uploaded to …" når jeg oppretter en QR-kode
>
> Filen ble registrert med et annet target, for eksempel en `image`-fil brukt til en `pdf`-QR-kode. Registrer en ny opplasting med tilsvarende target.

> [accordion] 404 "File … was not found" når jeg oppretter en QR-kode
>
> `fileId` finnes ikke. Hent den fra svaret på [Registrer en filopplasting](#registrer-en-filopplasting).

## Neste steg

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

> [card] [QR-kodedata per type](https://docs.getqr.com/no/api/guides/qr-types.md)

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

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


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