# Filer

Modeller, der tager billeder, video eller lyd, accepterer dem i en af tre former. Hver modelside markerer dens
filparametre (f.eks. `image`, `images`, `videos`, `audios`).

## 1. En offentlig URL

Enhver `https://`- (eller `http://`-)URL, som modellen kan downloade:

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

Filen skal kunne tilgås uden cookies eller login og forblive tilgængelig, indtil anmodningen er startet. Hver modelside
viser størrelses- og dimensionsgrænserne for dens filparametre.

## 2. En data-URI

Små filer kan indsættes direkte som en `data:`-URI på op til 10 MB:

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

Base64 gør brødteksten omkring en tredjedel større end filen, så foretræk uploads til alt stort.

## 3. En upload

For lokale filer skal du anmode om en upload-URL, `PUT` bytesene dertil og sende den returnerede `file_url` til modellen.
Det er gratis at oprette upload-URL'en.

```bash 1 · Hent en upload-URL
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 · 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 · Upload bytesene med præcis de returnerede headers
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Brug file_url som modelinput
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": "..."}'
```

- Understøttede uploads: `.jpg`, `.jpeg`, `.png`, `.webp` (op til 15 MB) og `.mp4`, `.mov`, `.webm` (op til 200 MB).
  Filendelsen angiver typen; `content_type` skal stemme overens med den.
- Upload-URL'en er gyldig i én time. `file_url` forbliver gyldig.
- Til lyd skal du bruge en offentlig URL eller en data-URI.

## Outputfiler

> [!TIP]
> Genererede filer kopieres til vores lagring og returneres i `outputs[].url` som links på `content.doitong.com`. Du kan
> sende dem direkte ind i en anden model, f.eks. et billede fra en text-to-image-model ind i en image-to-video-model.

Du vælger, hvor længe outputfilerne opbevares:

- **For altid** (`permanent`, standarden): indtil du sletter dem, for 100 API-kreditter
  (0,10 $) pr. GB pr. måned, opkrævet én gang dagligt fra API-saldoen (1 GB = 1024³ bytes).
- **7 dage** (`temporary`): gratis, derefter slettes de fra vores lagring.

Angiv standarden med kontakten "Gem filer for altid" i [dashboardet](https://doitong.com/developers/dashboard#balance) eller med
`PATCH /account/storage`, og tilsidesæt den pr. kørsel med `?storage=temporary` (eller `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"}'
```

Hver anmodning viser sin egen `storage` (`mode`, `bytes`, `expires_at`, `expired`). Indstillingen gælder for nye anmodninger;
filer, du allerede opbevarer for altid, bliver, indtil du sletter dem med `DELETE /requests/{id}/files` (se
[Anmodninger](https://doitong.com/developers/docs/requests#delete-files)). Hvis API-saldoen ikke kan betale for lagring, får du en e-mail
og 30 dage til at fylde saldoen op, før de opbevarede filer bliver midlertidige.
