> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Didit API त्रुटियाँ: HTTP कोड, बॉडी और समाधान

> Didit API की त्रुटियाँ: HTTP स्थिति कोड, रिस्पॉन्स बॉडी, त्रुटि कोड और सुरक्षित पुनः प्रयास। 401, 403, 409, 429 और 5xx की पूरी जानकारी।

Didit API किसी विफलता की सूचना HTTP स्थिति कोड और, लगभग हर मामले में, एक JSON बॉडी के साथ देता है।
इस पेज में बताया गया है कि हर स्थिति का क्या अर्थ है, बॉडी कैसी दिखती है, कौन-से `code` मानों पर आप शाखा बना सकते हैं, और कौन-सी विफलताएँ पुनः प्रयास के लिए सुरक्षित हैं।
पहले स्थिति पर भरोसा करें और यदि `code` मौजूद हो, तो उस पर भरोसा करें, क्योंकि संदेश का पाठ बदल सकता है।

## स्थिति कोड

| स्थिति | इसका अर्थ | क्या करें | पुनः प्रयास? |
| - | - | - | - |
| `400` | अनुरोध अमान्य है: कोई फ़ील्ड सत्यापन में विफल रहा, या कोई इमेज या दस्तावेज़ पढ़ा नहीं जा सका | बॉडी में बताई गई चीज़ ठीक करें | ठीक करने के बाद |
| `401` | आपने जो कुंजी भेजी वह गलत, खराब फ़ॉर्मेट वाली, रद्द की गई या समय-सीमा समाप्त हो चुकी है | `DIDIT_API_KEY` जाँचें, या नई कुंजी बनाएँ | ठीक करने के बाद |
| `402` | जाँच का भुगतान नहीं हो सका, इसलिए वह नहीं चली | अपना बैलेंस टॉप अप करें | टॉप अप करने के बाद |
| `403` | कोई कुंजी नहीं भेजी गई, कुंजी को इस संसाधन या कार्रवाई की पहुँच नहीं है, अनुरोध कुंजी की IP सूची से बाहर से आया, या बैलेंस कॉल के लिए पर्याप्त नहीं है | बॉडी पढ़ें, फिर [API कुंजी त्रुटियाँ](#api-कुंजी-त्रुटियाँ) और [अपर्याप्त क्रेडिट](#अपर्याप्त-क्रेडिट) देखें | ठीक करने के बाद |
| `404` | संसाधन मौजूद नहीं है, या कोई सत्र कुंजी की वर्कफ़्लो या स्थिति सीमा से बाहर है | ID और कुंजी की सीमाएँ जाँचें | नहीं |
| `409` | अनुरोध वर्तमान स्थिति से टकराता है, उदाहरण के लिए दोबारा इस्तेमाल की गई `Idempotency-Key` या ऐसा चरण जो पहले ही चल चुका है | `code` पढ़ें और स्थिति फिर से लोड करें | `code` पर निर्भर |
| `410` | संसाधन की समय-सीमा समाप्त हो चुकी है, उदाहरण के लिए सत्र या आमंत्रण | नया बनाएँ | नहीं |
| `415` | अनुरोध की बॉडी JSON नहीं है | `Content-Type: application/json` भेजें | ठीक करने के बाद |
| `422` | वॉलेट पता एक से अधिक ब्लॉकचेन से मेल खाता है, इसलिए न कोई स्क्रीनिंग हुई और न बिलिंग | `blockchain` को `candidate_chains` में से किसी एक पर सेट करके फिर से भेजें | ठीक करने के बाद |
| `429` | रेट लिमिट या कोटा की सीमा पहुँच गई है | `Retry-After` तक प्रतीक्षा करें; देखें [रेट लिमिट](https://docs.didit.me/hi/integration/rate-limiting.md) | हाँ, प्रतीक्षा के बाद |
| `500` | Didit की ओर से कोई अनपेक्षित त्रुटि | बैकऑफ़ के साथ पुनः प्रयास करें, और समस्या बनी रहे तो सहायता से संपर्क करें | देखें [पुनः प्रयास](#पुनः-प्रयास-और-आइडेम्पोटेंसी) |
| `502` | कोई सेवा जिस पर Didit निर्भर है, उसने त्रुटि लौटाई | `code` पढ़ें | देखें [पुनः प्रयास](#पुनः-प्रयास-और-आइडेम्पोटेंसी) |
| `503` | कोई सेवा जिस पर Didit निर्भर है, अस्थायी रूप से उपलब्ध नहीं है | `code` पढ़ें और फिर से प्रयास करें | देखें [पुनः प्रयास](#पुनः-प्रयास-और-आइडेम्पोटेंसी) |

## त्रुटि बॉडी

त्रुटि बॉडी का कोई एक तय ढाँचा नहीं होता, इसलिए उन्हें सावधानी से पढ़ें।
ढाँचा endpoint परिवार पर निर्भर करता है:

| ढाँचा | यह कहाँ दिखता है | उदाहरण |
| - | - | - |
| `detail` | अधिकांश त्रुटियाँ, जिनमें प्रमाणीकरण, नहीं मिला और रेट लिमिट शामिल हैं | `{"detail": "You do not have permission to perform this action."}` |
| `detail` और `code` | स्थिर code वाली त्रुटियाँ | `{"detail": "This application was deleted.", "code": "application_deleted"}` |
| फ़ील्ड त्रुटियाँ | इनपुट सत्यापन | `{"workflow_id": ["This field is required."]}` |
| `non_field_errors` | फ़ील्ड के बीच सत्यापन | `{"non_field_errors": ["..."]}` |
| JSON सरणी | कुछ सत्यापन त्रुटियाँ, जैसे सिमुलेशन कॉल | `["Scenario can only be armed before the verification starts."]` |
| `error` | अधिकांश स्टैंडअलोन API | `{"error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"}` |
| `error` और `code` | स्टैंडअलोन API पर इमेज त्रुटियाँ | `{"error": "...", "code": "invalid_image"}` |
| `error` एक code के रूप में, `detail` के साथ | डिजिटल ID वॉलेट सत्यापन | `{"error": "insufficient_credits", "detail": "..."}` |

`500` में JSON बॉडी बिल्कुल भी नहीं हो सकती, इसलिए ऐसी बॉडी को भी संभालें जो पार्स न हो।

```javascript theme={null}
const raw = await response.text();
let body = {};
try {
  body = JSON.parse(raw);
} catch {
  // A 5xx response may not be JSON: rely on response.status.
}
const code = body.code ?? null;
const message = body.detail ?? body.error ?? (Array.isArray(body) ? body[0] : raw);
```

## API कुंजी त्रुटियाँ

| जो आपने भेजा | स्थिति | `detail` |
| - | - | - |
| कोई `x-api-key` हेडर नहीं | `403` | `You do not have permission to perform this action.` |
| गलत, खराब फ़ॉर्मेट वाली या रद्द की गई कुंजी | `401` | `Authentication credentials were not provided or are invalid.` |
| समय-सीमा समाप्त कुंजी | `401` | `This API key has expired.` |
| अपनी IP सूची के बाहर से इस्तेमाल की गई कुंजी | `403` | `This API key can't be used from this IP address.` |
| स्कोप्ड कुंजी, जिसे इस संसाधन या कार्रवाई की पहुँच नहीं है | `403` | `This API key has no access to this endpoint.` |
| कुंजी जो कुछ वर्कफ़्लो या स्थितियों तक सीमित है, और ऐसे endpoint पर जिसे वह इस्तेमाल नहीं कर सकती | `403` | `This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint.` |
| कुंजी जो कुछ वर्कफ़्लो या स्थितियों तक सीमित है, और ऐसे सत्र पर जो उन सीमाओं के बाहर है | `404` | `Session not found.` |
| जिस कुंजी का एप्लिकेशन अभी-अभी हटाया गया | `403` | `This application was deleted.`, साथ में `"code": "application_deleted"` |

एप्लिकेशन हटाए जाने के कुछ मिनटों तक API `application_deleted` के साथ जवाब देता है, और उसके बाद वह कुंजी को किसी भी गलत कुंजी की तरह अस्वीकार कर देता है।
पुनः प्रयास न करें: एप्लिकेशन और उसकी कुंजियाँ हटा दिए गए हैं।

कुंजियाँ और उनकी सीमाएँ कैसे काम करती हैं, यह जानने के लिए [API प्रमाणीकरण](https://docs.didit.me/hi/getting-started/api-authentication.md) और [API कुंजियाँ](https://docs.didit.me/hi/console/api-keys.md) देखें।

## अपर्याप्त क्रेडिट

हर API परिवार कम बैलेंस की सूचना अपने तरीके से देता है:

| कॉल | स्थिति | बॉडी |
| - | - | - |
| `POST /v3/session/` | `400` | `{"detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"}` |
| अधिकांश स्टैंडअलोन API | `403` | `{"error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"}` |
| `POST /v3/bank/account-check/` | `402` | `{"detail": "...", "code": "insufficient_credits"}` |
| डिजिटल ID वॉलेट सत्यापन | `403` | `{"error": "insufficient_credits", "detail": "..."}` |
| लेन-देन, Travel Rule और पता सत्यापन | `403` | `{"detail": "...", "code": "insufficient_credits"}` |

अनुबंध पर, जब आपके संगठन के लिए भुगतान वाली सेवाएँ रोकी गई हों, तो सत्र बनाने का अनुरोध `"code": "contract_billing_suspended"` के साथ `403` लौटाता है।
[सैंडबॉक्स एप्लिकेशन](https://docs.didit.me/hi/integration/sandbox-testing.md) का कभी बिल नहीं किया जाता, इसलिए उनमें ये जाँचें नहीं होतीं।

## त्रुटि कोड

ये `code` मान स्थिर हैं, इसलिए आप इनके आधार पर कार्रवाई तय कर सकते हैं। ज़्यादातर कोड `detail` के साथ आते हैं; डिजिटल ID वॉलेट सत्यापन पर कोड `error` का मान होता है।

### पहुँच और बिलिंग

| कोड | स्थिति | अर्थ |
| - | - | - |
| `insufficient_credits` | `402`, `403` | बैलेंस इस कॉल के लिए पर्याप्त नहीं है |
| `contract_billing_suspended` | `403` | इस संगठन के लिए सशुल्क सेवाएँ रोकी गई हैं |
| `contract_rate_missing` | `402`, `403` | अनुबंध में इस जाँच की कोई दर नहीं है |
| `application_deleted` | `403` | इस कुंजी के एप्लिकेशन को हटा दिया गया था |
| `organization_deleted` | `403` | इस कुंजी के संगठन को हटा दिया गया था |
| `event_monitoring_disabled` | `403` | इस एप्लिकेशन के लिए इवेंट इनजेशन चालू नहीं है |
| `networks_not_entitled` | `403` | इस संगठन के लिए धोखाधड़ी नेटवर्क सक्षम नहीं हैं |

### अनुरोध और आइडेम्पोटेंसी

| कोड | स्थिति | अर्थ |
| - | - | - |
| `invalid_image` | `400` | छवि का उपयोग नहीं किया जा सका |
| `return_url_invalid` | `400` | रिटर्न URL की अनुमति नहीं है |
| `idempotency_key_invalid` | `400` | `Idempotency-Key` 255 अक्षरों से लंबी है |
| `idempotency_key_reused` | `409` | यह कुंजी पहले किसी भिन्न बॉडी के साथ इस्तेमाल हो चुकी है |
| `idempotency_key_in_progress` | `409` | इस कुंजी वाला पहला अनुरोध अभी चल रहा है; `Retry-After` तक प्रतीक्षा करें |
| `verification_in_progress` | `409` | उपयोगकर्ता अभी यह सत्यापन पूरा कर रहा है, इसलिए इसे रद्द नहीं किया जा सकता; `Retry-After` तक प्रतीक्षा करें |
| `feature_override_not_pending` | `409` | यह ओवरराइड पहले ही लागू हो चुका है या रद्द कर दिया गया है |

### बैंक, फ़ोन और जोखिम जाँच

| कोड | स्थिति | अर्थ |
| - | - | - |
| `invalid_account_input` | `400` | खाते का विवरण मान्य नहीं है |
| `country_not_covered` | `404` | यह जाँच इस देश या इस प्रकार के खाते को कवर नहीं करती |
| `bank_not_covered` | `404` | यह जाँच इस बैंक तक नहीं पहुँचती |
| `bank_verification_not_available` | `404` | बैंक सत्यापन उपलब्ध नहीं है |
| `account_check_unavailable` | `503` | जाँच अस्थायी रूप से उपलब्ध नहीं है, और अनुरोध का शुल्क नहीं लिया गया |
| `phone_provider_unavailable` | `502` | फ़ोन सत्यापन अस्थायी रूप से उपलब्ध नहीं है; कोई शुल्क नहीं लिया जाता और कोई प्रयास नहीं गिना जाता |
| `risk_lookup_unavailable` | `502` | जोखिम खोज अस्थायी रूप से उपलब्ध नहीं है, और अनुरोध का शुल्क नहीं लिया गया |

### व्यवसाय सत्यापन (KYB)

| कोड | स्थिति | अर्थ |
| - | - | - |
| `kyb_registry_provider_unavailable` | `502` | कंपनी रजिस्ट्री अस्थायी रूप से उपलब्ध नहीं है |
| `kyb_registry_country_unsupported` | `400` | रजिस्ट्री खोज इस देश को कवर नहीं करती |
| `kyb_registry_search_limit_reached` | `429` | एप्लिकेशन ने प्रति घंटे 600 सशुल्क खोज की अपनी सीमा पूरी कर ली है |
| `kyb_session_not_writable` | `409` | सत्र समाप्त हो चुका है |
| `kyb_step_mismatch` | `409` | सत्र किसी दूसरे चरण पर है; `next_step` उसका नाम बताता है |
| `kyb_no_party_drafts` | `409` | जमा करने के लिए कोई ड्राफ़्ट पक्ष नहीं है |
| `kyb_parties_already_submitted` | `409` | पक्ष पहले ही जमा किए जा चुके हैं |
| `kyb_party_kyc_session_not_deleted` | `409` | पक्ष का सत्यापन अभी सक्रिय है, इसलिए इसे फिर से नहीं बनाया जा सकता |

### डिजिटल ID वॉलेट

| कोड | स्थिति | अर्थ |
| - | - | - |
| `wallet_unavailable` | `403` | यह वॉलेट आपके एप्लिकेशन के लिए उपलब्ध नहीं है |
| `wallet_provider_unavailable` | `502` | वॉलेट शुरू नहीं हो सका, और कुछ भी नहीं बनाया गया |
| `wallet_not_configured` | `503` | यह एनवायरनमेंट वॉलेट तक नहीं पहुँच सकता |

### रिपोर्ट और केस

| कोड | स्थिति | अर्थ |
| - | - | - |
| `report_deletion_pending` | `409` | रिपोर्ट हटाई जा रही है; उसकी फ़ाइलों को पूरी तरह मिटाने के लिए हटाने का अनुरोध दोहराएँ |
| `report_storage_unavailable` | `503` | रिपोर्ट की फ़ाइलें मिटाई नहीं जा सकीं; हटाने का अनुरोध दोहराएँ |
| `wallet_address_deletion_incomplete` | `503` | एक संग्रहीत फ़ाइल हटाई नहीं जा सकी, इसलिए हटाने की प्रक्रिया रुक गई; फिर से प्रयास करें |
| `case_request_not_waiting` | `409` | अनुरोध अब ग्राहक की प्रतीक्षा में नहीं है, इसलिए उन्हें याद दिलाने के लिए कुछ नहीं है |
| `case_request_reminder_too_soon` | `429` | हाल ही में एक रिमाइंडर भेजा गया था; `retry_at` बताता है कि आप अगला कब भेज सकते हैं |

### ई-हस्ताक्षर

| कोड | स्थिति | अर्थ |
| - | - | - |
| `signature_not_found` | `404` | हस्ताक्षर मौजूद नहीं है |
| `signature_field_not_found` | `404` | हस्ताक्षर फ़ील्ड मौजूद नहीं है |
| `signature_not_signed` | `404`, `409` | दस्तावेज़ पर हस्ताक्षर नहीं किए गए हैं |

सत्र बनाते समय, नीचे दिए दस्तावेज़ संबंधी समस्याएँ उस फ़ील्ड के मान के रूप में आती हैं जिसमें समस्या है, स्थिति `400` के साथ, उदाहरण के लिए `{"sign": "signature_document_changed"}`:

| मान | अर्थ |
| - | - |
| `signature_document_changed` | यह दस्तावेज़ पहले भेजे गए दस्तावेज़ से अलग है |
| `signature_document_not_supported` | दस्तावेज़ का प्रारूप समर्थित नहीं है |
| `signature_document_conversion_failed` | दस्तावेज़ को रूपांतरित नहीं किया जा सका |
| `field_anchor_not_found` | दस्तावेज़ में किसी फ़ील्ड का टेक्स्ट एंकर नहीं मिला |
| `field_value_missing` | किसी फ़ील्ड का कोई मान नहीं है |

### webhook

| कोड | स्थिति | अर्थ |
| - | - | - |
| `webhook_url_missing` | `400` | डिलीवरी का कोई URL दर्ज नहीं है, इसलिए कुछ भी नहीं भेजा जाता |
| `invalid_webhook_payload` | `400` | webhook डेटा मान्य प्रारूप में नहीं है |
| `webhook_resend_error` | `400` | संग्रहीत डिलीवरी पर दोबारा हस्ताक्षर नहीं किए जा सके, या प्रयास पूरा नहीं हो सका |

## पुनः प्रयास और आइडेम्पोटेंसी

कुछ विफलताओं को दोहराना सुरक्षित होता है, और कुछ को नहीं:

* **`429`:** `Retry-After` हेडर की प्रतीक्षा करें, फिर पुनः प्रयास करें।
* **`502` और `503`:** जब endpoint का संदर्भ बताए कि कोई शुल्क नहीं लगा, तब बैकऑफ़ के साथ पुनः प्रयास करें, जैसा फ़ोन, ईमेल, बैंक और जोखिम जाँच के लिए होता है।
* **`POST /v3/database-validation/` पर `502`:** पहले हर `validation_errors` प्रविष्टि पढ़ें, क्योंकि केवल यह स्थिति अस्थायी विफलता का संकेत नहीं देती।
* **हटाने पर `503`:** वही अनुरोध तब तक दोहराएँ जब तक वह `200` न लौटाए।
* **अन्य `4xx`:** पहले अनुरोध ठीक करें, क्योंकि वही अनुरोध उसी तरह विफल होगा।

`POST /v3/aml/` और डिजिटल ID वॉलेट सत्यापन `Idempotency-Key` हेडर स्वीकार करते हैं, जिसमें अधिकतम 255 अक्षर हो सकते हैं।
एक ही कुंजी और एक ही बॉडी के साथ अनुरोध दोहराने पर संग्रहीत रिस्पॉन्स लौटाया जाता है, इसलिए काम और शुल्क केवल एक बार होते हैं।
एक ही कुंजी के साथ अलग बॉडी भेजने पर `409` मिलता है, और जब पहला अनुरोध अब भी चल रहा हो, तब वॉलेट endpoint `Retry-After` के साथ `409` लौटाते हैं।

`POST /v3/session/` में आइडेम्पोटेंसी कुंजी नहीं होती, इसलिए यदि सत्र बनाने का अनुरोध समय-सीमा पार कर जाए, तो कोई और सत्र बनाने से पहले `vendor_data` के आधार पर अपने सत्रों की सूची बनाएँ।

## संबंधित

* [रेट लिमिट](https://docs.didit.me/hi/integration/rate-limiting.md): सीमाएँ, हेडर और `429` बॉडी।
* [API प्रमाणीकरण](https://docs.didit.me/hi/getting-started/api-authentication.md): अपनी कुंजी कैसे भेजें।
* [सैंडबॉक्स परीक्षण](https://docs.didit.me/hi/integration/sandbox-testing.md): असली डेटा या बिलिंग के बिना परिणाम दोहराएँ।
* [webhook](https://docs.didit.me/hi/integration/webhooks.md): डिलीवरी, पुनः प्रयास और क्रम।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.