# Villur

Allir endapunktar bregðast við á sama hátt: HTTP-staða og eitt JSON-umslag.

```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"
  }
}
```

| Fær | Merking |
|---|---|
| `type` | Yfirflokkur villunnar. Ákveddu út frá þessu hvað skuli gera. |
| `code` | Nákvæm ástæða, stöðug og véllesanleg. Allir kóðar eiga sinn kafla hér að neðan; `doc_url` tengir í hann. |
| `message` | Mannlesanleg skýring, örugg til skráningar eða birtingar fyrir þróunaraðila. |
| `param` | Inntaksfæribreytan eða hausinn sem veldur vandanum, ef slíkt er til staðar. |
| `details` | Fyrir inntaksvillur, öll vandamál sem fundust: `[{ "param", "message" }]`. |
| `request_id` | Beiðnin sem þetta varðar, ef hún er til. |

Ekkert er rukkað fyrir kall sem skilar villu. Beiðni sem bregst *eftir* að hún hefur verið samþykkt heldur stöðunni
`failed`, inniheldur `error: { "type", "code", "message" }` í beiðnishlutnum og er endurgreidd sjálfkrafa.

## Tegundir

| Tegund | HTTP-staða | Hvað skal gera |
|---|---|---|
| `invalid_request` | 400, 413 eða 422 | Lagfærðu beiðnina. Sama kall bregst aftur við endurtekningu. |
| `authentication_error` | 401 | Sendu gildan lykil í `Authorization: Bearer <key>`. |
| `permission_error` | 403 | Notaðu lykil með nauðsynlegu umfangi. |
| `not_found` | 404 | Athugaðu auðkenni líkans eða beiðni. |
| `insufficient_credits` | 402 | Gerðu áfyllingu á API-stöðunni (`top_up_url` í villunni). |
| `budget_exceeded` | 402 | Fjárhagsrammi lykilsins er uppurinn. Að lokum: biddu eiganda lykilsins að hækka hann. |
| `conflict` | 409 | Tilfangið er ekki í stöðu sem leyfir þetta kall. |
| `rate_limited` | 429 | Bíddu í `Retry-After` sekúndur og reyndu svo aftur. |
| `upstream_error` | 502 | Bakendi líkansins brást. Öruggt er að reyna aftur með sama `Idempotency-Key`: það keyrir aftur; ekkert var rukkað. |
| `service_unavailable` | 503 | Gervigreindarforritaskilin eru í bið eða háð þjónusta liggur niðri. Reyndu aftur síðar. |
| `internal_error` | 500 | Villa hjá okkur. Reyndu aftur; ef hún heldur áfram skaltu hafa samband við þjónustuver með tímasetningu og `request_id`. |

## Kóðar

### `invalid_request`

Almenn ógild beiðni (400).

### `invalid_json`

Meginmálið er ekki gilt JSON (400).

### `invalid_body`

Meginmálið er gilt JSON en ekki hlutur; inntak líkans verður að vera JSON-hlutur (400).

### `body_too_large`

