Skip to main content

Error Codes

When a render fails after being accepted, the response includes an errorCode that tells you exactly what went wrong and whether you were charged.

How Error Billing Works

Browser7 uses a three-tier error model:

TierWhen It HappensChargedError Code
Pre-flight errorsRequest rejected before render starts (400, 401, 402, 429)NoNone (no render created)
User-caused errorsRender ran but failed due to your input or the target siteYes ($0.01)Included in response
System errorsRender ran but failed due to Browser7 infrastructureNo ($0.00)Included in response

User-caused errors are charged because Browser7 consumed resources (residential proxy bandwidth, browser instance, server capacity) attempting the render. The failure was caused by your configuration or the target website.

System errors are never charged. If a render fails due to Browser7 infrastructure issues, no charge is applied to your account balance.

Reading Error Fields

When a render fails, the GET /v1/renders/:id response (HTTP 422) includes error and billing fields:

{
"status": "failed",
"errorCode": "RENDER_TIMEOUT",
"errorMessage": "Overall render exceeded 120 second timeout",
"billable": true,
"charged": true,
"chargedAmountCents": 1,
"retryAfter": 1
}
FieldTypeDescription
errorCodestringMachine-readable error identifier (see tables below)
errorMessagestringHuman-readable description of what went wrong
billablebooleanWhether this error type is billable
chargedbooleanWhether a charge was applied to your account balance
chargedAmountCentsnumberAmount charged in cents (1 for billable errors, 0 for system errors)

User-Caused Errors (Billable)

These errors mean the render ran and consumed resources, but failed due to your configuration or the target website. You are charged $0.01.

Wait Action Errors

Failures caused by waitFor actions in your request.

Error CodeDescriptionCommon Fix
WAIT_TIMEOUTSelector or text not found within timeoutVerify selector exists on page; increase timeout
INVALID_SELECTORCSS selector syntax is invalid or element doesn't existCheck CSS selector syntax
INVALID_WAIT_ACTIONUnknown or malformed wait action typeUse valid types: delay, selector, text, click

Timeout Errors

The render or page load exceeded the maximum allowed time.

Error CodeDescriptionCommon Fix
RENDER_TIMEOUTOverall render exceeded the timeout (default 120s)Simplify wait actions; check if target site is slow
PAGE_LOAD_TIMEOUTPage did not stabilize within timeoutVerify the target site loads in a browser

Target Site Errors

The target website is unreachable, broken, or returning errors.

