# Dosyalar

Görsel, video veya ses alan modeller bunları üç biçimden herhangi biriyle kabul eder. Her model sayfası dosya
parametrelerini (örneğin `image`, `images`, `videos`, `audios`) belirtir.

## 1. Genel bir URL

Modelin indirebildiği herhangi bir `https://` (veya `http://`) URL'si:

```json
{ "image": "https://example.com/photos/product.jpg" }
```

Dosyaya çerez veya oturum açma olmadan erişilebilmeli ve istek başlayana kadar erişilebilir durumda kalmalıdır. Her model
sayfasında dosya parametrelerinin boyut ve ölçü sınırları listelenir.

## 2. Veri URI'si

Küçük dosyalar, 10 MB'a kadar bir `data:` URI'si olarak doğrudan eklenebilir:

```json
{ "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." }
```

Base64, gövdeyi dosyadan yaklaşık üçte bir oranında daha büyük hâle getirir; bu nedenle büyük dosyalar için yüklemeleri tercih edin.

## 3. Yükleme

Yerel dosyalar için bir yükleme URL'si isteyin, baytları buraya `PUT` ile gönderin ve döndürülen `file_url` değerini modele aktarın.
Yükleme URL'si oluşturmak ücretsizdir.

```bash 1 · Yükleme URL'si alın
curl -X POST "https://api.doitong.com/v1/files" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "product.jpg", "content_type": "image/jpeg", "size": 482113}'
```

```json 201 Created · yükleme
{
  "object": "upload",
  "upload_url": "https://…signed upload URL…",
  "file_url": "https://content.doitong.com/…/product.jpg",
  "method": "PUT",
  "headers": { "Content-Type": "image/jpeg" },
  "content_type": "image/jpeg",
  "expires_in": 3600,
  "max_bytes": 15728640
}
```

```bash 2 · Baytları, döndürülen başlıkları aynen kullanarak yükleyin
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Model girdisi olarak file_url kullanın
curl -X POST "https://api.doitong.com/v1/run/{model_id}?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image": "https://content.doitong.com/…/product.jpg", "prompt": "..."}'
```

- Desteklenen yüklemeler: `.jpg`, `.jpeg`, `.png`, `.webp` (15 MB'a kadar) ve `.mp4`, `.mov`, `.webm` (200 MB'a kadar).
  Uzantı türü belirler; `content_type` bununla eşleşmelidir.
- Yükleme URL'si bir saat geçerlidir. `file_url` geçerliliğini korur.
- Ses için genel bir URL veya veri URI'si kullanın.

## Çıktı dosyaları

> [!TIP]
> Oluşturulan dosyalar depolama alanımıza kopyalanır ve `outputs[].url` içinde `content.doitong.com` üzerindeki bağlantılar olarak döndürülür. Bunları
> doğrudan başka bir modele aktarabilirsiniz; örneğin bir metinden görsel oluşturan modelin görselini görselden videoya modeline aktarabilirsiniz.

Çıktı dosyalarının ne kadar süreyle saklanacağını siz seçersiniz:

- **Sonsuza kadar** (`permanent`, varsayılan): dosyaları siz silene kadar, GB başına ayda 100 API kredisi
  ($0,10); ücret API bakiyesinden günde bir kez alınır (1 GB = 1024³ bayt).
- **7 gün** (`temporary`): ücretsizdir, ardından depolama alanımızdan silinir.

Varsayılanı [dashboard](https://doitong.com/developers/dashboard#balance) içindeki "Dosyaları sonsuza kadar sakla" anahtarıyla veya
`PATCH /account/storage` ile ayarlayın; her çalıştırma için `?storage=temporary` (veya `permanent`) ile geçersiz kılın:

```bash
curl -X PATCH "https://api.doitong.com/v1/account/storage" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode": "temporary"}'
```

Her istek kendi `storage` değerini (`mode`, `bytes`, `expires_at`, `expired`) gösterir. Ayar yeni istekler için geçerlidir;
zaten sonsuza kadar sakladığınız dosyalar, `DELETE /requests/{id}/files` ile silene kadar kalır ([İstekler](https://doitong.com/developers/docs/requests#delete-files)
bölümüne bakın). API bakiyesi depolama ücretini karşılayamazsa e-posta alırsınız ve saklanan dosyalar geçici hâle gelmeden önce
bakiye yüklemek için 30 gününüz olur.
