> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/hi/roboflow-cloud/batch-processing.md).

# Batch Processing

## के बारे में

बैच प्रोसेसिंग चलाने का एक किफायती तरीका है [वर्कफ़्लोज़](https://docs.roboflow.com/workflows) छवियों और संग्रहीत वीडियो के बैचों पर। यह बड़ी मात्रा में डेटा को एसिंक्रोनस रूप से प्रोसेस करने के लिए आदर्श है।

बैच प्रोसेसिंग बड़े बैच को चलाने के लिए आवश्यक इन्फ्रास्ट्रक्चर स्वचालित रूप से प्रोविज़न करता है।

{% hint style="info" %}
बैच प्रोसेसिंग ग्रोथ और एंटरप्राइज़ प्लान पर उपलब्ध है। आप "Batch Processing" टैब से जॉब शुरू कर सकते हैं, या चयन पर एक वर्कफ़्लो चला सकते हैं [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library).
{% endhint %}

आप Roboflow वेब इंटरफ़ेस या हमारे API (CLI के माध्यम से) से बैच प्रोसेसिंग जॉब कॉन्फ़िगर कर सकते हैं।

जब आप जॉब शुरू करते हैं, तो आपके डेटा को प्रोसेस करने के लिए क्लाउड में मशीनें प्रोविज़न की जाएंगी। फिर आपको अपने डेटा पर चलाने के लिए चुने गए वर्कफ़्लो के आउटपुट वाली JSON फ़ाइल प्राप्त होगी।

निम्न वीडियो बैच प्रोसेसिंग को विस्तार से समझाता है:

{% embed url="<https://www.youtube.com/watch?v=S7K2j2IeQrM>" %}

## वेब ऐप

### बैच प्रोसेसिंग जॉब बनाएँ

बैच प्रोसेसिंग जॉब बनाने के लिए, अपने Roboflow डैशबोर्ड के बाएँ साइडबार में Deployments पर क्लिक करें। फिर, "Batch Processing" टैब पर क्लिक करें:

<figure><img src="/files/aada2cd93a219ff2f989b0fc71bef2ba856a9822" alt=""><figcaption></figcaption></figure>

बैच प्रोसेसिंग जॉब बनाने के लिए "New Batch Job" पर क्लिक करें।

एक विंडो खुलेगी जिसमें आप अपना जॉब कॉन्फ़िगर कर सकते हैं:

<figure><img src="/files/15ace38d7e379b7d545add94877d56d9897358fe" alt=""><figcaption></figcaption></figure>

#### वर्कफ़्लो चुनें

जॉब कॉन्फ़िगर करना शुरू करने के लिए, पहले एक वर्कफ़्लो चुनें। यदि आपके पास पहले से कोई वर्कफ़्लो नहीं है, तो आरंभ करने के लिए हमारे वर्कफ़्लोज़ दस्तावेज़ देखें।

#### छवियाँ या वीडियो अपलोड करें

इसके बाद, आपको वे छवियाँ या वीडियो अपलोड करने होंगे जिन पर आप अपना वर्कफ़्लो चलाना चाहते हैं।

#### हार्डवेयर कॉन्फ़िगर करें

आप अपना बैच प्रोसेसिंग जॉब CPU या GPU पर चला सकते हैं। GPU जॉब तेज़ होते हैं, लेकिन अधिक महंगे होते हैं।

मूल्य निर्धारण की जानकारी के लिए, Roboflow मूल्य निर्धारण दस्तावेज़ देखें।

अपने जॉब के लिए CPU या GPU में से एक चुनें:

<figure><img src="/files/5de9f87649e9462bb73542a3349d67319f4d2a36" alt=""><figcaption></figcaption></figure>

"Advanced Options" टैब के अंतर्गत कई उन्नत कॉन्फ़िगरेशन विकल्प भी उपलब्ध हैं। हम इन विकल्पों को डिफ़ॉल्ट पर ही रखने की अनुशंसा करते हैं।

#### जॉब शुरू करें

बैच प्रोसेसिंग जॉब शुरू करने के लिए, "Create Batch Job" पर क्लिक करें।

आपके जॉब का इन्फ्रास्ट्रक्चर प्रोविज़न किया जाएगा और प्रोसेसिंग शुरू हो जाएगी।

### जॉब की प्रगति मॉनिटर करें

जब आप अपना जॉब शुरू करते हैं, तो एक स्थिति संकेतक दिखाई देगा जो बताएगा कि प्रोसेसिंग कब कॉन्फ़िगर की जा रही है, बैच डेटा कब प्रोसेस किया जा रहा है, और जॉब कब पूरा हुआ है।

आप रीयल टाइम में मॉनिटर कर सकते हैं कि बैच का कितना भाग प्रोसेस हो चुका है।

आपके डेटा को प्रोसेस करने में लगने वाला समय इस बात पर निर्भर करता है कि आप कितनी छवियाँ या वीडियो प्रोसेस कर रहे हैं, आपके वर्कफ़्लो की जटिलता क्या है, और आपने CPU या GPU हार्डवेयर चुना है या नहीं।

किसी जॉब का विवरण देखने के लिए उसे खोलें, जिसमें "Input Source" भी शामिल है, जो दिखाता है कि जॉब किन छवियों पर चला: [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library) उन्हें चुनने के लिए उपयोग की गई खोज क्वेरी (उस चयन को फिर से खोलने के लिंक सहित), या मैन्युअल रूप से चुनी गई छवियों की संख्या।

### ऐप से वर्कफ़्लो चलाएँ

इसके अलावा [API](#http-api) और [CLI](#cli), आप Roboflow ऐप से सीधे बैच प्रोसेसिंग जॉब शुरू कर सकते हैं ताकि [वर्कफ़्लो](https://docs.roboflow.com/workflows) संग्रहीत छवियों के बड़े सेट पर चलाया जा सके। ऐसा करने के दो तरीके हैं:

* माँग पर, एसेट लाइब्रेरी से।
* स्वचालित रूप से, हर बार जब कोई [डेटासोर्स](https://docs.roboflow.com/datasets/create-and-upload/adding-data/datasources) क्लाउड बकेट से नई छवियों को मिरर करता है।

#### एसेट लाइब्रेरी से

यह [एसेट लाइब्रेरी](https://docs.roboflow.com/platform/workspaces/asset-library) आपको चुनी गई छवियों पर माँग के अनुसार वर्कफ़्लो चलाने देता है।

छवियों को मैन्युअल रूप से चुनें, या अपनी वर्तमान खोज से मेल खाने वाली सभी छवियाँ चुनें, फिर "Run Workflow" पर क्लिक करें। पूर्ण प्रवाह के लिए, जिसमें परिणामों को आपकी छवियों पर वापस लिखने का तरीका भी शामिल है, देखें [वर्कफ़्लो चलाना](https://docs.roboflow.com/platform/workspaces/asset-library#running-a-workflow).

#### जब डेटासोर्स मिरर करे, तब स्वचालित रूप से

एक [डेटासोर्स](https://docs.roboflow.com/datasets/create-and-upload/adding-data/datasources) क्लाउड बकेट से छवियों और मेटाडेटा को आपके Workspace में मिरर करता है। आप हर मिरर इंपोर्ट द्वारा आयात की गई नई छवियों पर स्वचालित रूप से वर्कफ़्लो चला सकते हैं। इससे नया डेटा आने पर टैगिंग, गुणवत्ता स्कोरिंग या प्री-लेबलिंग जैसे संवर्धन बिना किसी मैन्युअल चरण के अद्यतन रहते हैं।

आप इन ऑटोमेशन को अपने [डेटासोर्सेज़](https://app.roboflow.com/settings/datasources) पृष्ठ के "Workflow runs" अनुभाग में कॉन्फ़िगर करते हैं।

{% hint style="info" %}
वर्कफ़्लो रन प्रबंधित करने के लिए बैच ऑटोमेशन प्रबंधित करने की अनुमति वाली Workspace भूमिका आवश्यक है। यदि आपको "Workflow runs" अनुभाग दिखाई नहीं देता, तो Workspace एडमिन से पूछें।
{% endhint %}

ऑटोमेशन जोड़ने के लिए:

1. "Workflow runs" अनुभाग में, "Add workflow run" पर क्लिक करें।
2. ऑटोमेशन के लिए एक नाम दर्ज करें।
3. "Run when" के अंतर्गत, "On Sync" चुनें और [डेटासोर्सेज़](https://docs.roboflow.com/datasets/create-and-upload/adding-data/datasources) चुनें जिसे इसे ट्रिगर करना चाहिए।
4. चलाने के लिए वर्कफ़्लो चुनें। उसमें ठीक एक `छवि` इनपुट होना चाहिए।
5. मशीन प्रकार (CPU या GPU) चुनें।
6. "Create" पर क्लिक करें।

हर बार जब चयनित डेटासोर्सेज़ में से कोई मिरर करता है, तो ऑटोमेशन मिरर इंपोर्ट द्वारा आयात की गई छवियों पर बैच प्रोसेसिंग जॉब के रूप में वर्कफ़्लो चलाता है। प्रगति को Activity Center में और Deployments के अंतर्गत "Batch Processing" टैब में ट्रैक करें, जैसा किसी अन्य बैच प्रोसेसिंग जॉब के लिए करते हैं।

किसी वर्कफ़्लो से परिणाम आपकी छवियों पर वापस लिखवाने के लिए, ताकि आप उन्हें एसेट लाइब्रेरी में खोज सकें, देखें [एसेट लाइब्रेरी में परिणाम वापस लिखना](https://docs.roboflow.com/platform/workspaces/asset-library#writing-results-back-to-the-asset-library).

### API या CLI के साथ जॉब चलाएँ

प्रोग्रामेटिक रूप से बैच प्रोसेसिंग जॉब बनाने और चलाने के लिए, देखें [HTTP API](#http-api) और [CLI](#cli) नीचे दिए गए अनुभाग। सामान्य समस्याओं के डीबगिंग के लिए, देखें [समस्या निवारण](/deployment/hi/roboflow-cloud/batch-processing/troubleshooting.md).

## HTTP API

**त्वरित लिंक:**

* [डेटा इनजेस्ट करें](#ingest-data) (वीडियो, एकल छवि, छवियाँ)
* [बैच स्थिति जाँचें](#check-batch-status) (आइटम संख्या, शार्ड विवरण)
* [जॉब शुरू करें](#start-a-job)
* [जॉब की प्रगति मॉनिटर करें](#monitor-job-progress) (जॉब स्थिति, चरण, कार्य)
* [परिणाम एक्सपोर्ट करें](#export-results) (आउटपुट भाग, डाउनलोड URL)
* [वेबहुक सूचनाएँ](#webhook-notifications)

### डेटा इनजेस्ट करें

#### वीडियो अपलोड करें

## Upload a video

> Request a signed URL to upload a video file. After receiving the response, PUT the video to the \`uploadURL\` with the provided \`extensionHeaders\`.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Data Ingestion","description":"Upload images and videos to Data Staging before processing."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/upload/video":{"post":{"operationId":"uploadVideo","tags":["Data Ingestion"],"summary":"Upload a video","description":"Request a signed URL to upload a video file. After receiving the response, PUT the video to the `uploadURL` with the provided `extensionHeaders`.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"},{"name":"fileName","in":"query","required":true,"schema":{"type":"string"},"description":"Name of the video file (e.g. `my_video.mp4`)."}],"responses":{"200":{"description":"Signed URL details for uploading the video.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"signedURLDetails":{"type":"object","properties":{"uploadURL":{"type":"string","description":"PUT the video file to this URL."},"method":{"type":"string","description":"HTTP method to use for the upload."},"extensionHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Include these headers in the PUT request."},"maxFileSize":{"type":"integer","description":"Maximum file size in bytes."}}}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### छवि अपलोड करें

## Upload a single image

> Upload a single image via multipart form data. Best for batches up to 5,000 images.\
> \
> \*\*Note:\*\* Single-image and bulk uploads cannot be combined for the same batch.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Data Ingestion","description":"Upload images and videos to Data Staging before processing."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/upload/image":{"post":{"operationId":"uploadImage","tags":["Data Ingestion"],"summary":"Upload a single image","description":"Upload a single image via multipart form data. Best for batches up to 5,000 images.\n\n**Note:** Single-image and bulk uploads cannot be combined for the same batch.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"},{"name":"fileName","in":"query","required":true,"schema":{"type":"string"},"description":"Name of the image file."}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The image file to upload."}}}}}},"responses":{"200":{"description":"Image uploaded successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### छवियाँ बल्क में अपलोड करें

## Bulk upload images

> Request a signed URL for uploading a \`.tar\` archive of images. Recommended for batches exceeding 5,000 images. Bundle up to 500 images per archive.\
> \
> The response contains a signed URL and extension headers. Pack images into a \`.tar\` archive and PUT it to the signed URL.\
> \
> \*\*Note:\*\* Bulk and single-image uploads cannot be combined for the same batch.\
> \
> When performing bulk ingestion, data is indexed in the background. There may be a short delay before all data is available.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Data Ingestion","description":"Upload images and videos to Data Staging before processing."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/bulk-upload/image-files":{"post":{"operationId":"bulkUploadImages","tags":["Data Ingestion"],"summary":"Bulk upload images","description":"Request a signed URL for uploading a `.tar` archive of images. Recommended for batches exceeding 5,000 images. Bundle up to 500 images per archive.\n\nThe response contains a signed URL and extension headers. Pack images into a `.tar` archive and PUT it to the signed URL.\n\n**Note:** Bulk and single-image uploads cannot be combined for the same batch.\n\nWhen performing bulk ingestion, data is indexed in the background. There may be a short delay before all data is available.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"}],"responses":{"200":{"description":"Signed URL details for uploading a tar archive.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"signedURLDetails":{"type":"object","properties":{"shardId":{"type":"string","format":"uuid","description":"Unique identifier for this shard upload."},"uploadURL":{"type":"string","description":"PUT the tar archive to this URL."},"method":{"type":"string","description":"HTTP method to use for the upload."},"extensionHeaders":{"type":"object","additionalProperties":{"type":"string"},"description":"Include these headers in the PUT request."},"maxNumberOfImages":{"type":"integer","description":"Maximum number of images per tar archive."},"maxShardSize":{"type":"integer","description":"Maximum tar archive size in bytes."}}}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

### बैच स्थिति जाँचें

## Get batch item count

> Returns the count of ingested items in a batch. Use this to verify all data has been ingested before starting a job.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Batch Status","description":"Inspect staged data and batch contents."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/count":{"get":{"operationId":"getBatchCount","tags":["Batch Status"],"summary":"Get batch item count","description":"Returns the count of ingested items in a batch. Use this to verify all data has been ingested before starting a job.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"}],"responses":{"200":{"description":"Batch item count.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"count":{"type":"integer","description":"Number of items in the batch."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### शार्ड अपलोड विवरण जाँचें

## List batch shards

> Returns shard details for a bulk-upload batch. Paginated — use \`nextPageToken\` from the response to fetch subsequent pages.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Batch Status","description":"Inspect staged data and batch contents."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/shards":{"get":{"operationId":"getBatchShards","tags":["Batch Status"],"summary":"List batch shards","description":"Returns shard details for a bulk-upload batch. Paginated — use `nextPageToken` from the response to fetch subsequent pages.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"},{"$ref":"#/components/parameters/nextPageToken"}],"responses":{"200":{"description":"Paginated list of batch shards.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"shards":{"type":"array","items":{"type":"object"},"description":"List of shard objects."},"nextPageToken":{"type":"string","nullable":true,"description":"Token for fetching the next page of results. `null` if no more pages."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."},"nextPageToken":{"name":"nextPageToken","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination token from a previous response."}}}}
```

### जॉब शुरू करें

## Start a batch processing job

> Start a batch processing job that runs a Workflow against staged data.\
> \
> \*\*Job ID constraints:\*\* Lowercase letters, digits, hyphens, and underscores only. Maximum 20 characters.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Processing","description":"Start and monitor batch processing jobs."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/batch-processing/v1/external/{workspace}/jobs/{job_id}":{"post":{"operationId":"startJob","tags":["Processing"],"summary":"Start a batch processing job","description":"Start a batch processing job that runs a Workflow against staged data.\n\n**Job ID constraints:** Lowercase letters, digits, hyphens, and underscores only. Maximum 20 characters.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/job_id"},{"$ref":"#/components/parameters/api_key"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStartRequest"}}}},"responses":{"200":{"description":"Job started successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"job_id":{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"pattern":"^[a-z0-9_-]+$"},"description":"Job identifier. Lowercase, max 20 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}},"schemas":{"JobStartRequest":{"type":"object","required":["type","jobInput","computeConfiguration","processingSpecification"],"properties":{"type":{"type":"string","enum":["simple-image-processing-v1"],"description":"Job type."},"jobInput":{"type":"object","required":["type","batchId"],"properties":{"type":{"type":"string","enum":["staging-batch-input-v1"],"description":"Input type."},"batchId":{"type":"string","description":"The batch ID containing the data to process."}}},"computeConfiguration":{"type":"object","required":["type","machineType"],"properties":{"type":{"type":"string","enum":["compute-configuration-v2"],"description":"Configuration type."},"machineType":{"type":"string","enum":["cpu","gpu"],"description":"Machine type. Use `gpu` for Workflows with multiple or large models."},"workersPerMachine":{"type":"integer","default":4,"description":"Number of parallel workers per machine. Reduce for memory-intensive Workflows."}}},"processingTimeoutSeconds":{"type":"integer","default":3600,"description":"Maximum cumulative machine runtime in seconds across all parallel workers."},"processingSpecification":{"type":"object","required":["type","workspace","workflowId"],"properties":{"type":{"type":"string","enum":["workflows-processing-specification-v1"],"description":"Processing specification type."},"workspace":{"type":"string","description":"Workspace containing the Workflow."},"workflowId":{"type":"string","description":"The Workflow to run. Find this in the Workflow Editor under \"Deploy\"."},"aggregationFormat":{"type":"string","enum":["jsonl","csv"],"default":"jsonl","description":"Output format for aggregated results."}}},"notificationsURL":{"type":"string","format":"uri","description":"Webhook URL for job completion notifications. Custom webhook headers are not yet supported. The only header sent is `Authorization: Bearer rf_{workspace_id}`."}}}}}}
```

### जॉब की प्रगति मॉनिटर करें

#### जॉब स्थिति प्राप्त करें

## Get job status

> Returns the current status of a batch processing job.

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Processing","description":"Start and monitor batch processing jobs."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/batch-processing/v1/external/{workspace}/jobs/{job_id}":{"get":{"operationId":"getJobStatus","tags":["Processing"],"summary":"Get job status","description":"Returns the current status of a batch processing job.","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/job_id"},{"$ref":"#/components/parameters/api_key"}],"responses":{"200":{"description":"Job status details.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"jobStatus":{"type":"string","description":"Current job status (e.g. `pending`, `processing`, `completed`, `failed`)."},"progress":{"type":"number","description":"Processing progress as a fraction between 0 and 1."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"job_id":{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"pattern":"^[a-z0-9_-]+$"},"description":"Job identifier. Lowercase, max 20 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### जॉब चरण सूचीबद्ध करें

## List job stages

> Returns the list of stages for a job. Each job typically has \`processing\` and \`export\` stages, each producing an output batch.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Processing","description":"Start and monitor batch processing jobs."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/batch-processing/v1/external/{workspace}/jobs/{job_id}/stages":{"get":{"operationId":"getJobStages","tags":["Processing"],"summary":"List job stages","description":"Returns the list of stages for a job. Each job typically has `processing` and `export` stages, each producing an output batch.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/job_id"},{"$ref":"#/components/parameters/api_key"}],"responses":{"200":{"description":"List of job stages.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"stages":{"type":"array","items":{"type":"object"},"description":"List of stage objects. Each stage has an ID and an output batch ID."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"job_id":{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"pattern":"^[a-z0-9_-]+$"},"description":"Job identifier. Lowercase, max 20 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### चरण कार्य सूचीबद्ध करें

## List tasks for a stage

> Returns the list of tasks for a specific job stage. Paginated — use \`nextPageToken\` from the response to fetch subsequent pages.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Processing","description":"Start and monitor batch processing jobs."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/batch-processing/v1/external/{workspace}/jobs/{job_id}/stages/{stage_id}/tasks":{"get":{"operationId":"getStageTasks","tags":["Processing"],"summary":"List tasks for a stage","description":"Returns the list of tasks for a specific job stage. Paginated — use `nextPageToken` from the response to fetch subsequent pages.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/job_id"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string"},"description":"The stage identifier."},{"$ref":"#/components/parameters/api_key"},{"$ref":"#/components/parameters/nextPageToken"}],"responses":{"200":{"description":"Paginated list of tasks.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"tasks":{"type":"array","items":{"type":"object"},"description":"List of task objects."},"nextPageToken":{"type":"string","nullable":true,"description":"Token for fetching the next page of results. `null` if no more pages."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"job_id":{"name":"job_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"pattern":"^[a-z0-9_-]+$"},"description":"Job identifier. Lowercase, max 20 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."},"nextPageToken":{"name":"nextPageToken","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination token from a previous response."}}}}
```

### परिणाम एक्सपोर्ट करें

#### आउटपुट भाग सूचीबद्ध करें

## List output batch parts

> Lists the parts of an output batch. Use the \`export\` stage output batch for compressed results.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Data Export","description":"Download results after processing completes."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/parts":{"get":{"operationId":"listBatchParts","tags":["Data Export"],"summary":"List output batch parts","description":"Lists the parts of an output batch. Use the `export` stage output batch for compressed results.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"}],"responses":{"200":{"description":"List of batch parts.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"parts":{"type":"array","items":{"type":"object","properties":{"partName":{"type":"string","description":"Name of the batch part."}}},"description":"List of batch part objects."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."}}}}
```

#### डाउनलोड URL सूचीबद्ध करें

## List download URLs

> Returns paginated download URLs for files in a batch part.<br>

```json
{"openapi":"3.0.3","info":{"title":"Roboflow Batch Processing API","version":"1.0"},"tags":[{"name":"Data Export","description":"Download results after processing completes."}],"servers":[{"url":"https://api.roboflow.com"}],"paths":{"/data-staging/v1/external/{workspace}/batches/{batch_id}/list":{"get":{"operationId":"listDownloadUrls","tags":["Data Export"],"summary":"List download URLs","description":"Returns paginated download URLs for files in a batch part.\n","parameters":[{"$ref":"#/components/parameters/workspace"},{"$ref":"#/components/parameters/batch_id"},{"$ref":"#/components/parameters/api_key"},{"$ref":"#/components/parameters/nextPageToken"},{"name":"partName","in":"query","schema":{"type":"string"},"description":"Filter by part name (from the list parts response)."}],"responses":{"200":{"description":"Paginated list of download URLs.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"filesMetadata":{"type":"array","items":{"type":"object","properties":{"downloadURL":{"type":"string","description":"Signed URL to download the file."},"fileName":{"type":"string","description":"Original file name."},"partName":{"type":"string","nullable":true,"description":"Part name this file belongs to."},"shardId":{"type":"string","nullable":true,"description":"Shard ID (for bulk-upload batches)."},"contentType":{"type":"string","description":"Content type (e.g. `image`, `video`)."},"nestedContentType":{"type":"string","nullable":true,"description":"Nested content type, if applicable."}}},"description":"List of file metadata objects with download URLs."},"nextPageToken":{"type":"string","nullable":true,"description":"Token for fetching the next page of results. `null` if no more pages."}}}}}}}}}},"components":{"parameters":{"workspace":{"name":"workspace","in":"path","required":true,"schema":{"type":"string"},"description":"Your Roboflow workspace identifier."},"batch_id":{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","maxLength":64,"pattern":"^[a-z0-9_-]+$"},"description":"Batch identifier. Lowercase, max 64 chars: letters, digits, hyphens, underscores."},"api_key":{"name":"api_key","in":"query","required":true,"schema":{"type":"string"},"description":"Your Roboflow API key."},"nextPageToken":{"name":"nextPageToken","in":"query","required":false,"schema":{"type":"string"},"description":"Pagination token from a previous response."}}}}
```

### वेबहुक सूचनाएँ

स्थिति के लिए पोलिंग करने के बजाय, इनजेशन या प्रोसेसिंग पूर्ण होने पर सूचना पाने के लिए आप वेबहुक का उपयोग कर सकते हैं। देखें [CLI उपयोग](#webhook-automation) वेबहुक कॉन्फ़िगरेशन और पेलोड प्रारूपों के लिए।

## CLI

इंस्टॉल करके `inference-cli` आपको इसका एक्सेस मिलता है `inference rf-cloud` कमांड का, जो आपको बैच प्रोसेसिंग और डेटा स्टेजिंग—Roboflow बैच प्रोसेसिंग के मुख्य घटकों—के साथ इंटरैक्ट करने की अनुमति देता है।

### सेटअप

```bash
pip install inference-cli
export ROBOFLOW_API_KEY="YOUR-API-KEY-GOES-HERE"
```

क्लाउड स्टोरेज समर्थन के लिए:

```bash
pip install 'inference-cli[cloud-storage]'
```

यदि आपको अपनी API कुंजी ढूँढने में सहायता चाहिए, तो हमारा देखें [प्रमाणीकरण गाइड](https://docs.roboflow.com/reference/authentication/authentication/find-your-roboflow-api-key).

### डेटा इनजेस्ट करें

#### छवियाँ

```bash
inference rf-cloud data-staging create-batch-of-images \
  --images-dir <your-images-dir-path> \
  --batch-id <your-batch-id>
```

#### वीडियो

```bash
inference rf-cloud data-staging create-batch-of-videos \
  --videos-dir <your-videos-dir-path> \
  --batch-id <your-batch-id>
```

{% hint style="info" %}
**बैच ID प्रारूप:** लोअरकेस होना चाहिए, अधिकतम 64 वर्ण, और केवल अक्षर, अंक, हाइफ़न (`-`) और अंडरस्कोर (`_`).
{% endhint %}

#### क्लाउड स्टोरेज

यदि आपका डेटा पहले से क्लाउड स्टोरेज (S3, Google Cloud Storage, या Azure) में है, तो आप फ़ाइलों को स्थानीय रूप से डाउनलोड किए बिना उसे सीधे प्रोसेस कर सकते हैं।

**छवियों के लिए:**

```bash
inference rf-cloud data-staging create-batch-of-images \
  --data-source cloud-storage \
  --bucket-path <cloud-path> \
  --batch-id <your-batch-id>
```

**वीडियो के लिए:**

```bash
inference rf-cloud data-staging create-batch-of-videos \
  --data-source cloud-storage \
  --bucket-path <cloud-path> \
  --batch-id <your-batch-id>
```

यह `--bucket-path` पैरामीटर निम्न प्रदाताओं का समर्थन करता है। ग्लोब पैटर्न फ़िल्टर करते हैं कि कौन-सी फ़ाइलें इनजेस्ट की जाती हैं:

| प्रदाता              | पथ प्रारूप                  | ग्लोब उदाहरण                                                         |
| -------------------- | --------------------------- | -------------------------------------------------------------------- |
| S3                   | `s3://bucket-name/path/`    | `s3://my-bucket/training-data/**/*.jpg` - सभी JPG को रिकर्सिव रूप से |
| Google Cloud Storage | `gs://bucket-name/path/`    | `gs://my-bucket/videos/2024-*/*.mp4` - MP4 इनमें `2024-*` फ़ोल्डर    |
| Azure Blob Storage   | `az://container-name/path/` | `az://container/images/*.png` - images फ़ोल्डर में PNG               |

{% hint style="info" %}
आपके क्लाउड स्टोरेज क्रेडेंशियल्स का उपयोग **केवल स्थानीय रूप से** CLI द्वारा प्रीसाइन्ड URL बनाने के लिए किया जाता है। उन्हें **कभी अपलोड नहीं किया जाता** Roboflow सर्वरों पर।
{% endhint %}

{% hint style="warning" %}
बनाए गए प्रीसाइन्ड URL 24 घंटे के लिए मान्य होते हैं। सुनिश्चित करें कि आपका बैच प्रोसेसिंग जॉब इस समयसीमा के भीतर पूरा हो जाए।
{% endhint %}

बड़े डेटासेट के लिए, सिस्टम छवियों को स्वचालित रूप से प्रत्येक 20,000 फ़ाइलों के चंक्स में विभाजित करता है। वीडियो 1,000 से कम के बैचों में सबसे अच्छे काम करते हैं।

#### साइन्ड URL इनजेशन

उन्नत ऑटोमेशन के लिए, आप स्थानीय फ़ाइलों के बजाय साइन्ड URL के माध्यम से डेटा इनजेस्ट कर सकते हैं:

| फ़्लैग                          | विवरण                                                                            |
| ------------------------------- | -------------------------------------------------------------------------------- |
| `--data-source references-file` | साइन्ड URL के माध्यम से संदर्भित फ़ाइलों को प्रोसेस करें।                        |
| `--references <path_or_url>`    | फ़ाइल URL वाली JSONL फ़ाइल का पथ, या ऐसी फ़ाइल की ओर इंगित करने वाला साइन्ड URL। |

**रेफ़रेंस फ़ाइल प्रारूप (JSONL):**

```
{"name": "<unique-file-name-1>", "url": "https://<signed-url>"}
{"name": "<unique-file-name-2>", "url": "https://<signed-url>"}
```

{% hint style="info" %}
साइन्ड URL इनजेशन ग्रोथ प्लान और एंटरप्राइज़ ग्राहकों के लिए उपलब्ध है।
{% endhint %}

### स्टेज किए गए डेटा का निरीक्षण करें

```bash
inference rf-cloud data-staging show-batch-details --batch-id <your-batch-id>
```

### जॉब शुरू करें

#### छवियाँ प्रोसेस करें

```bash
inference rf-cloud batch-processing process-images-with-workflow \
  --workflow-id <workflow-id> \
  --batch-id <batch-id> \
  --machine-type gpu
```

#### वीडियो प्रोसेस करें

```bash
inference rf-cloud batch-processing process-videos-with-workflow \
  --workflow-id <workflow-id> \
  --batch-id <batch-id> \
  --machine-type gpu \
  --max-video-fps <your-desired-fps>
```

{% hint style="info" %}
**अपना वर्कफ़्लो ID ढूँढना:** Roboflow ऐप में Workflow Editor खोलें, "Deploy" पर क्लिक करें, और कोड स्निपेट में पहचानकर्ता ढूँढें।
{% endhint %}

{% hint style="info" %}
डिफ़ॉल्ट रूप से, प्रोसेसिंग CPU पर चलती है। उपयोग करें `--machine-type gpu` एकाधिक या बड़े मॉडल वाले वर्कफ़्लोज़ के लिए।
{% endhint %}

### जॉब की प्रगति मॉनिटर करें

स्टार्ट कमांड एक **जॉब ID**आउटपुट करता है। स्थिति जाँचने के लिए इसका उपयोग करें:

```bash
inference rf-cloud batch-processing show-job-details --job-id <your-job-id>
```

### परिणाम एक्सपोर्ट करें

जॉब विवरण में शामिल होगा **आउटपुट बैच ID**। परिणाम एक्सपोर्ट करने के लिए इसका उपयोग करें:

```bash
inference rf-cloud data-staging export-batch \
  --target-dir <dir-to-export-result> \
  --batch-id <output-batch-of-a-job>
```

### वेबहुक ऑटोमेशन

स्थिति के लिए पोलिंग करने के बजाय, इनजेशन या प्रोसेसिंग पूरी होने पर सूचना पाने के लिए आप वेबहुक का उपयोग कर सकते हैं।

#### डेटा इनजेशन वेबहुक

CLI कमांड `create-batch-of-images` और `create-batch-of-videos` समर्थन करते हैं:

| फ़्लैग                                  | विवरण                                       |
| --------------------------------------- | ------------------------------------------- |
| `--notifications-url <webhook_url>`     | सूचनाओं के लिए वेबहुक एंडपॉइंट।             |
| `--notification-category ingest-status` | समग्र इनजेशन प्रक्रिया की स्थिति। डिफ़ॉल्ट। |
| `--notification-category files-status`  | अलग-अलग फ़ाइलों की प्रोसेसिंग स्थिति।       |

सूचनाएँ HTTP POST के माध्यम से भेजी जाती हैं, जिसमें एक `Authorization` हेडर होता है जिसमें आपकी Roboflow Publishable Key शामिल होती है।

**इनजेस्ट स्थिति सूचना**

```json
{
    "type": "roboflow-data-staging-notification-v1",
    "event_id": "8c20f970-fe10-41e1-9ef2-e057c63c07ff",
    "ingest_id": "8cd48813430f2be70b492db67e07cc86",
    "batch_id": "test-batch-117",
    "shard_id": null,
    "notification": {
        "type": "ingest-status-notification-v1",
        "success": false,
        "error_details": {
            "type": "unsafe-url-detected",
            "reason": "अविश्वसनीय डोमेन मिला: https://example.com/image.png"
        }
    },
    "delivery_attempt": 1
}
```

**फ़ाइल स्थिति सूचना**

```json
{
    "type": "roboflow-data-staging-notification-v1",
    "event_id": "8f42708b-aeb7-4b73-9d83-cf18518b6d81",
    "ingest_id": "d5cb69aa-b2d1-4202-a1c1-0231f180bda9",
    "batch_id": "prod-batch-1",
    "shard_id": "0d40fa12-349e-439f-83f8-42b9b7987b33",
    "notification": {
        "type": "ingest-files-status-notification-v1",
        "success": true,
        "ingested_files": [
            "000000494869.jpg",
            "000000186042.jpg"
        ],
        "failed_files": [
            {
                "type": "file-size-limit-exceeded",
                "file_name": "big_image.png",
                "reason": "एकल छवि का अधिकतम आकार 20971520B है।"
            }
        ],
        "content_truncated": false
    },
    "delivery_attempt": 1
}
```

#### जॉब पूर्णता वेबहुक

जोड़ें `--notifications-url` जॉब शुरू करते समय:

```bash
inference rf-cloud batch-processing process-images-with-workflow \
  --workflow-id <workflow-id> \
  --batch-id <batch-id> \
  --notifications-url <webhook_url>
```

**जॉब पूर्णता सूचना**

```json
{
  "type": "roboflow-batch-job-notification-v1",
  "event_id": "8f42708b-aeb7-4b73-9d83-cf18518b6d81",
  "job_id": "<your-batch-job-id>",
  "job_state": "success | fail",
  "delivery_attempt": 1
}
```

### क्लाउड स्टोरेज प्रमाणीकरण

#### AWS S3 और S3-संगत स्टोरेज

क्रेडेंशियल्स का स्वचालित रूप से पता लगाया जाता है:

1. **पर्यावरण वेरिएबल्स:**

```bash
export AWS_ACCESS_KEY_ID=your-access-key-id
export AWS_SECRET_ACCESS_KEY=your-secret-access-key
export AWS_SESSION_TOKEN=your-session-token  # वैकल्पिक
```

2. **AWS क्रेडेंशियल फ़ाइलें** (`~/.aws/credentials`, `~/.aws/config`)
3. **IAM भूमिकाएँ** (EC2, ECS, Lambda)

**नामित प्रोफ़ाइल:**

```bash
export AWS_PROFILE=production
```

**S3-संगत सेवाएँ (Cloudflare R2, MinIO, आदि):**

```bash
export AWS_ENDPOINT_URL=https://account-id.r2.cloudflarestorage.com
export AWS_REGION=auto  # R2 के लिए region='auto' आवश्यक है
export AWS_ACCESS_KEY_ID=your-r2-access-key
export AWS_SECRET_ACCESS_KEY=your-r2-secret-key
```

#### Google Cloud Storage

क्रेडेंशियल्स का पता यहाँ से लगाया जाता है:

1. **सर्विस अकाउंट की फ़ाइल** (ऑटोमेशन के लिए अनुशंसित):

```bash
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
```

2. **उपयोगकर्ता क्रेडेंशियल्स** gcloud CLI से (`gcloud auth login`)
3. **GCP मेटाडेटा सेवा** (Google Cloud Platform पर चलाते समय)

#### Azure Blob Storage

**SAS टोकन (अनुशंसित):**

```bash
export AZURE_STORAGE_ACCOUNT_NAME=mystorageaccount
export AZURE_STORAGE_SAS_TOKEN="sv=2021-06-08&ss=b&srt=sco&sp=rl&se=2024-12-31"
```

**अकाउंट कुंजी:**

```bash
export AZURE_STORAGE_ACCOUNT_NAME=mystorageaccount
export AZURE_STORAGE_ACCOUNT_KEY=your-account-key
```

Azure CLI के माध्यम से SAS टोकन जनरेट करें:

```bash
az storage container generate-sas \
  --account-name mystorageaccount \
  --name my-container \
  --permissions rl \
  --expiry 2024-12-31T23:59:59Z
```

#### कस्टम स्क्रिप्ट्स

उन्नत उपयोग मामलों के लिए, साइन्ड URL फ़ाइलें जनरेट करने हेतु संदर्भ स्क्रिप्ट्स:

* **AWS S3:** [generateS3SignedUrls.sh](https://raw.githubusercontent.com/roboflow/roboflow-python/main/scripts/generateS3SignedUrls.sh)
* **Google Cloud Storage:** [generateGCSSignedUrls.sh](https://github.com/roboflow/roboflow-python/blob/main/scripts/generateGCSSignedUrls.sh)
* **Azure Blob Storage:** [generateAzureSasUrls.sh](https://raw.githubusercontent.com/roboflow/roboflow-python/main/scripts/generateAzureSasUrls.sh)

### सभी विकल्प जानें

```bash
inference rf-cloud --help
inference rf-cloud data-staging --help
inference rf-cloud batch-processing --help
```
