# பிழைகள்

ஒவ்வொரு முனையமும் ஒரே முறையில் தோல்வியடைகிறது: HTTP நிலையும் ஒரு JSON உறையும்.

```json
{
  "error": {
    "type": "invalid_request",
    "code": "invalid_input",
    "message": "duration must be one of 5, 10.",
    "param": "duration",
    "details": [ { "param": "duration", "message": "duration must be one of 5, 10." } ],
    "request_id": null,
    "doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
  }
}
```

| புலம் | பொருள் |
|---|---|
| `type` | பிழையின் பொதுவான வகுப்பு. இதன் அடிப்படையில் என்ன செய்ய வேண்டும் என்பதைத் தீர்மானிக்கவும். |
| `code` | துல்லியமான காரணம்; நிலையானதும் இயந்திரம் படிக்கக்கூடியதும். ஒவ்வொரு குறியீட்டுக்கும் கீழே ஒரு பகுதி உள்ளது; `doc_url` அதற்கான இணைப்பை வழங்குகிறது. |
| `message` | மனிதர்கள் படிக்கக்கூடிய விளக்கம்; பதிவு செய்யவோ டெவலப்பருக்குக் காட்டவோ பாதுகாப்பானது. |
| `param` | தவறுக்குக் காரணமான உள்ளீட்டு அளவுரு அல்லது தலைப்பு, அத்தகைய ஒன்று இருந்தால். |
| `details` | உள்ளீட்டுப் பிழைகளுக்கு, கண்டறியப்பட்ட ஒவ்வொரு சிக்கலும்: `[{ "param", "message" }]`. |
| `request_id` | தொடர்புடைய கோரிக்கை, அத்தகைய ஒன்று இருந்தால். |

பிழையைத் திருப்பியளிக்கும் அழைப்புக்கு எதுவும் வசூலிக்கப்படாது. ஏற்றுக்கொள்ளப்பட்ட *பிறகு* தோல்வியடையும் கோரிக்கை `failed` நிலையிலேயே இருக்கும்; கோரிக்கைப் பொருளில் `error: { "type", "code", "message" }` இருக்கும், மேலும் கட்டணம் தானாகத் திருப்பியளிக்கப்படும்.

## வகைகள்

| வகை | HTTP நிலை | செய்ய வேண்டியது |
|---|---|---|
| `invalid_request` | 400, 413 அல்லது 422 | கோரிக்கையைச் சரிசெய்யவும். அதே அழைப்பை மீண்டும் முயற்சித்தாலும் மீண்டும் தோல்வியடையும். |
| `authentication_error` | 401 | `Authorization: Bearer <key>` இல் செல்லுபடியாகும் விசையை அனுப்பவும். |
| `permission_error` | 403 | தேவையான வரம்பைக் கொண்ட விசையைப் பயன்படுத்தவும். |
| `not_found` | 404 | மாதிரி id அல்லது கோரிக்கை id-ஐச் சரிபார்க்கவும். |
| `insufficient_credits` | 402 | API இருப்பில் மீள்நிரப்பு செய்யவும் (பிழையில் `top_up_url`). |
| `budget_exceeded` | 402 | விசையின் சொந்த பட்ஜெட் முழுமையாகப் பயன்படுத்தப்பட்டுள்ளது. இறுதியாக: அதை உயர்த்துமாறு விசையின் உரிமையாளரிடம் கேட்கவும். |
| `conflict` | 409 | இந்த அழைப்பை அனுமதிக்கும் நிலையில் வளம் இல்லை. |
| `rate_limited` | 429 | `Retry-After` வினாடிகள் காத்திருந்து, பின்னர் மீண்டும் முயற்சிக்கவும். |
| `upstream_error` | 502 | மாதிரி பின்தளம் தோல்வியடைந்தது. அதே `Idempotency-Key` மூலம் மீண்டும் முயற்சிப்பது பாதுகாப்பானது: அது மீண்டும் இயங்கும்; உங்களிடம் கட்டணம் வசூலிக்கப்படவில்லை. |
| `service_unavailable` | 503 | API இடைநிறுத்தப்பட்டுள்ளது அல்லது சார்பு சேவை செயலிழந்துள்ளது. பின்னர் மீண்டும் முயற்சிக்கவும். |
| `internal_error` | 500 | எங்கள் பிழை. மீண்டும் முயற்சிக்கவும்; தொடர்ந்து ஏற்பட்டால், நேரம் மற்றும் `request_id` உடன் ஆதரவைத் தொடர்புகொள்ளவும். |

## குறியீடுகள்

### `invalid_request`

பொதுவான தவறான வடிவிலான கோரிக்கை (400).

### `invalid_json`

உடல் செல்லுபடியாகும் JSON அல்ல (400).

### `invalid_body`

உடல் செல்லுபடியாகும் JSON, ஆனால் ஒரு object அல்ல; மாதிரி உள்ளீடு JSON object ஆக இருக்க வேண்டும் (400).

### `body_too_large`

