Create or update a RUM rate limit configuration

Note: This endpoint is in preview and is subject to change. If you have any feedback, contact Datadog support.

PUT https://api.ap1.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.ap2.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.datadoghq.eu/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.ddog-gov.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.us2.ddog-gov.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.uk1.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.us3.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}https://api.us5.datadoghq.com/api/v2/rum/config/rate-limit/{scope_type}/{scope_id}

Información general

Create or update the RUM rate limit configuration for a given scope. Returns the rate limit configuration object when the request is successful.

Argumentos

Parámetros de ruta

Nombre

Tipo

Descripción

scope_type [required]

string

The type of scope the rate limit configuration applies to.

scope_id [required]

string

The identifier of the scope the rate limit configuration applies to. For the application scope, this is the RUM application ID.

Solicitud

Body Data (required)

The definition of the RUM rate limit configuration to create or update.

Expand All

Campo

Tipo

Descripción

data [required]

object

The RUM rate limit configuration to create or update.

attributes [required]

object

The RUM rate limit configuration properties to create or update.

adaptive

object

The configuration used when mode is adaptive.

max_retention_rate [required]

double

The maximum fraction of sessions to retain, in the range (0, 1].

custom

object

The configuration used when mode is custom.

daily_reset_time [required]

string

The time of day when the daily quota resets, in HH:MM 24-hour format.

daily_reset_timezone [required]

string

The timezone offset used for the daily reset time, in ±HH:MM format.

quota_reached_action [required]

enum

The action to take when the session quota is reached. Allowed enum values: stop,slowdown

session_limit [required]

int64

The maximum number of sessions allowed within the window.

window_type [required]

enum

The window type over which the session limit is enforced. Allowed enum values: daily

mode [required]

enum

The rate limit mode. custom enforces a fixed session limit, while adaptive dynamically adjusts retention. Allowed enum values: custom,adaptive

id [required]

string

The identifier of the scope the rate limit configuration applies to. Must match scope_id in the path.

type [required]

enum

The type of the resource, always rum_rate_limit_config. Allowed enum values: rum_rate_limit_config

default: rum_rate_limit_config

{
  "data": {
    "attributes": {
      "adaptive": {
        "max_retention_rate": 0.5
      },
      "custom": {
        "daily_reset_time": "08:00",
        "daily_reset_timezone": "+09:00",
        "quota_reached_action": "stop",
        "session_limit": 1000000,
        "window_type": "daily"
      },
      "mode": "custom"
    },
    "id": "cd73a516-a481-4af5-8352-9b577465c77b",
    "type": "rum_rate_limit_config"
  }
}

Respuesta

OK

The RUM rate limit configuration response.

Expand All

Campo

Tipo

Descripción

data [required]

object

The RUM rate limit configuration object.

attributes [required]

object

The RUM rate limit configuration properties.

adaptive

object

The configuration used when mode is adaptive.

max_retention_rate [required]

double

The maximum fraction of sessions to retain, in the range (0, 1].

custom

object

The configuration used when mode is custom.

daily_reset_time [required]

string

The time of day when the daily quota resets, in HH:MM 24-hour format.

daily_reset_timezone [required]

string

The timezone offset used for the daily reset time, in ±HH:MM format.

quota_reached_action [required]

enum

The action to take when the session quota is reached. Allowed enum values: stop,slowdown

session_limit [required]

int64

The maximum number of sessions allowed within the window.

window_type [required]

enum

The window type over which the session limit is enforced. Allowed enum values: daily

mode [required]

enum

The rate limit mode. custom enforces a fixed session limit, while adaptive dynamically adjusts retention. Allowed enum values: custom,adaptive

org_id [required]

int64

The ID of the organization the rate limit configuration belongs to.

updated_at

string

The date the rate limit configuration was last updated.

updated_by

string

The handle of the user who last updated the rate limit configuration.

id [required]

string

The identifier of the scope the rate limit configuration applies to.

type [required]

enum

The type of the resource, always rum_rate_limit_config. Allowed enum values: rum_rate_limit_config

default: rum_rate_limit_config

{
  "data": {
    "attributes": {
      "adaptive": {
        "max_retention_rate": 0.5
      },
      "custom": {
        "daily_reset_time": "08:00",
        "daily_reset_timezone": "+09:00",
        "quota_reached_action": "stop",
        "session_limit": 1000000,
        "window_type": "daily"
      },
      "mode": "custom",
      "org_id": 2,
      "updated_at": "2026-03-04T15:37:54.951447Z",
      "updated_by": "test@example.com"
    },
    "id": "cd73a516-a481-4af5-8352-9b577465c77b",
    "type": "rum_rate_limit_config"
  }
}

