Point11 provides official SDK libraries for Node.js, Python, and Go. The SDKs wrap the REST API with idiomatic language constructs, handle authentication, implement automatic retries with exponential backoff, and provide TypeScript/type definitions for a first-class developer experience.
Node.js SDK
Installation
bashnpm install @point11/sdkConfiguration
typescriptconst client = new Point11Client({
apiKey: process.env.POINT11_API_KEY,
environment: "production", // or "sandbox"
timeout: 30000, // request timeout in milliseconds
retries: 3, // automatic retry count for transient failures
});
`
Usage Examples
typescript// Create an audit
const audit = await client.audits.create({
type: "google_ads_account",
target: {
accountId: "123-456-7890",
dateRange: { start: "2026-01-01", end: "2026-01-31" },
},
modules: ["conversion_tracking", "bid_strategy"],// Poll until complete const completed = await client.audits.waitForCompletion(audit.id, { pollInterval: 5000, // check every 5 seconds timeout: 600000, // give up after 10 minutes });
// Query analytics const performance = await client.analytics.getPerformance({ accountId: "123-456-7890", startDate: "2026-01-01", endDate: "2026-01-31", });
// Set up a webhook
const webhook = await client.webhooks.create({
url: "https://your-app.example.com/webhooks/point11",
events: ["audit.completed", "alert.triggered"],
secret: "whsec_your_secret",
});
`
The Node.js SDK is fully typed with TypeScript definitions. All response objects include type information for autocomplete and compile-time validation. The SDK targets Node.js 18+ and uses the native fetch API.
Python SDK
Installation
bashpip install point11Configuration
pythonclient = Point11Client(
api_key=os.environ["POINT11_API_KEY"],
environment="production", # or "sandbox"
timeout=30.0, # request timeout in seconds
max_retries=3,
)
`
Usage Examples
python# Create an audit
audit = client.audits.create(
type="google_ads_account",
target={
"account_id": "123-456-7890",
"date_range": {"start": "2026-01-01", "end": "2026-01-31"},
},
modules=["conversion_tracking", "bid_strategy"],# Wait for completion completed = client.audits.wait_for_completion( audit.id, poll_interval=5.0, timeout=600.0, )
# Access findings for finding in completed.findings: if finding.severity == "critical": print(f"Critical: {finding.title}") print(f"Remediation: {finding.remediation}")
# Query time-series analytics
timeseries = client.analytics.get_timeseries(
account_id="123-456-7890",
start_date="2026-01-01",
end_date="2026-01-31",
interval="day",
metrics=["spend", "conversions", "roas"],
)
`
The Python SDK supports Python 3.9+ and includes an async client (AsyncPoint11Client) for use with asyncio. All models use Pydantic for runtime validation and IDE autocompletion.
Go SDK
Installation
bashgo get github.com/point11/point11-goConfiguration
goimport ( "context" "os"
"github.com/point11/point11-go" )
func main() { client := point11.NewClient( point11.WithAPIKey(os.Getenv("POINT11_API_KEY")), point11.WithEnvironment(point11.Production), point11.WithTimeout(30 * time.Second), point11.WithMaxRetries(3), )
ctx := context.Background()
// Create an audit audit, err := client.Audits.Create(ctx, &point11.AuditCreateParams{ Type: point11.AuditTypeGoogleAdsAccount, Target: point11.AuditTarget{ AccountID: "123-456-7890", DateRange: point11.DateRange{ Start: "2026-01-01", End: "2026-01-31", }, }, Modules: []string{"conversion_tracking", "bid_strategy"}, }) if err != nil { log.Fatal(err) }
// Query analytics
perf, err := client.Analytics.GetPerformance(ctx, &point11.PerformanceParams{
AccountID: "123-456-7890",
StartDate: "2026-01-01",
EndDate: "2026-01-31",
})
if err != nil {
log.Fatal(err)
}
}
`
The Go SDK requires Go 1.21+ and follows Go conventions with functional options for configuration, context-based cancellation, and structured error types.
Error Handling
All SDKs provide typed error classes for common API errors:
- AuthenticationError: Invalid or expired API key/token (HTTP 401).
- PermissionError: Insufficient scopes for the requested operation (HTTP 403).
- NotFoundError: The requested resource does not exist (HTTP 404).
- RateLimitError: Rate limit exceeded (HTTP 429). Includes a
retryAfterproperty indicating when to retry. - ValidationError: Invalid request parameters (HTTP 400/422). Includes a
detailsproperty with field-level error messages. - ServerError: Point11 platform error (HTTP 5xx). Automatically retried by the SDK.
Webhook Signature Verification
Each SDK includes a utility for verifying webhook signatures:
typescript// Node.jsconst isValid = verifyWebhookSignature(rawBody, signature, timestamp, secret);
`
python# Pythonis_valid = verify_signature(raw_body, signature, timestamp, secret)
`
go// Go
valid := point11.VerifyWebhookSignature(rawBody, signature, timestamp, secret)Sources
- npm Package Registry: https://www.npmjs.com/
- PyPI — Python Package Index: https://pypi.org/
- Go Module Reference: https://pkg.go.dev/
- OWASP API Security Top 10: https://owasp.org/www-project-api-security/
- Google Ads API Client Libraries: https://developers.google.com/google-ads/api/docs/client-libs