# ᠵᡳᡵᡤᠠᠨ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ

ᠮᠣᠳᡝᠯ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ ᠵᡝᠮᡝ ᡥᡡᠯᠠᠮᠪᡳ᠈ ᠵᡝᠯᡳ ᠵᡳᡵᡤᠠᠨ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ᠉ ᠮᡠᠶᠠᡥᠠ (`GET /models`,
`GET /categories`), `POST /quote` ᠮᡠᠨᡳ OpenAPI ᡩᠣᠣᠰᡳ ᠵᠠᠯᡤᠠᠨ ᡥᡝᠮᡝ ᠣᠮᠣᠰᡳ᠉

## API ᠵᡳᡵᡤᠠᠨᠣᠯ

[https://doitong.com/developers/dashboard#keys](https://doitong.com/developers/dashboard#keys) ᡩᡝ ᠵᡳᡵᡤᠠᠨᠣᠯ ᡤᡝᠪᡠᠯᡝᠮᠪᡳ ᠮᡠᠨᡩᡝᡵᡝᠮᠪᡳ᠉ ᡝᠮᡠ ᠵᡳᡵᡤᠠᠨ `doitong_` ᠪᡝ ᠵᠠᠯᡤᠠᠯᠠᠮᠪᡳ᠈ 64 ᡥᡝᡥᡝ ᠵᡳᠯᡤᠠᠨ ᡠᠨᡩᡝ᠉ ᡳᠨᡠ ᡝᠮᡠ ᠵᡠᠯᡤᠠᠨ ᠮᡝᡳᠵᡝ ᠣᠮᠪᡳ᠉ ᠵᡳᡵᡤᠠᠨ ᠵᡠᠯᠠᠨ ᠵᡝᠮᡝ
`Authorization` ᠡᠨᡩᡝᡵᡳ ᡝᡵᡝᠮᠪᡳ:

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

`X-API-Key: <key>` ᠮᡠᠨᡳ ᠵᠠᠯᡠ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ᠉

> [!WARNING]
> ᠵᡳᡵᡤᠠᠨᠣᠯ ᠪᡝ ᡤᡝᠯᡳ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ: ᠵᡳᡵᡤᠠᠨ ᡥᡝᠮᡝ ᠣᠮᠪᡳ ᠵᡝᠯᡳ API ᠵᠠᠯᡤᠠᠨ ᠪᡝ ᠠᠰᡠᠮᠪᡳ᠉ ᠵᡳᡵᡤᠠᠨ ᡥᡡᠯᠠᡥᠠ ᠪᡝᠶᡝᠨᡳ᠈ ᠠᠮᡝᠪᡠᠮᠪᡳ ᠮᡠᠨᡳ ᠵᡠᠯᡤᠠᠨ ᠵᡳᡵᡤᠠᠨ ᠵᠠᠯᠠᠮᠪᡳ᠉

ᠵᡳᡵᡤᠠᠨ ᡠᠯᡤᡳ ᡤᡝᡪᡳᠯᡝᠨ `401` ᠣᠮᠪᡳ᠈ ᠠᠯᡳᠮᠪᡳ `missing_api_key`; ᡝᠯᡝ ᠵᡳᡵᡤᠠᠨ᠈ ᠠᠮᡝᠪᡠᠮᡝᡥᡝ ᠵᡳᡵᡤᠠᠨ ᠮᡠᠨᡳ ᠵᡝᠯᡳ `401` ᠣᠮᠪᡳ᠉

## ᠵᡠᠯᡤᠠᠨᠠᠨ

ᠵᡳᡵᡤᠠᠨ ᠵᡝᠯᡳ ᠵᡠᠯᡤᠠᠨ ᠪᡝ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ᠉ ᠮᠣᠳᡝᠯ API ᡝᠮᡠᠨᡳ ᠰᡳᠨᡝᠮᠪᡳ:

| ᠠᠰᡠᠯᠠᠮᠪᡳ | ᠵᡠᠯᡤᠠᠨ ᠵᡝᠪᠰᡝᠨ |
|---|---|
| ᠮᠣᠳᡝᠯ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ, ᡤᡝᡪᡳᠯᡝᠨ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ, ᡤᡝᡪᡳᠯᡝᠨᡳ ᡶᡳᠯᡝ ᠣᠴᡳᠨᠠᠮᠪᡳ, ᠰᡠᠯᡠᠨ ᠵᡠᠯᡝ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ | `models:run` (`images:create` ᠵᡝᠯᡳ `videos:create` ᠵᡠᠯᡤᠠᠨ ᠮᡠᠨᡳ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ) |
| ᠵᡠᠰᡳ ᠵᡠᠯᡤᠠᠨ ᡠᠷᠠᠮᠪᡳ | `models:run` ᠪᠣᠶᡳ `media:upload` |
| ᡤᡝᡪᡳᠯᡝᠨ᠈ ᡳᠯᡥᠠᠨ | `models:read` (ᠮᠣᠳᡝᠯ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ ᠵᡳᡵᡤᠠᠨ ᠮᡠᠨᡳ ᡳᠯᡥᠠᠨ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ) |

ᠵᡠᠯᡝ ᠵᡳᡵᡤᠠᠨ `models:read` ᠮᡠᠨᡳ `models:run` ᠪᡝ ᠠᠰᡠᠮᠪᡳ᠉ ᠵᡳᡵᡤᠠᠨ ᡠᠯᡤᡳ ᠵᡠᠯᡤᠠᠨ ᡤᠠᡳᠮᠪᡳ ᡥᡝᠮᡝ `403` ᠣᠮᠪᡳ᠈ `insufficient_scope` ᠠᠯᡳᠮᠪᡳ᠉

## ᠺᠷᡝᡩᡳᠲ ᡶᡳᠶᠠᠨ

ᠵᡳᡵᡤᠠᠨ ᠵᡝᠯᡳ API ᠵᠠᠯᡤᠠᠨ ᡩᡝ ᡳᠨᡠ ᡶᡳᠶᠠᠨ ᠪᡝ ᠠᠰᡠᠮᠪᡳ (1,000 API ᠺᠷᡝᡩᡳᠲ = $1)᠉ ᡳᠯᡥᠠᠨ ᠵᠠᠯᡤᠠᠨ᠈ ᡩᠠᡳᠯᠠᠨ ᠵᠠᠯᡤᠠᠨ (ᠰᡝᡵᡝ 24 ᠴᠠᠰᠠᠨ)᠈ ᠪᠣᠶᡳ ᡝᡵᡝ ᠵᠣᠯᡠᠨ᠉ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ ᠣᠴᡳᠨᠠᠮᠪᡳ ᠮᡠᠨᡳ ᠵᡳᡵᡤᠠᠨ ᡝᡵᡝ ᠮᡠᠨᡳ API ᡩᡝ ᠠᠰᡠᡥᠠ ᠵᠠᠯᡤᠠᠨ ᠪᡝ ᠰᡳᠨᡝᠮᠪᡳ (ᠠᠮᡝᠪᡠᠮᠪᡳ ᡩᠠᠮᡠ)᠉ ᡶᡳᠶᠠᠨ ᠵᡝᠪᠰᡝᠨ ᠠᠮᡝᠪᡠᠮᠪᡳ᠈ `402 budget_exceeded` ᠣᠮᠪᡳ ᠮᡠᠨᡳ ᡳᠯᠠᠨ ᠵᠠᠯᡤᠠᠨ ᠠᠰᡠᠮᠪᡳ᠉

> [!IMPORTANT]
> ᡶᡳᠶᠠᠨ ᠵᠠᠯᡤᠠᠨ ᠠᠮᡝᠪᡠᠮᠪᡳ ᠵᠠᠮᡳᠨ: ᡶᡳᠶᠠᠨ ᠵᡳᠯᡤᠠᠨᠠᠮᠪᡳ ᡥᡝᠮᡝ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ ᠣᠴᡳᠨᠠᠮᠪᡳ ᡩᡝ ᡝᠴᡳ ᠮᡠᠨᡳ ᡝᠵᡝᠨ ᡶᡳᠶᠠᠨ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ᠉

 ᡶᡳᠶᠠᠨ ᠠᡴᡡ ᠵᡳᡵᡤᠠᠨ API ᠪᠠᠯᠠᠨᠰᡳ ᡩᠣᠣᠰᡳ ᠠᠰᡠᠮᠪᡳ᠉ ᠮᡠᠨᡳ ᡝᡵᡝ ᡳᠯᠠᠨ ᠵᠠᠯᡤᠠᠨ ᠵᡝᠪᠰᡝᠨ ᠠᠮᡝᠪᡠᠮᠪᡳ `402 insufficient_credits`
ᡩᡝ `top_up_url` ᠣᠮᠪᡳ᠉

`GET https://api.doitong.com/v1/account` API ᠪᠠᠯᠠᠨᠰᡳ ᠮᡠᠨᡳ ᠵᡳᡵᡤᠠᠨᡳ ᠣᠯᡥᠣ ᠶᠠᠯᡤᠠᠨ ᠪᡝ (ᡝᡵᡝ API ᠵᠠᠯᡤᠠᠨ) ᠠᠯᡳᠮᠪᡳ:

```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` `null` ᠣᠮᠪᡳ᠉

## ᡤᡝᡪᡳᠯᡝᠨ ᠵᡠᠯᡝ

ᠵᡳᡵᡤᠠᠨ ᠵᡝᠯᡳ 3600 ᡤᡝᡪᡳᠯᡝᠨ ᠪᡝ ᡝᠮᡠ ᠰᡝᡴᡠᠨᡩ ᠣᠴᡳ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ᠈ ᠵᡠᠯᡝ ᠪᡝ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ ᠠᠯᡳᠮᠪᡳ᠉ ᠠᠮᠠᠰᡳᠯᠠᠮᡝᡥᡝ ᡩᡝ ᠵᡝᠮᡝ ᠵᡠᠯᡝ ᠪᡝ ᠠᠯᡳᠮᠪᡳ:

| ᡤᡝᠪᡠ | ᠮᡝᠨᡳᠰᡠ |
|---|---|
| `X-RateLimit-Limit` | ᡝᡵᡝ ᠴᠠᠰᠠᠨ ᡩᡝ ᠠᠰᡠᠮᠪᡳ ᡤᡝᡪᡳᠯᡝᠨ |
| `X-RateLimit-Remaining` | ᡝᡵᡝ ᠴᠠᠰᠠᠨ ᡩᡝ ᠣᠯᡥᠣ ᡤᡝᡪᡳᠯᡝᠨ |
| `X-RateLimit-Reset` | ᠴᠠᠰᠠᠨ ᠵᡠᠯᡝᠮᡝ ᠰᡳᠨᡝᠮᠪᡳ ᡩᡝ ᠣᠴᡳᠨᠠᠮᠪᡳ |

ᠵᡠᠯᡝ ᠠᠰᡠᡥᠠ ᡩᡝ `429` ᠣᠮᠪᡳ ᠮᡠᠨᡳ `Retry-After` ᡝᠨᡩᡝᡵᡳ (ᠰᡝᡴᡠᠨᡩ)᠉ `?wait=` ᠵᡠᠯᡤᠠᠨ ᠵᡝᠯᡳ ᠵᡝᠮᡝ ᡝᠮᡠ ᡤᡝᡪᡳᠯᡝᠨ ᠣᠮᠪᡳ᠈ ᡝᡵᡝ ᠪᡝ ᠠᠮᠠᠰᡳᠯᠠᠮᠪᡳ ᠮᡠᠨᡳ ᠵᡠᠯᡝ ᠰᡳᠨᡝᠮᠪᡳ ᠵᡝᠪᠰᡝᠨ᠉

ᡝᠮᡠ ᠵᡳᡵᡤᠠᠨ ᡩᡝ ᡤᡝᡪᡳᠯᡝᠨ 10 ᠵᠠᠯᠠᠨ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ (`queued` ᠪᠣᠶᡳ `running`)᠉ ᠨᠠᠮᡠᠨ ᡝᠮᡠ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ ᡩᡝ `429 too_many_inflight` ᠣᠮᠪᡳ; ᡝᠮᡠ ᠵᡠᠯᡤᠠᠨ ᡶᡳᠨᡳᠰᡥᡝ ᠵᡠᠯᠠᠨ ᠮᡠᠨᡳ ᠵᡠᠯᡤᠠᠨᠠᠮᠪᡳ᠉
