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

# Pliki

> Przesyłaj pliki PDF, obrazy, filmy i logo do swoich kodów QR.

> [!NOTE]
>
> API GetQR jest w wersji beta i jest dostępne dla wybranych obszarów roboczych. Szczegóły mogą się zmienić przed ogólną premierą.

Kody QR typu PDF, Image i Video wskazują plik, a własne logo to też plik. Przesyłanie ma dwa kroki: zarejestruj plik, aby uzyskać adres URL, a następnie wyślij zawartość pliku na ten adres.

| Metoda | Ścieżka | Opis |
| - | - | - |
| `POST` | `/api/v1/files` | [Rejestracja przesyłania pliku](#rejestracja-przesyłania-pliku) |

## Przesyłanie pliku

**1. Zarejestruj plik**

Wywołaj [rejestrację przesyłania pliku](#rejestracja-przesyłania-pliku), podając `target`, `contentType` i `size` pliku. `target` określa akceptowane typy treści i limit rozmiaru. Otrzymasz `fileId` i `uploadUrl`.

**2. Wyślij plik**

Wyślij plik żądaniem `PUT` na `uploadUrl`. Jego `Content-Type` i `Content-Length` muszą dokładnie odpowiadać zarejestrowanym `contentType` i `size`: wszystko inne zostanie odrzucone. Adres URL jest wstępnie podpisany, więc nie dodawaj klucza API. Wygasa po 10 minutach.

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

**3. Użyj ID pliku**

Przekaż `fileId`, gdy [tworzysz kod QR](https://docs.getqr.com/pl/api/endpoints/qr-codes.md):

* Jako `fileId` dla kodu QR typu `pdf`, `image` lub `video`. Prześlij plik z odpowiadającym celem (target).
* Jako `fileId` dla zdjęcia profilowego kodu QR typu `vcard`, `social`, `multilink` lub `event`. Prześlij plik z celem `logo`.
* Jako `logoOptions.fileId`, z `logoOptions.type` ustawionym na `uploaded`, dla własnego logo. Prześlij plik z celem `logo`. Zobacz [Personalizacja](https://docs.getqr.com/pl/api/guides/customization.md).

## Limity

| `target` | Akceptowane typy treści | Maksymalny rozmiar |
| - | - | - |
| `pdf` | `application/pdf` | 20 MB (20 971 520 bajtów) |
| `image` | `image/*` | 5 MB (5 242 880 bajtów) |
| `video` | `video/*` | 50 MB (52 428 800 bajtów) |
| `logo` | `image/*` | 5 MB (5 242 880 bajtów) |

* **Sam typ MIME.** Wyślij pojedynczy typ i podtyp małymi literami, np. `image/png`. Parametry takie jak `;charset=` oraz listy typów są odrzucane.
* **Bez SVG.** Typy oparte na XML, takie jak `image/svg+xml`, nie są akceptowane. Prześlij obraz rastrowy, np. `image/png` lub `image/jpeg`.

## Nagłówki

**Authorization** `string` *required*

`Bearer`, a po nim Twój klucz API. Zobacz [Uwierzytelnianie](https://docs.getqr.com/pl/api/authentication.md).

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

`application/json`.

## Rejestracja przesyłania pliku

`POST /api/v1/files`

Rejestruje plik i zwraca wstępnie podpisany adres URL, na który należy go przesłać. To wywołanie samo nie przesyła pliku.

**target** `string` *required*

Do czego służy plik: `pdf`, `image`, `video` lub `logo`. Określa akceptowane typy treści i limit rozmiaru. Zobacz [Limity](#limity).

**contentType** `string` *required*

Typ MIME pliku, np. `application/pdf`, bez parametrów. Żądanie przesyłania musi wysłać dokładnie ten `Content-Type`.

**size** `integer` *required*

Dokładny rozmiar pliku w bajtach, dodatnia liczba całkowita. Sprawdzany względem limitu dla danego celu. Żądanie przesyłania musi wysłać dokładnie tę wartość `Content-Length`.

**name** `string`

Oryginalna nazwa pliku, do 255 znaków. Przechowywana do wyświetlania w panelu. Ścieżka zawierająca `/` lub `\` jest odrzucana.

**fileId** `string`

ID do przekazania jako `fileId` lub `logoOptions.fileId`.

**uploadUrl** `string`

Wstępnie podpisany adres URL, na który należy wysłać plik metodą `PUT`.

**expiresIn** `integer`

Liczba sekund do wygaśnięcia `uploadUrl`: `600`.

**method** `string`

Metoda HTTP do przesyłania: `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"
}
```

## Typowe problemy

> [accordion] 422 "Content type … is not allowed for target"
>
> Typ treści nie pasuje do celu. Na przykład `pdf` akceptuje tylko `application/pdf`. Zobacz [Limity](#limity).

> [accordion] 422 "must be a single lowercase type/subtype"
>
> Wyślij typ treści małymi literami i bez parametrów: `image/png`, a nie `Image/PNG` ani `image/png; charset=utf-8`.

> [accordion] 422 "File is too large for target"
>
> Zadeklarowany `size` przekracza limit dla danego celu. Skompresuj plik przed rejestracją.

> [accordion] Przesyłanie na uploadUrl kończy się błędem
>
> Adres URL wygasa 10 minut po rejestracji pliku, a żądanie musi wysłać dokładnie zarejestrowane `Content-Type` i `Content-Length`. Zarejestruj plik ponownie, aby uzyskać nowy adres URL.

> [accordion] 422 "is registered but its content was never uploaded" przy tworzeniu kodu QR
>
> Plik został zarejestrowany, ale żądanie `PUT` na `uploadUrl` się nie zakończyło. Prześlij plik, a potem utwórz kod QR.

> [accordion] 422 "was uploaded to …" przy tworzeniu kodu QR
>
> Plik został zarejestrowany z innym celem, np. plik `image` użyty w kodzie QR typu `pdf`. Zarejestruj nowe przesyłanie z odpowiednim celem.

> [accordion] 404 "File … was not found" przy tworzeniu kodu QR
>
> `fileId` nie istnieje. Weź je z odpowiedzi [rejestracji przesyłania pliku](#rejestracja-przesyłania-pliku).

## Co dalej

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

> [card] [Typy kodów QR](https://docs.getqr.com/pl/api/guides/qr-types.md)

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

> [card] [Błędy](https://docs.getqr.com/pl/api/errors.md)


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