Index

Download the api client based example codes:

reCAPTCHA v3 API support

Our service now supports Google reCAPTCHA v3 (beta). This API is quite similar to the tokens(reCAPTCHA v2) API. Only 2 new parameters were added, one for the action and other for the minimal score

reCAPTCHA v3 returns a score from each user, that evaluate if user is a bot or human. Then the website uses the score value that could range from 0 to 1 to decide if will accept or not the requests. Lower scores near to 0 are identified as bot.

The action parameter at reCAPTCHA v3 is an additional data used to separate different captcha validations like for example login, register, sales, etc.

Pricing

For the time being, price is $2.89/1K reCAPTCHA v3 challenges correctly solved. You will not be billed for captchas reported as incorrectly solved. Note that this pricing applies to new reCAPTCHA v3 only, so only customers using this specific API will be charged said rate.

reCAPTCHA v3 API FAQ:

What is action in recaptcha V3?

Is a new parameter that allows processing user actions on the website differently.

To find this we need to inspect the javascript code of the website looking for call of grecaptcha.execute function. Example: grecaptcha.execute('6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f', {action: something}). Sometimes it's really hard to find it and we need to look through all javascript files. We may also try to find the value of action parameter inside ___grecaptcha_cfg configuration object. Also we can call grecaptcha.execute and inspect javascript code. The API will use "verify" default value it if we won't provide action in our request.

What is min-score in reCAPTCHA v3 API?

The minimal score needed for the captcha resolution. We recommend using the 0.3 min-score value, scores highers than 0.3 are hard to get.

What are the POST parameters for the reCAPTCHA v3 API?

  • username: Your ITT account username
  • password: Your ITT account password
  • type=5: Type 5 specifies this is reCAPTCHA v3 API
  • token_params=json(payload): the data to access the recaptcha challenge
  • json payload structure:
    • proxy: your proxy url and credentials (if any).Examples:
    • proxytype: your proxy connection protocol. For supported proxy types refer to Which proxy types are supported?. Example:
      • HTTP
    • googlekey: the google recaptcha site key of the website with the recaptcha. For more details about the site key refer to What is a recaptcha site key?. Example:
      • 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
    • pageurl: the url of the page with the recaptcha challenges. This url has to include the path in which the recaptcha is loaded. Example: if the recaptcha you want to solve is in http://test.com/path1, pageurl has to be http://test.com/path1 and not http://test.com.
    • action: The action name.
    • min_score: The minimal score, usually 0.3
    The proxy parameter is optional, but we strongly recommend to use one to prevent rejection by the provided page due to inconsistencies between the IP that solved the captcha (ours if no proxy is provided) and the IP that submitted the solution for verification (yours).
    Note: if proxy is provided, proxytype is a required parameter.

    Full example of token_params:

    
      {
        "proxy": "http://127.0.0.1:3128",
        "proxytype": "HTTP",
        "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "pageurl": "http://test.com/path_with_recaptcha",
        "action": "example/action",
        "min_score": 0.3
      }
                    

What's the response from reCAPTCHA v3 API?

The response has the same structure as regular captcha. Refer to Polling for uploaded CAPTCHA status for details about the response. The solution will come in the text key of the response. It's valid for one use and has a 1 minute lifespan.

Curl usage code examples for reCAPTCHA v3 API:

1) Send your payload:

Please note we are using type="5" for reCAPTCHA v3 API.

  curl --header 'Expect: ' -F username=your_username_here \
                            -F password=your_password_here \
                            -F type='5' \
                            -F token_params='{"proxy": "http://user:[email protected]:1234","proxytype": "HTTP","googlekey": "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b","pageurl": "http://google.com", "action": "example/action", "min_score": 0.3}' \
                            http://api.imagestotext.com/api/captcha
            

2) Pulling captcha : take the given CAPTCHA_ID and make a request like this:
curl -H "Accept: application/json" http://api.imagestotext.com/api/captcha/CAPTCHA_ID
Result is a json-string where the field "text" includes the respective solution:
'{"status": 0, "captcha": 2911096,
            "is_correct": true, "text": "textSolution"}'

Using reCAPTCHA v3 API with api clients:

