2Captcha.com API

☰

2Captcha is a human-powered image and CAPTCHA recognition service.
2Captcha's main purpose is solving your CAPTCHAs in a quick and accurate way by human employees, but the service is not limited only to CAPTCHA solving. You can convert to text any image that a human can recognize.

Introduction

We provide an API that allows you to automate the process and integrate your software with our service.

There are few simple steps to solve your captcha or recognize the image:

Solving Captchas

The process of solving captchas with 2captcha is really easy and it's mostly the same for all types of captchas:

Get your API key from your account settings page. Each user is given a unique authentication token, we call it API key. It's a 32-characters string that looks like:1abc234de56fab7c89012d34e56fa7b8
This key will be used for all your requests to our server.

Submit a HTTP POST request to our API URL: http://2captcha.com/in.php with parameters corresponding to the type of your captcha.
Server will return captcha ID or an error code if something went wrong.

Make a timeout: 20 seconds for ReCaptcha, 5 seconds for other types of captchas.

Submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.
If captcha is already solved server will return the answer in format corresponding to the type of your captcha.
By default answers are returned as plain text like: OK|Your answer. But answer can also be returned as JSON {"status":1,"request":"TEXT"} if json parameter is used.
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds.
If something went wrong server will return an error code.

Normal Captcha

Normal Captcha is an image that contains distored but human-readable text. To solve the captcha user have to type the text from the image.

To solve the captcha with our service you have to submit the image with HTTP POST request to our API URL: http://2captcha.com/in.php
Server accepts images in multipart or base64 format.

You can provide additional parameters with your request to define what kind of captcha you're sending and to help workers to solve your captcha correctly. You can find the full list of parameters in the table below.

If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.

If something went wrong server will return an error. See Error Handling chapter for the list of errors.

Make a 5 seconds timeout and submit a HTTP GET request to our API URL: http://2captcha.com/res.php providing the captcha ID. The list of parameters is in the table below.

If everything is fine and your captcha is solved server will return the answer as plain text, like: OK|TEXT or as JSON {"status":1,"request":"TEXT"} if json parameter was used.

Otherwise server will return CAPCHA_NOT_READY that means that your captcha is not solved yet. Just repeat your request in 5 seconds.

If something went wrong server will return an error. See Error Handling chapter for the list of errors.

ReCaptcha V2

ReCaptcha V2 also known as I'm not a robot reCaptcha is a very popular type of captcha that looks like this:

Solving ReCaptcha V2 with our new method is pretty simple:

Look at the element's code at the page where you found ReCaptcha.

Find a link that begins with www.google.com/recaptcha/api2/anchor or find data-sitekey parameter.

Copy the value of k parameter of the link (or value of data-sitekey parameter).

Submit a HTTP GET or POST request to our API URL: http://2captcha.com/in.php with method set to userrecaptcha and provide the value found on previous step as value for googlekey and full page URL as value for pageurl. Sending proxies is not obligatory ar the moment but it's recommended. You can find the full list of parameters in the table below.

If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
Otherwise server will return an error code.

Make a 15-20 seconds timeout then submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.
The full list of parameters is in the table below.

If captcha is already solved server will respond in plain text or JSON and return the answer token that looks like:

Locate the element with id g-recaptcha-response and make it visible deleting display:none parameter.

Please note: sometimes content on the page is generated dynamically and you will not see this element in html source.
In such cases you have to explore javascript code that generates the content. "Inspect" option in Google Chrome can help in that.

As an alternative you can just use javascript to set the value of g-recaptcha-response field:

Invisible ReCaptcha is located on a DIV layer positioned -10 000 px from top that makes it invisible for user.

ReCaptcha is activated on page load or on user's actions like click somewhere or submit a form - that depends on the website. If user's cookies are good enough then he will just pass it automatically and no additional actions will be required. Otherwise user will see standard ReCaptcha form with a challenge.

In most cases when challenge is completed a callback function is executed. You can read more about callback here.

If you are still not sure — there are few ways to determine that ReCaptcha is in invisible mode:

You don't see "I'm not a robot" checkbox on the page but getting recaptcha challenge when making some actions there

ReCaptcha's iframe link contains parameter size=invisible

ReCaptcha's configuration object contains parameter size that is set to invisible, for example ___grecaptcha_cfg.clients[0].aa.l.size is equal to invisible

How to bypass invisible ReCaptcha in browser?

Method 1: using javascript:

