Complete developer guide and best practices to help you get started quickly.
Quota and plans
Explains the difference between quota and request-rate limits, how to read usage from responses, how to monitor proactively, and which error codes you get at the cap.
There are two independent limits. Quota is the cumulative usage for the current period: once it is exhausted you must purchase additional quota or wait for the next contract period — retrying will not help. Request rate is measured in requests per minute (RPM): exceeding it only requires slowing down or retrying later. Both limits are reported at the account level and the API-key level. All API keys currently share the account-level caps for the duration of the contract period, so your effective ceiling is determined by your account plan.
The two quota dimensions
| Dimension | Response field | How it is calculated | Error code at the cap |
|---|---|---|---|
| Account level | user_percent | Account's period usage ÷ account cap | quota_exceeded_user (429) |
| API-key level | key_percent | Calling key's period usage ÷ that key's effective cap (the numerator counts only this key's own usage; the denominator currently resolves to the account-level cap) | quota_exceeded_key (429) |
All API keys currently share the account-level caps
Successful responses from the text translation and speech recognition endpoints both carry usage.quota_percent.used, the account-level cumulative usage percentage (0–100). In SSE mode the same value arrives inside the meta event's data.usage.
The usage field in a translation response; used is the account-level cumulative percentage (0–100).
{
"translated_text": "Today's meeting is rescheduled to 3 PM.",
"detected_source_lang": "zh-TW",
"usage": {
"quota_percent": {
"used": 12
}
},
"forced_replacement_count": 0
}Proactive monitoring: GET /api/v1/usage
This is a read-only endpoint that consumes no quota and does not count against your requests-per-minute budget, so it is safe to call around business requests or poll periodically from your backend. Unlike the business endpoints, it needs no actual workload and reports both the account-level and key-level dimensions.
curl example for querying current-period usage.
curl "https://abemono.abestar.com.tw/api/v1/usage" \ -H "X-API-Key: $ABESTAR_API_KEY"
Response example; both fields are percentages in the 0–100 range. Here the account has used 35% of its cap for the period, of which 12% came from the key used in this request and the rest from other keys on the account. Key-level caps currently inherit the account-level cap, so key_percent never exceeds user_percent.
{
"user_percent": 35,
"key_percent": 12
}Set an alert threshold at 80%
Errors at the limit and how to handle them
| Error code | HTTP | Meaning | Recommended handling |
|---|---|---|---|
| rate_limited_user | 429 | Account-level requests-per-minute exceeded. | Retry with exponential backoff and lower your concurrency. |
| rate_limited_key | 429 | This key's requests-per-minute exceeded. | Back off, retry, and lower your concurrency. All keys currently share the same RPM budget, so switching keys will not bypass the limit. |
| quota_exceeded_user | 429 | The account's current-period quota cannot cover this request. | Retrying will not help. Check usage via GET /api/v1/usage, then contact the sales team to adjust the cap. |
| quota_exceeded_key | 429 | This key's current-period quota cannot cover this request. | Retrying will not help. Key-level caps currently equal the account-level cap — check usage via GET /api/v1/usage, then contact the sales team to adjust the account quota. |
There are two kinds of 429 — handle them differently
Plans and add-ons
Quota caps depend on your plan and apply to the whole account; all API keys share those caps for the contract period. Actual plan contents, quota tiers, and add-on options are tailored to your use case — talk to the sales team to find the right fit.
Looking for usage-based pricing?
We will tailor a solution to your requirements.

