Go

Official CapBypass SDK for Go

Installation

go get github.com/CapBypass-Development/capbypass-sdk-go

Requirements: 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 tracking

Methods

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"])
}

Next Steps

On this page