Change the value of g-recaptcha-response element to the token you received from our server:

ReCaptcha V3

ReCaptcha V3 is the newest type of captcha from Google. It has no challenge so there is no need for user interaction. Instead it uses a "humanity" rating - score.

ReCaptcha V3 technically is quite similar to ReCaptcha V2: customer receives a token from ReCaptcha API which is then sent inside a POST request to the target website and verified via ReCaptcha API.

The difference is now ReCaptcha API returns rating of a user detecting whether he was a real human or a bot. This rating is called score and could be a number from 0.1 to 0.9. This score is passed to the website which then decides what to do with the user request.

Also there is a new parameter action allowing to process user actions on the website differently. After the verification of token ReCaptcha API returns the name of the action user performed.

Our approach for solving ReCaptcha V3
We've performed many experiments and figured out that if a user got score 0.1 on some website then he is likely to get the same score on other websites.

We are detecting the scores of our workers. Then when we've got a request for solving ReCaptcha V3 with the minimal rating min_score we pass the captcha to the worker with the requested rating or higher. Most of the requests will get the requested rating on targer websites with ReCaptcha V3.

How to solve ReCaptcha V3 using 2captcha:

First you've got to be sure the target website is actually using ReCaptcha V3

There should be V3 if:

there is no captcha and no images to click on

api.js script is loading with the render=sitekey parameter, for example:https://www.google.com/recaptcha/api.js?render=6Ld0KL0UABBBBCd2-aa00bbCCddeee1FfF2gHiJK

clients array of ___grecaptcha_cfg object is using index 100000: ___grecaptcha_cfg.clients[100000]

To start solving ReCaptcha V3 using our API first you've got to find three parameters:

sitekey - this parameter could be obtained from the URI of api.js as a value of render parameter. It could also be found inside URI of iframe with ReCaptcha, in javascript code of the website where it's calling grecaptcha.execute function or in ___grecaptcha_cfg configuration object.

action - you've got to find this inspecting javascript code of the website looking for call of grecaptcha.execute function. Example: grecaptcha.execute('6Ld0KL0UABBBBCd2-aa00bbCCddeee1FfF2gHiJK', {action: do_something}).
Sometimes it's really hard to find it and you've got to dig through all js-files loaded by website. You may also try to find the value of action parameter inside ___grecaptcha_cfg configuration object but usually it's undefined. In that case you have to call grecaptcha.execute and inspect javascript code. If you can't find it try to use the default value "verify" - our API will use it if you don't provide action in your request.

pageurl - full URL of the page where you see the ReCaptcha V3.

Now you need to understand the score you need to solve V3. You can't predict what score is acceptable for the website you want to solve at. It can only be figured out by trial and error. The lowest score is 0.1 which means "robot", the highest is 0.9 which means "human". But most sites uses thresholds from 0.2 to 0.5 because real humans receive a low score oftenly. Our service is able to provide solutions which requires the score of 0.3. Higher score is extreamly rare among workers.

Having all necessary parameters stated above you may send request to our API.

Submit a HTTP GET or POST request to our API URL: http://2captcha.com/in.php with method set to userrecaptcha and version set to v3 along with min_score set to score website requires, sitekey inside googlekey parameter and full page URL as value for pageurl. You have to include action parameter to or else we will use default value verify.
Sending proxies is not obligatory ar the moment but it's recommended.

After receiving the token from our API you've got to use it properly on the target website. Best way to understant that is to check the requests sent to site when you act as a normal user. Most browsers has developer's console tool where you should check Network tab.

Usually token is sent using POST request. It could be g-recaptcha-response just like ReCaptcha V2 does or g-recaptcha-response-100000. It could be other parameter too. So you've got to inspect the requests and find out how exactly the token supposed to be sent. Then you have to compose your request accordingly.

Now when you have successfully submit the token you may tell us if it worked or not. If not we will refund the money you spent on this token. If it was successfully accepted we will set the worker who solved this captcha as the priority solver for you. Besides we will gather statistics regarding V3 solution which will help us to further investigate this new type of captchas and make our service better.

To let us know whether it worked or not please send the request to http://2captcha.com/res.php with your API KeyCaptcha in key parameter with ID of the captcha in id parameter and indicating action parameter. Next to mention is reportgood if token was accepted successfully or reportbad if token wasn't accepted respectfully.

Important: complains for captcha types solved with token are not shown on the website. But we proceed with every report and gather the statistics. We will implement this complain display feature in future.

