Recommended
Use your framework middleware.
Both adapters retain the resolved route template, final status, duration, API version and explicit customer context without reading request or response bodies.
Language foundation
Build on one event contract.
apirelio-go owns event creation, route normalization, privacy filtering, bounded retry, backpressure and graceful shutdown.
go get github.com/pryznar/apirelio-go@v0.1.0client := apirelio.New(apirelio.Config{
APIKey: os.Getenv("APIRELIO_API_KEY"),
Service: "billing-api",
Environment: apirelio.EnvironmentProduction,
Release: os.Getenv("APP_RELEASE"),
})
client.Capture(apirelio.CaptureContext{
Method: "POST",
Route: "/api/invoices/{invoice}/send",
Status: 202,
Duration: 84 * time.Millisecond,
Customer: &apirelio.Customer{ID: "cus_123", Plan: "growth"},
SDK: "custom-go",
})Gin and Fiber applications should install their dedicated package instead of wrapping each request manually.
Outside the request path
Concurrent, bounded and fail-safe.
Capture normalizes and queues an event. A background goroutine owns batch delivery, transient retries and timeout handling. The client is safe for concurrent use.
Bounded queue
Overload drops telemetry instead of consuming unbounded application memory.
Selective retry
Network failures, rate limits and server errors retry; invalid requests fail fast.
Graceful shutdown
A caller-provided context controls the final flush deadline.
Compatibility
Supported Go matrix.
apirelio-goCustom adaptersGo 1.23+apirelio-ginGin 1.12Go 1.25+apirelio-fiberFiber v2Go 1.23+