Go
Official CapBypass SDK for Go
Installation
go get github.com/CapBypass-Development/capbypass-sdk-goRequirements: Go 1.21 or later.
Module path
Import the SDK as capbypass "github.com/CapBypass-Development/capbypass-sdk-go" in your Go files.
Quick Start
package main
import (
"fmt"
"log"
capbypass "github.com/CapBypass-Development/capbypass-sdk-go"
)
func main() {
client, err := capbypass.NewClient("YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
client.SetBaseURL("https://api.capbypass.pro")
// One-step solve (recommended)
solution, err := client.Solve(capbypass.Task{
"type": capbypass.TaskTypeReCaptchaV3ProxyLess,
"websiteURL": "https://example.com",
"websiteKey": "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
"pageAction": "login",
}, 120) // timeout in seconds
if err != nil {
log.Fatal(err)
}
fmt.Println("Token:", solution["gRecaptchaResponse"])
}Client Setup
// Create client with API key
client, err := capbypass.NewClient("YOUR_API_KEY")
// Or use CAPBYPASS_API_KEY environment variable
client, err := capbypass.NewClient("")
// Configure base URL and developer key
client.SetBaseURL("https://api.capbypass.pro")
client.SetDeveloperKey("DEV_KEY") // optional, for affiliate trackingMethods
Solve(task, timeout) - One-Step Solve
Recommended approach
Use Solve() for most integrations. It handles task creation and polling automatically, so you don't need to manage the polling loop yourself.
Creates a task and polls until completion.
solution, err := client.Solve(capbypass.Task{
"type": capbypass.TaskTypeReCaptchaV3ProxyLess,
"websiteURL": "https://example.com",
"websiteKey": "6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
"pageAction": "login",
}, 120)CreateTask(task) - Create Task
Returns a task ID for manual polling.
taskID, err := client.CreateTask(capbypass.Task{
"type": capbypass.TaskTypeAntiAwsWafProxyLess,
"websiteURL": "https://example.com",
})GetTaskResult(taskID) - Get Result
Poll for a task's result.
result, err := client.GetTaskResult(taskID)
if result.Status == "ready" {
fmt.Println(result.Solution)
} else if result.Status == "processing" {
// Still working, poll again
}GetBalance() - Check Balance
balance, err := client.GetBalance()
fmt.Printf("Balance: $%.2f\n", balance)GetPricing() - Get Pricing
Public endpoint, no API key required.
pricing, err := client.GetPricing()
// []PricingItem{{TaskType: "ReCaptchaV3TaskProxyLess", UserCost: 0.0006, Status: "active"}, ...}Task Types
capbypass.TaskTypeReCaptchaV2 // "ReCaptchaV2Task"
capbypass.TaskTypeReCaptchaV2ProxyLess // "ReCaptchaV2TaskProxyLess"
capbypass.TaskTypeReCaptchaV3 // "ReCaptchaV3Task"
capbypass.TaskTypeReCaptchaV3ProxyLess // "ReCaptchaV3TaskProxyLess"
capbypass.TaskTypeReCaptchaV3Enterprise // "ReCaptchaV3EnterpriseTask"
capbypass.TaskTypeReCaptchaV3EnterpriseProxyLess // "ReCaptchaV3EnterpriseTaskProxyLess"
capbypass.TaskTypeAntiAwsWaf // "AntiAwsWafTask"
capbypass.TaskTypeAntiAwsWafProxyLess // "AntiAwsWafTaskProxyLess"
capbypass.TaskTypeGeetest // "GeetestTask"
capbypass.TaskTypeGeetestProxyLess // "GeetestTaskProxyLess"```
## Error Handling
The SDK returns sentinel errors you can check with `errors.Is`:
```go
import "errors"
solution, err := client.Solve(task, 120)
if err != nil {
switch {
case errors.Is(err, capbypass.ErrAuthentication):
// Invalid API key
case errors.Is(err, capbypass.ErrInsufficientBalance):
// Need to top up
case errors.Is(err, capbypass.ErrTimeout):
// Task took too long
case errors.Is(err, capbypass.ErrSolver):
// Challenge unsolvable
default:
log.Fatal(err)
}
}Full Example - AWS WAF
package main
import (
"fmt"
"log"
capbypass "github.com/CapBypass-Development/capbypass-sdk-go"
)
func main() {
client, err := capbypass.NewClient("YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
client.SetBaseURL("https://api.capbypass.pro")
solution, err := client.Solve(capbypass.Task{
"type": capbypass.TaskTypeAntiAwsWafProxyLess,
"websiteURL": "https://example.com/protected",
"awsChallengeJS": "https://xxx.token.awswaf.com/xxx/challenge.js",
}, 120)
if err != nil {
log.Fatal(err)
}
// Use the cookie in your requests
fmt.Println("Cookie:", solution["cookie"])
}