And of course we support ReCaptcha V2 challenges when you have to select around an object or few objects. Read more here.

To solve the ReCaptcha V2 you have to:

Click on initial ReCaptcha's checkbox. You will get a set of images and instruction that tells you what to click. Actually it's one image with the grid on it.

Optionally: determine the grid and define it in your request with recaptchacols and recaptcharows parameters. If not defined we'll check the size of the image. If it's 300x300px we put 3x3 grid on it. If the size is different we put 4x4 grid.

Submit a HTTP POST request to our API URL: http://2captcha.com/in.php including recaptcha parameter set to 1.

Server accepts images in multipart or base64 format. You have to send only the image set without the grid and blue box.

Also you can provide instructions as an image using imginstructions parameter. For more info please check the full list of parameters in the table below.

Server will return captcha ID or an error code if something went wrong.

Make a 5 seconds timeout and submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.

If captcha is already solved server will return the answer with numbers of grid cells that you need to click like: OK|click:3/8/9/.

Grid cells are numbered starting from number 1 from left to right and from top to bottom. If the grid contains more than 9 cells, letters a-g are used for cells 10-16 accordingly.

If ReCaptcha updates the set of images you can send us new request with an additional parameter previousID and the ID of previous request as a value. Then our worker will check only new images that were not selected by previous worker.

Also you can proivde additional parameter can_no_answer in case if there's no images to click left. Worker will see a button to confirm that there's no corresponding images and API will return No_matching_images as answer.

Canvas method

In case when ReCaptcha challenge is to select around object you can pass canvas parameter set to 1.

Server will return the result in the following format: canvas:x,y,x,y,x,y;x,y,x,y,x,y;

Where each pair of x and y are coordinates of points you need to click to select an area around object. If there are more than one area, coordininates of areas will be separated by semicolon.

For example:canvas:5,5,3,91,93,90,90,7,8,6; - one areacanvas:5,5,3,91,93,90,90,7,8,6;208,211,208,287,294,294,293,209,207,210; - two areas
Point 0,0 is top left corner of the image.

Text with instruction for solving ReCaptcha.For example: select images with trees.Not required if you're sending instruction as an image with imginstructions.

imginstructions

ImageMax 100x100px, 25 kB

Yes

Image with instruction for solving ReCaptcha.Not required if you're sending instruction as text with textinstructions.

recaptcharows

Integer

No

Number of rows in ReCaptcha grid.

recaptchacols

Integer

No

Number of columns in ReCaptcha grid.

previousID

String

No

Id of your previous request with the same captcha challenge

can_no_answer

IntegerDefault: 0

No

0 - not specified1 - possibly there's no images that fit the instruction.
Set the value to 1 only if it's possible that there's no images matching to the instruction.
We'll provide a button "No matching images" to worker and you will receive No_matching_images as answer.

0 - disabled1 - enabled.If enabled in.php will include Access-Control-Allow-Origin:* header in the response.
Used for cross-domain AJAX requests in web applications. Also supported by res.php.

pingback

String

No

URL for pingback (callback) response that will be sent when captcha is solved.URL should be registered on the server. More info here.

json

IntegerDefault: 0

No

0 - server will send the response as plain text1 - tells the server to send the response as JSON

soft_id

Integer

No

ID of software developer. Developers who integrated their software with 2captcha get reward: 10% of spendings of their software users.

Please note: you have to send the ReCaptcha image itself, not its screenshot. And you dont have to combine that image with anything you like, just send it as it is.Max size for ReCaptcha image is 100 kB.Max size for imginstructions is 25 kB.

Server will return captcha ID or an error code if something went wrong.

Make a 5 seconds timeout and submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.

If captcha is already solved server will return the answer with coordinates of points where you have to click, for example: OK|coordinate:x=39,y=59;x=252,y=72. Where the point with x=0,y=0 is the upper left corner of the image.

Server will return captcha ID or an error code if something went wrong.

Make a 5 seconds timeout and submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.

If captcha is already solved server will return the answer with angles for each image like: OK|40|200|-120.
Positive values mean that images should be rotated clockwise.
Negative values mean that images should be rotated counter-clockwise.

If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds.
If something went wrong server will return an error code.

FunCaptcha Token Method

Now we provide a method to solve FunCaptcha with a token.

The method is pretty simple:

You need to locate public key of FunCaptcha. There are two ways to find it: you can locate funcaptcha's div element and check the value of data-pkey parameter or you can find the input element with name fc-token and then extract the key indicated after pk from the value of this element.

