> 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/errors-and-status-codes.md).

# त्रुटियाँ और स्थिति कोड

CLI exit codes, SDK exceptions, और REST API error responses के लिए संदर्भ।

Roboflow के डेवलपर टूल्स त्रुटि श्रेणियों का एक छोटा सेट साझा करते हैं, जिसे हर टूल में अलग तरीके से दिखाया जाता है। यह पेज एक क्रॉस-कटिंग संदर्भ है।

## CLI निकास कोड

CLI चार सुव्यवस्थित निकास कोड का उपयोग करता है, ताकि स्क्रिप्ट और AI एजेंट आउटपुट को पार्स किए बिना परिणाम के आधार पर शाखाबद्ध हो सकें:

| निकास कोड | अर्थ                                                                                                           |
| --------- | -------------------------------------------------------------------------------------------------------------- |
| `0`       | सफलता                                                                                                          |
| `1`       | सामान्य त्रुटि (गलत इनपुट, नेटवर्क विफलता, अप्रत्याशित सर्वर प्रतिक्रिया)                                      |
| `2`       | प्रमाणीकरण विफलता (गायब या अमान्य API key, कोई workspace चयनित नहीं)                                           |
| `3`       | संसाधन नहीं मिला (project, version, workflow, deployment आदि मौजूद नहीं है या आपकी key के लिए दिखाई नहीं देता) |

में `--json` मोड में CLI सफलता पर stdout में संरचित आउटपुट लिखता है और विफलता पर stderr में एक JSON त्रुटि ऑब्जेक्ट लिखता है, जिससे stdout खाली रहता है ताकि पाइपलाइन को सुरक्षित रूप से पार्स किया जा सके:

```bash
roboflow --json project get nonexistent 2>error.json
echo $?       # 3
cat error.json
# {"error": {"message": "Project 'nonexistent' not found", "hint": "अपने projects देखने के लिए 'roboflow project list' चलाएँ."}}
```

## SDK अपवाद

Python SDK विफलता पर Python अपवाद उठाता है। जिन सबसे सामान्य प्रकारों का आपको सामना होगा:

| अपवाद                                                | कब                                                                                                                                                                      |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `RuntimeError`                                       | ऑपरेशन तार्किक रूप से अमान्य है - उदाहरण के लिए, कॉल करना `restore()` ऐसे project पर जो Trash में नहीं है, या ऐसे version पर training करना जो अभी generate नहीं हुआ है। |
| `ValueError`                                         | दिया गया argument गलत स्वरूप का है - उदाहरण के लिए, एक अपरिचित `model_format` के लिए `Version.download()`.                                                              |
| `roboflow.adapters.rfapi.RoboflowError`              | REST API ने non-2xx response लौटाया। अपवाद की स्ट्रिंग में सर्वर का error body होता है।                                                                                 |
| `roboflow.adapters.deploymentapi.DeploymentApiError` | के समकक्ष `RoboflowError` dedicated-deployments सेवा के लिए।                                                                                                            |
| `requests.exceptions.HTTPError` / `ConnectionError`  | नेटवर्क-स्तरीय विफलताएँ (DNS, TLS, timeout)।                                                                                                                            |

सामान्य नियम: पकड़ें `RuntimeError` तार्किक समस्याओं के लिए, `RoboflowError` सर्वर-पक्ष अस्वीकृतियों के लिए, और बाकी सबको ऊपर तक जाने दें।

```python
from roboflow.adapters import rfapi

try:
    project.restore()
except RuntimeError as e:
    print(f"Can't restore: {e}")
except rfapi.RoboflowError as e:
    print(f"Server rejected the request: {e}")
```

देखें [Logging and Debugging](/reference/hi/platform/python-sdk/logging-and-debugging.md) यह जानने के लिए कि जब कोई अपवाद पर्याप्त न हो, तब underlying HTTP request की जाँच कैसे करें।

## REST API स्थिति कोड

REST API मानक HTTP status codes का उपयोग करती है। Roboflow-विशिष्ट व्यवहार:

