Перейти до вмісту
AstroWay/api v2.87.1 · docs
усі системи в нормі

Помилки

Усі помилки повертаються у єдиному форматі — ok: false плюс об’єкт error:

{
"ok": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key"
}
}
  • code — машиночитний UPPER_SNAKE_CASE код, стабільний, не змінюється без мажорного бампа. Свіч по ньому, не по message.
  • message — людиночитне пояснення, англійською. Текст може уточнюватись без бампа.
  • details — опціональний. Для INVALID_INPUT це масив { path, message } по кожному проваленому полю.
  • request_id — додається лише до 5xx та BAD_JSON відповідей; цитуй його при зверненні в підтримку.
СтатусЗначення
200 OKУспіх
400 Bad RequestБитий JSON, відсутні поля або провалена Zod-валідація
401 UnauthorizedВідсутній або невалідний X-Api-Key
402 Payment RequiredПотрібен вищий тариф / пак, або підписка неактивна
403 ForbiddenКлюч валідний, але немає прав (scope, origin, suspended)
404 Not FoundРесурс, ключ або job не існує
422 Unprocessable EntityВхід валідний, але рушій не зміг порахувати
429 Too Many RequestsПеревищено rate limit, вичерпано кредити або spend-cap
500 Internal Server ErrorВнутрішня помилка — з нашого боку, цитуй request_id
503 Service UnavailableAI-шлюз / черга тимчасово недоступні
КодЗначення
MISSING_API_KEYHeader X-Api-Key не надіслано
INVALID_API_KEYКлюч не існує або revoked
MISSING_BEARERСхема Authorization: Bearer обрана, але токен відсутній
WRONG_AUTH_METHODНа /v1/me/* (Bearer-only) надіслано X-Api-Key. Для перевірки ключа — GET /v1/auth/keys/me; для викликів API — будь-який /v1/* з X-Api-Key
КодЗначення
INSUFFICIENT_SCOPEКлюч не має прав на цю дію
DOMAIN_MISMATCH / FORBIDDEN_ORIGINOrigin запиту не в allow-list ключа
KEY_SUSPENDEDКлюч призупинено
КодЗначення
PLAN_UPGRADE_REQUIREDЕндпоінт потребує вищого тарифу або add-on пака
PLAN_PACK_MISMATCHЕндпоінт входить у пак, якого немає на ключі
SUBSCRIPTION_EXPIREDПідписка касована або expired
КодЗначення
RATE_LIMITПеревищено ліміт RPM. Відповідь містить header Retry-After: <sec>
CREDITS_EXHAUSTEDМісячний бюджет кредитів вичерпано
SPEND_CAP_REACHEDДосягнуто ліміт витрат на AI-ендпоінти
КодЗначення
INVALID_INPUTОдне або кілька полів провалили Zod-валідацію. details — масив { path, message }
MISSING_FIELDSВідсутнє обов’язкове поле
BAD_JSONБитий JSON у тілі запиту

Приклад 400:

{
"ok": false,
"error": {
"code": "INVALID_INPUT",
"message": "Validation failed: date: Invalid input: expected string, received undefined",
"details": [
{ "path": "date", "message": "Invalid input: expected string, received undefined" },
{ "path": "time", "message": "Invalid input: expected string, received undefined" }
]
}
}

Розрахункові помилки (422)

Section titled “Розрахункові помилки (422)”
КодЗначення
CALCULATION_ERRORВхід валідний, але рушій не зміг порахувати (наприклад, полярна широта для Placidus). Спробуй Whole Sign / Equal або іншу дату.
КодHTTPЗначення
INTERNAL_ERROR500Неочікувана помилка. Логуємо зі stack trace, цитуй request_id
GATEWAY_UNAVAILABLE / AI_UNAVAILABLE / LLM_UNAVAILABLE503AI-шлюз недоступний. Retry з експоненційним backoff
QUEUE_UNAVAILABLE503Черга фонових задач недоступна

Обробка в клієнтському коді

Section titled “Обробка в клієнтському коді”
type ApiError = {
ok: false;
error: {
code: string;
message: string;
details?: unknown;
request_id?: string;
};
};
async function chart(input: ChartInput) {
const res = await fetch('https://api.astroway.info/v1/chart', {
method: 'POST',
headers: {
'X-Api-Key': process.env.ASTROWAY_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify(input),
});
const body = await res.json();
if (!body.ok) {
throw new AstrowayError(body.error.code, body.error.message, body.error.request_id);
}
return body.data;
}
class AstrowayError extends Error {
constructor(
public code: string,
message: string,
public requestId?: string,
) {
super(`[${code}] ${message}${requestId ? ` (request_id=${requestId})` : ''}`);
}
}

Свіч по code, не по message. Офіційні SDK (@astroway/sdk, astroway) кидають типізовані підкласи помилок за HTTP-статусом (AuthenticationError, RateLimitError, BadRequestError …), тож код обробки писати не доведеться.

Для звернення надішли на support@astroway.info:

  1. request_id з відповіді (якщо це 5xx)
  2. Ендпоінт і скорочений JSON body (без секретів)
  3. Очікувана поведінка vs фактична
  4. Часовий пояс і приблизний час запиту (UTC)

Відповідь — у межах SLA твого плану (48 год Starter, 24 год Pro, власна для Enterprise).

Корисно?
Запропонувати правку

Останнє оновлення: