Skip to main content

Error Handling

The API uses standard HTTP status codes and returns structured error responses.

Error Response Format

{
"error": {
"code": "error_code",
"message": "A human-readable description of the error."
}
}

HTTP Status Codes

StatusMeaning
200Success
201Resource created
204Success (no content)
400Bad request — invalid parameters
401Unauthorized — missing or invalid authentication
402Payment required — insufficient token balance
403Forbidden — insufficient permissions
404Not found
409Conflict — resource already exists (e.g., duplicate key name)
429Rate limit exceeded
500Internal server error

Common Error Codes

Authentication Errors (401)

CodeDescription
missing_authenticationNo API key or JWT provided
invalid_api_keyKey format invalid or key not found
expired_api_keyKey has passed its expiration date
revoked_api_keyKey has been deactivated

Authorization Errors (403)

CodeDescription
insufficient_permissionsKey lacks required permission for this endpoint

Billing Errors (402)

CodeDescription
insufficient_balanceNot enough tokens — top up your account

Validation Errors (400)

CodeDescription
invalid_requestRequest body is malformed
invalid_addressWallet address format is invalid
invalid_key_nameKey name is empty, too long, or contains invalid characters
max_keys_exceededMaximum of 10 API keys per user reached

Rate Limit Errors (429)

CodeDescription
rate_limit_exceededToo many requests — check Retry-After header

Handling Errors

import requests

response = requests.get(
"https://mvp.amlyou.com/api/analysis/wallet/0x...",
headers={"X-API-Key": "ak_live_..."}
)

if response.status_code == 200:
data = response.json()
elif response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 60))
time.sleep(retry_after)
elif response.status_code == 402:
print("Insufficient balance — please top up")
else:
error = response.json().get("error", {})
print(f"Error {error.get('code')}: {error.get('message')}")
const response = await fetch(
"https://mvp.amlyou.com/api/analysis/wallet/0x...",
{ headers: { "X-API-Key": "ak_live_..." } }
);

if (!response.ok) {
const { error } = await response.json();

if (response.status === 429) {
const retryAfter = response.headers.get("Retry-After");
// Wait and retry
} else {
console.error(`${error.code}: ${error.message}`);
}
}