1) PYTHON - RECAPTCHAV3

  #recaptcha_V3
  import imagestotext
  import json
  # Put your ITT account username and password here.
  username = "username"
  password = "password"

  # Put the proxy and reCaptcha token data
  # recaptchaV3 requires action that is the action that triggers
  # recaptchaV3 validation
  # if not action is provided we use the default value "verify"
  # also you need to provide a minimum score, a number from 0.1 to 0.9,
  # this is the minimum score acceptable from recaptchaV3

  Captcha_dict = {
      'proxy': 'http://user:[email protected]:1234',
      'proxytype': 'HTTP',
      'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
      'pageurl': 'http://google.com',
      'action': "example/action",
      'min_score': 0.3}

  # Create a json string
  json_Captcha = json.dumps(Captcha_dict)

  # client = imagestotext.SocketClient(username, password)
  # to use http client client = imagestotext.HttpClient(username, password)
  client = imagestotext.HttpClient(username, password)

  try:
      balance = client.get_balance()
      print(balance)

      # Put your CAPTCHA type and Json payload here:
      captcha = client.decode(type=5, token_params=json_Captcha)
      if captcha:
          # The CAPTCHA was solved; captcha["captcha"] item holds its
          # numeric ID, and captcha["text"] item its list of "coordinates".
          print ("CAPTCHA %s solved: %s" % (captcha["captcha"], captcha["text"]))

          if '':  # check if the CAPTCHA was incorrectly solved
              client.report(captcha["captcha"])
  except imagestotext.AccessDeniedException:
      # Access to ITT API denied, check your credentials and/or balance
      print ("error: Access to ITT API denied," +
              "check your credentials and/or balance")
    
          

New Recaptcha by Token API support beta

What's "new reCAPTCHA by Token"?

They're new reCAPTCHA challenges that typically require the user to identify and click on certain images. They're not to be confused with traditional word/number reCAPTCHAs (those have no images).

For your convenience, we implemented support for New Recaptcha by Token API. If your software works with it, and supports minimal configuration, you should be able to decode captchas using ImagesToText in no time.

  • Token Image API: Provided a site url and site key, the API returns a token that you will use to submit the form in the page with the reCaptcha challenge.

We also support solving token captchas through our 2captcha api. Check it out!

Pricing

For the time being, price is $2.89/1K Token reCAPTCHA challenges correctly solved. You will not be billed for Token Images reported as incorrectly solved. Note that this pricing applies to new Token reCAPTCHA images only, so only customers using this specific API will be charged said rate.

Token Image API FAQ:

What's the Token Image API URL?

To use the Token Image API you will have to send a HTTP POST Request to http://api.imagestotext.com/api/captcha

What are the POST parameters for the Token image API?

  • username: Your ITT account username
  • password: Your ITT account password
  • type=4: Type 4 specifies this is a New Recaptcha Token Image API
  • token_params=json(payload): the data to access the recaptcha challenge
  • json payload structure:
    • proxy: your proxy url and credentials (if any).Examples:
    • proxytype: your proxy connection protocol. For supported proxy types refer to Which proxy types are supported?. Example:
      • HTTP
    • googlekey: the google recaptcha site key of the website with the recaptcha. For more details about the site key refer to What is a recaptcha site key?. Example:
      • 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
    • pageurl: the url of the page with the recaptcha challenges. This url has to include the path in which the recaptcha is loaded. Example: if the recaptcha you want to solve is in http://test.com/path1, pageurl has to be http://test.com/path1 and not http://test.com.
    The proxy parameter is optional, but we strongly recommend to use one to prevent token rejection by the provided page due to inconsistencies between the IP that solved the captcha (ours if no proxy is provided) and the IP that submitted the token for verification (yours).
    Note: if proxy is provided, proxytype is a required parameter.

    Full example of token_params:

    
      {
        "proxy": "http://127.0.0.1:3128",
        "proxytype": "HTTP",
        "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "pageurl": "http://test.com/path_with_recaptcha"
      }
                    

What's the response from the Token image API?

