# Файлы

Модели, принимающие изображения, видео или аудио, поддерживают три формы передачи. На странице каждой модели отмечены её параметры-файлы (например, `image`, `images`, `videos`, `audios`).

## 1. Публичный URL

Любой URL `https://` (или `http://`), который модель может скачать:

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

Файл должен быть доступен без cookie и входа в аккаунт и оставаться доступным до начала запроса. Ограничения размера и разрешения параметров-файлов указаны на странице каждой модели.

## 2. URI данных

Небольшие файлы можно передать непосредственно как URI `data:` размером до 10 MB:

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

Из-за Base64 тело становится примерно на треть больше файла, поэтому для больших файлов используйте загрузку.

## 3. Загрузка

Для локальных файлов запросите URL загрузки, выполните `PUT` байтов по этому адресу и передайте модели возвращённый `file_url`. Создание URL загрузки бесплатно.

```bash 1 · Получить URL загрузки
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 · загрузка
{
  "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 · Загрузить байты, используя в точности возвращённые заголовки
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Использовать file_url как входные данные модели
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": "..."}'
```

- Поддерживаемые загрузки: `.jpg`, `.jpeg`, `.png`, `.webp` (до 15 MB) и `.mp4`, `.mov`, `.webm` (до 200 MB). Расширение задаёт тип; `content_type` должен ему соответствовать.
- URL загрузки действителен один час. `file_url` остаётся действительным.
- Для аудио используйте публичный URL или URI данных.

## Выходные файлы

> [!TIP]
> Сгенерированные файлы копируются в наше хранилище и возвращаются в `outputs[].url` как ссылки на `content.doitong.com`. Их можно напрямую передать другой модели, например изображение из модели text-to-image — модели image-to-video.

Вы выбираете срок хранения выходных файлов:

- **Навсегда** (`permanent`, по умолчанию): пока вы не удалите их, за 100 API-кредитов (0,10 $) за ГБ в месяц, с ежедневным списанием с баланса API (1 ГБ = 1024³ байт).
- **7 дней** (`temporary`): бесплатно, затем файлы удаляются из нашего хранилища.

Задайте режим по умолчанию переключателем «Хранить файлы навсегда» в [панели управления](https://doitong.com/developers/dashboard#balance) или с помощью `PATCH /account/storage`, а для отдельного запуска переопределите его параметром `?storage=temporary` (или `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"}'
```

Каждый запрос содержит собственный `storage` (`mode`, `bytes`, `expires_at`, `expired`). Настройка применяется к новым запросам; файлы, которые уже хранятся навсегда, остаются до удаления с помощью `DELETE /requests/{id}/files` (см. [Запросы](https://doitong.com/developers/docs/requests#delete-files)). Если на балансе API недостаточно средств для хранения, вы получите письмо и 30 дней на пополнение, прежде чем сохранённые файлы станут временными.