Meginmálið er stærra en 16 MB (413). Hladdu upp stórum skrám og sendu URL þeirra í staðinn (sjá [Skrár](https://doitong.com/developers/docs/files)).

### `invalid_parameter`

Færibreyta fyrirspurnar hefur rangt gildi, til dæmis `limit` utan bilsins 1 til 100, `wait` er ekki tala, óþekkt
`status` eða `category`, eða `storage` annað en `permanent` / `temporary` (400). `param` nefnir hana.

### `invalid_category`

`GET /openapi.json?category=` nefnir flokk sem er ekki til (400). `GET https://api.doitong.com/v1/categories` sýnir þá.

### `invalid_cursor`

`cursor` í listakalli tilheyrir ekki þessum lista (400). Byrjaðu aftur án bendils.

### `invalid_idempotency_key`

`Idempotency-Key`-hausinn er tómur eða lengri en 255 stafir (400).

### `invalid_arguments`

MCP-verkfæra- kall vantar færibreytu eða hún er gölluð (aðeins MCP). `param` nefnir færibreytuna.

### `invalid_input`

Inntak líkans stenst ekki sannprófun (422): óþekkt færibreyta (skilaboðin leggja til næsta gilda heiti),
skyldufæribreytu vantar, rangt gagnagerð, gildi er utan leyfðs lista eða bils, eða bæði staðlaða og
innbyggða heitið eru gefin með ólíkum gildum. `param` er fyrsta færibreytan sem veldur vandanum og `details` sýnir þær allar.
Ekkert er rukkað.

### `unsupported_file`

Skrá er af tegund sem við tökum ekki við (422), til dæmis upphleðsla með óstuddu viðskeyti eða `content_type`
sem passar ekki við viðskeytið.

### `invalid_webhook_url`

`webhook_url` er ekki opinbert `https://` URL (422). Einkareikningar, staðbundin vistföng og venjuleg `http://`-vistföng eru höfnuð.

### `missing_api_key`

Endapunkturinn þarfnast API-lykils en enginn var sendur (401).

### `invalid_api_key`

Lykillinn er óþekktur, afturkallaður eða útrunninn (401).

### `insufficient_scope`

Lykilinn skortir umfangið sem þetta kall þarfnast (403), til dæmis `models:run` fyrir keyrslu eða `models:read` til að lesa
beiðnir og stöðu. Sjá [Auðkenning](https://doitong.com/developers/docs/authentication#scopes).

### `account_disabled`

Reikningnum hefur verið lokað eða hann settur í bið (403). Lyklar hans virka ekki lengur.

### `not_found`

Slóðin er ekki til (404).

### `model_not_found`

Ekkert opinbert líkan hefur þetta auðkenni (404). Sýndu líkön með `GET https://api.doitong.com/v1/models`.

### `request_not_found`

Engin beiðni með þessu auðkenni er til á reikningnum þínum (404). Beiðnir annarra reikninga eru aldrei sýnilegar.

### `insufficient_credits`

**API-staða** reikningsins (API-inneign, 1.000 API-inneignir = 1 $ — ekki inneign Doitong-forritanna) nær ekki yfir
verð þessa kalls (402). Svarið er sent áður en nokkuð er rukkað. Villan inniheldur `top_up_url`; bættu við fé
á [https://doitong.com/developers/dashboard#balance](https://doitong.com/developers/dashboard#balance) og reyndu aftur.

```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`

Kallið myndi fara yfir eigin fjárhagsramma API-lykilsins í API-inneign (402). Eigandi lykilsins stillir fjárhagsrammann; endurtekning hjálpar ekki fyrr en hann er hækkaður.

### `conflict`

Kallið stangast á við núverandi stöðu tilfangsins (409).

### `idempotency_mismatch`

`Idempotency-Key` var þegar notað með öðru meginmáli (409). Notaðu nýjan lykil fyrir nýja aðgerð.

### `idempotency_in_progress`

Beiðni með sama `Idempotency-Key` er í vinnslu núna (409). Reyndu aftur eftir augnablik til að sækja hana.

### `request_active`

Beiðnin er enn `queued` eða `running` og því eru engar skrár til að eyða enn (409). Eyddu þeim þegar hún er búin.

### `not_cancelable`

Beiðnin er þegar `succeeded` eða `failed` og ekki er hægt að hætta við hana (409).

### `rate_limited`

Lykillinn sendi of margar beiðnir í núverandi glugga (429). Sjá hausana `X-RateLimit-*` og `Retry-After`.

### `too_many_inflight`

Reikningurinn hefur þegar 10 beiðnir `queued` eða `running` (429). Byrjaðu næstu þegar ein þeirra lýkur.

### `upstream_error`

Bakendi líkansins hafnaði beiðninni eða brást (502 við keyrslu, eða `failed` með þessum kóða á beiðninni). API-inneignin er
endurgreidd. Ef bakendinn hafnaði sjálfu inntakinu skilar kallið `422 invalid_input` með skilaboðum þess í stað.

### `upstream_lost`

Bakendi líkansins þekkir ekki lengur beiðnina, svo niðurstaða berst aldrei. Hún endar sem `failed` með þessum kóða
(tegund `upstream_error`) og er endurgreidd. Keyrðu hana aftur.

### `timeout`

Beiðnin keyrði lengur en leyfilegt er (15 mínútur fyrir myndir, 60 fyrir myndband, 30 annars) og var stöðvuð. Hún endar sem
`failed` með þessum kóða og er endurgreidd.

### `service_unavailable`

Gervigreindarforritaskilin eru tímabundið í bið eða háð þjónusta á borð við skráaupphleðslur liggur niðri (503). Reyndu aftur síðar.

### `internal_error`

Eitthvað bilaði hjá okkur (500). Reyndu aftur; ef það heldur áfram skaltu hafa samband við þjónustuver.

### `charge_failed`

Ekki tókst að rukka reikninginn vegna innri vandamáls (500). Beiðnin er merkt `failed`; ekkert var tekið. Reyndu aftur.

### `pricing_unavailable`

Verð líkansins er ekki stillt og því er ekki hægt að gefa upp verð eða keyra það núna (500).
