Comprehensive Go API client for the Datadog monitoring and analytics platform with strongly-typed interfaces for all Datadog API v1 and v2 endpoints
The DataDog Go API client provides comprehensive, strongly-typed access to the complete Datadog REST API. This is a generated client that supports both API v1 (31 API clients) and API v2 (86 API clients) endpoints, covering monitoring, dashboards, logs, security, incidents, and more.
go get github.com/DataDog/datadog-api-client-go/v2import (
"context"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV1"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)The package is organized into three main imports:
datadog - Common configuration, authentication, client infrastructuredatadogV1 - API v1 endpoints (31 API clients)datadogV2 - API v2 endpoints (86 API clients)package main
import (
"context"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
// Create context with API authentication
ctx := context.WithValue(
context.Background(),
datadog.ContextAPIKeys,
map[string]datadog.APIKey{
"apiKeyAuth": {Key: "YOUR_API_KEY"},
"appKeyAuth": {Key: "YOUR_APP_KEY"},
},
)
// Create configuration and client
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
// Use API - example: list incidents
incidentsApi := datadogV2.NewIncidentsApi(apiClient)
resp, r, err := incidentsApi.ListIncidents(ctx, *datadogV2.NewListIncidentsOptionalParameters())
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
return
}
// Process response
for _, incident := range resp.GetData() {
fmt.Printf("Incident: %s\n", incident.Attributes.GetTitle())
}
}Using environment variables for authentication:
// Reads DD_API_KEY and DD_APP_KEY from environment
ctx := datadog.NewDefaultContext(context.Background())The DataDog Go API client follows a generated OpenAPI client architecture:
github.com/DataDog/datadog-api-client-go/v2/
├── api/
│ ├── datadog/ # Common client, config, auth
│ ├── datadogV1/ # API v1 endpoints (31 clients)
│ └── datadogV2/ # API v2 endpoints (86 clients)datadog.Configuration) - Stores API host, authentication, HTTP client, retry settings, compression optionsdatadog.APIClient) - Central client that manages HTTP communicationIncidentsApi, MonitorsApi)The client supports multiple authentication methods:
DD_API_KEY and DD_APP_KEYUse v2 APIs for new features like incident management, case management, RUM, and modern integrations.
Core client infrastructure, configuration, and authentication.
// Create configuration
func NewConfiguration() *Configuration
// Create API client
func NewAPIClient(cfg *Configuration) *APIClientMonitor creation, downtime scheduling, and alert management.
V1 APIs:
V2 APIs:
V2 Observability Core Documentation
Dashboard creation and management.
V1 APIs:
V2 APIs:
V2 Observability Core Documentation
Log ingestion, querying, and pipeline configuration.
V1 APIs:
V2 APIs:
V1 Logs, Metrics, and Events Documentation
V2 Observability Core Documentation
Metric submission, querying, and configuration.
V1 APIs:
V2 APIs:
V1 Logs, Metrics, and Events Documentation
V2 Observability Core Documentation
Incident tracking and response (V2 only).
V2 APIs:
V2 Incident and Case Management Documentation
Security rules, signals, and threat detection.
V1 APIs:
V2 APIs:
V1 Additional APIs Documentation
V2 Additional APIs Documentation
Synthetic monitoring and testing.
V1 APIs:
V2 APIs:
V1 Additional APIs Documentation
V2 Additional APIs Documentation
AWS, Azure, GCP, and other cloud provider integrations.
V1 APIs:
V2 APIs:
V1 Additional APIs Documentation
V2 Additional APIs Documentation
User, role, and organization administration.
V1 APIs:
V2 APIs:
V1 Additional APIs Documentation
V2 Additional APIs Documentation
Real user monitoring and session replay (V2 only).
V2 APIs:
V2 Observability Core Documentation
Application performance monitoring and tracing.
V2 APIs:
V2 Observability Core Documentation
CI visibility and test optimization.
V2 APIs:
V2 Additional APIs Documentation
Event management and audit logging.
V1 APIs:
V2 APIs:
V1 Logs, Metrics, and Events Documentation
V2 Additional APIs Documentation
Host and container monitoring.
V1 APIs:
V2 APIs:
V1 Additional APIs Documentation
V2 Additional APIs Documentation
Cloud cost tracking and attribution (V2 only).
V2 APIs:
V2 Additional APIs Documentation
Case and project management (V2 only).
V2 APIs:
V2 Incident and Case Management Documentation
Workflow and automation features (V2 only).
V2 APIs:
V2 Additional APIs Documentation
Additional specialized features:
V2 Additional APIs Documentation
Automatic retry with exponential backoff for transient failures.
type RetryConfiguration struct {
EnableRetry bool
BackOffMultiplier float64
BackOffBase float64
HTTPRetryTimeout time.Duration
MaxRetries int
}Enable GZIP compression for requests and responses.
configuration := datadog.NewConfiguration()
configuration.Compress = trueEnable access to unstable/beta API endpoints.
configuration.SetUnstableOperationEnabled("v2.ListIncidents", true)Automatic pagination support for list operations.
resp, _ := incidentsApi.ListIncidentsWithPagination(ctx, optionalParams)
for paginationResult := range resp {
if paginationResult.Error != nil {
// handle error
}
// process paginationResult.Item
}Configure API endpoints for different Datadog regions.
// Use EU region
ctx := context.WithValue(ctx,
datadog.ContextServerVariables,
map[string]string{"site": "datadoghq.eu"},
)Enable debug mode to log HTTP requests and responses.
configuration := datadog.NewConfiguration()
configuration.Debug = trueAll API methods return errors that can be type-asserted to access detailed error information.
resp, r, err := api.ListIncidents(ctx, params)
if err != nil {
if apiErr, ok := err.(datadog.GenericOpenAPIError); ok {
fmt.Printf("API Error: %s\n", apiErr.Error())
fmt.Printf("Error Body: %s\n", apiErr.Body())
if model := apiErr.Model(); model != nil {
// Access structured error model
}
}
return
}All model types follow consistent patterns:
New*() functions create instances with required fieldsGet*() methods safely access fieldsSet*() fluent methods for building objectsHas*() methods check if optional fields are set// Creating a model
incident := datadogV2.NewIncidentCreateRequest(
datadogV2.NewIncidentCreateData(
datadogV2.INCIDENTTYPE_INCIDENT,
datadogV2.NewIncidentCreateAttributes("title"),
),
)
// Setting optional fields
incident.Data.Attributes.SetCustomerImpacted(true)
// Checking optional fields
if incident.Data.Attributes.HasCustomerImpacted() {
impacted := incident.Data.Attributes.GetCustomerImpacted()
}ctx := context.WithValue(
context.Background(),
datadog.ContextAPIKeys,
map[string]datadog.APIKey{
"apiKeyAuth": {Key: "YOUR_API_KEY"},
"appKeyAuth": {Key: "YOUR_APP_KEY"},
},
)// Reads DD_API_KEY and DD_APP_KEY
ctx := datadog.NewDefaultContext(context.Background())config := datadog.NewConfiguration()
config.DelegatedTokenConfig = &datadog.DelegatedTokenConfig{
OrgUUID: "your-org-uuid",
Provider: datadog.ProviderAWS,
ProviderAuth: &datadog.AWSAuth{
AwsRegion: "us-east-1",
},
}Context keys for per-request configuration:
var (
ContextAPIKeys contextKey // API key authentication
ContextServerIndex contextKey // Server configuration index
ContextServerVariables contextKey // Server variable overrides
ContextOperationServerIndices contextKey // Per-operation server index
ContextOperationServerVariables contextKey // Per-operation server variables
ContextDelegatedToken contextKey // Delegated token authentication
ContextAWSVariables contextKey // AWS credentials
)Helper functions to create pointers for optional parameters:
func PtrBool(v bool) *bool
func PtrInt(v int) *int
func PtrInt32(v int32) *int32
func PtrInt64(v int64) *int64
func PtrFloat32(v float32) *float32
func PtrFloat64(v float64) *float64
func PtrString(v string) *string
func PtrTime(v time.Time) *time.TimeUsage:
optionalParams := datadogV2.NewListIncidentsOptionalParameters()
optionalParams.PageSize = datadog.PtrInt64(50)Install with Tessl CLI
npx tessl i tessl/golang-github-com-data-dog--datadog-api-client-go-v2@2.54.0