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

# Dosyalar

> QR kodlarınız için PDF, görsel, video ve logo yükleyin.

> [!NOTE]
>
> GetQR API'si beta aşamasındadır ve seçili çalışma alanlarında kullanılabilir. Ayrıntılar genel sürümden önce değişebilir.

PDF, görsel ve video QR kodları bir dosyaya yönlendirir; özel bir logo da bir dosyadır. Yükleme iki adımdan oluşur: bir URL almak için dosyayı kaydedin, ardından dosyanın baytlarını bu URL'ye gönderin.

| Yöntem | Yol | Açıklama |
| - | - | - |
| `POST` | `/api/v1/files` | [Dosya yüklemesi kaydetme](#dosya-yüklemesi-kaydetme) |

## Dosya yükleyin

**1. Dosyayı kaydedin**

Dosyanın `target`, `contentType` ve `size` değerleriyle [Dosya yüklemesi kaydetme](#dosya-yüklemesi-kaydetme) uç noktasını çağırın. `target`, kabul edilen içerik türlerini ve boyut sınırını belirler. Bir `fileId` ve bir `uploadUrl` alırsınız.

**2. Dosyayı gönderin**

Dosyayı `uploadUrl` adresine bir `PUT` isteğiyle gönderin. İsteğin `Content-Type` ve `Content-Length` değerleri, kaydettiğiniz `contentType` ve `size` ile birebir eşleşmelidir: aksi hâlde istek reddedilir. URL önceden imzalanmıştır, bu yüzden API anahtarınızı eklemeyin. URL'nin süresi 10 dakika sonra dolar.

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

**3. Dosya kimliğini kullanın**

[QR kodu oluştururken](https://docs.getqr.com/tr/api/endpoints/qr-codes.md) `fileId` değerini gönderin:

* Bir `pdf`, `image` veya `video` QR kodu için `fileId` olarak. Eşleşen hedefle yükleyin.
* Bir `vcard`, `social`, `multilink` veya `event` QR kodunun profil görseli için `fileId` olarak. `logo` hedefiyle yükleyin.
* Özel bir logo için, `logoOptions.type` değeri `uploaded` olacak şekilde `logoOptions.fileId` olarak. `logo` hedefiyle yükleyin. Bkz. [Özelleştirme](https://docs.getqr.com/tr/api/guides/customization.md).

## Sınırlar

| `target` | Kabul edilen içerik türleri | En büyük boyut |
| - | - | - |
| `pdf` | `application/pdf` | 20 MB (20.971.520 bayt) |
| `image` | `image/*` | 5 MB (5.242.880 bayt) |
| `video` | `video/*` | 50 MB (52.428.800 bayt) |
| `logo` | `image/*` | 5 MB (5.242.880 bayt) |

* **Yalın MIME türü.** `image/png` gibi küçük harfli tek bir tür ve alt tür gönderin. `;charset=` gibi parametreler ve listeler reddedilir.
* **SVG yok.** `image/svg+xml` gibi XML tabanlı türler kabul edilmez. `image/png` veya `image/jpeg` gibi raster bir görsel yükleyin.

## Başlıklar

**Authorization** `string` *required*

`Bearer` ve ardından API anahtarınız. Bkz. [Kimlik doğrulama](https://docs.getqr.com/tr/api/authentication.md).

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

`application/json`.

## Dosya yüklemesi kaydetme

`POST /api/v1/files`

Bir dosyayı kaydeder ve dosyanın yükleneceği önceden imzalanmış bir URL döndürür. Bu çağrı dosyanın kendisini yüklemez.

**target** `string` *required*

Dosyanın amacı: `pdf`, `image`, `video` veya `logo`. Kabul edilen içerik türlerini ve boyut sınırını belirler. Bkz. [Sınırlar](#sınırlar).

**contentType** `string` *required*

Dosyanın parametresiz MIME türü; örneğin `application/pdf`. Yükleme isteği tam olarak bu `Content-Type` değerini göndermelidir.

**size** `integer` *required*

Dosyanın bayt cinsinden tam boyutu; pozitif bir tam sayı. Hedefin sınırına göre kontrol edilir. Yükleme isteği tam olarak bu `Content-Length` değerini göndermelidir.

**name** `string`

Orijinal dosya adı; en fazla 255 karakter. Panelde göstermek için saklanır. `/` veya `\` içeren bir yol reddedilir.

**fileId** `string`

`fileId` veya `logoOptions.fileId` olarak gönderilecek kimlik.

**uploadUrl** `string`

Dosyanın `PUT` ile gönderileceği önceden imzalanmış URL.

**expiresIn** `integer`

`uploadUrl` süresinin dolmasına kalan saniye: `600`.

**method** `string`

Yükleme için HTTP yöntemi: `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"
}
```

## Sık karşılaşılan sorunlar

> [accordion] 422 "Content type … is not allowed for target"
>
> İçerik türü hedefle eşleşmiyor. Örneğin `pdf` yalnızca `application/pdf` kabul eder. Bkz. [Sınırlar](#sınırlar).

> [accordion] 422 "must be a single lowercase type/subtype"
>
> İçerik türünü küçük harflerle ve parametresiz gönderin: `Image/PNG` veya `image/png; charset=utf-8` değil, `image/png`.

> [accordion] 422 "File is too large for target"
>
> Bildirilen `size`, hedefin sınırını aşıyor. Dosyayı kaydetmeden önce sıkıştırın.

> [accordion] uploadUrl adresine yükleme başarısız oluyor
>
> URL'nin süresi dosyayı kaydettikten 10 dakika sonra dolar ve istek, kaydedilen `Content-Type` ve `Content-Length` değerlerini birebir göndermelidir. Yeni bir URL almak için dosyayı yeniden kaydedin.

> [accordion] QR kodu oluştururken 422 "is registered but its content was never uploaded"
>
> Dosyayı kaydettiniz ancak `uploadUrl` adresine yapılan `PUT` tamamlanmadı. Dosyayı yükleyin, ardından QR kodunu oluşturun.

> [accordion] QR kodu oluştururken 422 "was uploaded to …"
>
> Dosya farklı bir hedefle kaydedilmiş; örneğin bir `pdf` QR kodu için kullanılan bir `image` dosyası. Eşleşen hedefle yeni bir yükleme kaydedin.

> [accordion] QR kodu oluştururken 404 "File … was not found"
>
> `fileId` mevcut değil. Bu değeri [Dosya yüklemesi kaydetme](#dosya-yüklemesi-kaydetme) yanıtından alın.

## Sırada ne var

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

> [card] [QR türleri](https://docs.getqr.com/tr/api/guides/qr-types.md)

> [card] [Özelleştirme](https://docs.getqr.com/tr/api/guides/customization.md)

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


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