Bad Request

API error response.

Expand All

Campo

Tipo

Descripción

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Not Authorized

API error response.

Expand All

Campo

Tipo

Descripción

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Not Found

API error response.

Expand All

Campo

Tipo

Descripción

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Too many requests

API error response.

Expand All

Campo

Tipo

Descripción

errors [required]

[string]

A list of errors.

{
  "errors": [
    "Bad Request"
  ]
}

Ejemplo de código

                  ## default
# 

# Path parameters
export scope_type="application"
export scope_id="cd73a516-a481-4af5-8352-9b577465c77b"
# Curl command
curl -X PUT "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.uk1.datadoghq.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/rum/config/rate-limit/${scope_type}/${scope_id}" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "data": { "attributes": { "custom": { "daily_reset_time": "08:00", "daily_reset_timezone": "+09:00", "quota_reached_action": "stop", "session_limit": 1000000, "window_type": "daily" }, "mode": "custom" }, "id": "cd73a516-a481-4af5-8352-9b577465c77b", "type": "rum_rate_limit_config" } } EOF
"""
Create or update a RUM rate limit configuration returns "OK" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.rum_rate_limit_api import RumRateLimitApi
from datadog_api_client.v2.model.rum_rate_limit_adaptive_config import RumRateLimitAdaptiveConfig
from datadog_api_client.v2.model.rum_rate_limit_config_type import RumRateLimitConfigType
from datadog_api_client.v2.model.rum_rate_limit_config_update_attributes import RumRateLimitConfigUpdateAttributes
from datadog_api_client.v2.model.rum_rate_limit_config_update_data import RumRateLimitConfigUpdateData
from datadog_api_client.v2.model.rum_rate_limit_config_update_request import RumRateLimitConfigUpdateRequest
from datadog_api_client.v2.model.rum_rate_limit_custom_config import RumRateLimitCustomConfig
from datadog_api_client.v2.model.rum_rate_limit_mode import RumRateLimitMode
from datadog_api_client.v2.model.rum_rate_limit_quota_reached_action import RumRateLimitQuotaReachedAction
from datadog_api_client.v2.model.rum_rate_limit_scope_type import RumRateLimitScopeType
from datadog_api_client.v2.model.rum_rate_limit_window_type import RumRateLimitWindowType

body = RumRateLimitConfigUpdateRequest(
    data=RumRateLimitConfigUpdateData(
        attributes=RumRateLimitConfigUpdateAttributes(
            adaptive=RumRateLimitAdaptiveConfig(
                max_retention_rate=0.5,
            ),
            custom=RumRateLimitCustomConfig(
                daily_reset_time="08:00",
                daily_reset_timezone="+09:00",
                quota_reached_action=RumRateLimitQuotaReachedAction.STOP,
                session_limit=1000000,
                window_type=RumRateLimitWindowType.DAILY,
            ),
            mode=RumRateLimitMode.CUSTOM,
        ),
        id="cd73a516-a481-4af5-8352-9b577465c77b",
        type=RumRateLimitConfigType.RUM_RATE_LIMIT_CONFIG,
    ),
)

configuration = Configuration()
configuration.unstable_operations["update_rum_rate_limit_config"] = True
with ApiClient(configuration) as api_client:
    api_instance = RumRateLimitApi(api_client)
    response = api_instance.update_rum_rate_limit_config(
        scope_type=RumRateLimitScopeType.APPLICATION, scope_id="cd73a516-a481-4af5-8352-9b577465c77b", body=body
    )

    print(response)

Instructions

First install the library and its dependencies and then save the example to example.py and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
# Create or update a RUM rate limit configuration returns "OK" response

require "datadog_api_client"
DatadogAPIClient.configure do |config|
  config.unstable_operations["v2.update_rum_rate_limit_config".to_sym] = true
end
api_instance = DatadogAPIClient::V2::RumRateLimitAPI.new

body = DatadogAPIClient::V2::RumRateLimitConfigUpdateRequest.new({
  data: DatadogAPIClient::V2::RumRateLimitConfigUpdateData.new({
    attributes: DatadogAPIClient::V2::RumRateLimitConfigUpdateAttributes.new({
      adaptive: DatadogAPIClient::V2::RumRateLimitAdaptiveConfig.new({
        max_retention_rate: 0.5,
      }),
      custom: DatadogAPIClient::V2::RumRateLimitCustomConfig.new({
        daily_reset_time: "08:00",
        daily_reset_timezone: "+09:00",
        quota_reached_action: DatadogAPIClient::V2::RumRateLimitQuotaReachedAction::STOP,
        session_limit: 1000000,
        window_type: DatadogAPIClient::V2::RumRateLimitWindowType::DAILY,
      }),
      mode: DatadogAPIClient::V2::RumRateLimitMode::CUSTOM,
    }),
    id: "cd73a516-a481-4af5-8352-9b577465c77b",
    type: DatadogAPIClient::V2::RumRateLimitConfigType::RUM_RATE_LIMIT_CONFIG,
  }),
})
p api_instance.update_rum_rate_limit_config(RumRateLimitScopeType::APPLICATION, "cd73a516-a481-4af5-8352-9b577465c77b", body)

Instructions

First install the library and its dependencies and then save the example to example.rb and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
// Create or update a RUM rate limit configuration returns "OK" response

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)

func main() {
	body := datadogV2.RumRateLimitConfigUpdateRequest{
		Data: datadogV2.RumRateLimitConfigUpdateData{
			Attributes: datadogV2.RumRateLimitConfigUpdateAttributes{
				Adaptive: &datadogV2.RumRateLimitAdaptiveConfig{
					MaxRetentionRate: 0.5,
				},
				Custom: &datadogV2.RumRateLimitCustomConfig{
					DailyResetTime:     "08:00",
					DailyResetTimezone: "+09:00",
					QuotaReachedAction: datadogV2.RUMRATELIMITQUOTAREACHEDACTION_STOP,
					SessionLimit:       1000000,
					WindowType:         datadogV2.RUMRATELIMITWINDOWTYPE_DAILY,
				},
				Mode: datadogV2.RUMRATELIMITMODE_CUSTOM,
			},
			Id:   "cd73a516-a481-4af5-8352-9b577465c77b",
			Type: datadogV2.RUMRATELIMITCONFIGTYPE_RUM_RATE_LIMIT_CONFIG,
		},
	}
	ctx := datadog.NewDefaultContext(context.Background())
	configuration := datadog.NewConfiguration()
	configuration.SetUnstableOperationEnabled("v2.UpdateRumRateLimitConfig", true)
	apiClient := datadog.NewAPIClient(configuration)
	api := datadogV2.NewRumRateLimitApi(apiClient)
	resp, r, err := api.UpdateRumRateLimitConfig(ctx, datadogV2.RUMRATELIMITSCOPETYPE_APPLICATION, "cd73a516-a481-4af5-8352-9b577465c77b", body)

	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `RumRateLimitApi.UpdateRumRateLimitConfig`: %v\n", err)
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}

	responseContent, _ := json.MarshalIndent(resp, "", "  ")
	fmt.Fprintf(os.Stdout, "Response from `RumRateLimitApi.UpdateRumRateLimitConfig`:\n%s\n", responseContent)
}

Instructions

First install the library and its dependencies and then save the example to main.go and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
// Create or update a RUM rate limit configuration returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.RumRateLimitApi;
import com.datadog.api.client.v2.model.RumRateLimitAdaptiveConfig;
import com.datadog.api.client.v2.model.RumRateLimitConfigResponse;
import com.datadog.api.client.v2.model.RumRateLimitConfigType;
import com.datadog.api.client.v2.model.RumRateLimitConfigUpdateAttributes;
import com.datadog.api.client.v2.model.RumRateLimitConfigUpdateData;
import com.datadog.api.client.v2.model.RumRateLimitConfigUpdateRequest;
import com.datadog.api.client.v2.model.RumRateLimitCustomConfig;
import com.datadog.api.client.v2.model.RumRateLimitMode;
import com.datadog.api.client.v2.model.RumRateLimitQuotaReachedAction;
import com.datadog.api.client.v2.model.RumRateLimitScopeType;
import com.datadog.api.client.v2.model.RumRateLimitWindowType;

public class Example {
  public static void main(String[] args) {
    ApiClient defaultClient = ApiClient.getDefaultApiClient();
    defaultClient.setUnstableOperationEnabled("v2.updateRumRateLimitConfig", true);
    RumRateLimitApi apiInstance = new RumRateLimitApi(defaultClient);

    RumRateLimitConfigUpdateRequest body =
        new RumRateLimitConfigUpdateRequest()
            .data(
                new RumRateLimitConfigUpdateData()
                    .attributes(
                        new RumRateLimitConfigUpdateAttributes()
                            .adaptive(new RumRateLimitAdaptiveConfig().maxRetentionRate(0.5))
                            .custom(
                                new RumRateLimitCustomConfig()
                                    .dailyResetTime("08:00")
                                    .dailyResetTimezone("+09:00")
                                    .quotaReachedAction(RumRateLimitQuotaReachedAction.STOP)
                                    .sessionLimit(1000000L)
                                    .windowType(RumRateLimitWindowType.DAILY))
                            .mode(RumRateLimitMode.CUSTOM))
                    .id("cd73a516-a481-4af5-8352-9b577465c77b")
                    .type(RumRateLimitConfigType.RUM_RATE_LIMIT_CONFIG));

    try {
      RumRateLimitConfigResponse result =
          apiInstance.updateRumRateLimitConfig(
              RumRateLimitScopeType.APPLICATION, "cd73a516-a481-4af5-8352-9b577465c77b", body);
      System.out.println(result);
    } catch (ApiException e) {
      System.err.println("Exception when calling RumRateLimitApi#updateRumRateLimitConfig");
      System.err.println("Status code: " + e.getCode());
      System.err.println("Reason: " + e.getResponseBody());
      System.err.println("Response headers: " + e.getResponseHeaders());
      e.printStackTrace();
    }
  }
}

Instructions

First install the library and its dependencies and then save the example to Example.java and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
// Create or update a RUM rate limit configuration returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_rum_rate_limit::RumRateLimitAPI;
use datadog_api_client::datadogV2::model::RumRateLimitAdaptiveConfig;
use datadog_api_client::datadogV2::model::RumRateLimitConfigType;
use datadog_api_client::datadogV2::model::RumRateLimitConfigUpdateAttributes;
use datadog_api_client::datadogV2::model::RumRateLimitConfigUpdateData;
use datadog_api_client::datadogV2::model::RumRateLimitConfigUpdateRequest;
use datadog_api_client::datadogV2::model::RumRateLimitCustomConfig;
use datadog_api_client::datadogV2::model::RumRateLimitMode;
use datadog_api_client::datadogV2::model::RumRateLimitQuotaReachedAction;
use datadog_api_client::datadogV2::model::RumRateLimitScopeType;
use datadog_api_client::datadogV2::model::RumRateLimitWindowType;

#[tokio::main]
async fn main() {
    let body = RumRateLimitConfigUpdateRequest::new(RumRateLimitConfigUpdateData::new(
        RumRateLimitConfigUpdateAttributes::new(RumRateLimitMode::CUSTOM)
            .adaptive(RumRateLimitAdaptiveConfig::new(0.5))
            .custom(RumRateLimitCustomConfig::new(
                "08:00".to_string(),
                "+09:00".to_string(),
                RumRateLimitQuotaReachedAction::STOP,
                1000000,
                RumRateLimitWindowType::DAILY,
            )),
        "cd73a516-a481-4af5-8352-9b577465c77b".to_string(),
        RumRateLimitConfigType::RUM_RATE_LIMIT_CONFIG,
    ));
    let mut configuration = datadog::Configuration::new();
    configuration.set_unstable_operation_enabled("v2.UpdateRumRateLimitConfig", true);
    let api = RumRateLimitAPI::with_config(configuration);
    let resp = api
        .update_rum_rate_limit_config(
            RumRateLimitScopeType::APPLICATION,
            "cd73a516-a481-4af5-8352-9b577465c77b".to_string(),
            body,
        )
        .await;
    if let Ok(value) = resp {
        println!("{:#?}", value);
    } else {
        println!("{:#?}", resp.unwrap_err());
    }
}

Instructions

First install the library and its dependencies and then save the example to src/main.rs and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
/**
 * Create or update a RUM rate limit configuration returns "OK" response
 */

import { client, v2 } from "@datadog/datadog-api-client";

const configuration = client.createConfiguration();
configuration.unstableOperations["v2.updateRumRateLimitConfig"] = true;
const apiInstance = new v2.RumRateLimitApi(configuration);

const params: v2.RumRateLimitApiUpdateRumRateLimitConfigRequest = {
  body: {
    data: {
      attributes: {
        adaptive: {
          maxRetentionRate: 0.5,
        },
        custom: {
          dailyResetTime: "08:00",
          dailyResetTimezone: "+09:00",
          quotaReachedAction: "stop",
          sessionLimit: 1000000,
          windowType: "daily",
        },
        mode: "custom",
      },
      id: "cd73a516-a481-4af5-8352-9b577465c77b",
      type: "rum_rate_limit_config",
    },
  },
  scopeType: "application",
  scopeId: "cd73a516-a481-4af5-8352-9b577465c77b",
};

apiInstance
  .updateRumRateLimitConfig(params)
  .then((data: v2.RumRateLimitConfigResponse) => {
    console.log(
      "API called successfully. Returned data: " + JSON.stringify(data)
    );
  })
  .catch((error: any) => console.error(error));

Instructions

First install the library and its dependencies and then save the example to example.ts and run following commands:

    
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comuk1.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"