# Filer

Modeller som tar imot bilder, video eller lyd, godtar dem i én av tre former. Hver modellside markerer filparameterne sine (for eksempel `image`, `images`, `videos`, `audios`).

## 1. En offentlig URL

Enhver `https://`- (eller `http://`-)URL som modellen kan laste ned:

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

Filen må være tilgjengelig uten informasjonskapsler eller innlogging og forbli tilgjengelig til forespørselen har startet. Hver modellside viser grensene for størrelse og dimensjoner for filparameterne.

## 2. En data-URI

Små filer kan legges inn direkte som en `data:`-URI på opptil 10 MB:

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

Base64 gjør bodyen omtrent en tredel større enn filen, så foretrekk opplastinger for alt som er stort.

## 3. En opplasting

For lokale filer ber du om en opplastings-URL, gjør `PUT` av bytene dit og sender den returnerte `file_url` til modellen. Det er gratis å opprette opplastings-URL-en.

```bash 1 · Hent en opplastings-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 · opplasting
{
  "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 · Last opp bytene med nøyaktig de returnerte headerne
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Bruk file_url som modellens inndata
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": "..."}'
```

- Støttede opplastinger: `.jpg`, `.jpeg`, `.png`, `.webp` (opptil 15 MB) og `.mp4`, `.mov`, `.webm` (opptil 200 MB). Filendelsen angir typen; `content_type` må samsvare med den.
- Opplastings-URL-en er gyldig i én time. `file_url` forblir gyldig.
- For lyd bruker du en offentlig URL eller en data-URI.

## Utdatafiler

> [!TIP]
> Genererte filer kopieres til lagringen vår og returneres i `outputs[].url` som lenker på `content.doitong.com`. Du kan sende dem direkte inn i en annen modell, for eksempel et bilde fra en text-to-image-modell inn i en image-to-video-modell.

Du velger hvor lenge utdatafiler beholdes:

- **For alltid** (`permanent`, standard): til du sletter dem, for 100 API-kreditter (0,10 $) per GB per måned, belastet én gang daglig fra API-saldoen (1 GB = 1024³ byte).
- **7 dager** (`temporary`): gratis, deretter slettet fra lagringen vår.

Angi standarden med bryteren «Lagre filer for alltid» i [dashbordet](https://doitong.com/developers/dashboard#balance) eller med `PATCH /account/storage`, og overstyr den per kjøring 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 forespørsel viser sin egen `storage` (`mode`, `bytes`, `expires_at`, `expired`). Innstillingen gjelder nye forespørsler; filer du allerede beholder for alltid, blir liggende til du sletter dem med `DELETE /requests/{id}/files` (se [Forespørsler](https://doitong.com/developers/docs/requests#delete-files)). Hvis API-saldoen ikke kan betale for lagring, får du en e-post og 30 dager til å fylle på før beholdte filer blir midlertidige.
