# Pliki

Modele przyjmujące obrazy, wideo lub audio akceptują je w jednej z trzech postaci. Na stronie każdego modelu oznaczono jego parametry plików
(na przykład `image`, `images`, `videos`, `audios`).

## 1. Publiczny adres URL

Dowolny adres URL `https://` (lub `http://`), z którego model może pobrać plik:

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

Plik musi być dostępny bez ciasteczek ani logowania i pozostać dostępny do rozpoczęcia żądania. Na stronie każdego modelu
podano limity rozmiaru i wymiarów jego parametrów plików.

## 2. URI danych

Małe pliki można umieścić bezpośrednio jako URI `data:` o rozmiarze do 10 MB:

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

Kodowanie Base64 zwiększa treść o około jedną trzecią w porównaniu z plikiem, dlatego duże pliki lepiej przesyłać.

## 3. Przesyłanie pliku

W przypadku plików lokalnych poproś o adres URL przesyłania, wykonaj `PUT` bajtów pod ten adres i przekaż zwrócony `file_url` do modelu.
Utworzenie adresu URL przesyłania jest bezpłatne.

```bash 1 · Pobierz adres URL przesyłania
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 · przesyłanie
{
  "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 · Prześlij bajty, używając dokładnie zwróconych nagłówków
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Użyj file_url jako danych wejściowych modelu
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": "..."}'
```

- Obsługiwane pliki: `.jpg`, `.jpeg`, `.png`, `.webp` (do 15 MB) oraz `.mp4`, `.mov`, `.webm` (do 200 MB).
  Rozszerzenie określa typ; `content_type` musi być z nim zgodne.
- Adres URL przesyłania jest ważny przez jedną godzinę. `file_url` pozostaje ważny.
- W przypadku audio użyj publicznego adresu URL lub URI danych.

## Pliki wynikowe

> [!TIP]
> Wygenerowane pliki są kopiowane do naszej przestrzeni dyskowej i zwracane w `outputs[].url` jako odnośniki do `content.doitong.com`. Możesz
> przekazać je bezpośrednio do innego modelu, na przykład obraz z modelu text-to-image do modelu image-to-video.

To Ty wybierasz, jak długo pliki wynikowe są przechowywane:

- **Bezterminowo** (`permanent`, domyślne): do czasu ich usunięcia, za 100 kredytów API
  (0,10 $) za GB miesięcznie, pobierane raz dziennie z salda API (1 GB = 1024³ bajtów).
- **7 dni** (`temporary`): bezpłatnie, potem usuwane z naszej przestrzeni dyskowej.

Ustaw wartość domyślną za pomocą przełącznika „Przechowuj pliki bezterminowo” w [panelu](https://doitong.com/developers/dashboard#balance) lub za pomocą
`PATCH /account/storage`, a dla danego uruchomienia użyj `?storage=temporary` (lub `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"}'
```

Każde żądanie pokazuje własne `storage` (`mode`, `bytes`, `expires_at`, `expired`). Ustawienie dotyczy nowych żądań;
pliki przechowywane już bezterminowo pozostają do czasu ich usunięcia za pomocą `DELETE /requests/{id}/files` (zobacz
[Żądania](https://doitong.com/developers/docs/requests#delete-files)). Jeśli saldo API nie wystarcza na opłacenie przestrzeni dyskowej, otrzymasz wiadomość e-mail
i 30 dni na doładowanie salda, zanim przechowywane pliki zostaną przełączone na tymczasowe.