Submit a HTTP GET or POST request to our API URL: http://2captcha.com/in.php with method set to funcaptcha and provide the value found on previous step as value for publickey and full page URL as value for pageurl. Sending proxies is not obligatory ar the moment but it's recommended. You can find the full list of parameters in the table below.

If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
Otherwise server will return an error code.

Make a 10-20 seconds timeout then submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.
The full list of parameters is in the table below.

If captcha is already solved server will respond in plain text or JSON and return the answer token that looks like:

Locate the element with id fc-token and put the token into value of this element.

Please note: if you use nojs=1 parameter API will return just first part of token string like this: 3084f4a302b176cd7.96368058|r=ap-southeast-1 and you got to build the full string using the original value of fc-token

Do the rest what you need to do on the website: submit a form or click on a button or something else.

Tells us to solve FunCaptcha without javascript enabled. Can be used in case when normal method doesn't work for some reason.Important: please note that we will return just a part of the token in that case. More info above.

userAgent

String

No

Tells us to use your user-agent value.

header_acao

IntegerDefault: 0

No

0 - disabled1 - enabled.If enabled in.php will include Access-Control-Allow-Origin:* header in the response.
Used for cross-domain AJAX requests in web applications. Also supported by res.php.

pingback

String

No

URL for pingback (callback) response that will be sent when captcha is solved.URL should be registered on the server. More info here.

json

IntegerDefault: 0

No

0 - server will send the response as plain text1 - tells the server to send the response as JSON

soft_id

Integer

No

ID of software developer. Developers who integrated their software with 2captcha get reward: 10% of spendings of their software users.

proxy

String

No

Format: login:password@123.123.123.123:3128 You can find more info about proxies here.

Submit a HTTP GET or POST request to our API URL: http://2captcha.com/in.php with method set to keycaptcha and provide values found on previous step in your request as values for corresponding request parameters and also full page URL as value for pageurl. You can find the full list of parameters in the table below.

If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
Otherwise server will return an error code.

Make a 15-20 seconds timeout then submit a HTTP GET request to our API URL: http://2captcha.com/res.php to get the result.
The full list of parameters is in the table below.

If captcha is already solved server will respond in plain text or JSON and return the answer that looks like:

Locate and delete the following block which inclides keycaptcha JavaScript file:

Locate and delete the div with id="div_for_keycaptcha":

...

Please note: sometimes content on the page is generated dynamically and you will not see these elements in HTML source or they can differ a little bit.
In such cases you have to explore the source of the page and find JavaScript code that generates the content. "Inspect" option in Google Chrome can help in that.

Locate the element with id="capcode" and change it's value to the response received from our server.

Language support

Our API allows you to set the language of captcha with lang parameter.

Each our worker can tell us which languages he speaks. When you submit a captcha with lang parameter we will distribute your captcha to workers who speak the language. That allows you to solve non-latin and non-cyrillic captchas, for example chinese or vietnamese.

The list of supported languages is available in the table below.

Language code (lang value)

Language

en

English

ru

Russian

es

Spanish

pt

Portuguese

uk

Ukrainian

vi

Vietnamese

fr

French

id

Indonesian

ar

Arab

ja

Japanese

tr

Turkish

de

German

zh

Chinese

fil

Philippine

pl

Polish

th

Thai

it

Italian

nl

Nederlands (Dutch)

sk

Slovak

bg

Bulgarian

ro

Romanian

hu

Hungarian (Magyar)

ko

Korean

cs

Czech

az

Azerbaijani

fa

Persian (Farsi)

bn

Bengali

el

Greek

lt

Lithuanian

lv

Latvian

sv

Swedish

sr

Serbian

hr

Croatian

he

Hebrew

hi

Hindi

nb

Norwegian

sl

Slovenian

da

Danish

uz

Uzbek

fi

Finnish

ca

Catalan

ka

Georgian

ms

Malay

te

Telugu

et

Estonian

ml

Malayalam

be

Belorussian

kk

Kazakh

mr

Marathi

ne

Nepali

my

Burmese

bs

Bosnian

hy

Armenian

mk

Macedonian

pa

Punjabi (Punjabi)

Error Handling

It's very important to use proper error handling in your code to avoid suspension of your account and service interruption.

Normally if something is wrong with your request server will return an error.
Below you can find tables with lists of errors with descriptions:

Errors can be returned as plain text or as JSON if you provided json=1 parameter.

