NoCap.ing
Token based

FunCaptcha

Solve FunCaptcha automatically with our secure, high-speed Token API.

Accelerate your workflows with our Token-based FunCaptcha Solver, which provides instant verification tokens that allow you to bypass visual challenges entirely without manual intervention.


Create Task Request Fields

FieldTypeRequiredDescription
task.typeStringYesFUNCAPTCHA_TOKEN
task.input.publicKeyStringYesArkose public key for the site (e.g., A2A14B1D-1AF3-C791-9BBC-EE33CC7A0A6F)
task.input.serviceUrlStringYesArkose challenge base URL (e.g., https://arkoselabs.roblox.com)
task.input.websiteUrlStringYesSite base URL (e.g., https://www.roblox.com)
task.input.locationHrefStringYesCurrent page URL (e.g., https://www.roblox.com/CreateAccount)
task.input.documentTitleStringNoDocument title for the current page (e.g., Roblox)
task.input.refererStringNoReferrer URL (e.g., https://www.roblox.com/)
task.input.windowAncestorOriginsArrayNoWindow ancestory origins
task.input.windowTreeIndexArrayNoWindow tree index
task.input.windowTreeStructureStringNoWindow tree structure
task.input.proxyUrlStringYesProxy URL
task.input.data.blobStringNoRequired for some publicKey

Example

import time
import os
import requests

API_KEY = "YOUR_API_KEY"
URL = "https://solver.nocap.ing"

def solve(blob, proxy_url, max_attempt=60):
    headers = {
        "X-Api-Key": API_KEY,
    }
    
    payload = {
        "task": {
            "type": "FUNCAPTCHA_TOKEN",
            "input": {
                "publicKey": "A2A14B1D-1AF3-C791-9BBC-EE33CC7A0A6F",
                "websiteUrl": "https://www.roblox.com",
                "serviceUrl": "https://arkoselabs.roblox.com",
                "locationHref": "https://www.roblox.com/CreateAccount",
                "referer": "",
                "documentTitle": "Roblox",
                "windowAncestorOrigins": [],
                "windowTreeIndex": [],
                "windowTreeStructure": "[]",
                "proxyUrl": proxy_url,
                "data": {"blob": blob}
            },
        }
    }
    
    response = requests.post(f"{URL}/createTask", json=payload, headers=headers).json()
    task_id = response.get("taskId")
    
    if not task_id:
        return None

    for attempt in range(max_attempt):
        time.sleep(1)
        
        result = requests.post(f"{URL}/getTask", json={"id": task_id}, headers=headers).json()
        status = result.get("status")
        
        if status == "SUCCESS":
            return result.get("solution")
        
        if status == "REFUNDED":
            return None
            
    return None

solution = solve("CHALLENGE_BLOB", "http://your-proxy:80")
if solution:
    print("token", solution.get("token"))

Response Format

Create Task Response

{
    "success": true,
    "taskId": "cmpdpjp8l00003j6q1p3pf36i",
    "status": "PENDING",
    "charged": "0.4"
}

Task Result Response ( Pending )

{
    "success": true,
    "id": "cmpdpjp8l00003j6q1p3pf36i",
    "status": "PENDING",
    "solution": null,
    "charged": "0.4"
}

Task Result Response ( Success )

{
    "success": true,
    "id": "cmpdpjp8l00003j6q1p3pf36i",
    "status": "SUCCESS",
    "solution": {
        "token": "88218b1e12b5c0ba8.3269698104|r=ap-southeast-1|meta=3|metabgclr=transparent|metaiconclr=%23757575|maintxtclr=%23b8b8b8|guitextcolor=%23474747|pk=A2A14B1D-1AF3-C791-9BBC-EE33CC7A0A6F|at=40|ag=101|cdn_url=https%3A%2F%2Farkoselabs.roblox.com%2Fcdn%2Ffc|surl=https%3A%2F%2Farkoselabs.roblox.com|smurl=https%3A%2F%2Farkoselabs.roblox.com%2Fcdn%2Ffc%2Fassets%2Fstyle-manager",
    },
    "charged": "0.4"
}

Task Result Response ( Refund )

{
    "success": true,
    "id": "cmpdpjp8l00003j6q1p3pf36i",
    "status": "REFUNDED",
    "solution": null,
    "charged": "0.4"
}

On this page