# Dateien

Modelle, die Bilder, Video oder Audio verarbeiten, akzeptieren sie in einer von drei Formen. Jede Modellseite kennzeichnet ihre Datei-Parameter (zum Beispiel `image`, `images`, `videos`, `audios`).

## 1. Eine öffentliche URL

Jede `https://`- (oder `http://`-)URL, die das Modell herunterladen kann:

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

Die Datei muss ohne Cookies oder Anmeldung erreichbar sein und erreichbar bleiben, bis die Anfrage gestartet wurde. Jede Modellseite listet die Größen- und Abmessungsgrenzen ihrer Datei-Parameter auf.

## 2. Eine Data-URI

Kleine Dateien können inline als `data:`-URI mit bis zu 10 MB übertragen werden:

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

Base64 vergrößert den Body um etwa ein Drittel gegenüber der Datei. Verwende daher für größere Dateien bevorzugt Uploads.

## 3. Ein Upload

Fordere für lokale Dateien eine Upload-URL an, führe dort `PUT` für die Bytes aus und übergib dem Modell die zurückgegebene `file_url`. Das Erstellen der Upload-URL ist kostenlos.

```bash 1 · Eine Upload-URL abrufen
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 · Die Bytes mit genau den zurückgegebenen Headern hochladen
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · file_url als Modell-Eingabe verwenden
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": "..."}'
```

- Unterstützte Uploads: `.jpg`, `.jpeg`, `.png`, `.webp` (bis zu 15 MB) und `.mp4`, `.mov`, `.webm` (bis zu 200 MB). Die Erweiterung legt den Typ fest; `content_type` muss damit übereinstimmen.
- Die Upload-URL ist eine Stunde lang gültig. `file_url` bleibt gültig.
- Verwende für Audio eine öffentliche URL oder eine Data-URI.

## Ausgabe-Dateien

> [!TIP]
> Generierte Dateien werden in unseren Speicher kopiert und in `outputs[].url` als Links auf `content.doitong.com` zurückgegeben. Du kannst sie direkt an ein anderes Modell übergeben, zum Beispiel ein Bild aus einem Text-zu-Bild-Modell an ein Bild-zu-Video-Modell.

Du entscheidest, wie lange Ausgabe-Dateien aufbewahrt werden:

- **Dauerhaft** (`permanent`, der Standard): bis du sie löschst, für 100 API-Credits (0,10 $) pro GB und Monat, einmal täglich vom API-Guthaben abgebucht (1 GB = 1024³ Bytes).
- **7 Tage** (`temporary`): kostenlos, danach aus unserem Speicher gelöscht.

Lege den Standard mit dem Schalter „Dateien dauerhaft speichern“ im [Dashboard](https://doitong.com/developers/dashboard#balance) oder mit `PATCH /account/storage` fest und überschreibe ihn pro Ausführung mit `?storage=temporary` (oder `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"}'
```

Jede Anfrage zeigt ihren eigenen `storage`-Status (`mode`, `bytes`, `expires_at`, `expired`). Die Einstellung gilt für neue Anfragen; bereits dauerhaft gespeicherte Dateien bleiben erhalten, bis du sie mit `DELETE /requests/{id}/files` löschst (siehe [Anfragen](https://doitong.com/developers/docs/requests#delete-files)). Wenn das API-Guthaben die Speicherkosten nicht decken kann, erhältst du eine E-Mail und hast 30 Tage Zeit zum Aufladen, bevor gespeicherte Dateien temporär werden.
