# Tệp

Các mô hình nhận hình ảnh, video hoặc âm thanh chấp nhận chúng dưới một trong ba dạng. Trang của từng mô hình đánh dấu các tham số tệp (ví dụ `image`, `images`, `videos`, `audios`).

## 1. URL công khai

Bất kỳ URL `https://` (hoặc `http://`) nào mà mô hình có thể tải xuống:

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

Tệp phải có thể truy cập mà không cần cookie hoặc đăng nhập và vẫn có thể truy cập cho đến khi yêu cầu bắt đầu. Trang của từng mô hình liệt kê giới hạn kích thước và kích thước hình học của các tham số tệp.

## 2. URI dữ liệu

Các tệp nhỏ có thể được đưa trực tiếp dưới dạng URI `data:` tối đa 10 MB:

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

Base64 làm phần thân lớn hơn khoảng một phần ba so với tệp, vì vậy hãy ưu tiên tải lên đối với mọi tệp lớn.

## 3. Tải lên

Với tệp cục bộ, hãy yêu cầu một URL tải lên, `PUT` các byte đến đó rồi truyền `file_url` được trả về cho mô hình. Tạo URL tải lên là miễn phí.

```bash 1 · Lấy URL tải lên
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 · tải lên
{
  "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 · Tải byte lên bằng chính xác các header được trả về
curl -X PUT "<upload_url>" -H "Content-Type: image/jpeg" --data-binary @product.jpg
```

```bash 3 · Dùng file_url làm đầu vào mô hình
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": "..."}'
```

- Tệp tải lên được hỗ trợ: `.jpg`, `.jpeg`, `.png`, `.webp` (tối đa 15 MB) và `.mp4`, `.mov`, `.webm` (tối đa 200 MB). Phần mở rộng xác định loại; `content_type` phải khớp với phần mở rộng.
- URL tải lên có hiệu lực trong một giờ. `file_url` vẫn có hiệu lực.
- Với âm thanh, hãy dùng URL công khai hoặc URI dữ liệu.

## Tệp đầu ra

> [!TIP]
> Các tệp được tạo được sao chép vào hệ thống lưu trữ của chúng tôi và trả về trong `outputs[].url` dưới dạng liên kết trên `content.doitong.com`. Bạn có thể truyền trực tiếp chúng vào một mô hình khác, ví dụ hình ảnh từ mô hình text-to-image vào mô hình image-to-video.

Bạn chọn thời gian lưu các tệp đầu ra:

- **Vĩnh viễn** (`permanent`, mặc định): cho đến khi bạn xóa chúng, với giá 100 tín dụng API (0,10 $) mỗi GB mỗi tháng, tính một lần mỗi ngày từ số dư API (1 GB = 1024³ byte).
- **7 ngày** (`temporary`): miễn phí, sau đó bị xóa khỏi hệ thống lưu trữ.

Đặt mặc định bằng công tắc "Lưu tệp vĩnh viễn" trong [bảng điều khiển](https://doitong.com/developers/dashboard#balance) hoặc bằng `PATCH /account/storage`, và ghi đè cho từng lần chạy bằng `?storage=temporary` (hoặc `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"}'
```

Mỗi yêu cầu hiển thị `storage` riêng (`mode`, `bytes`, `expires_at`, `expired`). Cài đặt áp dụng cho các yêu cầu mới; các tệp bạn đã giữ vĩnh viễn sẽ tồn tại cho đến khi bạn xóa chúng bằng `DELETE /requests/{id}/files` (xem [Yêu cầu](https://doitong.com/developers/docs/requests#delete-files)). Nếu số dư API không đủ trả phí lưu trữ, bạn sẽ nhận email và có 30 ngày để nạp tiền trước khi các tệp đang giữ trở thành tạm thời.