| स्थिति | अर्थ                                                                                                                                                                                                                                                                                                           |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`  | सफलता। प्रतिक्रिया body JSON है।                                                                                                                                                                                                                                                                               |
| `204`  | सफलता, कोई body नहीं (कुछ के लिए उपयोग किया जाता है `PATCH` / `DELETE` endpoints).                                                                                                                                                                                                                             |
| `400`  | गलत स्वरूप वाला अनुरोध - आवश्यक field गुम, खराब shape, अमान्य value।                                                                                                                                                                                                                                           |
| `401`  | प्रमाणीकरण विफलता। या तो कोई `api_key`नहीं है, वह अमान्य है, या उस key के पास ऑपरेशन के लिए आवश्यक scope नहीं है।                                                                                                                                                                                              |
| `402`  | भुगतान आवश्यक। workspace की योजना अनुरोधित ऑपरेशन का समर्थन नहीं करती। inference के लिए, इसका अर्थ है कि model या architecture केवल credit-based plan पर उपलब्ध है, या workspace की मासिक Hosted API inference quota समाप्त हो चुकी है। प्रतिक्रिया body में एक `AccessException` त्रुटि प्रकार शामिल होता है। |
| `403`  | निषिद्ध। key ने प्रमाणीकरण तो कर लिया, लेकिन target workspace या resource तक पहुँच नहीं है।                                                                                                                                                                                                                    |
| `404`  | मिला नहीं। workspace, project, version, workflow, या अन्य resource मौजूद नहीं है (या आपकी key के लिए दिखाई नहीं देता)।                                                                                                                                                                                         |
| `409`  | संघर्ष। resource ऐसी स्थिति में मौजूद है जो अनुरोधित ऑपरेशन को रोकती है (उदाहरण के लिए, ऐसे version को restore करना जिसका parent project भी Trash में है)।                                                                                                                                                     |
| `423`  | लॉक किया गया। workspace billing रोकी गई है - कारण के लिए प्रतिक्रिया body देखें।                                                                                                                                                                                                                               |
| `429`  | Rate limited। पुनः प्रयास करने से पहले कम से कम `Retry-After` सेकंड प्रतीक्षा करें। `RateLimit-Limit`, `RateLimit-Remaining`और `RateLimit-Reset` (सेकंड) उस bucket का वर्णन करते हैं जिससे आप टकराए।                                                                                                           |
| `5xx`  | सर्वर त्रुटि। backoff के साथ पुनः प्रयास करना सुरक्षित है।                                                                                                                                                                                                                                                     |

### मानक error body

त्रुटियाँ JSON लौटाती हैं जिसमें कम से कम एक शीर्ष-स्तरीय `error` field होता है:

```json
{
  "error": "Project 'nonexistent' not found"
}
```

कुछ endpoints में एक `hint` या एक संरचित त्रुटि ऑब्जेक्ट भी शामिल होता है - विशिष्टताओं के लिए [REST API](/reference/hi/platform/rest-api.md) के अंतर्गत प्रति-endpoint दस्तावेज़ देखें।

### Training read rate limits

Training read endpoints (`GET /:workspace/:project/:version/v2/trainings`, `.../v2/trainings/get`और `.../v2/trainings/recipe`) अनुरोधों की गिनती प्रति API key और प्रति workspace होती है। उसी IP address से आने वाला अन्य traffic आपके खाते में नहीं गिना जाता। Rate-limited request वापस करती है `429` एक `Retry-After` header और यह body:

```json
{
  "error": {
    "code": "training_read_rate_limit_exceeded",
    "message": "बहुत अधिक training read अनुरोध। कृपया बाद में पुनः प्रयास करें."
  }
}
```

गायब या अमान्य API key के साथ बार-बार किए गए अनुरोधों को IP address के आधार पर अलग से सीमित किया जाता है। वे वापस करते हैं `429` एक साधारण text body के साथ और वही `Retry-After` और `RateLimit-*` headers।

### आवश्यक scopes

API keys में प्रति-resource scopes होते हैं। किसी write operation पर 401 अक्सर यह दर्शाता है कि key के पास संबंधित `*:update` या `*:write` scope नहीं है, भले ही वह resource पढ़ सकती हो। scope संदर्भ के लिए देखें [Scoped API Keys](/reference/hi/authentication/authentication/scoped-api-keys.md) ।

## टूलों के बीच त्रुटि मानचित्रण

| स्थिति                             | CLI निकास | SDK                                      | REST  |
| ---------------------------------- | --------- | ---------------------------------------- | ----- |
| गायब / अमान्य API key              | `2`       | `RoboflowError` ("401")                  | `401` |
| संसाधन नहीं मिला                   | `3`       | `RoboflowError` ("404") / `RuntimeError` | `404` |
| योजना सीमा / quota समाप्त          | `1`       | `RoboflowError` ("402")                  | `402` |
| गलत इनपुट / गलत स्वरूप वाला अनुरोध | `1`       | `ValueError` / `RoboflowError` ("400")   | `400` |
| सर्वर त्रुटि / अस्थायी             | `1`       | `RoboflowError` ("5xx")                  | `5xx` |

Retries जोड़ते समय इस तालिका का उपयोग करें: `2`  / 401 को कभी भी स्वतः retry नहीं करना चाहिए (key अधिक मान्य नहीं हो जाएगी), एक `3`  / 404 को कभी भी retry नहीं करना चाहिए, लेकिन `1` 5xx प्रतिक्रिया से मिला किसी का भी backoff के साथ retry के लिए उम्मीदवार है।
