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

> Upload PDF'er, billeder, videoer og logoer til dine QR-koder.

> [!NOTE]
>
> GetQR API'et er i beta og er tilgængeligt for udvalgte arbejdsområder. Detaljer kan ændre sig før den generelle udgivelse.

PDF-, billed- og video-QR-koder peger på en fil, og et eget logo er også en fil. Upload sker i to trin: Registrer filen for at få en URL, og send derefter filens bytes til den URL.

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

## Upload en fil

**1. Registrer filen**

Kald [Registrer en filupload](#registrer-en-filupload) med filens `target`, `contentType` og `size`. `target` bestemmer de accepterede indholdstyper og størrelsesgrænsen. Du får en `fileId` og en `uploadUrl`.

**2. Send filen**

Send filen med en `PUT`-forespørgsel til `uploadUrl`. Dens `Content-Type` og `Content-Length` skal svare præcis til den `contentType` og `size`, du registrerede: Alt andet afvises. URL'en er forhåndssigneret, så tilføj ikke din API-nøgle. Den udløber efter 10 minutter.

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

**3. Brug fil-id'et**

Angiv `fileId`, når du [opretter en QR-kode](https://docs.getqr.com/da/api/endpoints/qr-codes.md):

* Som `fileId` til en `pdf`-, `image`- eller `video`-QR-kode. Upload med det tilsvarende target.
* Som `fileId` til profilbilledet på en `vcard`-, `social`-, `multilink`- eller `event`-QR-kode. Upload med target `logo`.
* Som `logoOptions.fileId`, med `logoOptions.type` sat til `uploaded`, til et eget logo. Upload med target `logo`. Se [Tilpasning](https://docs.getqr.com/da/api/guides/customization.md).

## Grænser

| `target` | Accepterede indholdstyper | Maksimal størrelse |
| - | - | - |
| `pdf` | `application/pdf` | 20 MB (20.971.520 bytes) |
| `image` | `image/*` | 5 MB (5.242.880 bytes) |
| `video` | `video/*` | 50 MB (52.428.800 bytes) |
| `logo` | `image/*` | 5 MB (5.242.880 bytes) |

* **Ren MIME-type.** Send én type og undertype med små bogstaver, f.eks. `image/png`. Parametre som `;charset=` og lister afvises.
* **Ingen SVG.** XML-baserede typer som `image/svg+xml` accepteres ikke. Upload et rasterbillede som `image/png` eller `image/jpeg`.

## Headere

**Authorization** `string` *required*

`Bearer` efterfulgt af din API-nøgle. Se [Godkendelse](https://docs.getqr.com/da/api/authentication.md).

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

`application/json`.

## Registrer en filupload

`POST /api/v1/files`

Registrerer en fil og returnerer en forhåndssigneret URL, som filen skal uploades til. Kaldet uploader ikke selve filen.

**target** `string` *required*

Hvad filen skal bruges til: `pdf`, `image`, `video` eller `logo`. Bestemmer de accepterede indholdstyper og størrelsesgrænsen. Se [Grænser](#grænser).

**contentType** `string` *required*

Filens MIME-type, f.eks. `application/pdf`, uden parametre. Upload-forespørgslen skal sende præcis denne `Content-Type`.

**size** `integer` *required*

Filens nøjagtige størrelse i bytes, et positivt heltal. Kontrolleres mod grænsen for target. Upload-forespørgslen skal sende præcis denne `Content-Length`.

**name** `string`

Det oprindelige filnavn, op til 255 tegn. Gemmes til visning i dashboardet. En sti med `/` eller `\` afvises.

**fileId** `string`

Id, der angives som `fileId` eller `logoOptions.fileId`.

**uploadUrl** `string`

Forhåndssigneret URL, som filen sendes til med `PUT`.

**expiresIn** `integer`

Sekunder, til `uploadUrl` udløber: `600`.

**method** `string`

HTTP-metode til uploaden: `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"
}
```

## Almindelige problemer

> [accordion] 422 "Content type … is not allowed for target"
>
> Indholdstypen passer ikke til target. F.eks. accepterer `pdf` kun `application/pdf`. Se [Grænser](#grænser).

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

> [accordion] 422 "File is too large for target"
>
> Den angivne `size` overskrider grænsen for target. Komprimer filen, før du registrerer den.

> [accordion] Uploaden til uploadUrl mislykkes
>
> URL'en udløber 10 minutter efter, at du har registreret filen, og forespørgslen skal sende præcis den registrerede `Content-Type` og `Content-Length`. Registrer filen igen for at få en ny URL.

> [accordion] 422 "is registered but its content was never uploaded" ved oprettelse af en QR-kode
>
> Du har registreret filen, men `PUT` til `uploadUrl` blev ikke gennemført. Upload filen, og opret derefter QR-koden.

> [accordion] 422 "was uploaded to …" ved oprettelse af en QR-kode
>
> Filen blev registreret med et andet target, f.eks. en `image`-fil brugt til en `pdf`-QR-kode. Registrer en ny upload med det tilsvarende target.

> [accordion] 404 "File … was not found" ved oprettelse af en QR-kode
>
> `fileId` findes ikke. Hent det fra svaret på [Registrer en filupload](#registrer-en-filupload).

## Næste skridt

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

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

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

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


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