The token image API response has the same structure as regular captchas' response. Refer to Polling for uploaded CAPTCHA status for details about the response. The token will come in the text key of the response. It's valid for one use and has a 2 minute lifespan. It will be a string like the following:


  "03AOPBWq_RPO2vLzyk0h8gH0cA2X4v3tpYCPZR6Y4yxKy1s3Eo7CHZRQntxrd
  saD2H0e6S3547xi1FlqJB4rob46J0-wfZMj6YpyVa0WGCfpWzBWcLn7tO_EYs
  vEC_3kfLNINWa5LnKrnJTDXTOz-JuCKvEXx0EQqzb0OU4z2np4uyu79lc_Ndv
  L0IRFc3Cslu6UFV04CIfqXJBWCE5MY0Ag918r14b43ZdpwHSaVVrUqzCQMCyb
  cGq0yxLQf9eSexFiAWmcWLI5nVNA81meTXhQlyCn5bbbI2IMSEErDqceZjf1m
  X3M67BhIb4"

To learn how to use the token to solve a recaptcha, refer to How to use token to solve a recaptcha?

Which proxy types are supported?

Currently, only HTTP proxies are supported. Support for other types will be added in the future.

What is a recaptcha site key?

This is a unique identifier Google assigns to each website that uses the recaptcha service. To find the site key, follow these steps:

  1. Go to the website whose recaptcha you're trying to bypass.
  2. Open your browser's developers console by doing one of the following:
    • Use your browser's keyboard shortcut (Refer to this link for help)
    • Right click anywhere on the page, click the "Inspect" or "Inspect element" option and click on the "Console" tab of the window the opened up.
    • If none of the above work, google how to open your browser's console.
  3. Paste this JavaScript instruction on the developers console: document.getElementsByClassName('g-recaptcha')[0].getAttribute("data-sitekey");
  4. Press Enter. The result should be a string lke the one used as example in the googlekey section of the What are the POST parameters for the Token image API? question. This string is the site key.

How to use token to solve a recaptcha?

There are three ways in which the token can be used:

The first one is to make a POST request to the URL in the form's action attribute with the token set as the value of the textarea field whose id is g-recaptcha-response. The other fields can be filled as you desire. This is the recommended method to consume the token given that it does not require browser emulation nor DOM manipulation.

The second way is to manipulate the DOM. If you are developing a script to solve recaptchas, check if the programming language or framework you are using has a library to manipulate the DOM or execute JavaScript instructions. The following steps need to be completed to successfully use the token:

  1. Put the token as the inner html of the element with id "g-recaptcha-response".
    • To do this with JavaScript, run: document.getElementById('g-recaptcha-response').innerHTML=TOKEN; where TOKEN is the string returned in the text key of the API's response. Place double quotes (") before and after the token if the returned string does not already have them.
  2. Submit the form or complete the action that requires the recaptcha to be solved.
    • To achieve this with Javascript, execute: document.getElementById('FORM_ID').submit(); where FORM_ID is the id of the form that wants to be submitted.
The last method of using the token is by manually posting the form. First, follow steps 1 and 2 of the guide on how to find the site key specified in What is a recaptcha site key?. After that, copy the JavaScript instruction of the step 1 described above, paste it in the developers console, press enter and submit the form manually.

Note: methods 2 and 3 should only be used for testing purposes as they are far slower and more resource intensive than the first one.

How to verify that my proxy is being used to solve a captcha?

Go to Previous Submissions after uploading a captcha and check the "Proxy" and "Provided Proxy Status" fields of the uploaded captcha. If your proxy was used to solve the captcha, the "Proxy" field's value will be your proxy's IP address and the "Provided Proxy Status" will be "Good". If it was not used, "Proxy" will have "ITT Proxy" as value (meaning that captcha was solved using one of our proxies) and "Provided Proxy Status" field's value will be "Bad or not provided". Example screenshot:

Example screenshot of Provided Proxy Status in Previous Submissions section

Usage code examples for TOKEN IMAGE API:

1) Send your payload:

Please note we are using type="4" for TOKEN IMAGE API.

  curl --header 'Expect: ' -F username=your_username_here \
                            -F password=your_password_here \
                            -F type='4' \
                            -F token_params='{"proxy": "http://user:[email protected]:1234","proxytype": "HTTP","googlekey": "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b","pageurl": "http://google.com"}' \
                            http://api.imagestotext.com/api/captcha
            