உடல் 16 MB-ஐ விடப் பெரியது (413). பெரிய கோப்புகளைப் பதிவேற்றி, அதற்குப் பதிலாக அவற்றின் URL-ஐ அனுப்பவும் ([கோப்புகள்](https://doitong.com/developers/docs/files) பார்க்கவும்).

### `invalid_parameter`

ஒரு query அளவுருவில் தவறான மதிப்பு உள்ளது; எடுத்துக்காட்டாக, 1 முதல் 100 வரை இல்லாத `limit`, எண்ணாக இல்லாத `wait`, தெரியாத `status` அல்லது `category`, அல்லது `permanent` / `temporary` அல்லாத `storage` (400). `param` அதைக் குறிப்பிடுகிறது.

### `invalid_category`

`GET /openapi.json?category=` இல்லாத வகையைக் குறிப்பிடுகிறது (400). `GET https://api.doitong.com/v1/categories` அவற்றைப் பட்டியலிடுகிறது.

### `invalid_cursor`

பட்டியல் அழைப்பின் `cursor` இந்தப் பட்டியலுக்குரியது அல்ல (400). cursor இல்லாமல் மீண்டும் தொடங்கவும்.

### `invalid_idempotency_key`

`Idempotency-Key` தலைப்பு காலியாக உள்ளது அல்லது 255 எழுத்துகளுக்கு மேல் உள்ளது (400).

### `invalid_arguments`

MCP கருவி அழைப்பில் ஒரு விடுபட்ட அல்லது தவறான வடிவிலான வாதம் உள்ளது (MCP மட்டும்). `param` அந்த வாதத்தைக் குறிப்பிடுகிறது.

### `invalid_input`

மாதிரி உள்ளீடு சரிபார்ப்பில் தேர்ச்சி பெறவில்லை (422): தெரியாத அளவுரு (செய்தி அருகிலுள்ள செல்லுபடியாகும் பெயரைப் பரிந்துரைக்கும்), விடுபட்ட தேவையான அளவுரு, தவறான வகை, அனுமதிக்கப்பட்ட பட்டியல் அல்லது வரம்பிற்கு வெளியிலுள்ள மதிப்பு, அல்லது canonical மற்றும் native பெயர்கள் இரண்டும் வெவ்வேறு மதிப்புகளுடன் வழங்கப்பட்டுள்ளன. `param` முதலில் தவறான அளவுரையைக் குறிப்பிடுகிறது; `details` அனைத்தையும் பட்டியலிடுகிறது. எதுவும் வசூலிக்கப்படாது.

### `unsupported_file`

ஒரு கோப்பில் நாங்கள் ஏற்காத வகை உள்ளது (422); எடுத்துக்காட்டாக, ஆதரிக்கப்படாத நீட்டிப்புடன் பதிவேற்றப்பட்ட கோப்பு அல்லது நீட்டிப்புடன் பொருந்தாத `content_type`.

### `invalid_webhook_url`

`webhook_url` பொது `https://` URL அல்ல (422). தனிப்பட்ட, உள்ளக மற்றும் எளிய `http://` முகவரிகள் மறுக்கப்படுகின்றன.

### `missing_api_key`

முனையத்துக்கு API விசை தேவை, ஆனால் எதுவும் அனுப்பப்படவில்லை (401).

### `invalid_api_key`

விசை தெரியாதது, ரத்து செய்யப்பட்டது அல்லது காலாவதியானது (401).

### `insufficient_scope`

இந்த அழைப்புக்குத் தேவையான வரம்பு விசையில் இல்லை (403); எடுத்துக்காட்டாக, இயக்க `models:run`, அல்லது கோரிக்கைகள் மற்றும் இருப்பைப் படிக்க `models:read`. [அங்கீகாரம்](https://doitong.com/developers/docs/authentication#scopes) பார்க்கவும்.

### `account_disabled`

கணக்கு மூடப்பட்டுள்ளது அல்லது இடைநிறுத்தப்பட்டுள்ளது (403). அதன் விசைகள் இனி செயல்படாது.

### `not_found`

பாதை இல்லை (404).

### `model_not_found`

இந்த id-யுடன் பொது மாதிரி எதுவும் இல்லை (404). `GET https://api.doitong.com/v1/models` மூலம் மாதிரிகளைப் பட்டியலிடவும்.

### `request_not_found`

இந்த id-யுடன் உங்கள் கணக்கில் கோரிக்கை எதுவும் இல்லை (404). பிற கணக்குகளின் கோரிக்கைகள் ஒருபோதும் தெரியாது.

### `insufficient_credits`

கணக்கின் **API இருப்பு** (API கிரெடிட்கள், 1,000 API கிரெடிட்கள் = $1 — Doitong பயன்பாடுகளின் கிரெடிட்கள் அல்ல) இந்த அழைப்பின் விலையை ஈடுசெய்யாது (402). எதுவும் வசூலிக்கப்படுவதற்கு முன்பே பதில் அனுப்பப்படும். பிழையில் `top_up_url` இருக்கும்; [https://doitong.com/developers/dashboard#balance](https://doitong.com/developers/dashboard#balance) இல் பணம் சேர்த்து மீண்டும் முயற்சிக்கவும்.

```json
{ "error": { "type": "insufficient_credits", "code": "insufficient_credits",
             "message": "This request costs 560 API credits ($0.56); the API balance is 120 API credits ($0.12). Top up at https://doitong.com/developers/dashboard#balance",
             "top_up_url": "https://doitong.com/developers/dashboard#balance", "doc_url": "https://doitong.com/developers/docs/errors#insufficient_credits" } }
```

### `budget_exceeded`

அழைப்பு API விசையின் சொந்த API கிரெடிட்கள் பட்ஜெட்டை மீறும் (402). பட்ஜெட்டை விசையின் உரிமையாளர் அமைக்கிறார்; அவர் அதை உயர்த்தும் வரை மீண்டும் முயற்சிப்பதால் பயனில்லை.

### `conflict`

அழைப்பு வளத்தின் தற்போதைய நிலையுடன் முரண்படுகிறது (409).

### `idempotency_mismatch`

`Idempotency-Key` ஏற்கனவே வேறு உடலுடன் பயன்படுத்தப்பட்டுள்ளது (409). புதிய செயல்பாட்டுக்கு புதிய விசையைப் பயன்படுத்தவும்.

### `idempotency_in_progress`

அதே `Idempotency-Key` கொண்ட கோரிக்கை தற்போது உருவாக்கப்படுகிறது (409). அதைப் பெற சிறிது நேரம் கழித்து மீண்டும் முயற்சிக்கவும்.

### `request_active`

கோரிக்கை இன்னும் `queued` அல்லது `running` நிலையில் உள்ளது; எனவே நீக்குவதற்கான கோப்புகள் இன்னும் இல்லை (409). அது முடிந்ததும் அவற்றை நீக்கவும்.

### `not_cancelable`

கோரிக்கை ஏற்கனவே `succeeded` அல்லது `failed` நிலையில் உள்ளது; அதை ரத்து செய்ய முடியாது (409).

### `rate_limited`

தற்போதைய காலவரம்பில் விசை அதிகமான கோரிக்கைகளைச் செய்துள்ளது (429). `X-RateLimit-*` மற்றும் `Retry-After` தலைப்புகளைப் பார்க்கவும்.

### `too_many_inflight`

கணக்கில் ஏற்கனவே 10 `queued` அல்லது `running` கோரிக்கைகள் உள்ளன (429). அவற்றில் ஒன்று முடிந்ததும் அடுத்ததைத் தொடங்கவும்.

### `upstream_error`

மாதிரி பின்தளம் கோரிக்கையை மறுத்தது அல்லது தோல்வியடைந்தது (இயக்கும்போது 502, அல்லது கோரிக்கையில் இந்தக் குறியீட்டுடன் `failed`). API கிரெடிட்கள் திருப்பியளிக்கப்படும். பின்தளம் உள்ளீட்டையே நிராகரித்திருந்தால், அதற்கான செய்தியுடன் `422 invalid_input` என அழைப்பு திரும்பும்.

### `upstream_lost`

மாதிரி பின்தளத்துக்கு இனி கோரிக்கை தெரியவில்லை; எனவே முடிவு ஒருபோதும் வராது. இது இந்தக் குறியீட்டுடன் `failed` ஆக முடிவடையும் (வகை `upstream_error`), மேலும் பணம் திருப்பியளிக்கப்படும். மீண்டும் இயக்கவும்.

### `timeout`

கோரிக்கை அதன் வரம்பை விட நீண்ட நேரம் இயங்கியது (படங்களுக்கு 15 நிமிடங்கள், வீடியோவுக்கு 60, மற்றவற்றுக்கு 30) மற்றும் நிறுத்தப்பட்டது. இது இந்தக் குறியீட்டுடன் `failed` ஆக முடிவடையும்; பணம் திருப்பியளிக்கப்படும்.

### `service_unavailable`

API தற்காலிகமாக இடைநிறுத்தப்பட்டுள்ளது அல்லது கோப்பு பதிவேற்றங்கள் போன்ற சார்பு சேவை செயலிழந்துள்ளது (503). பின்னர் மீண்டும் முயற்சிக்கவும்.

### `internal_error`

எங்கள் பக்கத்தில் ஏதோ செயலிழந்தது (500). மீண்டும் முயற்சிக்கவும்; தொடர்ந்து ஏற்பட்டால், ஆதரவைத் தொடர்புகொள்ளவும்.

### `charge_failed`

உள்ளகச் சிக்கல் காரணமாகக் கணக்கிலிருந்து கட்டணம் வசூலிக்க முடியவில்லை (500). கோரிக்கை `failed` எனக் குறிக்கப்படும்; எதுவும் எடுக்கப்படவில்லை. மீண்டும் முயற்சிக்கவும்.

### `pricing_unavailable`

மாதிரியின் விலை அமைக்கப்படவில்லை; எனவே தற்போது விலையை வழங்கவோ இயக்கவோ முடியாது (500).