In very rare cases server can return HTML page with error text like 500 or 502 - please keep it in mind and handle such cases correctly.
If you received anything that doesn't looks like the answer or error code - make a 5 seconds timeout and then retry your request.

You can receive this error in two cases:
1. If you solve ReCaptcha: the queue of your captchas that are not distributed to workers is too long. Queue limit changes dynamically and depends on total amount of captchas awaiting solution and usually it’s between 50 and 100 captchas.
2. If you solve Normal Captcha: your maximum rate for normal captchas is lower than current rate on the server.
You can change your maximum rate in your account's settings.

If you received this error, don't try to submit your request again immediately. Make 2-3 seconds timeout and then retry to submit your request.

Your IP address is banned due to many frequent attempts to access the server using wrong authorization keys.

To lift the ban, please, contact our support team.

ERROR_BAD_TOKEN_OR_PAGEURL

You can get this error code when sending ReCaptcha V2. That happens if your request contains invalid pair of googlekey and pageurl. The common reason for that is that ReCaptcha is loaded inside an iframe hosted on another domain/subdomain.

Explore code of the page carefully to find valid pageurl and sitekey values.

ERROR_GOOGLEKEY

You can get this error code when sending ReCaptcha V2. That means that sitekey value provided in your request is incorrect: it's blank or malformed.

Check your code that gets the sitekey and makes requests to our API.

ERROR_CAPTCHAIMAGE_BLOCKED

You've sent an image that is marked in our database as unrecognizable.
Usually that happens if the website where you found the captcha stopped sending you captchas and started to send "deny access" image.

Try to override website's limitations.

MAX_USER_TURN

You made more than 60 requests to in.php within 3 seconds.Your account is banned for 10 seconds. Ban will be lifted automatically.

Set at least 100 ms timeout between requests to in.php.

ERROR: NNNN

Where NNNN is numeric error code.
You exceeded request limit and your account is temporary suspended.

You should set proper timeouts. Please refer to Request limits for more info.

List of res.php errors

Error code

Description

Action

CAPCHA_NOT_READY

Your captcha is not solved yet.

Make 5 seconds timeout and repeat your request.

ERROR_CAPTCHA_UNSOLVABLE

We are unable to solve your captcha - three of our workers were unable solve it or we didn't get an answer within 90 seconds (300 seconds for ReCaptcha V2).
We will not charge you for that request.

Error is returned when 100% accuracy feature is enabled. The error means that max numbers of tries is reached but min number of matches not found.

You can retry to send your captcha again.

REPORT_NOT_RECORDED

Error is returned to your complain request if you already complained lots of correctly solved captchas.

Make sure that you're sending complain requests only for incorrectly solved captchas.

ERROR: NNNN

Where NNNN is numeric error code.
You exceeded request limit and your account is temporary suspended.

You should set proper timeouts. Please refer to Request limits for more info.

ERROR_IP_ADDRES

You can receive this error code when registering a pingback (callback) IP or domain.
That happes if your request is coming from an IP address that doesn't match the IP address of your pingback IP or domain.

Make the request from the IP address matching your IP or domain for pingback.

Request limits

Please remember and understand that each of your requests to our API generates multuple requests to our databases.
That's why we ask to set proper timeouts for your requests and use proper error handling for cases when server returns an error (error message, HTTP error or HTML page with error).

For example:

If server returns ERROR_NO_SLOT_AVAILABLE make a 5 seconds timeout before sending next request.

If server returns ERROR_ZERO_BALANCE set the timeout to 60 seconds.

After uploading a captcha wait a least 5 seconds (10-20 for recaptcha) and only then try to get the answer.

If captcha is not solved yet - retry in 5 seconds.

If your timeouts are configured incorrectly your account or IP address will be temporary blocked and server will return an error.
See the list of error codes in the table below.

List of error codes for request limitations

Error code

Blocking time

Blocking reason

ERROR: 1001

10 minutes

You received 120 ERROR_NO_SLOT_AVAILABLE errors in one minute because your current bid is lower than current bid on the server

ERROR: 1002

5 minutes

You received 120 ERROR_ZERO_BALANCE errors in one minute because your balance is out

ERROR: 1003

30 seconds

You are getting ERROR_NO_SLOT_AVAILABLE because you are uploading many captchas and server has a long queue of your captchas that are not distributed to workers.
You received three times more errors than amount of captchas you sent (but not less than 120 errors). Increase the timeout if you see this error.