Error CodeDescriptionCommon Fix
INVALID_URLURL format is invalidVerify URL includes protocol (https://)
DNS_RESOLUTION_ERRORDomain cannot be resolvedCheck domain spelling; verify the site exists
NETWORK_ERRORCannot reach the target siteVerify the site is online; try a different countryCode
SSL_ERRORSSL/TLS certificate error on the target siteThe target site has a certificate issue
HTTP_ERRORTarget site returned an HTTP error (4xx, 5xx)Check if the site is accessible in a browser

CAPTCHA Errors

CAPTCHA-related failures caused by the target site's configuration.

Error CodeDescriptionCommon Fix
CAPTCHA_TIMEOUTCAPTCHA solving exceeded timeoutRetry the render; try a different countryCode
INVALID_CAPTCHA_CONFIGInvalid CAPTCHA configuration in your requestCheck the captcha parameter value
CAPTCHA_INJECTION_FAILEDFailed to inject CAPTCHA solution into pageTarget site may have changed; retry
CAPTCHA_INVALID_SITEKEYTarget site has an invalid or changed sitekeyTarget site changed its CAPTCHA configuration
CAPTCHA_PARAMETERS_NOT_FOUNDCannot extract CAPTCHA parameters from pageTarget site structure changed; contact support if persistent

Geo Configuration Errors

Invalid geographic targeting in your request.

Error CodeDescriptionCommon Fix
INVALID_CITYCity name is not valid for the specified countryCheck Supported Countries for available cities
CITY_WITHOUT_COUNTRYCity specified without countryCodeAdd countryCode when using city

Generic Errors

Catch-all error codes for unclassified render failures.

Error CodeDescriptionCommon Fix
RENDER_FAILEDGeneric render failureRetry; contact support if persistent
RENDER_ERRORGeneric render errorRetry; contact support if persistent
UNKNOWNUnclassified errorRetry; contact support if persistent

System Errors (Not Billable)

These errors mean Browser7's infrastructure failed during the render. You are not charged. If you see these frequently, check the API Status Page.

Infrastructure Errors

Error CodeDescriptionRecommended Action
INTERNAL_ERRORInternal server errorRetry after a few seconds
DATABASE_ERRORDatabase connection or query failureRetry after a few seconds
SERVICE_UNAVAILABLEService was shutting down mid-renderRetry immediately

Browser Engine Errors

Error CodeDescriptionRecommended Action
BROWSER_ERRORBrowser engine error during renderRetry
BROWSER_CRASHBrowser process crashedRetry

Proxy Errors

Error CodeDescriptionRecommended Action
PROXY_PROVIDER_ERRORProxy provider outage or errorRetry; try a different countryCode
PROXY_ERRORGeneric proxy failureRetry

CAPTCHA Service Errors

Failures in the CAPTCHA solving infrastructure. These are Browser7's responsibility, not yours.

Error CodeDescriptionRecommended Action
CAPTCHA_SERVICE_ERRORCAPTCHA solving service outageRetry after a few seconds
CAPTCHA_ALL_SOLVERS_FAILEDAll CAPTCHA solvers failedRetry after a minute
CAPTCHA_HANDLER_NOT_FOUNDNo handler configured for CAPTCHA typeContact support
CAPTCHA_DETECTOR_NOT_FOUNDNo detector configured for CAPTCHA typeContact support
CAPTCHA_SOLVER_NOT_AVAILABLESolver API key misconfiguredRetry after a few seconds
CAPTCHA_SOLVER_UNAVAILABLESolver service is unreachableRetry after a few seconds
CAPTCHA_INSUFFICIENT_FUNDSSolver account issue (Browser7's responsibility)Retry after a few seconds
CAPTCHA_SUBMIT_FAILEDSolver rejected task submissionRetry
CAPTCHA_SOLVE_FAILEDSolver could not solve the CAPTCHARetry
CAPTCHA_SOLVE_TIMEOUTSolver timed outRetry
CAPTCHA_PROXY_ERRORProxy error during CAPTCHA solvingRetry
CAPTCHA_ERRORGeneric CAPTCHA subsystem failureRetry
TURNSTILE_RERENDER_FAILEDTurnstile re-render failedRetry
TURNSTILE_INTERCEPTION_FAILEDTurnstile interception failedRetry

Pre-Flight Errors

These HTTP errors are returned before the render starts. No render is created, no errorCode is set, and no charge applies to your account balance.

HTTP StatusErrorDescription
400Bad RequestInvalid request parameters
401UnauthorizedInvalid or missing API key
402Payment RequiredInsufficient account balance
403ForbiddenIP not in allowlist
429Too Many RequestsConcurrent request limit exceeded
503Service UnavailableService temporarily unavailable

See Error Handling for details on these HTTP errors.

Checking Billing in Code

Node.js

const result = await client.render('https://example.com');

if (result.status === 'failed') {
console.error(`Error: ${result.errorCode} - ${result.errorMessage}`);

if (result.billable) {
console.log('Charged: $0.01');
} else {
console.log('Not charged (system error)');
// Safe to retry immediately
}
}

Python

result = client.render('https://example.com')

if result.status == 'failed':
print(f'Error: {result.error_code} - {result.error_message}')

if result.billable:
print('Charged: $0.01')
else:
print('Not charged (system error)')
# Safe to retry immediately

PHP

$result = $client->render('https://example.com');

if ($result->status === 'failed') {
echo "Error: {$result->errorCode} - {$result->errorMessage}\n";

if ($result->billable) {
echo "Charged: \$0.01\n";
} else {
echo "Not charged (system error)\n";
// Safe to retry immediately
}
}