2) Pulling captcha : take the given CAPTCHA_ID and make a request like this:
curl -H "Accept: application/json" http://api.imagestotext.com/api/captcha/CAPTCHA_ID
Result is a json-string where the field "text" includes the respective solution:
'{"status": 0, "captcha": 2911096,
            "is_correct": true, "text": "textToken"}'

Using TOKEN IMAGE API with api clients:

1) PHP

  /**
  * Images To Text PHP API recaptcha token image usage example
  *
  * @package ITTAPI
  * @subpackage PHP
  */

  /**
  * ITT API clients
  */
  require_once 'imagestotext.php';

  // Put your ITT username & password here.
  $username = "username";
  $password = "password";
  // Use ImagesToText_HttpClient() class if you want to use HTTP API.
  $client = new ImagesToText_HttpClient($username, $password);
  $client->is_verbose = true;

  echo "Your balance is {$client->balance} US cents\n";

  // To use recaptcha_Token
  // Set the proxy and reCaptcha token data
  $data = array(
      'proxy'      => 'http://user:[email protected]:1234',
      'proxytype'  => 'HTTP',
      'googlekey' => '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b',
      'pageurl' => 'http://google.com');
  //Create a json string
  $json = json_encode($data);

  //Put the type and the json payload
  $extra = [
      'type'=>4,
      'token_params'=> $json,  # banner img
      ];

  // Put null the first parameter and add the extra payload
  if ($captcha = $client->decode(null, $extra)) {
      echo "CAPTCHA {$captcha['captcha']} uploaded\n";

      sleep(ImagesToText_Client::DEFAULT_TIMEOUT);

          // Poll for CAPTCHA indexes:
          if ($text = $client->get_text($captcha['captcha'])) {
              echo "CAPTCHA {$captcha['captcha']} solved: {$text}\n";

              // Report an incorrectly solved CAPTCHA.
              // Make sure the CAPTCHA was in fact incorrectly solved!
              //$client->report($captcha['captcha']);
          }
      }
              
2) PYTHON

  import imagestotext
  import json

  # Put your ITT account username and password here.
  username = "user"  
  password = "password"
  # Put the proxy and reCaptcha token data
      Captcha_dict = {
          'proxy': 'http://user:[email protected]:1234',
          'proxytype': 'HTTP',
          'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
          'pageurl': 'http://google.com'}
      # Create a json string
      json_Captcha = json.dumps(Captcha_dict)

      #client = imagestotext.SocketClient(username, password)
      #to use http client client = imagestotext.HttpClient(username, password)
      client = imagestotext.HttpClient(username, password)

      try:
          balance = client.get_balance()

          # Put your CAPTCHA type and Json payload here:
          captcha = client.decode(type=4,token_params=json_Captcha)
          if captcha:
                  # The CAPTCHA was solved; captcha["captcha"] item holds its
              # numeric ID, and captcha["text"] item its a text token".
              print "CAPTCHA %s solved: %s" % (captcha["captcha"], captcha["text"])

              if '':  # check if the CAPTCHA was incorrectly solved
                  client.report(captcha["captcha"])
      except imagestotext.AccessDeniedException:
          # Access to ITT API denied, check your credentials and/or balance
          print "error: Access to ITT API denied, check your 
          \ credentials and/or balance"
    
            
