Skip to content

Basilisk (FaucetPay)

Basilisk is an icon-based CAPTCHA commonly used on FaucetPay and cryptocurrency faucet websites. It presents a grid of icons and requires the user to select the correct ones based on a prompt. The uCaptcha API solves Basilisk challenges and returns a verification token, with or without a proxy.

TypeProxyDescription
BasiliskTokenProxyLessNoSolve without proxy (recommended)
BasiliskTokenYesSolve using your proxy
ParameterTypeRequiredDescription
typestringYesTask type from the table above
websiteURLstringYesURL of the page with the Basilisk challenge
websiteKeystringYesBasilisk / FaucetPay site key

Required when using the BasiliskToken task type.

ParameterTypeRequiredDescription
proxyTypestringYeshttp, socks4, or socks5
proxyAddressstringYesProxy IP or hostname
proxyPortintegerYesProxy port
proxyLoginstringNoProxy username
proxyPasswordstringNoProxy password
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "BasiliskTokenProxyLess",
"websiteURL": "https://example-faucet.com/claim",
"websiteKey": "b7ab4a75-a8b7-3ea4-9b04-56c85d301ac3"
}
}
{
"errorId": 0,
"taskId": "abc-123-def"
}
{
"token": "faucetpay_verification_a1b2c3d4e5f6...token"
}
FieldTypeDescription
tokenstringThe Basilisk verification token to submit with the form

Once you receive the token value from the solution:

  1. Form submission — Set the Basilisk token in the hidden captcha verification field and submit the faucet claim form.
  2. API request — Include the token in your POST request to the faucet’s claim endpoint.
import requests
import time
API_KEY = "YOUR_API_KEY"
# Create task
response = requests.post("https://api.ucaptcha.net/createTask", json={
"clientKey": API_KEY,
"task": {
"type": "BasiliskTokenProxyLess",
"websiteURL": "https://example-faucet.com/claim",
"websiteKey": "b7ab4a75-a8b7-3ea4-9b04-56c85d301ac3"
}
})
task_id = response.json()["taskId"]
# Poll for result
while True:
result = requests.post("https://api.ucaptcha.net/getTaskResult", json={
"clientKey": API_KEY,
"taskId": task_id
}).json()
if result["status"] == "ready":
token = result["solution"]["token"]
print("Token:", token)
break
elif result["status"] == "failed":
print("Error:", result.get("errorDescription"))
break
time.sleep(5)
const API_KEY = "YOUR_API_KEY";
const { taskId } = await fetch("https://api.ucaptcha.net/createTask", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
clientKey: API_KEY,
task: {
type: "BasiliskTokenProxyLess",
websiteURL: "https://example-faucet.com/claim",
websiteKey: "b7ab4a75-a8b7-3ea4-9b04-56c85d301ac3"
}
})
}).then(r => r.json());
while (true) {
const result = await fetch("https://api.ucaptcha.net/getTaskResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ clientKey: API_KEY, taskId })
}).then(r => r.json());
if (result.status === "ready") {
console.log("Token:", result.solution.token);
break;
} else if (result.status === "failed") {
console.error("Error:", result.errorDescription);
break;
}
await new Promise(r => setTimeout(r, 5000));
}
Terminal window
# Create task
curl -X POST https://api.ucaptcha.net/createTask \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "BasiliskTokenProxyLess",
"websiteURL": "https://example-faucet.com/claim",
"websiteKey": "b7ab4a75-a8b7-3ea4-9b04-56c85d301ac3"
}
}'
# Poll for result (replace TASK_ID with the taskId from above)
curl -X POST https://api.ucaptcha.net/getTaskResult \
-H "Content-Type: application/json" \
-d '{
"clientKey": "YOUR_API_KEY",
"taskId": "TASK_ID"
}'
  • CapMonster
  • Multibot

The following legacy type names are also accepted for backward compatibility:

  • FaucetPayToken
  • FaucetPayTokenProxyLess
  • BasiliskTask