ERROR: 1004

10 minutes

Your IP address is blocked because there were 5 requests with incorrect API key from your IP.

ERROR: 1005

5 minutes

You are making too many requests to res.php to get answers.
We use the following rule to block your account: R > C * 20 + 1200
Where:
R - the amount of your requests
C - the amount of captchas you've uploaded
That means that you don't have to make more than 20 requests to res.php per each captcha.
Please remember that balance request sent to res.php also counts!
To get your answer faster without a risk to be blocked you can use pingback feature and we will send you the answer when your captcha is solved.

MAX_USER_TURN

10 seconds

You made more than 60 requests to in.php within 3 seconds. Set at least 100 ms timeout between requests to in.php.

Using proxies

Proxies can be used to solve ReCaptcha V2 and FunCaptcha from the same IP address as you load the page.
Using proxies is not obligatory at the moment but in future algorithms of ReCaptcha and FunCaptcha can be changed and it will be required.
And even now some websites check IP address used for solving ReCaptcha V2. So we recommend you to be ready for these changes.

If you send us the proxy, we check it's availability trying to open the website through you proxy, and if we can't do that we will not use your proxy.If we're able to use your proxy - we'll load the ReCaptcha through it for solving.

We don't have our own proxy servers that we can offer to you so you have to use 3rd-party services or setup your own proxy.

We support the following proxy types: SOCKS4, SOCKS5, HTTP, HTTPS with authentication by IP address or login and password.

If your proxy uses IP authentication you have to add our IP addresses to the list of allowed IPs of the proxy:
138.201.188.166

Then provide your proxy IP address and port as a value for proxy parameter.
And the type of your proxy as a value for proxytype parameter.

If your proxy uses login/password authentication you have to include your credentials in proxy parameter.

Pingback (callback)

We provide a pingback (callback) option that allows you to get the answer for your captcha automatically when it's ready.
It allows you to get answers without making requests to http://2captcha.com/res.php and also allows you to avoid account suspension.

You can use any pingback URL pointing to your registered domain/IP address so your URL can include custom parameters.
But there's one limitation: if you will submit your captcha with GET request and use URL that contains multiple parameters like http://mysite.com/pingback/?myId=1&myCat=2&something_else=test then you will receive pingback to URL with only the first parameter ?myId=1. To avoid that use POST request with multipart/form-data.

Manage pingback URLs

You can manage your pingback URLs making HTTP GET requests to http://2captcha.com/res.phpRequest parameters are described in the table below.

Important: pingback domain/IP address can be registered only from the same IP address so you got to send register request from your server.

Complain about incorrectly solved captcha

If your captcha is solved incorrectly you can make a complain sending a HTTP GET request to http://2captcha.com/res.php with action parameter set to reportbad and ID of incorrectly solved captcha.
Our moderators will check your captcha and worker's answer and decide was the answer correct or not.

If moderator decides that anwers were in fact incorrect we'll return funds to your balance.

Your reports also help us to ban workers that are making too many mistakes.

Important: don't try to report correctly solved captchas. If you do that your account will be banned.
Please understand that moderators are humans too and they can also make mistakes, don't contact us if moderator marked few incorrect answers as correct.

You may also inform us about correct answer, which is very helpful for captcha answers with tokens. Use action=reportgood and we will know that the answer was successfully accepted by the target website. It will help us gather statistics and then improve the service.

Important: you can't see complains about captchas with tokens: ReCaptcha V2, V3, KeyCaptcha, FunCaptcha. We receive the reports but can't list it on the page as we do for other captcha types. We are still working on the solution.

getbalance — get your balance
get — get answers for multiple captchas with one request.Requires the list of captcha IDs in ids parameter.
get2 — get the price of sent captcha and the answer.Requires captcha ID in id parameter.

ids

String

-

Comma separated IDs of your captchas.

json

IntegerDefault: 0

No

0 - server will send the response as plain text1 - tells the server to send the response as JSON

Code Examples

You can find code examples in our GitHub repo or simply searching 2captcha OR rucaptcha on GitHub. If code is made for rucaptcha.com just replace the URL to 2captcha.com, API is the same.

Sandbox

We provide Sandbox mode that allows you to see and solve your captchas by yourself.
You can enable Sandbox mode in your settings

Important: please note that captchas sent in Sandbox mode are also charged.

When Sandbox mode is enabled your captchas will not be distributed to wokers and you will see them in Workers Interface