# 파일

이미지, 동영상 또는 오디오를 입력으로 받는 모델은 세 가지 형식 중 하나로 이를 허용합니다. 각 모델 페이지에는 파일
매개변수(예: `image`, `images`, `videos`, `audios`)가 표시되어 있습니다.

## 1. 공개 URL

모델이 다운로드할 수 있는 모든 `https://`(또는 `http://`) URL:

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

파일은 쿠키나 로그인 없이 액세스할 수 있어야 하며, 요청이 시작될 때까지 계속 액세스할 수 있어야 합니다. 각 모델
페이지에는 파일 매개변수의 크기 및 해상도 제한이 나와 있습니다.

## 2. 데이터 URI

작은 파일은 최대 10 MB의 `data:` URI로 인라인 입력할 수 있습니다.

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

Base64를 사용하면 본문이 파일보다 약 3분의 1 더 커지므로 큰 파일에는 업로드를 사용하는 것이 좋습니다.

## 3. 업로드

로컬 파일의 경우 업로드 URL을 요청하고, 해당 URL에 바이트를 `PUT`한 다음 반환된 `file_url`을 모델에 전달합니다.
업로드 URL 생성은 무료입니다.

```bash 1 · 업로드 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 · 업로드
{
  "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.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": "..."}'
```

- 지원되는 업로드: `.jpg`, `.jpeg`, `.png`, `.webp`(최대 15 MB) 및 `.mp4`, `.mov`, `.webm`(최대 200 MB).
  확장자가 유형을 결정하며, `content_type`이 확장자와 일치해야 합니다.
- 업로드 URL은 한 시간 동안 유효합니다. `file_url`은 계속 유효합니다.
- 오디오에는 공개 URL 또는 데이터 URI를 사용합니다.

## 출력 파일

> [!TIP]
> 생성된 파일은 당사 스토리지에 복사되며 `outputs[].url`에 `content.doitong.com`의 링크로 반환됩니다. 이를 다른 모델에 바로
> 전달할 수 있습니다. 예를 들어 텍스트-이미지 모델의 이미지를 이미지-동영상 모델에 전달할 수 있습니다.

출력 파일을 보관할 기간을 선택할 수 있습니다.

- **영구** (`permanent`, 기본값): 파일을 삭제할 때까지 보관되며, 월별 GB당 100 API 크레딧
  ($0.10)이 부과됩니다. API 잔액에서 하루에 한 번 청구됩니다(1 GB = 1024³ bytes).
- **7일** (`temporary`): 무료이며, 이후 당사 스토리지에서 삭제됩니다.

[대시보드](https://doitong.com/developers/dashboard#balance)의 "파일 영구 보관" 스위치 또는
`PATCH /account/storage`로 기본값을 설정하고, `?storage=temporary`(또는 `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"}'
```

각 요청에는 자체 `storage`(`mode`, `bytes`, `expires_at`, `expired`)가 표시됩니다. 이 설정은 새 요청에 적용됩니다.
이미 영구 보관 중인 파일은 `DELETE /requests/{id}/files`로 삭제할 때까지 유지됩니다([요청](https://doitong.com/developers/docs/requests#delete-files) 참조).
API 잔액으로 스토리지 비용을 지불할 수 없는 경우 이메일을 받으며, 보관 중인 파일이 임시 파일로 전환되기 전에 30일 동안 충전할 수 있습니다.
