> 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/reference/hi/platform/choosing-the-right-tool.md).

# सही टूल चुनना

Roboflow तीन डेवलपर टूल्स के माध्यम से वही अंतर्निहित प्लेटफ़ॉर्म उपलब्ध कराता है। ये एक-दूसरे से अलग नहीं हैं — अधिकांश प्रोडक्शन वर्कफ़्लो तीनों का उपयोग करते हैं। यह पेज एक त्वरित निर्णय-मार्गदर्शिका है।

## एक नज़र में

|                       | CLI                                                          | Python SDK                                                 | REST API                                                   |
| --------------------- | ------------------------------------------------------------ | ---------------------------------------------------------- | ---------------------------------------------------------- |
| **के लिए सबसे अच्छा** | आकस्मिक स्क्रिप्ट, AI एजेंट, शेल ऑटोमेशन                     | नोटबुक, निर्धारित जॉब, Python अनुप्रयोग                    | गैर-Python सेवाएँ, वेबहुक, एज डिवाइस                       |
| **प्रमाणीकरण**        | `ROBOFLOW_API_KEY` env var या `roboflow login`               | API key पास की गई है `Roboflow(...)` या `ROBOFLOW_API_KEY` | `Authorization: Bearer` हेडर (query param पुराना तरीका है) |
| **आउटपुट**            | डिफ़ॉल्ट रूप से सुंदर तालिकाएँ, `--json` स्क्रिप्टिंग के लिए | Python dicts और objects                                    | JSON                                                       |
| **इंस्टॉल करें**      | `pip install roboflow`                                       | `pip install roboflow`                                     | कोई नहीं                                                   |
| **कवरेज**             | SDK को ट्रैक करता है; एजेंट-फ्रेंडली                         | REST जैसा ही, साथ में सुविधा वाले हेल्पर्स                 | प्रामाणिक - हर फीचर सबसे पहले यहीं जारी होता है            |
| **त्रुटियाँ**         | एग्ज़िट कोड (0 / 1 / 2 / 3) + stderr पर JSON त्रुटि बॉडी     | Python अपवाद                                               | HTTP स्थिति कोड + JSON त्रुटि बॉडी                         |

## CLI का उपयोग कब करें

CLI का उपयोग तब करें जब आप कुछ करना चाहते हों **एक बार या शेल पाइपलाइन में एक चरण के रूप में**. आउटपुट फ़ॉर्मैट और एग्ज़िट कोड स्क्रिप्टिंग और AI एजेंटों के लिए बनाए गए हैं।

विशेष रूप से:

* आप प्रोटोटाइप बना रहे हैं और Python लिखे बिना जल्दी परिणाम देखना चाहते हैं।
* आप Roboflow ऑपरेशनों को अन्य टूल्स में पाइप करना चाहते हैं (`roboflow project list --json | jq …`).
* आप AI कोडिंग एजेंट (Claude Code, Cursor) का उपयोग कर रहे हैं - CLI का संरचित JSON आउटपुट और स्थिर एग्ज़िट कोड Python REPL की तुलना में एजेंट के लिए समझना आसान है।
* आप एक `Makefile`, GitHub Action, या शेल स्क्रिप्ट लिख रहे हैं जो इमेज अपलोड करती है, ट्रेनिंग शुरू करती है, या डेटासेट डाउनलोड करती है।

देखें [CLI](/reference/hi/platform/cli.md).

## Python SDK का उपयोग कब करें

SDK का उपयोग तब करें जब आप पहले से Python में हों और चाहते हों **टाइप्ड ऑब्जेक्ट, प्रचलित हेल्पर्स, और कॉल्स के बीच की स्थिति**. SDK REST API के ऊपर एक पतला रैपर है, लेकिन यह जोड़ता है:

* `वर्कस्पेस` / `प्रोजेक्ट` / `संस्करण` / `मॉडल` ऐसे ऑब्जेक्ट जिनके तरीके खोजे जा सकते हैं।
* समवर्ती अपलोड (`upload_dataset(num_workers=10)`).
* प्रेडिक्शन विज़ुअलाइज़ेशन हेल्पर्स (जब पूरा `roboflow` पैकेज इंस्टॉल हो - न कि `roboflow-slim`).
* एक्टिव-लर्निंग लूप्स जो inference और upload को जोड़ते हैं।
* vision-events ingestion तक सीधी पहुँच।

