# Bestanden

Modellen die afbeeldingen, video of audio gebruiken, accepteren deze in een van drie vormen. Elke modelpagina markeert de
bestandsparameters (bijvoorbeeld `image`, `images`, `videos`, `audios`).

## 1. Een openbare URL

Elke `https://`- (of `http://`-)URL die het model kan downloaden:

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

Het bestand moet zonder cookies of login bereikbaar zijn en bereikbaar blijven totdat de request is gestart. Elke modelpagina
vermeldt de limieten voor grootte en afmetingen van de bestandsparameters.

## 2. Een data-URI

Kleine bestanden kunnen inline worden meegestuurd als een `data:`-URI van maximaal 10 MB:

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

Base64 maakt de body ongeveer een derde groter dan het bestand, dus gebruik voor grote bestanden liever uploads.

## 3. Een upload

Vraag voor lokale bestanden een upload-URL aan, `PUT` de bytes daarheen en geef de geretourneerde `file_url` door aan het model.
Het aanmaken van de upload-URL is gratis.

```bash 1 · Een upload-URL ophalen
curl -X POST "https://api.doitong.ru/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 · upload
{
  "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 · De bytes uploaden met exact de geretourneerde headers
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · file_url gebruiken als modelinvoer
curl -X POST "https://api.doitong.ru/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": "..."}'
```

- Ondersteunde uploads: `.jpg`, `.jpeg`, `.png`, `.webp` (maximaal 15 MB) en `.mp4`, `.mov`, `.webm` (maximaal 200 MB).
  De extensie bepaalt het type; `content_type` moet hiermee overeenkomen.
- De upload-URL is één uur geldig. De `file_url` blijft geldig.
- Gebruik voor audio een openbare URL of een data-URI.

## Uitvoerbestanden

> [!TIP]
> Gegenereerde bestanden worden naar onze opslag gekopieerd en in `outputs[].url` teruggegeven als links op `content.doitong.com`. Je kunt
> ze rechtstreeks aan een ander model doorgeven, bijvoorbeeld een afbeelding van een text-to-image-model aan een image-to-video-model.

Je kiest hoe lang uitvoerbestanden worden bewaard:

- **Voor altijd** (`permanent`, de standaard): totdat je ze verwijdert, voor 100 API-credits
  ($ 0,10) per GB per maand, één keer per dag afgeschreven van het API-saldo (1 GB = 1024³ bytes).
- **7 dagen** (`temporary`): gratis, daarna verwijderd uit onze opslag.

Stel de standaard in met de schakelaar "Bestanden voor altijd bewaren" in het [dashboard](https://doitong.com/developers/dashboard#balance) of met
`PATCH /account/storage`, en overschrijf deze per run met `?storage=temporary` (of `permanent`):

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

Elke request toont zijn eigen `storage` (`mode`, `bytes`, `expires_at`, `expired`). De instelling geldt voor nieuwe requests;
bestanden die je al voor altijd bewaart, blijven staan totdat je ze verwijdert met `DELETE /requests/{id}/files` (zie
[Requests](https://doitong.com/developers/docs/requests#delete-files)). Als het API-saldo de opslag niet kan betalen, ontvang je een e-mail
en heb je 30 dagen om op te waarderen voordat bewaarde bestanden tijdelijk worden.
