# फ़ाइल

इमेज, वीडियो या ऑडियो लेने वाले मॉडल इन्हें तीन में से किसी भी रूप में स्वीकार करते हैं। हर मॉडल पेज अपने फ़ाइल
पैरामीटर (उदाहरण के लिए `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. अपलोड

स्थानीय फ़ाइलों के लिए, अपलोड 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 दिन मिलेंगे।
