Explore every Abestar API endpoint and learn how to integrate them.
Public Metadata
Supported languages and models for translation and ASR; no auth.
Returns every language currently supported by the translation module, with code and display name. No auth header is required. The code follows BCP 47 (e.g. zh-TW, en-US) and can be passed directly as source_lang / target_lang on /api/v1/translations/text. Currently 26 languages are supported.
Authorization
Request Examples
curl https://abemono.abestar.com.tw/translations/languagesResponses
Full list of supported languages.
| Name | Type | Description |
|---|---|---|
languagesRequired | object[] | Array of language entries; each element `{ code: string, name: string }`. code is the BCP 47 tag, name is the English display name. |
{
"languages": [
{ "code": "zh-TW", "name": "Traditional Chinese" },
{ "code": "en-US", "name": "English (US)" },
{ "code": "ja-JP", "name": "Japanese" }
]
}Error Codes
Notes
Translation and ASR modules maintain independent language lists. If you use both, call /translations/languages and /audio/languages separately to obtain each side's actual supported set.
Returns every translation model currently available, with code, display name, and description. No auth required. The code can be passed directly as the model field on /api/v1/translations/text.
Authorization
Request Examples
curl https://abemono.abestar.com.tw/translations/modelsResponses
Full list of available models.
| Name | Type | Description |
|---|---|---|
modelsRequired | object[] | Array of model entries; each element `{ code: string, name: string, description: string }`. code is the identifier passed to the translation endpoint. |
{
"models": [
{
"code": "PSSC-V1-251215",
"name": "PSSC V1",
"description": "第一代翻譯模型"
},
{
"code": "PSSC-V2-251215",
"name": "PSSC V2",
"description": "第二代翻譯模型"
},
{
"code": "PSSC-V3-251215",
"name": "PSSC V3",
"description": "第三代翻譯模型"
}
]
}Error Codes
Notes
This endpoint returns every model currently available for translation requests. Currently exposes 3 model codes (as listed above); the `description` field is written in Traditional Chinese.
Returns every language currently supported by the speech recognition module, with code and display name. No auth header is required. The code follows BCP 47 (e.g. zh-TW, en-US) and is used as the language field on /api/v1/audio/transcriptions. Currently 26 languages are supported.
Authorization
Request Examples
curl https://abemono.abestar.com.tw/audio/languagesResponses
Full list of supported languages.
| Name | Type | Description |
|---|---|---|
languagesRequired | object[] | Array of language entries; each element `{ code: string, name: string }`. code is the BCP 47 tag, name is the English display name. |
{
"languages": [
{ "code": "zh-TW", "name": "Traditional Chinese" },
{ "code": "en-US", "name": "English (US)" },
{ "code": "ja-JP", "name": "Japanese" }
]
}Error Codes
Notes
The detected_language returned by /api/v1/audio/transcriptions is one of the codes in this list.
Returns every speech recognition model currently available, with code, display name, and description. No auth required. The code can be passed directly as the model field on /api/v1/audio/transcriptions.
Authorization
Request Examples
curl https://abemono.abestar.com.tw/audio/modelsResponses
Full list of available models.
| Name | Type | Description |
|---|---|---|
modelsRequired | object[] | Array of model entries; each element `{ code: string, name: string, description: string }`. code is the identifier passed to the ASR endpoint. |
{
"models": [
{
"code": "tranc-std-v1",
"name": "Tranc Standard V1",
"description": "標準語音辨識模型"
},
{
"code": "tranc-pro-v1",
"name": "Tranc Pro V1",
"description": "進階語音辨識模型"
}
]
}Error Codes
Notes
ASR and translation model lists are independent; do not assume the same code works on both endpoints. Currently exposes 2 model codes (as listed above); the `description` field is written in Traditional Chinese.
Error code catalog
Complete error code reference, filterable by scope and status.
| Code | HTTP status | Scope | Description |
|---|---|---|---|
validation_error | 400 | Common | Request body validation failed. `details.issues` contains per-field errors; each element has shape `{ field: string; message: string }`. { issues: object[] } |
bad_request | 400 | Common | Request shape or content does not conform. `details.reason` carries the sub-reason code; other fields vary by reason. The batch-create endpoint may return: `body_not_array` / `empty_batch` / `batch_too_large` (3 reasons). The import endpoint may return: `file_not_uploaded` / `file_too_large` / `empty_file` / `too_many_rows` / `too_many_columns` / `duplicate_header` / `invalid_header` / `missing_required_headers` / `unexpected_headers` / `csv_parse_failed` / `xlsx_parse_failed` / `sheet_not_found` / `unsupported_file_type` (13 reasons). { "reason": "...", "...": "其他欄位依 reason 而異" } |
unauthorized | 401 | Common | Missing or invalid API key (X-API-Key header absent, malformed, or revoked). Four sub-reasons: `api_key_missing` / `api_key_invalid_format` / `api_key_invalid` / `api_key_revoked`. |
forbidden | 403 | Common | Request is denied. |
resource_not_found | 404 | Common | Route not found. |
conflict | 409 | Common | Request conflicts with the current state of the resource (e.g. duplicate creation, concurrent modification of the same resource). Specific sub-reasons are documented per endpoint. |
internal_server_error | 500 | Common | Internal server error. |
service_unavailable | 503 | Common | Infrastructure temporarily unavailable. |
dictionary_not_found | 404 | Dictionaries | Dictionary not found. Dictionaries owned by other users are reported with this code rather than 403 forbidden. |
term_not_found | 404 | Dictionaries | Term not found. Resources owned by other users are reported with this code rather than 403 forbidden. |
duplicate_name | 409 | Dictionaries | Dictionary name already exists. |
duplicate_term | 409 | Dictionaries | Term already exists in this dictionary. |
text_too_long | 400 | Text Translation | Input text exceeds 5000-character limit. Currently intercepted by `validation_error`; this code is reserved for future granular surfacing. |
unsupported_language_pair | 400 | Text Translation | Unsupported source/target language pair. Currently intercepted by `validation_error`; this code is reserved for future granular surfacing. |
content_policy_violation | 400 | Text Translation | Content rejected by safety policy. |
dictionary_type_mismatch | 400 | Text Translation | vocabulary_dictionary_id points to a forced_replacement dictionary (or vice versa). |
model_not_found | 404 | Text Translation | Specified model not found or unavailable. |
translation_failed | 502 | Text Translation | Upstream translation provider failed. |
translation_timeout | 504 | Text Translation | Translation backend timed out. |
unsupported_audio_format | 400 | Speech Recognition | Magic bytes detection failed; supported: MP3 / WAV / M4A / FLAC / OGG / WEBM. |
asr_audio_decode_error | 400 | Speech Recognition | Base64 decode failed or content does not match declared MIME. |
asr_model_not_found | 400 | Speech Recognition | Specified ASR model not found or unavailable. Note: distinct error code from translation's model_not_found (uses asr_* prefix). Currently intercepted by `validation_error`; this code is reserved for future granular surfacing. |
asr_content_policy_violation | 400 | Speech Recognition | Audio content rejected by safety policy. |
audio_too_long | 413 | Speech Recognition | Audio payload exceeds 15 MiB limit. |
asr_failed | 502 | Speech Recognition | Upstream ASR provider failed. |
asr_timeout | 504 | Speech Recognition | ASR backend timed out. |

