Go SDK
Official Go client. Standard-library only, context-aware.
Install
go get github.com/Phosphor-gg/supervisor-sdk-go
Requires Go 1.21+. Grab an API key from your dashboard under API Keys.
Moderate text
package main
import (
"context"
"fmt"
supervisor "github.com/Phosphor-gg/supervisor-sdk-go"
)
func main() {
client := supervisor.NewClient("sk_prod_...")
text := "text to check"
res, err := client.Moderate(context.Background(), &supervisor.ModerationRequest{Text: &text})
if err != nil {
panic(err)
}
fmt.Println(res.Flagged, res.Labels)
}
Methods
client.Moderate(ctx, *ModerationRequest) (*ModerationResponse, error)
client.ModerateBatch(ctx, *BatchModerationRequest) ([]ModerationResponse, error)
client.ModerateVideo(ctx, []byte, ...VideoOption) (*VideoModerationResponse, error)
client.CheckUsername(ctx, "user123") (*UsernameCheckResponse, error)
client.GetLabels(ctx) (map[string]string, error)
Configure with options: supervisor.WithBaseURL(url), supervisor.WithTimeout(d).
ModerateVideo takes supervisor.WithVideoModel(m), supervisor.WithVideoLabels(...) and supervisor.WithVideoImplicit(). A VideoModerationResponse carries Flagged, Labels (the union across frames), Frames (each with TimestampMs, Flagged and Labels), FramesAnalysed, DurationSecs, Codec and Decoder. The 10 MB size limit is checked locally, so an oversized clip errors before it is uploaded.
Platform API
Moderate on behalf of your own users with a registered platform's credentials (from the dashboard under Platform API).
p := supervisor.NewPlatformClient("client-id", "sk_platform_...")
p.ProvisionUser(ctx, "user@example.com")
email := "user@example.com"
text := "text to check"
res, _ := p.Moderate(ctx, &supervisor.PlatformModerationRequest{UserEmail: email, Text: &text})
Other methods: ListUsers, GetUser, CreateCheckout, GetConnectStatus. See the Platform API guide.