Error Codes
Complete list of API error codes and their meanings.
All errors follow this format:
{
"success": false,
"data": {
"error": "Human-readable error message",
"code": "ERROR_CODE"
}
}
| Code | HTTP | Description | Solution |
|---|
INVALID_API_KEY | 401 | API key is invalid or malformed | Check key format and validity |
API_KEY_INACTIVE | 401 | API key has been deactivated | Activate or use a different key |
API_KEY_REVOKED | 401 | API key has been deleted | Create a new API key |
MISSING_AUTH | 401 | No Authorization header provided | Add Authorization header |
| Code | HTTP | Description | Solution |
|---|
INSUFFICIENT_CREDITS | 402 | Not enough credits for operation | Top up your account |
NO_CREDITS_AVAILABLE | 402 | No plan or balance credits | Purchase credits or subscribe |
| Code | HTTP | Description | Solution |
|---|
RATE_LIMIT_EXCEEDED | 429 | Too many requests | Wait and retry with backoff |
CONCURRENT_LIMIT | 429 | Too many concurrent requests | Wait for previous requests to complete |
| Code | HTTP | Description | Solution |
|---|
INVALID_REQUEST | 400 | Request body is malformed | Check JSON syntax |
MISSING_FIELD | 400 | Required field is missing | Include all required fields |
INVALID_FIELD | 400 | Field value is invalid | Check field format/type |
INVALID_CC_FORMAT | 400 | Card format is incorrect | Use number|mm|yy|cvv format |
INVALID_PROXY_FORMAT | 400 | Proxy format is incorrect | Check proxy URL format |
| Code | HTTP | Description | Solution |
|---|
INVALID_GATE | 400 | Gate ID doesn't exist | Use valid gate from list |
GATE_DISABLED | 503 | Gate is temporarily unavailable | Use a different gate |
GATE_RATE_LIMITED | 429 | Gate has been rate limited | Wait or use different gate |
CHECK_FAILED | 500 | Check couldn't be completed | Retry with different proxy |
PROXY_ERROR | 502 | Proxy connection failed | Use a working proxy |
| Code | HTTP | Description | Solution |
|---|
INVALID_SITEKEY | 400 | Sitekey is invalid | Verify the sitekey from page |
INVALID_URL | 400 | URL is malformed | Provide full valid URL |
SOLVE_FAILED | 500 | Couldn't solve captcha | Retry or contact support |
SOLVE_TIMEOUT | 504 | Solve took too long | Retry the request |
| Code | HTTP | Description | Solution |
|---|
USER_NOT_FOUND | 404 | User doesn't exist | Check user identifier |
USER_SUSPENDED | 403 | Account has been suspended | Contact support |
PLAN_REQUIRED | 403 | Feature requires subscription | Subscribe to a plan |
PLAN_LIMIT_REACHED | 403 | Plan limit exceeded | Upgrade plan or wait for reset |
| Code | HTTP | Description | Solution |
|---|
COUPON_NOT_FOUND | 404 | Coupon code doesn't exist | Check code spelling |
COUPON_EXPIRED | 400 | Coupon has expired | Use a valid coupon |
COUPON_REDEEMED | 400 | Coupon already used | Coupon can only be used once |
COUPON_CANCELLED | 400 | Coupon was cancelled | Use a different coupon |
OWN_COUPON | 400 | Can't redeem own coupon | Coupons are for gifting |
| Code | HTTP | Description | Solution |
|---|
PAYMENT_EXPIRED | 400 | Invoice has expired | Create new payment |
PAYMENT_FAILED | 400 | Payment couldn't be processed | Try again |
MIN_AMOUNT | 400 | Below minimum amount | Increase payment amount |
MAX_AMOUNT | 400 | Above maximum amount | Decrease payment amount |
| Code | HTTP | Description | Solution |
|---|
GATE_EXISTS | 400 | Gate with this name exists | Use a different name |
INVALID_DOMAIN | 400 | Not a valid Shopify domain | Check domain format |
MAX_GATES_REACHED | 403 | Gate limit reached | Delete unused gates |
GATE_NOT_YOURS | 403 | Gate belongs to another user | Use your own gate |
| Code | HTTP | Description | Solution |
|---|
INTERNAL_ERROR | 500 | Unexpected server error | Retry or contact support |
SERVICE_UNAVAILABLE | 503 | Service temporarily down | Retry later |
GATEWAY_TIMEOUT | 504 | Upstream service timeout | Retry the request |
try {
const response = await fetch("https://api.ender.black/v1/checkers/auth", {
method: "POST",
headers: {
Authorization: "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ gate: "gate-id", cc: "..." }),
});
const data = await response.json();
if (!data.success) {
switch (data.data.code) {
case "INSUFFICIENT_CREDITS":
console.error("Need more credits!");
break;
case "RATE_LIMIT_EXCEEDED":
console.error("Too many requests, slowing down...");
await sleep(5000);
break;
default:
console.error("Error:", data.data.error);
}
}
} catch (error) {
console.error("Network error:", error);
}