3) JAVA

  import com.ImagesToText.AccessDeniedException;
  import com.ImagesToText.Client;
  import com.ImagesToText.HttpClient;
  import com.ImagesToText.SocketClient;
  import com.ImagesToText.Captcha;
  
  import java.io.IOException;
  
  
  class ExampleNewRecaptchaToken
  {
      public static void main(String[] args)
          throws Exception
      {
          // EXAMPLE RECAPTCHA_TOKEN.
    
          // Put your ITT username & password here:
          //Client client = (Client)(new SocketClient(args[0], args[1]));
          String username = "your_username_here";
          String password = "your_password_here";
          Client client = (Client)(new HttpClient(username, password));
          client.isVerbose = true;
  
          try {
              try {
                  System.out.println("Your balance is " + client.getBalance() + " US cents");
              } catch (IOException e) {
                  System.out.println("Failed fetching balance: " + e.toString());
                  return;
              }
  
              Captcha captcha = null;
              try {
                  // Upload a reCAPTCHA and poll for its status with 120 seconds timeout.
                  // Put your proxy, proxy type, page googlekey, page url and solving timeout (in seconds)
                  // 0 or nothing for the default timeout value. 
                  captcha = client.decode("http://user:[email protected]:1234","http","6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b","http://google.com");
              } catch (IOException e) {
                  System.out.println("Failed uploading CAPTCHA");
                  return;
              }
              if (null != captcha) {
                  System.out.println("CAPTCHA " + captcha.id + " solved: " + captcha.text);
  
                  // Report incorrectly solved CAPTCHA if necessary.
                  // Make sure you've checked if the CAPTCHA was in fact incorrectly
                  // solved, or else you might get banned as abuser.
                  /*try {
                      if (client.report(captcha)) {
                          System.out.println("Reported as incorrectly solved");
                      } else {
                          System.out.println("Failed reporting incorrectly solved CAPTCHA");
                      }
                  } catch (IOException e) {
                      System.out.println("Failed reporting incorrectly solved CAPTCHA: " + e.toString());
                  }*/
              } else {
                  System.out.println("Failed solving CAPTCHA");
              }
          } catch (com.ImagesToText.Exception e) {
              System.out.println(e);
          }
  
          
      }
  }
    
            
4) C# .Net
 
  using ImagesToText;

  /* Put your ImagesToText account username and password here.
    Use SocketClient for SOCKET API. */
  Client client = (Client)new HttpClient(username, password);

  //Put your Proxy credentials and type here
  string proxy = "http://user:[email protected]:1234";
  string proxyType = "HTTP";

  //Put the page data here
  string googlekey = "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b";
  string pageurl = "http://google.com";

  string tokenParams = "{\"proxy\": \"" + proxy + "\"," +
      "\"proxytype\": \"" + proxyType + "\"," +
      "\"googlekey\": \"" + googlekey + "\"," +
      "\"pageurl\": \"" + pageurl + "\"}";

  try {
    double balance = client.GetBalance();

    // Upload a CAPTCHA and poll for its status.  Put the Token CAPTCHA
    // Json payload, CAPTCHA type and desired solving timeout (in seconds)
    // here. If solved, you'll receive a ImagesToText.Captcha object.
    Captcha captcha = client.Decode( Client.DefaultTimeout,
        new Hashtable (){
            { "type", 4 },
            {"token_params", tokenParams}
        });
      
      if (null != captcha) {
          /* The CAPTCHA was solved; captcha.Id property holds
          its numeric ID, and captcha.Text holds its text. */
          Console.WriteLine("CAPTCHA {0} solved: {1}", captcha.Id,
            captcha.Text);

          if (/* check if the CAPTCHA was incorrectly solved */) {
              client.Report(captcha);
          }
      }
  } catch (AccessDeniedException e) {
      /* Access to ITT API denied, check your credentials and/or balance */
  }
       
