# அங்கீகாரம்

மாதிரியை இயக்கும் அல்லது உங்கள் கோரிக்கைகளைப் படிக்கும் ஒவ்வொரு அழைப்புக்கும் API விசை தேவை. பட்டியல் (`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 கிரெடிட்களைச் செலவிடலாம். ஒரு விசை கசியுமானால்,
> அதைத் திரும்பப்பெற்று புதிய ஒன்றை உருவாக்குங்கள்.

விசையில்லாத கோரிக்கைக்கு `missing_api_key` குறியீட்டுடன் `401` கிடைக்கும்; தெரியாத, திரும்பப்பெறப்பட்ட அல்லது காலாவதியான விசைக்கும் `401` கிடைக்கும்.

## வரம்புகள்

ஒவ்வொரு விசையும் வரம்புகளைக் கொண்டிருக்கும். மாதிரி API இவற்றைச் சரிபார்க்கிறது:

| செயல் | தேவையான வரம்பு |
|---|---|
| மாதிரியை இயக்குதல், கோரிக்கையை ரத்துசெய்தல், கோரிக்கையின் கோப்புகளை நீக்குதல், சேமிப்பக அமைப்பை மாற்றுதல் | `models:run` (பழைய `images:create` அல்லது `videos:create` கொண்ட விசைகளும் செயல்படும்) |
| பதிவேற்ற URL உருவாக்குதல் | `models:run` அல்லது `media:upload` |
| கோரிக்கைகள், கணக்கைப் படித்தல் | `models:read` (மாதிரிகளை இயக்கக்கூடிய விசையால் படிக்கவும் முடியும்) |

புதிய விசைகள் இயல்புநிலையாக `models:read` மற்றும் `models:run` ஆகியவற்றைப் பெறும். சரியான வரம்பில்லாத அழைப்புக்கு `insufficient_scope` குறியீட்டுடன்
`403` கிடைக்கும்.

## கிரெடிட் பட்ஜெட்டுகள்

ஒரு விசைக்கு கணக்கு உரிமையாளரால் அமைக்கப்பட்ட, API கிரெடிட்களில் (1,000 API கிரெடிட்கள் = $1) தனிப்பட்ட பட்ஜெட் இருக்கலாம்: மொத்த பட்ஜெட், தினசரி பட்ஜெட் (கடந்த 24 மணிநேரம்) அல்லது இரண்டும். இயக்கத்திற்குக் கட்டணம் விதிக்கப்படுவதற்கு முன், இந்த API மூலம் அந்த விசை ஏற்கனவே செலவிட்ட தொகைக்கு எதிராகச் செலவு சரிபார்க்கப்படும் (பணத்தைத் திருப்பியளித்தலைக் கணக்கில் கொண்டு). வரம்பை மீறும் இயக்கம் மறுக்கப்பட்டு `402 budget_exceeded` கிடைக்கும்; எந்தக் கட்டணமும் விதிக்கப்படாது.

> [!IMPORTANT]
> பட்ஜெட் மறுப்பு இறுதியானது: உரிமையாளர் பட்ஜெட்டை உயர்த்தும் வரை மீண்டும் முயற்சிப்பதால் பயனில்லை.

 பட்ஜெட் இல்லாத விசை API இருப்பு வரை செலவிடலாம். தனியாக, API இருப்பால் ஈடுகட்ட முடியாத இயக்கத்திற்கு `top_up_url` உடன் `402 insufficient_credits` கிடைக்கும்.

`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` | காலவரம்பு மீட்டமைக்கப்படும் Unix நேரம் |

வரம்பை மீறினால், `Retry-After` தலைப்புடன் `429` கிடைக்கும் (வினாடிகள்). `?wait=` உடன் நீண்ட polling ஒவ்வொரு அழைப்பையும் ஒரு கோரிக்கையாகக் கணக்கிடும்; எனவே வேகமாக polling செய்வதைவிடக் காத்திருப்பது குறைந்த செலவாகும்.

ஒவ்வொரு கணக்கிற்கும் ஒரே நேரத்தில் செயல்பாட்டிலுள்ள (`queued` அல்லது `running`) கோரிக்கைகளுக்கு 10 என்ற வரம்பும் உள்ளது. மேலும் ஒன்றைத் தொடங்கினால் `429 too_many_inflight` கிடைக்கும்; ஒன்று முடிந்த பிறகு அதை மீண்டும் தொடங்குங்கள்.