विशेष रूप से:

* आप Jupyter notebook में डेटासेट पर iterating कर रहे हैं।
* आप एक Python सेवा बना रहे हैं जो आवश्यकता पड़ने पर अपलोड, ट्रेन, या inference चलाती है।
* आपको ऑपरेशनों को चेन करना है (upload → train → wait for ready → predict).
* आप Roboflow को किसी मौजूदा Python ऐप में एकीकृत कर रहे हैं।

देखें [Python SDK](/reference/hi/platform/python-sdk.md).

## REST API का उपयोग कब करें

REST API का उपयोग तब करें जब **आप Python में नहीं हैं**, जब आपको ऐसे वातावरण से कॉल करना हो जहाँ Python पैकेज इंस्टॉल नहीं किए जा सकते (ब्राउज़र, Cloudflare Worker, एम्बेडेड डिवाइस, छोटा zipfile वाला Lambda), या जब आप webhook के माध्यम से Roboflow का उपयोग करना चाहते हों।

विशेष रूप से:

* आप JavaScript / TypeScript / Go / Rust क्लाइंट बना रहे हैं।
* आप ऐसे वेबकैम या सेंसर से इवेंट्स भेज रहे हैं जो कस्टम फ़र्मवेयर चलाता है।
* आपको Zapier / n8n / किसी no-code automation tool के साथ एकीकरण करना है।
* कोई विशिष्ट फीचर SDK में आने से पहले REST API में जारी हो जाता है।

देखें [REST API](/reference/hi/platform/rest-api.md).

## टूल्स को मिलाना

व्यवहार में टीमें तीनों का उपयोग करती हैं:

* **CI/CD** डेटासेट अपलोड करने और ट्रेनिंग शुरू करने के लिए CLI का उपयोग करता है।
* **एक Python डेटा पाइपलाइन** ट्रेनिंग परिणामों पर प्रतिक्रिया देने और मॉडल संस्करणों को ट्यून करने के लिए SDK का उपयोग करती है।
* **एक प्रोडक्शन ऐप** inference चलाने और इवेंट्स पोस्ट करने के लिए REST API का उपयोग करता है।

वही वर्कस्पेस और API key तीनों के विरुद्ध प्रमाणीकरण करते हैं, इसलिए credentials नहीं बढ़ते।

## Inference विशेष है

किसी प्रशिक्षित मॉडल को image या video पर चलाने के लिए, इन तीनों के अलावा आपके पास अतिरिक्त विकल्प होते हैं। Hosted inference इस पर चलता है [Roboflow Serverless Hosted API](https://docs.roboflow.com/deployment/roboflow-cloud/serverless-api) पर `serverless.roboflow.com`; अधिक throughput या on-prem use cases के लिए देखें [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted) (self-hosted) और [समर्पित डिप्लॉयमेंट](https://docs.roboflow.com/deployment/roboflow-cloud/dedicated-deployments) (managed GPU machines).

CLI का `infer` कमांड, SDK का `model.predict()`, और inference URL पर सीधे REST call — ये सभी एक ही अंतर्निहित inference engine तक पहुँचने के रास्ते हैं।

Inference requests के लिए प्रमाणीकरण भी platform REST API से अलग है। जब आप किसी inference URL को सीधे कॉल करते हैं, तो अपनी API key को एक `Authorization: Bearer` हेडर के रूप में भेजें; हेडर key को URLs और server logs से बाहर रखता है। key को एक `api_key` query parameter या body field के रूप में पास करना पुराना चैनल है: यह हर server version पर अभी भी काम करता है, लेकिन नए कोड के लिए अनुशंसित नहीं है। जब आप `inference-sdk`, तो headers खुद बनाने के बजाय client पर transport एक बार सेट करें: देखें [API key transport](/reference/hi/inference/inference-sdk/configuration.md#api-key-transport).
