# Mafaili

Modeli zinazopokea picha, video au sauti hukubali katika aina yoyote kati ya tatu. Kila ukurasa wa modeli huashiria vigezo vyake vya mafaili (kwa mfano `image`, `images`, `videos`, `audios`).

## 1. URL ya umma

URL yoyote ya `https://` (au `http://`) ambayo modeli inaweza kupakua:

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

Faili lazima lifikike bila vidakuzi au kuingia, na liendelee kufikika hadi ombi lianze. Kila ukurasa wa modeli huorodhesha mipaka ya ukubwa na vipimo ya vigezo vyake vya mafaili.

## 2. URI ya data

Mafaili madogo yanaweza kuwekwa ndani kama URI ya `data:` ya hadi MB 10:

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

Base64 hufanya mwili uwe mkubwa kwa takriban theluthi moja kuliko faili, kwa hiyo pendelea upakiaji kwa kitu kikubwa.

## 3. Upakiaji

Kwa mafaili ya ndani, omba URL ya kupakia, `PUT` baiti hapo, kisha pitisha `file_url` iliyorejeshwa kwa modeli. Kuunda URL ya kupakia ni bila malipo.

```bash 1 · Pata URL ya kupakia
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 · kupakia
{
  "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 · Pakia baiti kwa vichwa vilivyorudishwa sawasawa
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Tumia file_url kama ingizo la modeli
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": "..."}'
```

- Vipakiaji vinavyotumika: `.jpg`, `.jpeg`, `.png`, `.webp` (hadi MB 15) na `.mp4`, `.mov`, `.webm` (hadi MB 200). Kiendelezi huweka aina; `content_type` lazima ilingane nayo.
- URL ya kupakia ni halali kwa saa moja. `file_url` hubaki halali.
- Kwa sauti, tumia URL ya umma au URI ya data.

## Mafaili ya tokeo

> [!TIP]
> Mafaili yaliyotengenezwa yanakiliwa kwenye hifadhi yetu na kurudishwa katika `outputs[].url` kama viungo kwenye `content.doitong.com`. Unaweza kuyapitisha moja kwa moja kwenye modeli nyingine, kwa mfano picha kutoka modeli ya text-to-image kwenda kwenye modeli ya image-to-video.

Unachagua muda wa kuhifadhi mafaili ya tokeo:

- **Milele** (`permanent`, chaguomsingi): hadi uyafute, kwa 100 krediti za API ($ 0.10) kwa GB kwa mwezi, hutozwa mara moja kwa siku kutoka salio la API (1 GB = 1024³ baiti).
- **Siku 7** (`temporary`): bila malipo, kisha hufutwa kutoka kwenye hifadhi yetu.

Weka chaguo-msingi kwa swichi ya "Hifadhi faili milele" kwenye [dashibodi](https://doitong.com/developers/dashboard#balance) au kwa `PATCH /account/storage`, na uibatilie kwa kila uendeshaji kwa `?storage=temporary` (au `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"}'
```

Kila ombi huonyesha `storage` yake (`mode`, `bytes`, `expires_at`, `expired`). Mpangilio hutumika kwa maombi mapya; mafaili ambayo tayari unahifadhi milele hubaki hadi uyafute kwa `DELETE /requests/{id}/files` (angalia [Maombi](https://doitong.com/developers/docs/requests#delete-files)). Salio la API lisipoweza kulipia hifadhi, utapata barua pepe na siku 30 za kuongeza salio kabla mafaili yaliyohifadhiwa kuwa ya muda.
