# Autentiseren

Juohke gohččun, mii ráhkada modealla dahje lohká du jearaldagaid, dárbbaša API-čoavdda. Katalogat (`GET /models`, `GET /categories`), `POST /quote` ja OpenAPI-dokumentašuvdna leat almmolaččat.

## API-čoavddat

Ráhkat ja gávnnat čoavddaid dáppe [https://doitong.com/developers/dashboard#keys](https://doitong.com/developers/dashboard#keys). Čoavdda lea dás `doitong_` ja dan čuovvul 64 heksa-teavstta, ja dat čájehuvvo dušše oktii, go ráhkat dan. Sádde dan `Authorization`-čállái:

```bash
curl https://api.doitong.com/v1/account -H "Authorization: Bearer $DOITONG_API_KEY"
```

`X-API-Key: <key>` doaibmá maid.

> [!WARNING]
> Vurke čoavddaid du serveris: juohkehaš geas lea čoavdda sáhttá geavahit dan API-kredihtta maid das lea lohpi geavahit. Jus čoavdda gávdno olggobealde, gávnna dan ja ráhkat ođđa.

Jearaldat čoavddageahttá oažžu `401` koda `missing_api_key`-in; dovdatmeahttun, gávnnahuvvon dahje geargan čoavdda oažžu `401` maiddái.

## Scopeat

Juohke čoavddas leat scopeat. Modealla-API dárkkista daid:

| Doaibma | Dárbbašlaš scope |
|---|---|
| Ráhkat modealla, heaittát jearaldaga, sihkkut jearaldaga fiillaid, rievdat vurkenheivehusa | `models:run` (čoavddat main lea boarráset `images:create` dahje `videos:create` doaibmabahttet maiddái) |
| Ráhkat upload-URL:a | `models:run` dahje `media:upload` |
| Lohkat jearaldagaid, konttu | `models:read` (čoavdda mii sáhttá ráhkat modeallaid lohká maid) |

Ođđa čoavddat oažžut standárdan `models:read` ja `models:run`. Gohččun riekta scopea haga oažžu `403` koda `insufficient_scope`-in.

## Kredihtta-bušeahtat

Čoavddas sáhttá leat iežas bušeahtta API-kredihtain (1 000 API-kreditta = 1 $), kontoeaiggádiin meroštallojuvvon: oppalaš bušeahtta, beaivválaš bušeahtta (maŋemus 24 diimmu), dahje goappašagat. Ovdal go ráhkadeapmi máksojuvvo, geahččaluvvo haddái vuostá dan maid čoavdda lea juo poten dán API bokte (máhcaheamit vuhtii váldojuvvon). Ráhkadeapmi mii livččii eanet go dat, hilggojuvvo `402 budget_exceeded`-in ja ii máksojuvvo maidege.

> [!IMPORTANT]
> Bušeahtta-hilgun lea loahpalaš: ođđasaga jearaldat ii veahke, dassážii go eaiggát lokte bušeahta.

 Čoavdda bušeahtta haga sáhttá geavahit gitta API-saldo rádjai. Lassin, ráhkadeapmi maid API-saldo ii sáhte gokčat, oažžu `402 insufficient_credits` ja `top_up_url`.

`GET https://api.doitong.com/v1/account` čájeha API-saldo ja čoavdda báhcán bušeahta (goappašagat API-kredihtain):

```json 200 OK · account
{
  "object": "account",
  "credits": 125000,
  "balance": { "credits": 125000, "usd": "125.00" },
  "top_up_url": "https://doitong.com/developers/dashboard#balance",
  "key": {
    "name": "Production server",
    "prefix": "doitong_3fa9c1e...",
    "scopes": ["models:read", "models:run"],
    "budget_remaining": 50000,
    "rate_limit": 3600,
    "rate_limit_remaining": 3571
  },
  "webhook_signing_secret": "whsec_..."
}
```

`budget_remaining` lea `null` go čoavddas ii leat iežas bušeahtta.

## Limihtat

Juohke čoavdda sáhttá dahkat 3600 jearaldaga diimmus, jus dan limihta ii leat molssuduvvon. Juohke autentiserejuvvon vástádus sisttisdoallá dálá dili:

| Čálli | Mearkkašupmi |
|---|---|
| `X-RateLimit-Limit` | Jearaldagat mat leat lohpejuvvon dálá áigegárggus |
| `X-RateLimit-Remaining` | Jearaldagat mat báhcet dálá áigegárggus |
| `X-RateLimit-Reset` | Unix-áigi go áigegárga ođasmahttá |

Limihta badjel oaččut `429` `Retry-After`-čálliin (sekunddat). Guhkes polling mas lea `?wait=` rehkenastojuvvo okta jearaldahkan juohke gohččuma nammii, nu ahte vuordit lea hálbbit go jearaldagaid dávjá dahkat.

Dasa lassin lea kontui limihta 10 jearaldahkii mat leat jođus (`queued` dahje `running`). Eanet álggaheapmi máhcaha `429 too_many_inflight`; álggat dan fas go okta lea geargan.
