# Fail

Model yang menerima imej, video atau audio menerimanya dalam salah satu daripada tiga bentuk. Setiap halaman model menandakan parameter failnya (contohnya `image`, `images`, `videos`, `audios`).

## 1. URL awam

Sebarang URL `https://` (atau `http://`) yang boleh dimuat turun oleh model:

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

Fail mesti boleh dicapai tanpa kuki atau log masuk, dan kekal boleh dicapai sehingga permintaan bermula. Setiap halaman model menyenaraikan had saiz dan dimensi parameter failnya.

## 2. URI data

Fail kecil boleh disertakan sebaris sebagai URI `data:` sehingga 10 MB:

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

Base64 menjadikan isi kira-kira sepertiga lebih besar daripada fail, jadi utamakan muat naik untuk apa-apa yang besar.

## 3. Muat naik

Untuk fail tempatan, minta URL muat naik, lakukan `PUT` bait ke URL tersebut dan hantarkan `file_url` yang dikembalikan kepada model. Mencipta URL muat naik adalah percuma.

```bash 1 · Dapatkan URL muat naik
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 · muat naik
{
  "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 · Muat naik bait dengan tepat menggunakan pengepala yang dikembalikan
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Gunakan file_url sebagai input model
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": "..."}'
```

- Muat naik yang disokong: `.jpg`, `.jpeg`, `.png`, `.webp` (sehingga 15 MB) dan `.mp4`, `.mov`, `.webm` (sehingga 200 MB). Sambungan menentukan jenis; `content_type` mesti sepadan dengannya.
- URL muat naik sah selama satu jam. `file_url` kekal sah.
- Untuk audio, gunakan URL awam atau URI data.

## Fail output

> [!TIP]
> Fail yang dijana disalin ke storan kami dan dikembalikan dalam `outputs[].url` sebagai pautan pada `content.doitong.com`. Anda boleh menghantarnya terus kepada model lain, contohnya imej daripada model text-to-image kepada model image-to-video.

Anda boleh memilih tempoh fail output disimpan:

- **Selama-lamanya** (`permanent`, lalai): sehingga anda memadamkannya, dengan harga 100 kredit API ($0.10) setiap GB sebulan, dicaj sekali sehari daripada baki API (1 GB = 1024³ bait).
- **7 hari** (`temporary`): percuma, kemudian dipadamkan daripada storan kami.

Tetapkan lalai dengan suis "Simpan fail selama-lamanya" dalam [papan pemuka](https://doitong.com/developers/dashboard#balance) atau dengan `PATCH /account/storage`, dan gantikannya bagi setiap proses dengan `?storage=temporary` (atau `permanent`):

```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"}'
```

Setiap permintaan memaparkan `storage` sendiri (`mode`, `bytes`, `expires_at`, `expired`). Tetapan digunakan untuk permintaan baharu; fail yang telah anda simpan selama-lamanya kekal sehingga anda memadamkannya dengan `DELETE /requests/{id}/files` (lihat [Permintaan](https://doitong.com/developers/docs/requests#delete-files)). Jika baki API tidak dapat membayar storan, anda akan menerima e-mel dan mempunyai 30 hari untuk tambah nilai sebelum fail yang disimpan menjadi sementara.
