captcha.funCaptcha.fun

Get Solve Response

Long polling endpoint to get the result of a captcha solve request


Endpoint

GET https://api.captcha.fun/v1/response/{id}
GET https://api.captcha.fun/v2/response/{id}

Polling

Poll this endpoint every 1 second and check for `ready === true` in the response body. This is faster and more efficient than v1's long polling approach.

Path Parameters

ParameterTypeRequiredDescription
idstring (UUID)YesThe ID of the solve request

Request Headers

HeaderTypeRequiredDescription
API_KEYstringYesYour API key

Response Fields

FieldTypeDescription
readybooleanWhether the solve is complete - poll until true (v2 only)
statusstringThe status of the solve request (SUCCESS or FAILURE)
successbooleanWhether the solve was successful
userAgentstringThe user agent used for solving
secUastringThe Sec-CH-UA header value
tokenstringThe solved captcha token

Request Example

curl -X GET https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000 \  -H "API_KEY: CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \  -H "Accept: application/json"
import requestsresponse = requests.get(    "https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000",    headers={        "API_KEY": "CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",        "Accept": "application/json"    })print(response.status_code, response.json())
const response = await fetch(  "https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000",  {    method: "GET",    headers: {      "API_KEY": "CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",      "Accept": "application/json"    }  });const data = await response.json();console.log(response.status, data);
package mainimport (    "encoding/json"    "fmt"    "net/http")func main() {    req, _ := http.NewRequest("GET", "https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000", nil)    req.Header.Set("API_KEY", "CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")    req.Header.Set("Accept", "application/json")    client := &http.Client{}    resp, _ := client.Do(req)    defer resp.Body.Close()    var result map[string]interface{}    json.NewDecoder(resp.Body).Decode(&result)    fmt.Println(resp.StatusCode, result)}
import java.net.http.*;import java.net.URI;public class Main {    public static void main(String[] args) throws Exception {        HttpClient client = HttpClient.newHttpClient();        HttpRequest request = HttpRequest.newBuilder()            .uri(URI.create("https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000"))            .header("API_KEY", "CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")            .header("Accept", "application/json")            .GET()            .build();        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());        System.out.println(response.statusCode() + " " + response.body());    }}
using System.Net.Http;var client = new HttpClient();client.DefaultRequestHeaders.Add("API_KEY", "CAPFUN-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");client.DefaultRequestHeaders.Add("Accept", "application/json");var response = await client.GetAsync("https://api.captcha.fun/v2/response/550e8400-e29b-41d4-a716-446655440000");var result = await response.Content.ReadAsStringAsync();Console.WriteLine($"{(int)response.StatusCode} {result}");

Response

{  "ready": true,  "status": "SUCCESS",  "success": true,  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",  "secUa": "\"Chromium\";v=\"X\", \"Not=A?Brand\";v=\"X\", \"Google Chrome\";v=\"X\"",  "token": "03AGdBq25SiXT-pmSeBXjzScW-EiocHwwpwqJRCAI7Z..."}
{  "message": "Invalid request ID"}