# Datoteke

Modeli koji prihvaćaju slike, video ili audio primaju ih u jednom od tri oblika. Svaka stranica modela označava svoje parametre
za datoteke (na primjer `image`, `images`, `videos`, `audios`).

## 1. Javni URL

Bilo koji URL `https://` (ili `http://`) koji model može preuzeti:

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

Datoteka mora biti dostupna bez kolačića ili prijave i ostati dostupna dok zahtjev ne započne. Svaka stranica modela
navodi ograničenja veličine i dimenzija svojih parametara za datoteke.

## 2. URI podataka

Male datoteke mogu se umetnuti kao `data:` URI veličine do 10 MB:

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

Base64 povećava tijelo za približno trećinu u odnosu na datoteku, pa za sve veće datoteke radije upotrijebite prijenose.

## 3. Prijenos

Za lokalne datoteke zatražite URL za prijenos, pošaljite bajtove pomoću `PUT` i proslijedite vraćeni `file_url` modelu.
Stvaranje URL-a za prijenos je besplatno.

```bash 1 · Dohvaćanje URL-a za prijenos
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 · prijenos
{
  "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 · Prijenos bajtova s točno vraćenim zaglavljima
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Upotreba file_url kao ulaza modela
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": "..."}'
```

- Podržani prijenosi: `.jpg`, `.jpeg`, `.png`, `.webp` (do 15 MB) i `.mp4`, `.mov`, `.webm` (do 200 MB).
  Ekstenzija određuje vrstu; `content_type` joj mora odgovarati.
- URL za prijenos vrijedi jedan sat. `file_url` ostaje važeći.
- Za audio upotrijebite javni URL ili URI podataka.

## Izlazne datoteke

> [!TIP]
> Generirane datoteke kopiraju se u našu pohranu i vraćaju u `outputs[].url` kao poveznice na `content.doitong.com`. Možete
> ih izravno proslijediti drugom modelu, na primjer sliku iz modela text-to-image modelu image-to-video.

Odabirete koliko dugo se izlazne datoteke čuvaju:

- **Zauvijek** (`permanent`, zadano): dok ih ne izbrišete, za 100 API kredita
  (0,10 $) po GB mjesečno, naplaćeno jednom dnevno sa stanja API-ja (1 GB = 1024³ bajtova).
- **7 dana** (`temporary`): besplatno, zatim se brišu iz naše pohrane.

Postavite zadano pomoću prekidača "Čuvaj datoteke zauvijek" na [nadzornoj ploči](https://doitong.com/developers/dashboard#balance) ili pomoću
`PATCH /account/storage`, a nadjačajte po pokretanju s `?storage=temporary` (ili `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"}'
```

Svaki zahtjev prikazuje vlastiti `storage` (`mode`, `bytes`, `expires_at`, `expired`). Postavka se primjenjuje na nove zahtjeve;
datoteke koje već čuvate zauvijek ostaju dok ih ne izbrišete pomoću `DELETE /requests/{id}/files` (pogledajte
[Zahtjevi](https://doitong.com/developers/docs/requests#delete-files)). Ako stanje API-ja ne može platiti pohranu, dobit ćete e-poruku
i 30 dana za nadoplatu prije nego što čuvane datoteke postanu privremene.
