Ruby client for the Datadog API
45
stars
3,027
commits
Ruby
primary language
Sep 10, 2026
updated
This repository contains a Ruby API client for the Datadog API.
The code is generated using generator package.
Installing and using the API client library requires:
The following steps will help you quickly start interacting with Datadog APIs using Ruby client.
Add the datadog_api_client gem to you Gemfile:
source 'https://rubygems.org'
gem 'datadog_api_client'
Install the gem with bundle install
(optional) You can configure site and authentication using environment variables or code block:
DatadogAPIClient.configure do |config|
config.server_variables[:site] = 'datadoghq.eu'
end
Build the Ruby code into a gem:
gem build datadog_api_client.gemspec
Install the gem locally:
gem install ./datadog_api_client-*.gem
Add the following in the Gemfile:
gem 'datadog_api_client', :git => 'https://github.com/DataDog/datadog-api-client-ruby.git'
Install the gem with bundle install
Create example.rb script (find inspiration on https://docs.datadoghq.com/api/)
Include the Ruby code directly using -I as follows:
ruby -Ilib example.rb
Please follow the installation instruction and execute the following Ruby code:
require 'datadog_api_client'
api_instance = DatadogAPIClient::V1::IPRangesAPI.new
begin
result = api_instance.get_ip_ranges
p result
rescue DatadogAPIClient::APIError => e
puts "Error when calling IPRangesAPI->get_ip_ranges: #{e}"
end
Authenticate with the API by providing your API and Application keys in the configuration:
DatadogAPIClient.configure do |config|
config.api_key = ENV['NON_STANDARD_NAME_FOR_DD_API_KEY']
config.application_key = ENV['NON_STANDARD_NAME_FOR_DD_APP_KEY']
end
This client includes access to Datadog API endpoints while they are in an unstable state and may undergo breaking changes. An extra configuration step is required to enable these endpoints:
DatadogAPIClient.configure do |config|
config.unstable_operations[:'<api_version>.<unstable_operation_id>'] = true
end
where <unstable_operation_id> is the name of the method used to interact with that endpoint. For example: list_log_indexes, or get_logs_index
When talking to a different server, like the eu instance, change the server_variables on your configuration object:
config = DatadogAPIClient::Configuration.new
config.server_variables[:site] = "datadoghq.eu"
client = DatadogAPIClient::APIClient.new(config)
If you want to disable GZIP compressed responses, set the compress flag
on your configuration object:
config = DatadogAPIClient::Configuration.new
config.compress = false
client = DatadogAPIClient::APIClient.new(config)
If you want to enable requests logging, set the debugging flag
on your configuration object:
config = DatadogAPIClient::Configuration.new
config.debugging = true
client = DatadogAPIClient::APIClient.new(config)
You can configure the client to use proxy by setting http_proxyaddr and http_proxyport keys on configuration object:
config = DatadogAPIClient::Configuration.new
config.http_proxyaddr = '127.0.0.1'
config.http_proxyport = '3128'
client = DatadogAPIClient::APIClient.new(config)
Several listing operations have a pagination method to help consume all the items available. For example, to retrieve all your incidents:
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.unstable_operations[:'v2.list_incidents'] = true
end
api_instance = DatadogAPIClient::V2::IncidentsAPI.new
api_instance.list_incidents_with_pagination() do |incident|
p incident.id
end
To enable the client to retry when rate limited (status 429) or status 500 and above:
config = DatadogAPIClient::Configuration.new
config.enable_retry = true
client = DatadogAPIClient::APIClient.new(config)
The interval between 2 retry attempts will be the value of the x-ratelimit-reset response header when available.
If not, it will be :
(config.backoffMultiplier ** current_retry_count) * config.backoffBase
The maximum number of retry attempts is 3 by default and can be modified with
config.maxRetries
If you are interested in general documentation for all public Datadog API endpoints, checkout the general documentation site.
Developer documentation for supported endpoints and models is available in Github pages.
For contributing, checkout the development guide.
(top 30 of 64)
2,670 commits
72 commits
50 commits
45 commits
Ruby
93.6%
Gherkin
6.1%
Ruby client for the Datadog API
45
stars
3,027
commits
Ruby
primary language
Sep 10, 2026
updated
This repository contains a Ruby API client for the Datadog API.
The code is generated using generator package.
Installing and using the API client library requires:
The following steps will help you quickly start interacting with Datadog APIs using Ruby client.
Add the datadog_api_client gem to you Gemfile:
source 'https://rubygems.org'
gem 'datadog_api_client'
Install the gem with bundle install
(optional) You can configure site and authentication using environment variables or code block:
DatadogAPIClient.configure do |config|
config.server_variables[:site] = 'datadoghq.eu'
end
Build the Ruby code into a gem:
gem build datadog_api_client.gemspec
Install the gem locally:
gem install ./datadog_api_client-*.gem
Add the following in the Gemfile:
gem 'datadog_api_client', :git => 'https://github.com/DataDog/datadog-api-client-ruby.git'
Install the gem with bundle install
Create example.rb script (find inspiration on https://docs.datadoghq.com/api/)
Include the Ruby code directly using -I as follows:
ruby -Ilib example.rb
Please follow the installation instruction and execute the following Ruby code:
require 'datadog_api_client'
api_instance = DatadogAPIClient::V1::IPRangesAPI.new
begin
result = api_instance.get_ip_ranges
p result
rescue DatadogAPIClient::APIError => e
puts "Error when calling IPRangesAPI->get_ip_ranges: #{e}"
end
Authenticate with the API by providing your API and Application keys in the configuration:
DatadogAPIClient.configure do |config|
config.api_key = ENV['NON_STANDARD_NAME_FOR_DD_API_KEY']
config.application_key = ENV['NON_STANDARD_NAME_FOR_DD_APP_KEY']
end
This client includes access to Datadog API endpoints while they are in an unstable state and may undergo breaking changes. An extra configuration step is required to enable these endpoints:
DatadogAPIClient.configure do |config|
config.unstable_operations[:'<api_version>.<unstable_operation_id>'] = true
end
where <unstable_operation_id> is the name of the method used to interact with that endpoint. For example: list_log_indexes, or get_logs_index
When talking to a different server, like the eu instance, change the server_variables on your configuration object:
config = DatadogAPIClient::Configuration.new
config.server_variables[:site] = "datadoghq.eu"
client = DatadogAPIClient::APIClient.new(config)
If you want to disable GZIP compressed responses, set the compress flag
on your configuration object:
config = DatadogAPIClient::Configuration.new
config.compress = false
client = DatadogAPIClient::APIClient.new(config)
If you want to enable requests logging, set the debugging flag
on your configuration object:
config = DatadogAPIClient::Configuration.new
config.debugging = true
client = DatadogAPIClient::APIClient.new(config)
You can configure the client to use proxy by setting http_proxyaddr and http_proxyport keys on configuration object:
config = DatadogAPIClient::Configuration.new
config.http_proxyaddr = '127.0.0.1'
config.http_proxyport = '3128'
client = DatadogAPIClient::APIClient.new(config)
Several listing operations have a pagination method to help consume all the items available. For example, to retrieve all your incidents:
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.unstable_operations[:'v2.list_incidents'] = true
end
api_instance = DatadogAPIClient::V2::IncidentsAPI.new
api_instance.list_incidents_with_pagination() do |incident|
p incident.id
end
To enable the client to retry when rate limited (status 429) or status 500 and above:
config = DatadogAPIClient::Configuration.new
config.enable_retry = true
client = DatadogAPIClient::APIClient.new(config)
The interval between 2 retry attempts will be the value of the x-ratelimit-reset response header when available.
If not, it will be :
(config.backoffMultiplier ** current_retry_count) * config.backoffBase
The maximum number of retry attempts is 3 by default and can be modified with
config.maxRetries
If you are interested in general documentation for all public Datadog API endpoints, checkout the general documentation site.
Developer documentation for supported endpoints and models is available in Github pages.
For contributing, checkout the development guide.
(top 30 of 64)
2,670 commits
72 commits
50 commits
45 commits
Ruby
93.6%
Gherkin
6.1%