VoidhashDocs
DocumentationAPI reference
Dashboard
Get started
Introduction
Quickstart
Setup
Setup overview
Create a project
Products and perks
Paywall locations
CLI
Paywall components
Components
Develop a component
Editor panels
Component definition
Publishing
Installing and capabilities
SDKs
Swift
Kotlin
React Native
Web
Store setup
Connect the App Store
Connect Google Play
Connect Stripe
API libraries
Node.js
PHP
Rust
Go
Resources
MCP server
Meta ads
Migrate in observer mode
Delete a person's data
Go library
Check access from your backend
Receive webhooks

Go library

A server-side client for the Voidhash REST API.

The mobile SDKs decide what to show on the device. They cannot protect anything a customer can reach by calling your API directly, such as an export endpoint or a paid model. Those checks belong on your server, and this library is how you make them.

voidhash-go is a client for the Voidhash REST API. It authenticates every request with a project secret key.

Install the module

Add the module to your project with go get.

go get github.com/voidhash/voidhash-go

The module needs Go 1.22 or newer. The client uses only the standard library net/http, so there is no cgo and no extra dependencies.

Create a secret key

In Studio, open Settings → API keys and create a secret key. The raw value is shown only once.

Store the key in an environment variable or your secret manager. A secret key grants full access to the project. Never put it in a mobile app, a web bundle, or a repository.

Create the client

Create one client with your secret key at startup.

server/voidhash.go
import "github.com/voidhash/voidhash-go"

voidhash, err := voidhash.New(os.Getenv("VOIDHASH_SECRET_KEY"))
if err != nil {
    log.Fatalf("create voidhash client: %v", err)
}

The client is configured through New and two functional options.

OptionDefaultDescription
New(secretKey)noneRequired. The client sends it as the x-secret-key header.
WithBaseURL(url)https://api.voidhash.comOverrides the API origin. The scheme must be http: or https:.
WithHeader(key, value)noneAdds an extra header to every request from this client.

New validates its input right away rather than on the first request. It returns ErrConfiguration when the secret key is blank, the base URL is invalid, or WithHeader was given x-secret-key in any casing.

The client is safe for concurrent use. Create one at startup and share it across your handlers.

With the client configured, continue with checking access or receiving webhooks.

Resource methods

Each API resource is a service on the client, and the services mirror the API reference. Every method takes a context.Context as its first argument. The example below checks a perk through the Entitlements service.

hasPremium, err := voidhash.Entitlements.HasActivePerk(ctx, &voidhash.HasActivePerkParams{
    DistinctID: "user_123",
    PerkSlug:   voidhash.String("premium"),
})

Responses are typed structs generated from the API schemas. Optional inputs are pointers, and the helpers voidhash.String, voidhash.Bool, and friends build them for you.

PreviousReceive webhooksNextCheck access from your backend

On this page

Install the moduleCreate a secret keyCreate the clientResource methods