5) VB.Net

    Imports ImagesToText
      
    ' Put your ITT username & password here:
    'Dim clnt As New SocketClient(username, password)
    Dim clnt As New HttpClient(username, password)
     
    
    ' Put your Proxy credentials and type here
    Dim proxy As String = "http://user:[email protected]:1234"
    Dim proxyType As String = "HTTP"
    
    ' Put the page data here
    Dim googlekey As String = "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b";
    Dim pageurl As String = "http://google.com";
    
    Console.WriteLine(String.Format("Your balance is {0,2:f} US cents",
      clnt.Balance))
    
    ' Create the Json payload, Put the Site url and Sitekey here.
    Dim tokenParams As String = "{""proxy"": """ + proxy + """," +
                """proxytype"": """ + proxyType + """," +
                """googlekey"": """ + googlekey + """," +
                """pageurl"": """ + pageurl + """}"
    
    ' Create the complete payload, Put the type 4
    Dim ext_data As New Hashtable()
    ext_data.Add("type", 4)
    ext_data.Add("token_params", tokenParams)
    
    ' Upload a CAPTCHA and poll for its status.  Put the Token CAPTCHA
    ' Json payload, CAPTCHA type and desired solving timeout (in seconds)  
    ' here. If solved, you'll receive a ImagesToText.Captcha object.
    Dim cptch As Captcha = clnt.Decode(Client.DefaultTimeout,ext_data)
    If cptch IsNot Nothing Then
        Console.WriteLine(String.Format("CAPTCHA {0:d} solved: {1}", cptch.Id,
          cptch.Text))
    
        ' Report an incorrectly solved CAPTCHA.
        ' Make sure the CAPTCHA was in fact incorrectly solved, do not
        ' just report it at random, or you might be banned as abuser.
        'If clnt.Report(cptch) Then
        '    Console.WriteLine("Reported as incorrectly solved")
        'Else
        '    Console.WriteLine("Failed reporting as incorrectly solved")
        'End If
    End If
    
6) iMacros

  ' this script uses DeCaptcher API, to use this API first we need to opt-in our user in the following URL
  ' https://imagestotext.com/user/api/decaptcher
  ' Is recomended to read the FAQ in that page
  
  VERSION BUILD=844
  ' we need to set a timeout to wait for the captcha solution
  SET !TIMEOUT_PAGE 200
  ' the script go to this URL to use the API
  URL GOTO=http://api.imagestotext.com/decaptcher?function=token&print_format=html
  ' Set our username, need to replace {{}} with username, ex.
  ' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:username CONTENT=myusername
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:username CONTENT={{username}}
  ' replace password with our password, ex.
  ' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:password CONTENT=mycurrentpassword
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:password CONTENT={{password}}
  ' here we set our proxy, ex.
  ' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:proxy CONTENT=https://proxy_username:proxy_password@proxy_url:proxy_port
  ' we need to use this proxy format https://proxy_username:proxy_password@proxy_url:proxy_port
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:proxy CONTENT={{proxy}}
  ' here we set the proxy type ex.
  ' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:proxytype CONTENT=http
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:proxytype CONTENT={{proxy_type}}
  ' here we set the googlekey
  ' for information about googlekey, look here https://imagestotext.com/user/api/newtokenrecaptcha#what-site-key
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:googlekey CONTENT={{google_site_key}}
  ' here we set the site that have the token recaptcha challenge, ex.
  ' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:pageurl CONTENT=https://www.site.com/login
  TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.imagestotext.com/decaptcher ATTR=NAME:pageurl CONTENT={{challenge_site}}
  ' we submit the captcha to solve
  TAG POS=1 TYPE=INPUT:SUBMIT ATTR=TYPE:submit
  
  ' and we get our result
  TAG POS=6 TYPE=TD ATTR=* EXTRACT=TXT
  SET !VAR1 {{!EXTRACT}}
    
7) Node.js

  /*
  * Images To Text Node.js API recaptcha token image usage example
  */
  
  const itt = require('./imagestotext.js');
  
  const username = 'username';     // ITT account username
  const password = 'password';     // ITT account password
  
  // Proxy and Recaptcha token data
  const token_params = JSON.stringify({
    'proxy': 'http://username:[email protected]:3128',
    'proxytype': 'HTTP',
    'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
    'pageurl': 'http://google.com'
  });
  
  // Images To Text Socket Client
  const client = new itt.SocketClient(username, password);
  // const client = new itt.HttpClient(username, password) for http client
  
  // Get user balance
  client.get_balance((balance) => {
    console.log(balance);
  });
  
  // Solve captcha with type 4 & token_params extra arguments
  client.decode({extra: {type: 4, token_params: token_params}}, (captcha) => {
    if (captcha) {
      console.log('Captcha ' + captcha['captcha'] + ' solved: ' + captcha['text']);
  
      /*
      * Report an incorrectly solved CAPTCHA.
      * Make sure the CAPTCHA was in fact incorrectly solved!
      * client.report(captcha['captcha'], (result) => {
      *   console.log('Report status: ' + result);
      * });
      */
  
    }
  });